diff --git a/.github/dashboard/Dockerfile b/.github/dashboard/Dockerfile deleted file mode 100644 index 6700897e0..000000000 --- a/.github/dashboard/Dockerfile +++ /dev/null @@ -1,41 +0,0 @@ -ARG BASE_IMAGE -FROM $BASE_IMAGE -ARG BRANCH=main - -### Build dashboard - -# fetch sources -RUN mkdir -p /ws \ - && curl -L https://github.com/open-rmf/rmf-web/archive/$BRANCH.tar.gz -o rmf_web.tar.gz \ - && tar zxf rmf_web.tar.gz -C /ws --strip-components=1 - -# install deps -RUN cd /ws \ - && pnpm install --filter rmf-dashboard... - -# replace configs and build -COPY app-config.json /ws/packages/dashboard/app-config.json -RUN cd /ws/packages/dashboard \ - && pnpm run build - -### Set up bare minimum dashboard image - -FROM docker.io/ubuntu:24.04 -COPY --from=0 /ws/packages/dashboard/dist /opt/dashboard - -RUN apt update && apt install -y curl - -RUN curl -fsSL https://get.pnpm.io/install.sh | bash - -# shell runs in non-interactive mode, which does not source .bashrc so we need to set the PATH manually -ENV PNPM_HOME /root/.local/share/pnpm -ENV PATH "$PNPM_HOME:$PATH" - -# nodejs seems to have changed the official mirror, the default in pnpm is very slow now -RUN pnpm config -g set 'node-mirror:release' https://nodejs.org/dist && pnpm env use --global lts - -RUN npm install --global serve -ENV PATH "$(npm bin -g):$PATH" - -COPY inject-env.sh /opt/inject-env.sh - -ENTRYPOINT ["bash", "-c", ". /opt/inject-env.sh && npx serve -s /opt/dashboard"] diff --git a/.github/dashboard/app-config.json b/.github/dashboard/app-config.json deleted file mode 100644 index 84626aeca..000000000 --- a/.github/dashboard/app-config.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/open-rmf/rmf-web/main/packages/dashboard/app-config.schema.json", - "rmfServerUrl": "__RMF_SERVER_URL__", - "trajectoryServerUrl": "__TRAJECTORY_SERVER_URL__", - "authConfig": {}, - "helpLink": "https://osrf.github.io/ros2multirobotbook/rmf-core.html", - "reportIssue": "https://github.com/open-rmf/rmf-web/issues", - "pickupZones": [], - "defaultZoom": 20, - "defaultRobotZoom": 6, - "attributionPrefix": "OSRC-SG", - "defaultMapLevel": "L1", - "allowedTasks": [ - { - "taskDefinitionId": "patrol" - }, - { - "taskDefinitionId": "delivery" - }, - { - "taskDefinitionId": "compose-clean" - }, - { - "taskDefinitionId": "custom_compose" - } - ], - "resources": { - "default": { - "fleets": {}, - "logos": { - "header": "/resources/defaultLogo.png" - } - } - }, - "cartIds": [], - "buildConfig": { - "baseUrl": "/", - "authProvider": "stub", - "customTabs": false, - "adminTab": false - } -} diff --git a/.github/dashboard/inject-env.sh b/.github/dashboard/inject-env.sh deleted file mode 100644 index 4284492cf..000000000 --- a/.github/dashboard/inject-env.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/bash -set -e - -sed -i "s,__RMF_SERVER_URL__,${RMF_SERVER_URL},g" /opt/dashboard/index.html -sed -i "s,__TRAJECTORY_SERVER_URL__,${TRAJECTORY_SERVER_URL},g" /opt/dashboard/index.html diff --git a/.github/demo-dashboard/Dockerfile b/.github/demo-dashboard/Dockerfile new file mode 100644 index 000000000..9a5c70951 --- /dev/null +++ b/.github/demo-dashboard/Dockerfile @@ -0,0 +1,44 @@ +FROM ubuntu:24.04 +ARG BRANCH=main + +### Build dashboard + +RUN apt update && apt install -y curl \ + # required for api-server, which is a dev dependency of rmf-dashboard-framework + python3 python3-venv +RUN curl -fsSL https://get.pnpm.io/install.sh | bash - + # shell runs in non-interactive mode, which does not source .bashrc so we need to set the PATH manually +ENV PNPM_HOME /root/.local/share/pnpm +ENV PATH "$PNPM_HOME:$PATH" +# node-canvas does not have prebuilt binaries for latest lts (node 22) +RUN pnpm env use --global 20 + +# fetch sources +RUN mkdir -p /ws \ + && curl -L https://github.com/open-rmf/rmf-web/archive/$BRANCH.tar.gz -o rmf_web.tar.gz \ + && tar zxf rmf_web.tar.gz -C /ws --strip-components=1 + +# install deps +RUN cd /ws \ + && pnpm install --filter rmf-dashboard-framework... + +# replace configs and build +RUN cd /ws/packages/rmf-dashboard-framework \ + && pnpm build:example examples/demo + +### Set up bare minimum dashboard image + +FROM docker.io/ubuntu:24.04 +COPY --from=0 /ws/packages/rmf-dashboard-framework/examples/demo/dist /opt/dashboard + +RUN apt update && apt install -y curl + +RUN curl -fsSL https://get.pnpm.io/install.sh | bash - +# shell runs in non-interactive mode, which does not source .bashrc so we need to set the PATH manually +ENV PNPM_HOME /root/.local/share/pnpm +ENV PATH "$PNPM_HOME:$PATH" +RUN pnpm env use --global 20 + +RUN pnpm add --global serve + +ENTRYPOINT ["serve", "-sn", "/opt/dashboard"] diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 08c740f65..cdf7b0dee 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -45,13 +45,13 @@ jobs: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Build and push dashboard + - name: Build and push demo-dashboard uses: docker/build-push-action@v5 with: push: true build-args: | BASE_IMAGE=ghcr.io/${{ github.repository }}/minimal-rmf:rolling - tags: ghcr.io/${{ github.repository }}/dashboard:latest + tags: ghcr.io/${{ github.repository }}/demo-dashboard:latest context: .github/dashboard build-api-server-image: needs: build-minimal-rmf-docker-images diff --git a/.github/workflows/react-components.yml b/.github/workflows/react-components.yml deleted file mode 100644 index da1cefe11..000000000 --- a/.github/workflows/react-components.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: react-components -on: - pull_request: - paths: - - '.github/workflows/react-components.yml' - - 'packages/react-components/**' - - 'packages/rmf-models/**' - push: - branches: - - main -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true -env: - CI: true -jobs: - unit-tests: - name: Unit Tests - runs-on: ubuntu-24.04 - container: - image: ghcr.io/${{ github.repository }}/minimal-rmf - credentials: - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - defaults: - run: - shell: bash - working-directory: packages/react-components - steps: - - uses: actions/checkout@v4 - - name: bootstrap - uses: ./.github/actions/bootstrap - with: - package: react-components - - name: lint - run: pnpm run lint - - name: test - run: pnpm run test:coverage - - name: Upload coverage to Codecov - uses: codecov/codecov-action@v1 - with: - flags: react-components diff --git a/.github/workflows/dashboard.yml b/.github/workflows/rmf-dashboard-framework.yml similarity index 76% rename from .github/workflows/dashboard.yml rename to .github/workflows/rmf-dashboard-framework.yml index 8026f1d2e..4c462ba1b 100644 --- a/.github/workflows/dashboard.yml +++ b/.github/workflows/rmf-dashboard-framework.yml @@ -1,10 +1,9 @@ -name: dashboard +name: rmf-dashboard-framework on: pull_request: paths: - - '.github/workflows/dashboard.yml' - - 'packages/dashboard/**' - - 'packages/react-components/**' + - '.github/workflows/rmf-dashboard-framework.yml' + - 'packages/rmf-dashboard-framework/**' - 'packages/rmf-models/**' - 'packages/api-client/**' push: @@ -27,13 +26,13 @@ jobs: defaults: run: shell: bash - working-directory: packages/dashboard + working-directory: packages/rmf-dashboard-framework steps: - uses: actions/checkout@v4 - name: bootstrap uses: ./.github/actions/bootstrap with: - package: rmf-dashboard + package: rmf-dashboard-framework skip-build: true - name: lint run: pnpm lint @@ -42,4 +41,4 @@ jobs: - name: Upload coverage to Codecov uses: codecov/codecov-action@v1 with: - flags: dashboard + flags: rmf-dashboard-framework diff --git a/README.md b/README.md index dd1689ce4..f2e5db797 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![Nightly](https://github.com/open-rmf/rmf-web/actions/workflows/nightly.yml/badge.svg)](https://github.com/open-rmf/rmf-web/actions/workflows/nightly.yml) [![Dashboard End-to-End](https://github.com/open-rmf/rmf-web/actions/workflows/dashboard-e2e.yml/badge.svg)](https://github.com/open-rmf/rmf-web/actions/workflows/dashboard-e2e.yml) [![react-components](https://github.com/open-rmf/rmf-web/workflows/react-components/badge.svg)](https://github.com/open-rmf/rmf-web/actions?query=workflow%3Areact-components+branch%3Amain) [![dashboard](https://github.com/open-rmf/rmf-web/workflows/dashboard/badge.svg)](https://github.com/open-rmf/rmf-web/actions?query=workflow%3Adashboard+branch%3Amain) [![api-server](https://github.com/open-rmf/rmf-web/workflows/api-server/badge.svg)](https://github.com/open-rmf/rmf-web/actions?query=workflow%3Aapi-server+branch%3Amain) [![ros-translator](https://github.com/open-rmf/rmf-web/actions/workflows/ros-translator.yml/badge.svg)](https://github.com/open-rmf/rmf-web/actions/workflows/ros-translator.yml) [![api-client](https://github.com/open-rmf/rmf-web/actions/workflows/api-client.yml/badge.svg)](https://github.com/open-rmf/rmf-web/actions/workflows/api-client.yml) [![codecov](https://codecov.io/gh/open-rmf/rmf-web/branch/main/graph/badge.svg)](https://codecov.io/gh/open-rmf/rmf-web) +[![Nightly](https://github.com/open-rmf/rmf-web/actions/workflows/nightly.yml/badge.svg)](https://github.com/open-rmf/rmf-web/actions/workflows/nightly.yml) [![Dashboard End-to-End](https://github.com/open-rmf/rmf-web/actions/workflows/dashboard-e2e.yml/badge.svg)](https://github.com/open-rmf/rmf-web/actions/workflows/dashboard-e2e.yml) [![rmf-dashboard-framework](https://github.com/open-rmf/rmf-web/actions/workflows/rmf-dashboard-framework.yml/badge.svg)](https://github.com/open-rmf/rmf-web/actions/workflows/rmf-dashboard-framework.yml) [![api-server](https://github.com/open-rmf/rmf-web/workflows/api-server/badge.svg)](https://github.com/open-rmf/rmf-web/actions?query=workflow%3Aapi-server+branch%3Amain) [![ros-translator](https://github.com/open-rmf/rmf-web/actions/workflows/ros-translator.yml/badge.svg)](https://github.com/open-rmf/rmf-web/actions/workflows/ros-translator.yml) [![api-client](https://github.com/open-rmf/rmf-web/actions/workflows/api-client.yml/badge.svg)](https://github.com/open-rmf/rmf-web/actions/workflows/api-client.yml) [![codecov](https://codecov.io/gh/open-rmf/rmf-web/branch/main/graph/badge.svg)](https://codecov.io/gh/open-rmf/rmf-web) # RMF Web @@ -10,7 +10,7 @@ Open-RMF Web is a collection of packages that provide a web-based interface for - [Getting started from source](#getting-started-from-source) - [API server](packages/api-server) - [API client](packages/api-client) -- [Dashboard](packages/dashboard) +- [RMF Dashboard Framework](packages/rmf-dashboard-framework) - [Configuration](#configuration) - [Contribution guide](#contribution-guide) - [Roadmap](https://github.com/orgs/open-rmf/projects/10) @@ -19,18 +19,18 @@ Open-RMF Web is a collection of packages that provide a web-based interface for These docker images are useful when trying out [`rmf_demos`](https://github.com/open-rmf/rmf_demos). -Start the dashboard with host network access, `RMF_SERVER_URL` and `TRAJECTORY_SERVER_URL` configured accordingly. The dashboard will then accessible on `localhost:3000` by default. +Start the demo dashboard with host network access, `RMF_SERVER_URL` and `TRAJECTORY_SERVER_URL` configured accordingly. The demo dashboard will then accessible on `localhost:3000` by default. ```bash docker run \ --network host -it --rm \ -e RMF_SERVER_URL=http://localhost:8000 \ -e TRAJECTORY_SERVER_URL=ws://localhost:8006 \ - ghcr.io/open-rmf/rmf-web/dashboard:latest + ghcr.io/open-rmf/rmf-web/demo-dashboard:latest ``` > **Note** -> The values provided for `RMF_SERVER_URL` and `TRAJECTORY_SERVER_URL` are default values when running the API server and `rmf_demos`, and can be modified to suit different setups. +> The demo dashboard assumes that the api server is hosted locally on the default ports. Start the API server with host network access, and set up the correct `ROS_DOMAIN_ID` and ROS 2 RMW implementation that will be used in the rest of the Open-RMF system. The API server will use the default port at `localhost:8000`. @@ -51,7 +51,7 @@ docker run \ ### Prerequisites -We currently support [Ubuntu 24.04](https://releases.ubuntu.com/noble/), [ROS 2 Jazzy](https://docs.ros.org/en/jazzy/index.html) and Open-RMF's [22.09](https://github.com/open-rmf/rmf/releases/tag/22.09) release. Other distributions may work as well, but is not guaranteed. +We currently support [Ubuntu 24.04](https://releases.ubuntu.com/noble/), [ROS 2 Jazzy](https://docs.ros.org/en/jazzy/index.html) and the latest Open-RMF release. Other distributions may work as well, but is not guaranteed. Install pnpm and nodejs @@ -91,7 +91,7 @@ pnpm install -w --filter ... ### Launching for development -Source Open-RMF and launch the dashboard in development mode, +Source Open-RMF and launch the demo dashboard in development mode, ```bash # For binary installation @@ -100,11 +100,11 @@ source /opt/ros/jazzy/setup.bash # For source build source /path/to/workspace/install/setup.bash -cd packages/dashboard +cd packages/rmf-dashboard-framework pnpm start ``` -This starts up the API server (by default at port 8000) which sets up endpoints to communicate with an Open-RMF deployment, as well as begin compilation of the dashboard. Once completed, it can be viewed at [localhost:3000](http://localhost:3000). +This starts up the API server (by default at port 8000) which sets up endpoints to communicate with an Open-RMF deployment, as well as begin compilation of the demo dashboard. Once completed, it can be viewed at [localhost:5173](http://localhost:5173). If presented with a login screen, use `user=admin password=admin`. @@ -120,41 +120,19 @@ When developing individual components, it may be useful to start the dashboard a ```bash # Start the dashboard in dev, this monitors for changes in the dashboard package and performs rebuilds. A browser refresh is required after all automated builds. -cd packages/dashboard -pnpm run start:react +cd packages/rmf-dashboard-framework +pnpm start:example examples/demo # Start the API server, this will need to be restarted for any changes to be reflected cd packages/api-server -pnpm run start -``` - -### Optimized build - -The dashboard can also be built statically for better performance. - -```bash -cd packages/dashboard -pnpm run build - -# Once completed -npm install -g serve -serve -s build -``` - -This only serves the frontend, the API server can be started manually to work with an Open-RMF deployment on another terminal instance, - -```bash -# source Open-RMF before proceeding -cd packages/api-server -pnpm run start +pnpm start ``` # Contribution guide - For general contribution guidelines, see [CONTRIBUTING](CONTRIBUTING.md). - Follow [typescript guidelines](https://basarat.gitbook.io/typescript/styleguide). -- When introducing a new feature or component in [`react-components`](packages/react-components), write tests and stories. -- When introducing a new feature in [`dashboard`](packages/dashboard), write tests as well as [e2e](packages/dashboard-e2e) test whenever possible. +- When introducing a new feature in [`rmf-dashboard-framework`](packages/rmf-dashboard-framework), write tests as well as [e2e](packages/dashboard-e2e) test whenever possible. - When introducing API changes with [`api-server`](packages/api-server), - If the new changes are to be used externally (outside of the web packages, with other Open-RMF packages for example), make changes to [`rmf_api_msgs`](https://github.com/open-rmf/rmf_api_msgs), before generating the required models using [this script](packages/api-server/generate-models.sh) with modified commit hashes. - Don't forget to update the API client with the newly added changes with [these instructions](packages/api-client/README.md/#generating-rest-api-client). @@ -165,8 +143,8 @@ pnpm run start # Configuration -- See the [rmf-dashboard](packages/dashboard/README.md#configuration) docs for the frontend build-time and run-time configurations. - See the [api-server](packages/api-server/README.md#configuration) docs for API server run-time configurations. +- [rmf-dashboard-framework](packages/api-server/README.md) allows you to easily build a dashboard. # Troubleshooting diff --git a/packages/api-client/package.json b/packages/api-client/package.json index 337f11470..da98ec11e 100644 --- a/packages/api-client/package.json +++ b/packages/api-client/package.json @@ -6,7 +6,7 @@ "browser": "lib/index.ts", "scripts": { "build": "tsc --build", - "prepack": "pnpm run clean && pnpm run --filter {.}... build && pnpm run lint", + "prepack": "pnpm run --filter {.}... build && pnpm run lint", "lint": "eslint --max-warnings 0 lib", "test": "vitest" }, diff --git a/packages/dashboard-e2e/package.json b/packages/dashboard-e2e/package.json index 2f462572d..4f7d2ecce 100644 --- a/packages/dashboard-e2e/package.json +++ b/packages/dashboard-e2e/package.json @@ -20,7 +20,6 @@ "@wdio/mocha-framework": "7.11.1", "@wdio/spec-reporter": "7.10.1", "concurrently": "^8.2.2", - "rmf-dashboard": "workspace:*", "serve": "^11.3.2", "ts-node": "^9.1.1", "typescript": "~5.5.4" diff --git a/packages/dashboard/.storybook/main.ts b/packages/dashboard/.storybook/main.ts deleted file mode 100644 index 695d85843..000000000 --- a/packages/dashboard/.storybook/main.ts +++ /dev/null @@ -1,20 +0,0 @@ -import type { StorybookConfig } from '@storybook/react-webpack5'; - -const config: StorybookConfig = { - stories: ['../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], - addons: [ - '@storybook/addon-webpack5-compiler-babel', - '@storybook/addon-onboarding', - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/addon-interactions', - ], - framework: { - name: '@storybook/react-webpack5', - options: {}, - }, - docs: { - autodocs: 'tag', - }, -}; -export default config; diff --git a/packages/dashboard/.storybook/preview.ts b/packages/dashboard/.storybook/preview.ts deleted file mode 100644 index adcda96bd..000000000 --- a/packages/dashboard/.storybook/preview.ts +++ /dev/null @@ -1,14 +0,0 @@ -import type { Preview } from '@storybook/react'; - -const preview: Preview = { - parameters: { - controls: { - matchers: { - color: /(background|color)$/i, - date: /Date$/i, - }, - }, - }, -}; - -export default preview; diff --git a/packages/dashboard/README.md b/packages/dashboard/README.md deleted file mode 100644 index faf8ff62a..000000000 --- a/packages/dashboard/README.md +++ /dev/null @@ -1,92 +0,0 @@ -# rmf-dashboard - -`rmf-dashboard` is a web application that provides overall visualization and control over the RMF system. - -# Setup - -Follow the build instructions [here](../../README.md/#launching). - -## Configuration - -Before building the dashboard, you must configure it according to the deployment. All the configurations is on `app-config.json`, the default configuration is for running the api-server and dashboard locally. You may check [src/app-config.ts](src/app-config.ts) for more details on the config file schema. - -### (Optional) Add external resources. - -The `resources` option in the app config allows configuring various assets used by the dashboard. At the moment, it mainly allows configuring the header logo and robot icons, they should point to either the full url or absolute url, for example - -```json - "resources": { - "default": { - "fleets": { - "tinyRobot": { - "default": { - "icon": "https://raw.githubusercontent.com/open-rmf/rmf_demos/rmf-web-dashboard-resources/rmf_demos_dashboard_resources/office/icons/tinyRobot.png", - "scale": 0.00123 - } - } - }, - "logos": { - "header": "/resources/defaultLogo.png" - } - } - }, -``` - -In the above config, the header logo will be on absolute url `/resources/defaultLogo.png`, if the resources are hosted on a different domain (e.g. you are using a cdn), then it should include the full url, e.g. `https://storage.googleapis.com/[BUCKET_NAME]/[OBJECT_NAME]`. - -For testing, it is convenient to put the resources in the `public` folder and they will be served by the vite dev server. - -For dashboard resources for `rmf_demos` simulation worlds, check out the [rmf-web-dashboard-resources](https://github.com/open-rmf/rmf_demos/tree/rmf-web-dashboard-resources) branch of `rmf_demos`. - -### Micro-apps - -The dashboard comes with many different micro-apps, each serving a different purpose when interacting with an Open-RMF deployment. The dashboard uses events to pipe information between micro-apps, for example clicking onto a task row in the Task app, will center the map onto the robot that the task was assigned to. - -Here are the available apps, -* Robots -* Map -* Doors -* Lifts -* Mutex Groups -* Tasks -* Beacons -* Robot Info -* Task Details -* Task Logs - -### Workspace (tab) layouts - -Each workspace (tab) allows users to define how the layout of micro-apps should be. By modifying the `WorkspaceState` of the workspace, micro-apps can be resized, moved, added or removed. - -Here is an example workspace state, - -```typescript -export const robotsWorkspace: WorkspaceState = { - layout: [ - { i: 'robots', x: 0, y: 0, w: 7, h: 3 }, - { i: 'map', x: 8, y: 0, w: 5, h: 9 }, - { i: 'doors', x: 0, y: 0, w: 7, h: 3 }, - { i: 'lifts', x: 0, y: 0, w: 7, h: 3 }, - { i: 'beacons', x: 0, y: 0, w: 7, h: 3 }, - { i: 'mutexGroups', x: 8, y: 0, w: 5, h: 3 }, - ], - windows: [ - { key: 'robots', appName: 'Robots' }, - { key: 'map', appName: 'Map' }, - { key: 'doors', appName: 'Doors' }, - { key: 'lifts', appName: 'Lifts' }, - { key: 'beacons', appName: 'Beacons' }, - { key: 'mutexGroups', appName: 'Mutex Groups' }, - ], -}; -``` - -### Custom tab(s) - -With the dashboard configuration parameter `customTabs: true`, 2 custom tabs would be available on the App bar. These custom tabs allow users to create a custom layout of desired micro-apps, if a custom workflow is desired. - -These custom layouts will be cached locally on the browser's machine, where it can be brought up again. - -To edit a custom tab, click onto the wand icon on the right end of the App bar, and proceed to add, resize, move or remove micro-apps from the layout. - -![](https://github.com/open-rmf/rmf-web/blob/media/custom-tabs.gif) diff --git a/packages/dashboard/app-config.json b/packages/dashboard/app-config.json deleted file mode 100644 index e77f0a0d6..000000000 --- a/packages/dashboard/app-config.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "$schema": "./app-config.schema.json", - "rmfServerUrl": "http://localhost:8000", - "trajectoryServerUrl": "ws://localhost:8006", - "authConfig": {}, - "helpLink": "https://osrf.github.io/ros2multirobotbook/rmf-core.html", - "reportIssue": "https://github.com/open-rmf/rmf-web/issues", - "pickupZones": [], - "defaultZoom": 20, - "defaultRobotZoom": 6, - "attributionPrefix": "OSRC-SG", - "defaultMapLevel": "L1", - "allowedTasks": [ - { - "taskDefinitionId": "patrol" - }, - { - "taskDefinitionId": "delivery" - }, - { - "taskDefinitionId": "compose-clean" - }, - { - "taskDefinitionId": "custom_compose" - } - ], - "resources": { - "default": { - "fleets": {}, - "logos": { - "header": "/resources/defaultLogo.png" - } - } - }, - "cartIds": [], - "buildConfig": { - "baseUrl": "/", - "authProvider": "stub", - "customTabs": false, - "adminTab": false - } -} diff --git a/packages/dashboard/app-config.schema.json b/packages/dashboard/app-config.schema.json deleted file mode 100644 index 08d4ddfd0..000000000 --- a/packages/dashboard/app-config.schema.json +++ /dev/null @@ -1,241 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "definitions": { - "AllowedTask": { - "properties": { - "displayName": { - "description": "Configure the display name for the task definition.", - "type": "string" - }, - "scheduleEventColor": { - "description": "The color of the event when rendered on the task scheduler in the form of a CSS color string.", - "type": "string" - }, - "taskDefinitionId": { - "description": "The task definition to configure.", - "enum": [ - "compose-clean", - "custom_compose", - "delivery", - "patrol" - ], - "type": "string" - } - }, - "required": [ - "taskDefinitionId" - ], - "type": "object" - }, - "BuildConfig": { - "description": "These will be injected at build time, they CANNOT be changed after the bundle is built.", - "properties": { - "adminTab": { - "description": "Whether the admin tab should be enabled, defaults to false.", - "type": "boolean" - }, - "authProvider": { - "enum": [ - "keycloak", - "stub" - ], - "type": "string" - }, - "baseUrl": { - "description": "The base url that the app is served from, this MUST end with a slash.", - "type": "string" - }, - "customTabs": { - "description": "Whether custom tabs should be enabled, defaults to false.", - "type": "boolean" - } - }, - "required": [ - "authProvider", - "baseUrl" - ], - "type": "object" - }, - "FleetResource": { - "properties": { - "default": { - "$ref": "#/definitions/RobotResource" - } - }, - "required": [ - "default" - ], - "type": "object" - }, - "KeycloakAuthConfig": { - "properties": { - "clientId": { - "type": "string" - }, - "realm": { - "type": "string" - }, - "url": { - "type": "string" - } - }, - "required": [ - "clientId", - "realm", - "url" - ], - "type": "object" - }, - "LogoResource": { - "properties": { - "header": { - "description": "Path to an image to be used as the logo on the app bar.", - "type": "string" - } - }, - "required": [ - "header" - ], - "type": "object" - }, - "Resources": { - "properties": { - "fleets": { - "additionalProperties": { - "$ref": "#/definitions/FleetResource" - }, - "type": "object" - }, - "logos": { - "$ref": "#/definitions/LogoResource" - } - }, - "required": [ - "fleets", - "logos" - ], - "type": "object" - }, - "RobotResource": { - "properties": { - "icon": { - "description": "Path to an image to be used as the robot's icon.", - "type": "string" - }, - "scale": { - "description": "Scale of the image to match the robot's dimensions.", - "type": "number" - } - }, - "type": "object" - }, - "StubAuthConfig": { - "type": "object" - } - }, - "properties": { - "alertAudioPath": { - "description": "Url to a file to be played when an alert occurs on the dashboard.", - "type": "string" - }, - "allowedTasks": { - "description": "List of allowed tasks that can be requested", - "items": { - "$ref": "#/definitions/AllowedTask" - }, - "type": "array" - }, - "attributionPrefix": { - "description": "Branding to be shown on the corner of the map.", - "type": "string" - }, - "authConfig": { - "anyOf": [ - { - "$ref": "#/definitions/StubAuthConfig" - }, - { - "$ref": "#/definitions/KeycloakAuthConfig" - } - ], - "description": "Config for the authentication provider." - }, - "buildConfig": { - "$ref": "#/definitions/BuildConfig" - }, - "cartIds": { - "items": { - "type": "string" - }, - "type": "array" - }, - "defaultMapLevel": { - "description": "The default level to be selected when the map is initially loaded.", - "type": "string" - }, - "defaultRobotZoom": { - "description": "The default zoom level when a robot is focused on the map.", - "type": "number" - }, - "defaultZoom": { - "description": "The default zoom level when the map is initially loaded.", - "type": "number" - }, - "helpLink": { - "description": "Url to be linked for the \"help\" button.", - "type": "string" - }, - "pickupZones": { - "description": "List of available pickup zones used for delivery tasks.", - "items": { - "type": "string" - }, - "type": "array" - }, - "reportIssue": { - "description": "Url to be linked for the \"report issue\" button.", - "type": "string" - }, - "resources": { - "additionalProperties": { - "$ref": "#/definitions/Resources" - }, - "description": "Set various resources (icons, logo etc) used. Different resource can be used based on the theme, `default` is always required.", - "properties": { - "default": { - "$ref": "#/definitions/Resources" - } - }, - "required": [ - "default" - ], - "type": "object" - }, - "rmfServerUrl": { - "description": "Url of the RMF api server.", - "type": "string" - }, - "trajectoryServerUrl": { - "description": "Url of the RMF trajectory server.", - "type": "string" - } - }, - "required": [ - "allowedTasks", - "attributionPrefix", - "authConfig", - "buildConfig", - "cartIds", - "defaultMapLevel", - "defaultRobotZoom", - "defaultZoom", - "helpLink", - "pickupZones", - "reportIssue", - "resources", - "rmfServerUrl", - "trajectoryServerUrl" - ], - "type": "object" -} - diff --git a/packages/dashboard/examples/shared/app.css b/packages/dashboard/examples/shared/app.css deleted file mode 100644 index 2319b13e4..000000000 --- a/packages/dashboard/examples/shared/app.css +++ /dev/null @@ -1,8 +0,0 @@ -html, -body, -#root { - height: 100%; - width: 100%; - margin: 0; - padding: 0; -} diff --git a/packages/dashboard/examples/shared/index.tsx b/packages/dashboard/examples/shared/index.tsx deleted file mode 100644 index 1324d9cc5..000000000 --- a/packages/dashboard/examples/shared/index.tsx +++ /dev/null @@ -1,115 +0,0 @@ -import '@fontsource/roboto/300.css'; -import '@fontsource/roboto/400.css'; -import '@fontsource/roboto/500.css'; -import '@fontsource/roboto/700.css'; -import './app.css'; - -import ReactDOM from 'react-dom/client'; -import { - InitialWindow, - LocallyPersistentWorkspace, - RmfDashboard, - Workspace, -} from 'rmf-dashboard/components'; -import { MicroAppManifest } from 'rmf-dashboard/components/micro-app'; -import doorsApp from 'rmf-dashboard/micro-apps/doors-app'; -import liftsApp from 'rmf-dashboard/micro-apps/lifts-app'; -import createMapApp from 'rmf-dashboard/micro-apps/map-app'; -import robotMutexGroupsApp from 'rmf-dashboard/micro-apps/robot-mutex-groups-app'; -import robotsApp from 'rmf-dashboard/micro-apps/robots-app'; -import tasksApp from 'rmf-dashboard/micro-apps/tasks-app'; -import StubAuthenticator from 'rmf-dashboard/services/stub-authenticator'; - -const mapApp = createMapApp({ - attributionPrefix: 'Open-RMF', - defaultMapLevel: 'L1', - defaultRobotZoom: 20, - defaultZoom: 6, -}); - -const appRegistry: MicroAppManifest[] = [ - mapApp, - doorsApp, - liftsApp, - robotsApp, - robotMutexGroupsApp, - tasksApp, -]; - -const homeWorkspace: InitialWindow[] = [ - { - layout: { x: 0, y: 0, w: 12, h: 6 }, - microApp: mapApp, - }, -]; - -const robotsWorkspace: InitialWindow[] = [ - { - layout: { x: 0, y: 0, w: 7, h: 4 }, - microApp: robotsApp, - }, - { layout: { x: 8, y: 0, w: 5, h: 8 }, microApp: mapApp }, - { layout: { x: 0, y: 0, w: 7, h: 4 }, microApp: doorsApp }, - { layout: { x: 0, y: 0, w: 7, h: 4 }, microApp: liftsApp }, - { layout: { x: 8, y: 0, w: 5, h: 4 }, microApp: robotMutexGroupsApp }, -]; - -const tasksWorkspace: InitialWindow[] = [ - { layout: { x: 0, y: 0, w: 7, h: 8 }, microApp: tasksApp }, - { layout: { x: 8, y: 0, w: 5, h: 8 }, microApp: mapApp }, -]; - -export default function App() { - return ( - , - }, - { - name: 'Robots', - route: 'robots', - element: , - }, - { - name: 'Tasks', - route: 'tasks', - element: , - }, - { - name: 'Custom', - route: 'custom', - element: ( - - ), - }, - ]} - /> - ); -} - -const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement); -root.render(); diff --git a/packages/dashboard/index.html b/packages/dashboard/index.html deleted file mode 100644 index d78460273..000000000 --- a/packages/dashboard/index.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - RMF Dashboard - - -
- - - diff --git a/packages/dashboard/src/app-config.test.ts b/packages/dashboard/src/app-config.test.ts deleted file mode 100644 index 52e76c200..000000000 --- a/packages/dashboard/src/app-config.test.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * @vitest-environment node - */ - -import childProcess from 'child_process'; -import fs from 'fs'; -import { expect, it } from 'vitest'; - -it('app-config json schema is up to date', () => { - const curSchema = fs.readFileSync('app-config.schema.json'); - const newSchema = childProcess.execSync( - 'pnpm typescript-json-schema tsconfig.gen.json AppConfig --required', - ); - if (!newSchema.equals(curSchema)) { - expect.fail( - 'app config schema has changed, please run `pnpm gen-app-config-schema` to update it', - ); - } -}); diff --git a/packages/dashboard/src/app-config.ts b/packages/dashboard/src/app-config.ts deleted file mode 100644 index 4b44676ed..000000000 --- a/packages/dashboard/src/app-config.ts +++ /dev/null @@ -1,140 +0,0 @@ -import testConfig from '../app-config.json'; -import { AllowedTask } from './components'; -import { Resources } from './hooks/use-resources'; -import { Authenticator } from './services/authenticator'; -import { KeycloakAuthenticator } from './services/keycloak'; -import { StubAuthenticator } from './services/stub-authenticator'; - -export interface StubAuthConfig {} - -export interface KeycloakAuthConfig { - url: string; - realm: string; - clientId: string; -} - -/** - * These config are exposed as a global variable. They can be changed after the bundle is built. - * To do so, use a placeholder value like `__RMF_SERVER_URL__` and do a search and replace on - * `index.html` before serving it. - */ -export interface RuntimeConfig { - /** - * Url of the RMF api server. - */ - rmfServerUrl: string; - - /** - * Url of the RMF trajectory server. - */ - trajectoryServerUrl: string; - - /** - * Config for the authentication provider. - */ - authConfig: KeycloakAuthConfig | StubAuthConfig; - - /** - * Url to be linked for the "help" button. - */ - helpLink: string; - - /** - * Url to be linked for the "report issue" button. - */ - reportIssue: string; - - /** - * List of available pickup zones used for delivery tasks. - */ - pickupZones: string[]; // FIXME(koonpeng): Should be part of task definition - - /** - * The default zoom level when the map is initially loaded. - */ - defaultZoom: number; - - /** - * The default zoom level when a robot is focused on the map. - */ - defaultRobotZoom: number; - - /** - * Branding to be shown on the corner of the map. - */ - attributionPrefix: string; - - /** - * The default level to be selected when the map is initially loaded. - */ - defaultMapLevel: string; - - /** - * List of allowed tasks that can be requested - */ - allowedTasks: AllowedTask[]; - - /** - * Url to a file to be played when an alert occurs on the dashboard. - */ - alertAudioPath?: string; - - /** - * Set various resources (icons, logo etc) used. Different resource can be used based on the theme, `default` is always required. - */ - resources: { [theme: string]: Resources; default: Resources }; - - cartIds: string[]; -} - -/** - * These will be injected at build time, they CANNOT be changed after the bundle is built. - */ -export interface BuildConfig { - /** - * The base url that the app is served from, this MUST end with a slash. - */ - baseUrl: string; - - authProvider: 'keycloak' | 'stub'; - - /** - * Whether custom tabs should be enabled, defaults to false. - */ - customTabs?: boolean; - - /** - * Whether the admin tab should be enabled, defaults to false. - */ - adminTab?: boolean; -} - -export interface AppConfig extends RuntimeConfig { - buildConfig: BuildConfig; -} - -declare const APP_CONFIG: AppConfig; - -export const appConfig: AppConfig = (() => { - if (import.meta.env.PROD) { - return APP_CONFIG; - } else { - // globals cannot be injected in tests so we need a fallback, this should be - // removed by terser in prod builds. - return testConfig as AppConfig; - } -})(); - -export const authenticator: Authenticator = (() => { - // must use if statement instead of switch for vite tree shaking to work - if (APP_CONFIG_AUTH_PROVIDER === 'keycloak') { - return new KeycloakAuthenticator( - APP_CONFIG.authConfig as KeycloakAuthConfig, - `${location.origin}${import.meta.env.BASE_URL}silent-check-sso.html`, - ); - } else if (APP_CONFIG_AUTH_PROVIDER === 'stub') { - return new StubAuthenticator(); - } else { - throw new Error('unknown auth provider'); - } -})(); diff --git a/packages/dashboard/src/app.css b/packages/dashboard/src/app.css deleted file mode 100644 index 2319b13e4..000000000 --- a/packages/dashboard/src/app.css +++ /dev/null @@ -1,8 +0,0 @@ -html, -body, -#root { - height: 100%; - width: 100%; - margin: 0; - padding: 0; -} diff --git a/packages/dashboard/src/app.tsx b/packages/dashboard/src/app.tsx deleted file mode 100644 index 722f5e20d..000000000 --- a/packages/dashboard/src/app.tsx +++ /dev/null @@ -1,101 +0,0 @@ -import '@fontsource/roboto/300.css'; -import '@fontsource/roboto/400.css'; -import '@fontsource/roboto/500.css'; -import '@fontsource/roboto/700.css'; -import './app.css'; - -import { appConfig, authenticator } from './app-config'; -import { InitialWindow, LocallyPersistentWorkspace, RmfDashboard, Workspace } from './components'; -import { MicroAppManifest } from './components/micro-app'; -import doorsApp from './micro-apps/doors-app'; -import liftsApp from './micro-apps/lifts-app'; -import createMapApp from './micro-apps/map-app'; -import robotMutexGroupsApp from './micro-apps/robot-mutex-groups-app'; -import robotsApp from './micro-apps/robots-app'; -import tasksApp from './micro-apps/tasks-app'; - -const mapApp = createMapApp({ - attributionPrefix: appConfig.attributionPrefix, - defaultMapLevel: appConfig.defaultMapLevel, - defaultRobotZoom: appConfig.defaultRobotZoom, - defaultZoom: appConfig.defaultZoom, -}); - -const appRegistry: MicroAppManifest[] = [ - mapApp, - doorsApp, - liftsApp, - robotsApp, - robotMutexGroupsApp, - tasksApp, -]; - -const homeWorkspace: InitialWindow[] = [ - { - layout: { x: 0, y: 0, w: 12, h: 6 }, - microApp: mapApp, - }, -]; - -const robotsWorkspace: InitialWindow[] = [ - { - layout: { x: 0, y: 0, w: 7, h: 4 }, - microApp: robotsApp, - }, - { layout: { x: 8, y: 0, w: 5, h: 8 }, microApp: mapApp }, - { layout: { x: 0, y: 0, w: 7, h: 4 }, microApp: doorsApp }, - { layout: { x: 0, y: 0, w: 7, h: 4 }, microApp: liftsApp }, - { layout: { x: 8, y: 0, w: 5, h: 4 }, microApp: robotMutexGroupsApp }, -]; - -const tasksWorkspace: InitialWindow[] = [ - { layout: { x: 0, y: 0, w: 7, h: 8 }, microApp: tasksApp }, - { layout: { x: 8, y: 0, w: 5, h: 8 }, microApp: mapApp }, -]; - -export default function App() { - return ( - , - }, - { - name: 'Robots', - route: 'robots', - element: , - }, - { - name: 'Tasks', - route: 'tasks', - element: , - }, - { - name: 'Custom', - route: 'custom', - element: ( - - ), - }, - ]} - /> - ); -} diff --git a/packages/dashboard/src/components/admin/index.ts b/packages/dashboard/src/components/admin/index.ts deleted file mode 100644 index 164ab508b..000000000 --- a/packages/dashboard/src/components/admin/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './router'; diff --git a/packages/dashboard/src/components/index.ts b/packages/dashboard/src/components/index.ts deleted file mode 100644 index cf5662be4..000000000 --- a/packages/dashboard/src/components/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -export * from '../micro-apps/map-app'; -export * from './app-events'; -export * from './login-card'; -export * from './rmf-dashboard'; -export * from './theme'; -export * from './workspace'; diff --git a/packages/dashboard/src/components/react-three-fiber-hack.d.ts b/packages/dashboard/src/components/react-three-fiber-hack.d.ts deleted file mode 100644 index 5887002ee..000000000 --- a/packages/dashboard/src/components/react-three-fiber-hack.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import '../../../react-components/lib/react-three-fiber-hack'; - -// hack to export only the intrinsic elements that we use -import { ThreeElements } from '@react-three/fiber'; - -declare global { - namespace JSX { - interface IntrinsicElements extends Pick {} - } -} diff --git a/packages/dashboard/src/components/three-fiber/index.tsx b/packages/dashboard/src/components/three-fiber/index.tsx deleted file mode 100644 index 7fc250694..000000000 --- a/packages/dashboard/src/components/three-fiber/index.tsx +++ /dev/null @@ -1,5 +0,0 @@ -export * from './camera-control'; -export * from './door-three'; -export * from './layers-controller'; -export * from './lift-three'; -export * from './robot-three'; diff --git a/packages/dashboard/src/index.tsx b/packages/dashboard/src/index.tsx deleted file mode 100644 index 41cf0a62e..000000000 --- a/packages/dashboard/src/index.tsx +++ /dev/null @@ -1,6 +0,0 @@ -import ReactDOM from 'react-dom/client'; - -import App from './app'; - -const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement); -root.render(); diff --git a/packages/dashboard/src/micro-apps/doors-app.ts b/packages/dashboard/src/micro-apps/doors-app.ts deleted file mode 100644 index 6f617bba9..000000000 --- a/packages/dashboard/src/micro-apps/doors-app.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { createMicroApp } from '../components/micro-app'; - -export default createMicroApp( - 'doors-table', - 'Doors', - () => import('../components/doors-table'), - () => ({}), -); diff --git a/packages/dashboard/src/micro-apps/lifts-app.ts b/packages/dashboard/src/micro-apps/lifts-app.ts deleted file mode 100644 index 7922dfb5a..000000000 --- a/packages/dashboard/src/micro-apps/lifts-app.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { createMicroApp } from '../components/micro-app'; - -export default createMicroApp( - 'lifts-table', - 'Lifts', - () => import('../components/lifts-table'), - () => ({}), -); diff --git a/packages/dashboard/src/micro-apps/tasks-app.ts b/packages/dashboard/src/micro-apps/tasks-app.ts deleted file mode 100644 index 42654915e..000000000 --- a/packages/dashboard/src/micro-apps/tasks-app.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { lazy } from 'react'; - -import { MicroAppManifest } from '../components/micro-app'; - -export default { - appId: 'tasks', - displayName: 'Tasks', - Component: lazy(() => import('../components/tasks/tasks-window')), -} satisfies MicroAppManifest; diff --git a/packages/dashboard/src/vite-env.d.ts b/packages/dashboard/src/vite-env.d.ts deleted file mode 100644 index 9e2cf726b..000000000 --- a/packages/dashboard/src/vite-env.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/// - -declare const APP_CONFIG_BASE_URL: string; -declare const APP_CONFIG_AUTH_PROVIDER: string; -declare const APP_CONFIG_ENABLE_CUSTOM_TABS: boolean; -declare const APP_CONFIG_ENABLE_ADMIN_TAB: boolean; diff --git a/packages/dashboard/tsconfig.app.json b/packages/dashboard/tsconfig.app.json deleted file mode 100644 index e61d21a5b..000000000 --- a/packages/dashboard/tsconfig.app.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "compilerOptions": { - "composite": true, - "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", - "target": "ES2020", - "useDefineForClassFields": true, - "lib": ["ES2020", "DOM", "DOM.Iterable"], - "module": "ESNext", - "skipLibCheck": true, - - /* Bundler mode */ - "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "resolveJsonModule": true, - "isolatedModules": true, - "moduleDetection": "force", - "noEmit": true, - "jsx": "react-jsx", - - /* Linting */ - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noFallthroughCasesInSwitch": true, - - "paths": { - "rmf-dashboard/*": ["./src/*"] - } - }, - "include": ["src", "examples", "app-config.json"] -} diff --git a/packages/dashboard/tsconfig.gen.json b/packages/dashboard/tsconfig.gen.json deleted file mode 100644 index 94d1308f7..000000000 --- a/packages/dashboard/tsconfig.gen.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "./tsconfig.app.json", - "compilerOptions": { - "composite": false, - "tsBuildInfoFile": null - } -} diff --git a/packages/dashboard/vite.config.ts b/packages/dashboard/vite.config.ts deleted file mode 100644 index 1db6ca3e6..000000000 --- a/packages/dashboard/vite.config.ts +++ /dev/null @@ -1,58 +0,0 @@ -/// - -import react from '@vitejs/plugin-react-swc'; -import { defineConfig, Plugin } from 'vite'; - -import appConfig from './app-config.json'; - -/** - * The goal of this plugin is to inject global variables to `index.html`, allowing - * a crude way to configure some variables after the bundle is built via `sed`. - * - * An example use case is building a dockerfile, because the domain in a dev or staging - * environment is typically different from prod, we would normally end up needing to build - * different images (which is really detrimental for staging). In such scenario, you can - * set the `rmfServerUrl` to a placeholder like `__RMF_SERVER_URL_PLACEHOLDER__` in - * `app-config.json`, then do a search and replace at the container entrypoint. - * - * The reason for doing this outside the app code is to avoid these variables from - * being modified by the bundler, and to reduce the chance that the search and replace modify - * unintended code. - */ -const injectGlobals: Plugin = { - name: 'injectRuntimeArgs', - transformIndexHtml: { - order: 'pre', // must be injected before the app - handler: () => { - return [ - { - tag: 'script', - injectTo: 'head', - children: `const APP_CONFIG=${JSON.stringify(appConfig)}`, - }, - ]; - }, - }, -}; - -function booleanToString(b: boolean | null | undefined) { - return b ? 'true' : 'false'; -} - -const buildConfig = appConfig.buildConfig; - -// https://vitejs.dev/config/ -export default defineConfig({ - base: buildConfig.baseUrl, - define: { - APP_CONFIG_AUTH_PROVIDER: `'${buildConfig.authProvider}'`, - APP_CONFIG_ENABLE_CUSTOM_TABS: `${booleanToString(buildConfig.customTabs)}`, - APP_CONFIG_ENABLE_ADMIN_TAB: `${booleanToString(buildConfig.adminTab)}`, - }, - plugins: [injectGlobals, react()], - test: { - environment: 'jsdom', - globals: true, - passWithNoTests: true, - }, -}); diff --git a/packages/react-components/.gitignore b/packages/react-components/.gitignore deleted file mode 100644 index 15c93ffc0..000000000 --- a/packages/react-components/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -/dist/ -lcov.info -coverage-final.json diff --git a/packages/react-components/.storybook/preview.tsx b/packages/react-components/.storybook/preview.tsx deleted file mode 100644 index e8c91d8c0..000000000 --- a/packages/react-components/.storybook/preview.tsx +++ /dev/null @@ -1,63 +0,0 @@ -import { CssBaseline } from '@mui/material'; -import { Theme, ThemeProvider } from '@mui/material/styles'; -import defaultTheme from '@mui/material/styles/defaultTheme'; -import { Decorator, Preview } from '@storybook/react'; -import React from 'react'; -import { LocalizationProvider, rmfDark, rmfLight } from '../lib'; - -const preview: Preview = { - parameters: { - controls: { - matchers: { - color: /(background|color)$/i, - date: /Date$/i, - }, - }, - }, -}; - -export default preview; - -const getTheme = (themeName: string): Theme => { - switch (themeName) { - case 'rmf-light': - return rmfLight; - case 'rmf-dark': - return rmfDark; - default: - return defaultTheme; - } -}; - -const withThemeProvider: Decorator = (Story, context) => { - const theme = getTheme(context.globals.theme); - return ( - - - - - ); -}; - -const withLocalization: Decorator = (Story, context) => { - return ( - - - - ); -}; - -export const decorators = [withThemeProvider, withLocalization]; - -export const globalTypes = { - theme: { - name: 'Theme', - description: 'Global theme for components', - defaultValue: 'rmf-light', - toolbar: { - icon: 'circlehollow', - // Array of plain string values or MenuItem shape (see below) - items: ['material-default', 'rmf-light', 'rmf-dark'], - }, - }, -}; diff --git a/packages/react-components/lib/alert-dialog.spec.tsx b/packages/react-components/lib/alert-dialog.spec.tsx deleted file mode 100644 index 52dd72832..000000000 --- a/packages/react-components/lib/alert-dialog.spec.tsx +++ /dev/null @@ -1,92 +0,0 @@ -import { createTheme, ThemeProvider } from '@mui/material'; -import { fireEvent, render } from '@testing-library/react'; - -import { AlertContent, AlertDialog } from './alert-dialog'; - -const theme = createTheme(); - -describe('AcknowledgeAndCloseAlertDialog', () => { - it('dismiss button called', () => { - const buildAlertDialogContent = (): AlertContent[] => { - return [ - { - title: 'ID', - value: 'testAlertID', - }, - { - title: 'Error logs', - value: '1/1/1970 00:00:00 - error', - }, - { - title: 'Logs', - value: '1/1/1970 00:00:00 - completed', - }, - ]; - }; - const acknowledge = vi.fn(); - const dismiss = vi.fn(); - const root = render( - - - , - ); - expect(() => root.getByText('Acknowledge')).not.toThrow(); - expect(() => root.getByText('Dismiss')).not.toThrow(); - fireEvent.click(root.getByText('Dismiss')); - expect(dismiss).toHaveBeenCalled(); - }); - - it('acknowledge and close', () => { - const buildAlertDialogContent = (): AlertContent[] => { - return [ - { - title: 'ID', - value: 'testAlertID', - }, - { - title: 'Error logs', - value: '1/1/1970 00:00:00 - error', - }, - { - title: 'Logs', - value: '1/1/1970 00:00:00 - completed', - }, - ]; - }; - const acknowledge = vi.fn(); - const close = vi.fn(); - const root = render( - - - , - ); - expect(() => root.getByText('Acknowledge')).not.toThrow(); - expect(() => root.getByText('Dismiss')).not.toThrow(); - fireEvent.click(root.getByText('Acknowledge')); - expect(acknowledge).toHaveBeenCalled(); - // acknowledge button turns to acknowledged - expect(() => root.getByText('Acknowledge')).toThrow(); - expect(() => root.getByText('Acknowledged')).not.toThrow(); - // dismiss button turns to close - expect(() => root.getByText('Dismiss')).toThrow(); - expect(() => root.getByText('Close')).not.toThrow(); - fireEvent.click(root.getByText('Close')); - expect(close).toHaveBeenCalled(); - }); -}); diff --git a/packages/react-components/lib/alert-dialog.stories.tsx b/packages/react-components/lib/alert-dialog.stories.tsx deleted file mode 100644 index 2a6b02758..000000000 --- a/packages/react-components/lib/alert-dialog.stories.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import { Meta, StoryObj } from '@storybook/react'; -import React from 'react'; - -import { AlertContent, AlertDialog } from './alert-dialog'; - -const buildAlertDialogContent = (): AlertContent[] => { - return [ - { - title: 'ID', - value: 'testAlertID', - }, - { - title: 'Error logs', - value: '1/1/1970 00:00:00 - error', - }, - { - title: 'Logs', - value: '1/1/1970 00:00:00 - completed', - }, - ]; -}; -export default { - title: 'Alert Dialog', - component: AlertDialog, -} satisfies Meta; - -type Story = StoryObj; - -export const Default: Story = { - storyName: 'Alert Dialog', - render: () => { - const [acknowledged, setAcknowledged] = React.useState(false); - const [dismissed, setDismissed] = React.useState(false); - return ( - setDismissed(true)} - onAcknowledge={() => setAcknowledged(true)} - title={`${acknowledged ? 'acknowledged!' : 'default'} and ${ - dismissed ? 'dismissed!' : 'default' - }`} - progress={1} - alertContents={buildAlertDialogContent()} - backgroundColor={'ffff'} - > - ); - }, -}; diff --git a/packages/react-components/lib/alert-dialog.tsx b/packages/react-components/lib/alert-dialog.tsx deleted file mode 100644 index 68bb85f8b..000000000 --- a/packages/react-components/lib/alert-dialog.tsx +++ /dev/null @@ -1,193 +0,0 @@ -import { - Box, - Button, - Divider, - LinearProgress, - LinearProgressProps, - TextField, - Typography, - useTheme, -} from '@mui/material'; -import Dialog from '@mui/material/Dialog'; -import DialogActions from '@mui/material/DialogActions'; -import DialogContent from '@mui/material/DialogContent'; -import DialogTitle from '@mui/material/DialogTitle'; -import * as React from 'react'; - -export interface AlertContent { - title: string; - value: string; -} - -export interface CloseAlertDialogProps { - title: string; -} - -export const CloseAlertDialog = React.memo((props: CloseAlertDialogProps) => { - const { title } = props; - return ; -}); - -export interface DialogAlertProps { - onDismiss: () => void; - onAcknowledge?: () => void; - onInspect?: () => void; - acknowledgedBy?: string; - title: string; - progress?: number; - alertContents: AlertContent[]; - backgroundColor: string; -} - -export const AlertDialog = React.memo((props: DialogAlertProps) => { - const theme = useTheme(); - const LinearProgressWithLabel = (props: LinearProgressProps & { value: number }) => { - return ( - - - - - - {`${Math.round( - props.value * 100, - )}%`} - - - ); - }; - - const returnDialogContent = (alertContents: AlertContent[]) => { - return ( - <> - {alertContents.map((message, index) => ( -
- -
- ))} - - ); - }; - - const { - onDismiss, - onAcknowledge, - onInspect, - acknowledgedBy, - title, - progress, - alertContents, - backgroundColor, - } = props; - const [isOpen, setIsOpen] = React.useState(true); - const [acknowledged, setAcknowledged] = React.useState(acknowledgedBy !== undefined); - - return ( - - - {title} - - - {progress ? ( - <> - - Task progress - - - - - - ) : null} - {returnDialogContent(alertContents)} - - - {onInspect ? ( - - ) : null} - {acknowledged ? ( - - ) : onAcknowledge === undefined ? null : ( - - )} - - - - ); -}); diff --git a/packages/react-components/lib/appbar-tab.tsx b/packages/react-components/lib/appbar-tab.tsx deleted file mode 100644 index 896a03350..000000000 --- a/packages/react-components/lib/appbar-tab.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import { styled, Tab, TabProps } from '@mui/material'; - -const StyledTab = styled((props: TabProps) => )(({ theme }) => ({ - color: theme.palette.primary.contrastText, - opacity: 0.6, - '&.Mui-selected': { - color: theme.palette.primary.contrastText, - opacity: 1, - }, -})); - -export interface TabPanelProps extends TabProps { - label: string; - value: string; - onTabClick?: () => void; -} - -export function AppBarTab(props: TabPanelProps): JSX.Element { - const { label, value, onTabClick, ...otherProps } = props; - - return ( - onTabClick && onTabClick()} - {...otherProps} - /> - ); -} diff --git a/packages/react-components/lib/beacons/index.ts b/packages/react-components/lib/beacons/index.ts deleted file mode 100644 index a157aac29..000000000 --- a/packages/react-components/lib/beacons/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './beacon-table-datagrid'; diff --git a/packages/react-components/lib/doors/index.ts b/packages/react-components/lib/doors/index.ts deleted file mode 100644 index d88f99bfa..000000000 --- a/packages/react-components/lib/doors/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from './door-card'; -export * from './door-controls'; -export * from './door-table-datagrid'; -export * from './door-utils'; diff --git a/packages/react-components/lib/error-overlay.stories.tsx b/packages/react-components/lib/error-overlay.stories.tsx deleted file mode 100644 index 0675023a9..000000000 --- a/packages/react-components/lib/error-overlay.stories.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import { styled } from '@mui/material'; -import { Meta, StoryObj } from '@storybook/react'; - -import { ErrorOverlay } from './error-overlay'; -import { SimpleInfo, SimpleInfoProps } from './simple-info'; - -export default { - title: 'Error Overlay', - component: ErrorOverlay, -} satisfies Meta; - -type Story = StoryObj; - -const classes = { - container: 'simple-info-testcomponent', -}; -const SimpleInfo_ = styled((props: SimpleInfoProps) => )(() => ({ - [`& .${classes.container}`]: { - display: 'table', - borderCollapse: 'collapse', - width: '100%', - overflowX: 'auto', - userSelect: 'none', - }, -})); - -function TestComponent() { - const data = [ - { name: 'String', value: 'This is a string' }, - { name: 'Number', value: 3 }, - { - name: 'Array', - value: ['one', 'two', 'three'], - }, - ]; - return ; -} - -export const ErrorOverlayPanel: Story = { - render: (args) => ( - - - - ), -}; diff --git a/packages/react-components/lib/error-overlay.tsx b/packages/react-components/lib/error-overlay.tsx deleted file mode 100644 index d4953eb61..000000000 --- a/packages/react-components/lib/error-overlay.tsx +++ /dev/null @@ -1,82 +0,0 @@ -import ErrorIcon from '@mui/icons-material/Error'; -import { Grid, styled, Typography } from '@mui/material'; -import React from 'react'; - -const classes = { - errorIcon: 'erroroverlay-error-icon', - errorMsg: 'erroroverlay-error-msg', - errorDisabled: 'erroroverlay-error-disabled', - overlay: 'erroroverlay-overlay', - container: 'erroroverlay-container', - disableSelect: 'erroroverlay-disable-select', -}; -const StyledDiv = styled('div')(({ theme }) => ({ - [`& .${classes.errorIcon}`]: { - color: theme.palette.error.main, - fontSize: '2rem', - }, - [`& .${classes.errorMsg}`]: { - margin: '0.5rem', - }, - [`& .${classes.errorDisabled}`]: { - pointerEvents: 'none', - filter: 'blur(.25rem)', - gridArea: '1 / 1', - opacity: 0.6, - }, - [`& .${classes.overlay}`]: { - gridArea: '1 / 1', - backdropFilter: 'blur(.5rem)', - display: 'flex', - alignItems: 'center', - justifyContent: 'center', - }, - [`&.${classes.container}`]: { - display: 'grid', - }, - [`& .${classes.disableSelect}`]: { - userSelect: 'none', - }, -})); - -export interface ErrorOverlayProps { - errorMsg?: string | null; - children: React.ReactNode | null; - overrideErrorStyle?: string; -} - -export const ErrorOverlay = React.memo((props: ErrorOverlayProps): JSX.Element => { - const { errorMsg, children, overrideErrorStyle } = props; - - return errorMsg ? ( - -
{children}
-
-
- - - - - - - Error - - - - - {errorMsg} - -
-
-
- ) : ( - {children} - ); -}); diff --git a/packages/react-components/lib/header-bar.spec.tsx b/packages/react-components/lib/header-bar.spec.tsx deleted file mode 100644 index 9c7523137..000000000 --- a/packages/react-components/lib/header-bar.spec.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import AccountCircleIcon from '@mui/icons-material/AccountCircle'; -import { IconButton, Tab, Toolbar, Typography } from '@mui/material'; -import { cleanup, render, screen } from '@testing-library/react'; - -import { NavigationBar } from '../lib/navigation-bar'; -import { HeaderBar } from './header-bar'; - -describe('Header Bar', () => { - it('renders correctly', () => { - const mockOnTabChange = vi.fn(); - render( - - - - - - - Powered by Open-RMF - - - - - , - ); - expect(screen.getByText('Building')).toBeTruthy(); - expect(screen.getByText('Robots')).toBeTruthy(); - expect(screen.getByText('Powered by Open-RMF')).toBeTruthy(); - expect(screen.getByLabelText('user-btn')).toBeTruthy(); - cleanup(); - }); -}); diff --git a/packages/react-components/lib/header-bar.stories.tsx b/packages/react-components/lib/header-bar.stories.tsx deleted file mode 100644 index fc3591e50..000000000 --- a/packages/react-components/lib/header-bar.stories.tsx +++ /dev/null @@ -1,124 +0,0 @@ -import AccountCircleIcon from '@mui/icons-material/AccountCircle'; -import TabContext from '@mui/lab/TabContext'; -import TabPanel from '@mui/lab/TabPanel'; -import { IconButton, styled, Toolbar, Typography } from '@mui/material'; -import { Meta, StoryObj } from '@storybook/react'; -import React from 'react'; - -import { HeaderBar } from '../lib/header-bar'; -import { AppBarTab } from './appbar-tab'; -import { LogoButton } from './logo-button'; -import { NavigationBar } from './navigation-bar'; - -export default { - title: 'Header Bar', - component: HeaderBar, -} satisfies Meta; - -type Story = StoryObj; - -export const NavBar: Story = { - render: () => { - const [value, setValue] = React.useState('building'); - - const onTabChange = (_event: React.ChangeEvent, newValue: string) => { - setValue(newValue); - }; - - return ( - <> - - - - - - - - - tab panel data - - - other tab panel data - - - - ); - }, -}; - -export const FullHeaderBar: Story = { - render: () => { - const classes = { - toolbar: 'headerbar-story-toolbar', - avatar: 'headerbar-story-avatar', - logo: 'headerbar-story-logo', - }; - const FullHeaderBarStory = styled('div')(({ theme }) => ({ - [`& .${classes.toolbar}`]: { - textAlign: 'right', - flexGrow: -1, - }, - [`& .${classes.avatar}`]: { - flexGrow: 1, - minWidth: theme.spacing(16), - overflow: 'auto', - }, - [`& .${classes.logo}`]: { - maxWidth: 120, - opacity: 1, - }, - })); - - const [value, setValue] = React.useState('building'); - - const onTabChange = (_event: React.ChangeEvent, newValue: string) => { - setValue(newValue); - }; - - return ( - - - - - - - - - - Powered by Open-RMF - - - - - - - tab panel data - - - other tab panel data - - - - ); - }, -}; diff --git a/packages/react-components/lib/header-bar.tsx b/packages/react-components/lib/header-bar.tsx deleted file mode 100644 index ff754bd0c..000000000 --- a/packages/react-components/lib/header-bar.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import { AppBar, AppBarProps, styled } from '@mui/material'; -import clsx from 'clsx'; -import React from 'react'; - -export type HeaderBarProps = React.PropsWithChildren; - -const classes = { - root: 'header-bar-root', -}; -const StyledAppBar = styled((props: HeaderBarProps) => )(() => ({ - [`&.${classes.root}`]: { - display: 'flex', - flexDirection: 'row', - width: '100%', - }, -})); - -export const HeaderBar = ({ - id = 'appbar', - position = 'static', - className, - children, - ...otherProps -}: HeaderBarProps): React.ReactElement => { - return ( - - {children} - - ); -}; diff --git a/packages/react-components/lib/index.ts b/packages/react-components/lib/index.ts deleted file mode 100644 index 700672ac9..000000000 --- a/packages/react-components/lib/index.ts +++ /dev/null @@ -1,36 +0,0 @@ -import '@fontsource/roboto/300.css'; -import '@fontsource/roboto/400.css'; -import '@fontsource/roboto/500.css'; -import '@fontsource/roboto/700.css'; -import '@mui/system'; - -export * from './alert-dialog'; -export * from './appbar-tab'; -export * from './beacons'; -export * from './color-manager'; -export * from './confirmation-dialog'; -export * from './doors'; -export * from './error-overlay'; -export * from './form-inputs'; -export * from './header-bar'; -export * from './lifts'; -export * from './loading'; -export * from './locale'; -export * from './logo-button'; -export * from './map'; -export * from './navigation-bar'; -export * from './place'; -export * from './robots'; -export * from './simple-info'; -export * from './spotlight-accordion'; -export * from './stack-navigator'; -export * from './status-label'; -export * from './svg-text'; -export * from './tasks'; -export * from './themes'; -export * from './tooltip'; -export * from './transfer-list'; -export * from './use-async'; -export * from './utils'; -export * from './window'; -export * from './workcells'; diff --git a/packages/react-components/lib/info-card.stories.tsx b/packages/react-components/lib/info-card.stories.tsx deleted file mode 100644 index 996c6b817..000000000 --- a/packages/react-components/lib/info-card.stories.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import { styled } from '@mui/material'; -import { Meta, StoryObj } from '@storybook/react'; - -import { SimpleInfo } from '../lib'; - -const classes = { - background: 'info-card-root', -}; - -const InfoCardRoot = styled('div')(({ theme }) => ({ - [`&.${classes.background}`]: { - backgroundColor: theme.palette.background.paper, - color: theme.palette.text.primary, - }, -})); - -export default { - title: 'Simple Info', - component: SimpleInfo, - argTypes: { - stringDisplayName: { - name: 'String Display Name', - }, - stringValue: { - name: 'String Value', - }, - numberDisplayName: { - name: 'Number Display Name', - }, - numberValue: { - name: 'Number Value', - }, - }, -} satisfies Meta; - -type Story = StoryObj; - -export const StringData: Story = { - render: (args) => ( - - - - ), -}; - -export const ArrayData: Story = { - render: (args) => ( - - - - ), -}; diff --git a/packages/react-components/lib/lifts/index.ts b/packages/react-components/lib/lifts/index.ts deleted file mode 100644 index 86555bb91..000000000 --- a/packages/react-components/lib/lifts/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * from './lift-card'; -export * from './lift-controls'; -export * from './lift-request-dialog'; -export * from './lift-table-datagrid'; -export * from './lift-utils'; diff --git a/packages/react-components/lib/lifts/lift-table-datagrid.stories.tsx b/packages/react-components/lib/lifts/lift-table-datagrid.stories.tsx deleted file mode 100644 index ffaaf0f24..000000000 --- a/packages/react-components/lib/lifts/lift-table-datagrid.stories.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import { LiftState as RmfLiftState } from 'rmf-models/ros/rmf_lift_msgs/msg'; - -import { LiftDataGridTable, LiftTableData } from './lift-table-datagrid'; -import { makeLift } from './test-utils.spec'; - -const lift = makeLift(); -const mockLifts: LiftTableData[] = [ - { - index: 1, - name: 'Lift1', - currentFloor: 'L1', - destinationFloor: 'L2', - doorState: RmfLiftState.DOOR_OPEN, - motionState: RmfLiftState.MOTION_DOWN, - lift: lift, - }, -]; - -export default { - title: 'LiftDataGridTable', -}; - -export const Default = () => ; -export const Empty = () => ; diff --git a/packages/react-components/lib/logo-button.spec.tsx b/packages/react-components/lib/logo-button.spec.tsx deleted file mode 100644 index 6e75e0627..000000000 --- a/packages/react-components/lib/logo-button.spec.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { cleanup, fireEvent, render, screen } from '@testing-library/react'; - -import { LogoButton } from './logo-button'; - -describe('LogoButton', () => { - it('renders and is clickable', () => { - const mockOnClick = vi.fn(); - render( - , - ); - expect(screen.getAllByRole('button').length).toBe(1); - expect(screen.getByAltText('logo')).toBeTruthy(); - fireEvent.click(screen.getByRole('button')); - expect(mockOnClick).toHaveBeenCalled(); - cleanup(); - }); -}); diff --git a/packages/react-components/lib/logo-button.stories.tsx b/packages/react-components/lib/logo-button.stories.tsx deleted file mode 100644 index e94bae080..000000000 --- a/packages/react-components/lib/logo-button.stories.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { Meta, StoryObj } from '@storybook/react'; - -import { LogoButton } from './logo-button'; - -export default { - title: 'Logo Button', - component: LogoButton, -} satisfies Meta; - -type Story = StoryObj; - -export const Default: Story = { - storyName: 'Logo Button', - render: () => , -}; diff --git a/packages/react-components/lib/logo-button.tsx b/packages/react-components/lib/logo-button.tsx deleted file mode 100644 index 061263984..000000000 --- a/packages/react-components/lib/logo-button.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import { ButtonBase, ButtonBaseProps, styled } from '@mui/material'; -import clsx from 'clsx'; - -const classes = { - logoBtn: 'logo-button-root', - logoImg: 'logo-button-image', -}; -const StyledButtonBase = styled((props: ButtonBaseProps) => )( - ({ theme }) => ({ - [`&.${classes.logoBtn}`]: { - padding: `${theme.spacing(1)} ${theme.spacing(2)}`, - boxSizing: 'border-box', - }, - [`& .${classes.logoImg}`]: { - width: '100%', - height: '100%', - }, - }), -); - -export interface LogoButtonProps extends ButtonBaseProps { - src: string; - alt?: string; -} - -export const LogoButton = ({ - src, - alt, - className, - ...otherProps -}: LogoButtonProps): JSX.Element => { - return ( - - {alt} - - ); -}; diff --git a/packages/react-components/lib/map/index.tsx b/packages/react-components/lib/map/index.tsx deleted file mode 100644 index 608ae8b83..000000000 --- a/packages/react-components/lib/map/index.tsx +++ /dev/null @@ -1,10 +0,0 @@ -export * from './circle-shape'; -export * from './cube-maker'; -export * from './door-three-maker'; -export * from './image-maker'; -export * from './lift-three-maker'; -export * from './robot-three-maker'; -export * from './shape-three-rendering'; -export * from './text-maker'; -export * from './utils'; -export * from './wall-maker'; diff --git a/packages/react-components/lib/navigation-bar.spec.tsx b/packages/react-components/lib/navigation-bar.spec.tsx deleted file mode 100644 index 657ac2eb2..000000000 --- a/packages/react-components/lib/navigation-bar.spec.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import { Tab } from '@mui/material'; -import { cleanup, render, screen } from '@testing-library/react'; - -import { NavigationBar } from './navigation-bar'; - -describe('Banner Tab', () => { - it('renders correctly', () => { - const mockOnTabChange = vi.fn(); - render( - - - - , - ); - expect(screen.getByText('Building')).toBeTruthy(); - cleanup(); - }); -}); diff --git a/packages/react-components/lib/navigation-bar.tsx b/packages/react-components/lib/navigation-bar.tsx deleted file mode 100644 index 3a41ca26a..000000000 --- a/packages/react-components/lib/navigation-bar.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import { styled } from '@mui/material'; -import Tabs, { TabsProps } from '@mui/material/Tabs'; -import React from 'react'; - -const classes = { - tabsContainer: 'navigation-bar-root', -}; -const StyledTabs = styled((props: TabsProps) => )(() => ({ - [`&.${classes.tabsContainer}`]: { - flexGrow: 4, - }, -})); - -export interface NavigationBarProps { - value?: string; - onTabChange?(event: React.ChangeEvent, newValue: unknown): void; - children?: React.ReactNode; -} - -export const NavigationBar = (props: NavigationBarProps): JSX.Element => { - const { value, onTabChange, children } = props; - return ( - - {children} - - ); -}; diff --git a/packages/react-components/lib/robots/index.ts b/packages/react-components/lib/robots/index.ts deleted file mode 100644 index e02ff838d..000000000 --- a/packages/react-components/lib/robots/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from './mutex-group-table'; -export * from './robot-info'; -export * from './robot-table-datagrid'; -export * from './utils'; diff --git a/packages/react-components/lib/robots/mutex-group-table.stories.tsx b/packages/react-components/lib/robots/mutex-group-table.stories.tsx deleted file mode 100644 index b9dcfcd1f..000000000 --- a/packages/react-components/lib/robots/mutex-group-table.stories.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import { Meta } from '@storybook/react'; - -import { MutexGroupTable } from './mutex-group-table'; - -export default { - title: 'MutexGroupTable', -} satisfies Meta; - -export function Default() { - ; -} diff --git a/packages/react-components/lib/robots/robot-table-datagrid.stories.tsx b/packages/react-components/lib/robots/robot-table-datagrid.stories.tsx deleted file mode 100644 index 8080b6b62..000000000 --- a/packages/react-components/lib/robots/robot-table-datagrid.stories.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import { Meta } from '@storybook/react'; -import { ApiServerModelsRmfApiRobotStateStatus as RobotStatus } from 'api-client'; - -import { RobotDataGridTable } from './robot-table-datagrid'; - -export default { - title: 'RobotDataGridTable', -} satisfies Meta; - -export function Default() { - return ( - - ); -} diff --git a/packages/react-components/lib/simple-info.tsx b/packages/react-components/lib/simple-info.tsx deleted file mode 100644 index 562d97d0d..000000000 --- a/packages/react-components/lib/simple-info.tsx +++ /dev/null @@ -1,197 +0,0 @@ -import { styled } from '@mui/material'; -import List from '@mui/material/List'; -import ListItem from '@mui/material/ListItem'; -import Typography from '@mui/material/Typography'; -import clsx from 'clsx'; -import React from 'react'; - -type DataValueTypePrimitive = number | string; -type DataValueTypeArray = DataValueTypePrimitive[]; -type DataValueType = DataValueTypePrimitive | DataValueTypeArray; - -/** - * @param name label of the row - * @param value value of the row - * @param className add and override styles - * @param className.value adds and style to the value - * @param className.overrideValue overrides the style of the value. - * @param className.overrideArrayItemValue overrides the style of the value - * in case the value is an array - * @param disabled adds the disabled style - * @param wrap wraps the context of the text - */ -export interface SimpleInfoData { - name: string; - value: T; - className?: { - value?: T extends DataValueTypeArray ? string | string[] : string; - overrideValue?: string; - overrideArrayItemValue?: string; - }; - disabled?: boolean; - wrap?: boolean; -} - -const classes = { - container: 'simpleinfo-container', - tableRow: 'simpleinfo-table-row', - displayName: 'simpleinfo-display-name', - value: 'simpleinfo-value', - arrayListItem: 'simpleinfo-array-list-item', - arrayItemValue: 'simpleinfo-array-item-value', - disabled: 'simpleinfo-disabled', -}; - -const StyledDiv = styled('div')(({ theme }) => ({ - [`& .${classes.container}`]: { - display: 'table', - borderCollapse: 'collapse', - width: '100%', - overflowX: 'auto', - }, - [`& .${classes.tableRow}`]: { - display: 'table-row', - }, - [`& .${classes.displayName}`]: { - display: 'table-cell', - borderBottom: '1px solid', - borderBottomColor: theme.palette.divider, - borderTop: '1px solid', - borderTopColor: theme.palette.divider, - background: theme.palette.action.hover, - padding: theme.spacing(0.25, 2), - width: '30%', - }, - [`& .${classes.value}`]: { - display: 'table-cell', - textAlign: 'end', - borderBottom: '1px solid', - borderBottomColor: theme.palette.divider, - borderTop: '1px solid', - borderTopColor: theme.palette.divider, - padding: theme.spacing(0.25, 2), - }, - [`& .${classes.arrayListItem}`]: { - justifyContent: 'flex-end', - }, - [`& .${classes.arrayItemValue}`]: { - textAlign: 'end', - }, - [`& .${classes.disabled}`]: { - color: theme.palette.action.disabled, - }, -})); - -export interface SimpleInfoProps - extends React.DetailedHTMLProps, HTMLDivElement> { - infoData: SimpleInfoData[]; - overrideStyle?: { - container?: string; - tableRow?: string; - }; -} - -export const SimpleInfo = (props: SimpleInfoProps): JSX.Element => { - const { infoData, overrideStyle, ...otherProps } = props; - - const renderPrimitive = ({ - name, - value, - className, - disabled, - wrap, - }: SimpleInfoData) => ( - <> - - {name} - - - {value} - - - ); - - const renderArray = ({ - name, - value, - className, - disabled, - }: SimpleInfoData) => { - const arrayItemValueStyle = className?.overrideArrayItemValue - ? className?.overrideArrayItemValue - : classes.arrayItemValue; - const valueStyle = className?.overrideValue ? className?.overrideValue : classes.value; - return ( - <> - - {name} - - - {value.map((item, i) => ( - - - {item} - - - ))} - - - ); - }; - - const renderLine = (data: SimpleInfoData) => { - switch (typeof data.value) { - case 'object': - if (Array.isArray(data.value)) { - return renderArray(data as SimpleInfoData); - } else { - throw Error('nested object is not supported'); - } - break; - case 'function': - case 'symbol': - break; - default: - return renderPrimitive(data as SimpleInfoData); - } - }; - - return ( - -
- {infoData.map((item) => ( - -
- {renderLine(item)} -
-
- ))} -
-
- ); -}; - -export default SimpleInfoProps; diff --git a/packages/react-components/lib/spotlight-accordion.tsx b/packages/react-components/lib/spotlight-accordion.tsx deleted file mode 100644 index 339788cb3..000000000 --- a/packages/react-components/lib/spotlight-accordion.tsx +++ /dev/null @@ -1,95 +0,0 @@ -import { AccordionProps } from '@mui/material'; -import React, { MutableRefObject } from 'react'; - -type ManagedProps = 'onChange' | 'expanded'; - -export interface SpotlightHandle { - spotlight(): void; -} - -export type SpotlightAccordionProps

> = Omit< - P, - ManagedProps ->; - -type OptionalChildren> = Omit & { - children?: T['children']; -}; - -/** - * Given an Accordion component, add support for putting it on "spotlight". This customize the - * component so that it returns a ref with a `spotlight` method. Calling that method will scroll - * the component into view and expand it. - * - * This overrides the `onChange` and `expanded` props so those are removed from the public interface. - * @param BaseAccordion - */ -export function withSpotlight

>( - BaseAccordion: React.ComponentType

, -): React.ForwardRefExoticComponent< - React.PropsWithoutRef> & React.RefAttributes -> { - return React.forwardRef((props: SpotlightAccordionProps

, ref: React.Ref) => { - const [expanded, setExpanded] = React.useState(false); - const innerRef = React.useRef(); - - React.useImperativeHandle(ref, () => { - return { - spotlight: () => { - setExpanded(true); - innerRef.current?.scrollIntoView({ behavior: 'smooth' }); - }, - }; - }); - - return ( - setExpanded(newExpanded)} - {...(props as P)} - > - {props.children} - - ); - }); -} - -export interface SpotlightRef { - ref: React.RefCallback; - spotlight: () => void; -} - -/** - * Allows a spotlight to be called even when the component is not mounted. The spotlight will be - * deferred until the component is mounted. - */ -export function createSpotlightRef(): SpotlightRef { - const ref: MutableRefObject = { - current: null, - }; - const spotlightDefer: MutableRefObject = { - current: false, - }; - - const doSpotlight = () => { - if (ref.current) { - ref.current.spotlight(); - } else { - spotlightDefer.current = true; - } - }; - - const refCb: React.RefCallback = (newRef) => { - if (spotlightDefer.current) { - newRef?.spotlight(); - spotlightDefer.current = false; - } - ref.current = newRef; - }; - - return { ref: refCb, spotlight: doSpotlight }; -} - -export function useSpotlightRef(): React.MutableRefObject { - return React.useRef(createSpotlightRef()); -} diff --git a/packages/react-components/lib/stack-navigator.spec.ts b/packages/react-components/lib/stack-navigator.spec.ts deleted file mode 100644 index b6d545d81..000000000 --- a/packages/react-components/lib/stack-navigator.spec.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { renderHook, RenderHookResult } from '@testing-library/react'; -import { act } from 'react'; - -import { StackNavigatorDispatch, useStackNavigator } from '../lib'; - -describe('useStackNavigator', () => { - let hookResult: RenderHookResult< - ReturnType>, - Parameters> - >['result']; - let stackDispatch: StackNavigatorDispatch; - - beforeEach(() => { - hookResult = renderHook(() => useStackNavigator([0], 0)).result; - stackDispatch = hookResult.current[1]; - }); - - it('push', () => { - act(() => stackDispatch.push(10)); - const stack = hookResult.current; - expect(stack).toHaveLength(2); - expect(stack[0][0]).toBe(0); - expect(stack[0][1]).toBe(10); - }); - - it('pop does not remove last item', () => { - act(() => { - stackDispatch.push(2); - stackDispatch.pop(); - stackDispatch.pop(); - }); - const stack = hookResult.current[0]; - expect(stack).toHaveLength(1); - expect(stack[0]).toBe(0); - }); - - it('reset returns the stack to the initial state', () => { - act(() => { - stackDispatch.push(2); - stackDispatch.push(3); - }); - expect(hookResult.current[0]).toHaveLength(3); - act(() => { - stackDispatch.reset(); - }); - expect(hookResult.current[0]).toHaveLength(1); - expect(hookResult.current[0][0]).toBe(0); - }); - - it('home pushes the home view onto the stack', () => { - act(() => { - stackDispatch.push(2); - stackDispatch.push(3); - }); - expect(hookResult.current[0]).toHaveLength(3); - act(() => { - stackDispatch.home(); - }); - expect(hookResult.current[0]).toHaveLength(4); - expect(hookResult.current[0][0]).toBe(0); - }); -}); diff --git a/packages/react-components/lib/stack-navigator.ts b/packages/react-components/lib/stack-navigator.ts deleted file mode 100644 index e481b62b1..000000000 --- a/packages/react-components/lib/stack-navigator.ts +++ /dev/null @@ -1,45 +0,0 @@ -import React from 'react'; - -export interface StackNavigatorDispatch { - /** - * Push a new view into the stack, this triggers a re-render. - */ - push(view: KeyType): void; - /** - * Remove the top element of the stack, this triggers a re-render. - * If the stack only has one item remaining, this is a no-op. - */ - pop(): void; - /** - * Sets the top of the stack to the home view, this triggers a re-render. - */ - home(): void; - /** - * Resets the state to the initial state, this triggers a re-render. - */ - reset(): void; -} - -/** - * A reducer hook that helps manage a stack of views. - * @param initialState - * @param homeView - */ -export function useStackNavigator( - initialState: KeyType[], - homeView: KeyType, -): [KeyType[], StackNavigatorDispatch] { - const [stack, setStack] = React.useState(initialState); - const dispatch = React.useMemo( - () => ({ - push: (viewId: KeyType) => setStack((prev) => [...prev, viewId]), - pop: () => setStack((prev) => (prev.length > 1 ? prev.slice(0, prev.length - 1) : prev)), - home: () => setStack((prev) => [...prev, homeView]), - reset: () => setStack(initialState), - }), - [homeView, initialState], - ); - return [stack, dispatch]; -} - -export default useStackNavigator; diff --git a/packages/react-components/lib/status-label.spec.tsx b/packages/react-components/lib/status-label.spec.tsx deleted file mode 100644 index 891462405..000000000 --- a/packages/react-components/lib/status-label.spec.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { render } from '@testing-library/react'; - -import { StatusLabel } from './status-label'; - -describe('variant === unknown', () => { - it('text is "N/A" regardless of the prop', () => { - const root = render(); - expect(root.queryByText('N/A')).toBeTruthy(); - }); - - it('border color is different for unknown variant', () => { - const normal = render(); - const unknown = render(); - const normalColor = window.getComputedStyle(normal.getByTestId('normal')).borderColor; - const unknownColor = window.getComputedStyle(unknown.getByTestId('unknown')).borderColor; - expect(normalColor).not.toBe(unknownColor); - }); -}); diff --git a/packages/react-components/lib/status-label.tsx b/packages/react-components/lib/status-label.tsx deleted file mode 100644 index 1b8d0b8df..000000000 --- a/packages/react-components/lib/status-label.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import { styled, Typography } from '@mui/material'; -import clsx from 'clsx'; - -const classes = { - status: 'status-label-root', - unknown: 'status-label-unknown', -}; -const StyledDiv = styled('div')(({ theme }) => ({ - [`&.${classes.status}`]: { - borderColor: theme.palette.primary.main, - borderRadius: theme.shape.borderRadius, - borderStyle: 'solid', - borderWidth: '2px', - padding: '5px', - width: '4rem', - textAlign: 'center', - flexShrink: 0, - }, - [`&.${classes.unknown}`]: { - borderColor: theme.palette.grey[500], - }, -})); - -export interface StatusLabelProps { - /** - * The text to show on the label. Because the label has a fixed width, the string should not - * have more than 6-9 characters, depending on the font and character width. - */ - text?: string; - className?: string; - - /** - * Defaults to `normal`. - * - * The `unknown` variant should be used when displaying an unknown status. When using the - * `unknown` variant, the `borderColor` css and `text` props are ignored. - */ - variant?: 'normal' | 'unknown'; -} - -export const StatusLabel = (props: StatusLabelProps): JSX.Element => { - const { text = '', className, variant = 'normal', ...otherProps } = props; - return ( - - - {variant === 'unknown' ? 'N/A' : text} - - - ); -}; diff --git a/packages/react-components/lib/svg-text.tsx b/packages/react-components/lib/svg-text.tsx deleted file mode 100644 index e47b1713f..000000000 --- a/packages/react-components/lib/svg-text.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import React from 'react'; - -export interface SvgTextProps extends React.SVGProps { - text: string; - targetWidth: number; -} - -/** - * A wrapper to `` element that attempts to fix text into a given width, ellipsing it if it - * is too long. Unlike the `textLength` attribute, this does not "compress" or "expand" the text. - * @param props - */ -export const SvgText = (props: SvgTextProps): JSX.Element => { - const { text, targetWidth, ...otherProps } = props; - const callbackRef = (textElem: SVGTextElement | null) => { - if (!textElem) { - return; - } - - // svg text does not support auto ellipses, this workaround by testing the text length and - // truncate it bit by bit until it fits the icon. It's a bit hacky but it shouldn't be too bad - // unless the robot name is mega long. - for (textElem.textContent = text; textElem.getComputedTextLength() > targetWidth; ) { - textElem.textContent = textElem.textContent.slice(0, textElem.textContent.length - 6) + '…'; - } - }; - - return ; -}; - -export default SvgText; diff --git a/packages/react-components/lib/tasks/index.ts b/packages/react-components/lib/tasks/index.ts deleted file mode 100644 index 003071b36..000000000 --- a/packages/react-components/lib/tasks/index.ts +++ /dev/null @@ -1,11 +0,0 @@ -export * from './booking-label'; -export * from './task-booking-label-utils'; -export * from './task-form'; -export * from './task-info'; -export * from './task-logs'; -export * from './task-schedule-event-edit-delete-popup'; -export * from './task-table'; -export * from './task-table-datagrid'; -export * from './task-timeline'; -export * from './types'; -export * from './utils'; diff --git a/packages/react-components/lib/tasks/task-logs.spec.tsx b/packages/react-components/lib/tasks/task-logs.spec.tsx deleted file mode 100644 index ed66bdf25..000000000 --- a/packages/react-components/lib/tasks/task-logs.spec.tsx +++ /dev/null @@ -1,74 +0,0 @@ -import { render } from '@testing-library/react'; - -import { TaskLogs } from './task-logs'; -import { makeTaskLog } from './test-data.spec'; - -describe('TaskLogs', () => { - it('shows all event logs', () => { - const logs = makeTaskLog('task'); - const root = render( - `Event ${eventId}`} - eventStatus={() => 'completed'} - />, - ); - Object.values(logs.phases!).forEach((p) => { - Object.values(p.events!).forEach((e) => { - e.forEach((l) => { - expect(root.getAllByText(l.text).length).toBeGreaterThan(0); - }); - }); - }); - }); - - it('placeholder is shown when an event has no logs', () => { - const root = render( - 'test_event'} - eventStatus={() => 'completed'} - />, - ); - expect(() => root.getByText('No Logs')).not.toThrow(); - }); - - it('placeholder is shown when there are no events', () => { - const root = render( - 'test_event'} - eventStatus={() => 'completed'} - />, - ); - expect(() => root.getByText('No Event Logs')).not.toThrow(); - }); - - it('placeholder is shown where there are no phases', () => { - const root = render( - 'test_event'} - eventStatus={() => 'completed'} - />, - ); - expect(() => root.getByText('No logs to be shown')).not.toThrow(); - }); -}); diff --git a/packages/react-components/lib/tasks/task-logs.stories.tsx b/packages/react-components/lib/tasks/task-logs.stories.tsx deleted file mode 100644 index 3b7644870..000000000 --- a/packages/react-components/lib/tasks/task-logs.stories.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { Meta, StoryObj } from '@storybook/react'; - -import { TaskLogs } from './task-logs'; -import { makeTaskLog } from './test-data.spec'; - -export default { - title: 'Tasks/Logs', - component: TaskLogs, -} satisfies Meta; - -type Story = StoryObj; - -export const Logs: Story = { - args: { - taskLog: makeTaskLog('task'), - eventName: (_phaseId, eventId) => `Event ${eventId}`, - eventStatus: () => 'completed', - }, -}; diff --git a/packages/react-components/lib/tasks/task-logs.tsx b/packages/react-components/lib/tasks/task-logs.tsx deleted file mode 100644 index 2a6eba616..000000000 --- a/packages/react-components/lib/tasks/task-logs.tsx +++ /dev/null @@ -1,160 +0,0 @@ -import { Divider, Grid, Paper, PaperProps, styled, Typography, useTheme } from '@mui/material'; -import type { EventStateOutput as EventState, TaskEventLog } from 'api-client'; -import React from 'react'; - -type EventStatus = Required['status']; - -const prefix = 'task-logs'; -const classes = { - root: `${prefix}-root`, -}; - -export interface TaskLogsProps { - taskLog: TaskEventLog; - eventName: (phaseId: string, eventId: string) => string; - eventStatus: (phaseId: string, eventId: string) => EventStatus | undefined; -} - -const StyledPaper = styled((props: PaperProps) => )( - ({ theme }) => ({ - [`&.${classes.root}`]: { - padding: theme.spacing(1), - width: '100%', - flex: '0 0 auto', - maxHeight: '100%', - overflow: 'auto', - }, - }), -); - -export const TaskLogs: React.FC = ({ taskLog, eventName, eventStatus }) => { - const theme = useTheme(); - - function mapEventColor(eventStatus?: EventStatus) { - // TODO(MXG): We should make this color selection consistent with the color - // selection that's done for task states. - if (eventStatus == null) return theme.palette.warning.light; - - switch (eventStatus) { - case 'uninitialized': - case 'blocked': - case 'error': - case 'failed': - return theme.palette.error.dark; - - case 'queued': - case 'standby': - return theme.palette.info.light; - - case 'underway': - return theme.palette.success.light; - - case 'delayed': - return theme.palette.warning.main; - - case 'skipped': - case 'canceled': - case 'killed': - return theme.palette.error.light; - - case 'completed': - return theme.palette.info.light; - - default: - return theme.palette.error.dark; - } - } - - return ( - - - {taskLog.task_id} - - - {taskLog.phases ? ( - Object.entries(taskLog.phases).map(([phaseId, phase]) => ( - - - Phase - {phaseId} - - - - {phase.events ? ( - Object.entries(phase.events).map(([eventId, event]) => { - return ( -

- - {eventName(phaseId, eventId)} - - {event.length > 0 ? ( - event.map((log, idx) => ( - - - - {new Date(log.unix_millis_time).toLocaleString()} - - - - {log.text} - - - )) - ) : ( - - No Logs - - )} -
- ); - }) - ) : ( - - No Event Logs - - )} - - )) - ) : ( -
- - No logs to be shown - -
- )} - - ); -}; diff --git a/packages/react-components/lib/tasks/utils.ts b/packages/react-components/lib/tasks/utils.ts deleted file mode 100644 index 6a7c6ed40..000000000 --- a/packages/react-components/lib/tasks/utils.ts +++ /dev/null @@ -1,236 +0,0 @@ -import type { Priority, TaskRequest, TaskStateOutput as TaskState } from 'api-client'; -import { TaskType as RmfTaskType } from 'rmf-models/ros/rmf_task_msgs/msg'; - -export function taskTypeToStr(taskType: number): string { - switch (taskType) { - case RmfTaskType.TYPE_CHARGE_BATTERY: - return 'Charge'; - case RmfTaskType.TYPE_CLEAN: - return 'Clean'; - case RmfTaskType.TYPE_DELIVERY: - return 'Delivery'; - case RmfTaskType.TYPE_LOOP: - return 'Loop'; - case RmfTaskType.TYPE_PATROL: - return 'Patrol'; - case RmfTaskType.TYPE_STATION: - return 'Station'; - default: - return 'Unknown'; - } -} - -function parsePhaseDetail(phases: TaskState['phases'], category?: string) { - if (phases) { - if (category === 'Loop') { - const startPhase = phases['1']; - const endPhase = phases['2']; - const from = startPhase.category?.split('[place:')[1].split(']')[0]; - const to = endPhase.category?.split('[place:')[1].split(']')[0]; - return { to, from }; - } - } - return {}; -} - -export function parseTaskDetail( - task: TaskState, - category?: string, -): { to: string; from: string } | {} { - if (category?.includes('Loop')) return parsePhaseDetail(task.phases, category); - if (category?.includes('Delivery')) { - const from = category?.split('[place:')[1].split(']')[0]; - const to = category?.split('[place:')[2].split(']')[0]; - return { to, from }; - } else { - return {}; - } -} - -export function parseCategory(state?: TaskState, request?: TaskRequest): string { - if (request && request.category.toLowerCase() === 'patrol') { - return 'Patrol'; - } - - const supportedDeliveries = [ - 'delivery_pickup', - 'delivery_sequential_lot_pickup', - 'delivery_area_pickup', - ]; - if ( - request && - request.description['category'] && - supportedDeliveries.includes(request.description['category']) - ) { - return request.description['category']; - } - - if (state && state.category) { - return state.category; - } - return 'n/a'; -} - -export function parsePickup(request?: TaskRequest): string { - if (request === undefined || request.category.toLowerCase() === 'patrol') { - return 'n/a'; - } - - // custom deliveries - const supportedDeliveries = [ - 'delivery_pickup', - 'delivery_sequential_lot_pickup', - 'delivery_area_pickup', - ]; - if ( - !request.description['category'] || - !supportedDeliveries.includes(request.description['category']) - ) { - return 'n/a'; - } - - // TODO(ac): use schemas - try { - const deliveryType: string = request.description['category']; - const perform_action_description = - request.description['phases'][0]['activity']['description']['activities'][1]['description'][ - 'description' - ]; - - switch (deliveryType) { - case 'delivery_pickup': { - const pickup_lot: string = perform_action_description['pickup_lot']; - return pickup_lot; - } - case 'delivery_sequential_lot_pickup': - case 'delivery_area_pickup': { - const pickup_zone: string = perform_action_description['pickup_zone']; - return pickup_zone; - } - default: - return 'n/a'; - } - } catch (e) { - console.error(`Failed to parse pickup lot/zone from task request: ${(e as Error).message}`); - } - - return 'n/a'; -} - -export function parseCartId(request?: TaskRequest): string { - if (request === undefined || request.category.toLowerCase() === 'patrol') { - return 'n/a'; - } - - // custom deliveries - const supportedDeliveries = [ - 'delivery_pickup', - 'delivery_sequential_lot_pickup', - 'delivery_area_pickup', - ]; - if ( - !request.description['category'] || - !supportedDeliveries.includes(request.description['category']) - ) { - return 'n/a'; - } - - // TODO(ac): use schemas - try { - const perform_action_description = - request.description['phases'][0]['activity']['description']['activities'][1]['description'][ - 'description' - ]; - const cartId: string = perform_action_description['cart_id']; - return cartId; - } catch (e) { - console.error(`Failed to parse cart ID from task request: ${(e as Error).message}`); - } - - return 'n/a'; -} - -export function parseDestination(state?: TaskState, request?: TaskRequest): string { - if (!state && !request) { - return 'n/a'; - } - - // patrol - if ( - request && - request.category.toLowerCase() === 'patrol' && - request.description['places'] !== undefined && - request.description['places'].length > 0 - ) { - return request.description['places'].at(-1); - } - - // custom deliveries - const supportedDeliveries = [ - 'delivery_pickup', - 'delivery_sequential_lot_pickup', - 'delivery_area_pickup', - ]; - if ( - !request || - !request.description['category'] || - !supportedDeliveries.includes((request.description['category'] as string).toLowerCase()) - ) { - return 'n/a'; - } - - // TODO(ac): use schemas - try { - const destination = - request.description['phases'][1]['activity']['description']['activities'][0]['description']; - return destination; - } catch (e) { - console.error(`Failed to parse destination from task request: ${(e as Error).message}`); - } - - // automated tasks that can only be parsed with state - if (state && state.category && state.category === 'Charge Battery') { - try { - const charge_phase = state['phases'] ? state['phases']['1'] : undefined; - const charge_events = charge_phase ? charge_phase.events : undefined; - const charge_event_name = charge_events ? charge_events['1'].name : undefined; - if (charge_event_name === undefined) { - console.error('Unable to parse charging event name.'); - return 'n/a'; - } - - const charging_place = charge_event_name?.split('[place:')[1].split(']')[0]; - if (!charging_place) { - throw Error('Cannot find charging place'); - } - return charging_place; - } catch (e) { - console.error(`Failed to parse charging point from task state: ${(e as Error).message}`); - } - } - - return 'n/a'; -} - -export function createTaskPriority(prioritize: boolean): Priority { - return { type: 'binary', value: prioritize ? 1 : 0 }; -} - -// FIXME(ac): This method of parsing is crude, and will be fixed using schemas -// when we migrate to jsonforms. -export function parseTaskPriority(priority: Priority | null | undefined): boolean { - if (!priority) { - return false; - } - - if ( - typeof priority == 'object' && - 'type' in priority && - priority['type'] === 'binary' && - 'value' in priority && - typeof priority['value'] == 'number' - ) { - return (priority['value'] as number) > 0; - } - return false; -} diff --git a/packages/react-components/lib/test/locale.tsx b/packages/react-components/lib/test/locale.tsx deleted file mode 100644 index a1b5cc093..000000000 --- a/packages/react-components/lib/test/locale.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns'; -import { LocalizationProvider as MuiLocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; -import React from 'react'; - -export const TestLocalizationProvider: React.FC = ({ children }) => { - return {children}; -}; diff --git a/packages/react-components/lib/themes/common-theme.tsx b/packages/react-components/lib/themes/common-theme.tsx deleted file mode 100644 index c13ebe963..000000000 --- a/packages/react-components/lib/themes/common-theme.tsx +++ /dev/null @@ -1,35 +0,0 @@ -const commonTheme = { - secondary: { - // Smitten, Cyclamen, Pansy Purple - main: '#BC477B', - light: '#F178AA', - dark: '#880E4F', - }, - success: { - // Apple Green, Inchworm, Avocado - main: '#7FB800', - light: '#B3EB49', - dark: '#6dff6f', - }, - error: { - // Radical Red, Salmon Pink, Red NCS - main: '#EF5264', - light: '#FF8591', - dark: '#B7153A', - }, - warning: { - // Honey Yellow, Minion Yellow, Harvest Gold - main: '#FFB400', - light: '#FFE64C', - dark: '#C68500', - }, - info: { - // Sky Blue Crayola, Electric Blue, Viridian Green - // used in admin/information/indicators - main: '#64D4EE', - light: '#64E9EE', - dark: '#009FAF', - }, -}; - -export default commonTheme; diff --git a/packages/react-components/lib/themes/index.ts b/packages/react-components/lib/themes/index.ts deleted file mode 100644 index 18c537c26..000000000 --- a/packages/react-components/lib/themes/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './rmf-dark'; -export * from './rmf-light'; diff --git a/packages/react-components/lib/themes/rmf-dark.tsx b/packages/react-components/lib/themes/rmf-dark.tsx deleted file mode 100644 index ff7736e0e..000000000 --- a/packages/react-components/lib/themes/rmf-dark.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import { createTheme } from '@mui/material/styles'; - -import commonTheme from './common-theme'; - -const base = createTheme({ - palette: { - mode: 'dark', - ...commonTheme, - primary: { - //Charcoal, Rich Black Fogra 29, Cadet - main: '#37474F', - dark: '#102027', - light: '#62727B', - }, - background: { - //Rich Black Fogra 29, Cadet - default: '#102027', - paper: '#62727B', - }, - }, -}); - -export const rmfDark = createTheme( - { - components: { - MuiTableCell: { - styleOverrides: { - stickyHeader: { - backgroundColor: base.palette.primary.main, - }, - }, - }, - }, - }, - base, -); diff --git a/packages/react-components/lib/themes/rmf-light.tsx b/packages/react-components/lib/themes/rmf-light.tsx deleted file mode 100644 index 24089833f..000000000 --- a/packages/react-components/lib/themes/rmf-light.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import { createTheme } from '@mui/material/styles'; - -import commonTheme from './common-theme'; - -export const base = createTheme({ - //Light Grey, Cultured, Silver Sand - palette: { - ...commonTheme, - mode: 'light', - primary: { - main: '#1FD8DC ', - light: '#ECEFF1', - dark: '#B0BEC5', - }, - background: { - //Cultured, White - default: '#EEEEEE', - paper: '#FFFFFF', - }, - }, -}); - -export const rmfLight = createTheme({ - ...base, - components: { - MuiTableCell: { - styleOverrides: { - stickyHeader: { - backgroundColor: base.palette.primary.main, - }, - }, - }, - }, -}); diff --git a/packages/react-components/lib/tooltip.spec.tsx b/packages/react-components/lib/tooltip.spec.tsx deleted file mode 100644 index e85424aa2..000000000 --- a/packages/react-components/lib/tooltip.spec.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import { Typography } from '@mui/material'; -import { fireEvent, render, screen } from '@testing-library/react'; - -import Tooltip from './tooltip'; - -describe('Tooltip', () => { - it('renders the tooltip', () => { - render( - - Tooltip is enabled - , - ); - - fireEvent.mouseEnter(screen.getByRole('heading')); - - expect(screen.getByTestId('test-tooltip')).toBeTruthy(); - }); - - it('does not render the tooltip when disabled', () => { - render( - - Tooltip is disabled - , - ); - - fireEvent.mouseEnter(screen.getByRole('heading')); - - expect(screen.queryByTestId('test-tooltip')).toBeNull(); - }); -}); diff --git a/packages/react-components/lib/tooltip.stories.tsx b/packages/react-components/lib/tooltip.stories.tsx deleted file mode 100644 index e8b721cf2..000000000 --- a/packages/react-components/lib/tooltip.stories.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import { Typography } from '@mui/material'; -import { Meta, StoryObj } from '@storybook/react'; - -import { Tooltip } from './tooltip'; - -export default { - title: 'Tooltip', - component: Tooltip, -} satisfies Meta; - -type Story = StoryObj; - -export const SimpleTooltip: Story = { - args: { - title: 'This is a tooltip', - }, - render: (args) => ( - - Hover over me - - ), -}; diff --git a/packages/react-components/lib/tooltip.tsx b/packages/react-components/lib/tooltip.tsx deleted file mode 100644 index 4f9035f08..000000000 --- a/packages/react-components/lib/tooltip.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import { styled, Tooltip as MuiTooltip } from '@mui/material'; - -export interface TooltipProps { - title: string; - id: string; - enabled: boolean; //this prop allows you to enabled / disable the use of tooltips - children: JSX.Element; -} - -const classes = { - tooltipWidth: 'tooltip-width', -}; -const StyledDiv = styled('div')(() => ({ - [`& .${classes.tooltipWidth}`]: { - maxWidth: 200, - }, -})); - -export const Tooltip = (props: TooltipProps): JSX.Element => { - const { title, id, enabled } = props; - return ( - - {enabled && ( - - {props.children} - - )} - {!enabled && props.children} - - ); -}; - -export default Tooltip; diff --git a/packages/react-components/lib/ts-utils.ts b/packages/react-components/lib/ts-utils.ts deleted file mode 100644 index c0e740898..000000000 --- a/packages/react-components/lib/ts-utils.ts +++ /dev/null @@ -1,34 +0,0 @@ -// This is unused now but could be useful in the future. The `defaultProps` is the preferred way -// to specify default properties for class components, while it does work for functional components, -// it does not work for forwardRef functional components. (Technically it works but the typescript -// support does not give the correct types.) -/** - * Extracts the optional props that should be defined in a component's `defaultProps` property. - * - * This extracts all the optional properties of a given type and make them required. - */ -export type DefaultPropsType = { - [K2 in Exclude< - /** - * if `T extends Record>`, it means T[K] is NOT a optional property, - * this works because T[K] returns the type disregarding the optional identifier. - * - * For example, given - * interface Foo { - * bar?: string; - * }, - * T[K] would result in `string` and NOT `string | undefined`; - * - * Because T[K] takes the type specified, `T extends Record` (note: without - * the `Exclude`), given - * interface Foo { - * bar: string | undefined; - * } - * It will return `string | undefined` and `T extends Record` would return - * TRUE even though `bar` is technically optional. - * So we need to extra `Exclude` to take this situation into account. - */ - { [K in keyof T]: T extends Record> ? never : K }[keyof T], - undefined - >]: T[K2]; -}; diff --git a/packages/react-components/lib/utils/index.ts b/packages/react-components/lib/utils/index.ts deleted file mode 100644 index 53a6e970e..000000000 --- a/packages/react-components/lib/utils/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './geometry'; -export * from './item-table'; -export * from './misc'; diff --git a/packages/react-components/package.json b/packages/react-components/package.json deleted file mode 100644 index 00cc1afbf..000000000 --- a/packages/react-components/package.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "name": "react-components", - "version": "0.2.0", - "description": "Reusable react components for building Open-RMF frontends", - "type": "module", - "main": "lib/index.ts", - "scripts": { - "lint": "tsc --build && eslint --max-warnings 0 lib", - "prepack": "pnpm run lint && vitest --run", - "start": "storybook dev -p 6006", - "test": "vitest", - "test:coverage": "vitest --coverage" - }, - "author": "koonpeng@openrobotics.org", - "license": "Apache-2.0", - "dependencies": { - "@date-io/core": "^3.0.0", - "@date-io/date-fns": "^2.17.0", - "@emotion/react": "^11.13.0", - "@emotion/styled": "^11.13.0", - "@mui/icons-material": "^5.8.3", - "@mui/lab": "5.0.0-alpha.172", - "@mui/material": "^5.8.3", - "@mui/system": "^5.8.3", - "@mui/x-data-grid": "^5.12.1", - "@mui/x-date-pickers": "^6.19.0", - "@react-three/drei": "^9.103.0", - "@react-three/fiber": "^8.16.1", - "@types/crc": "^3.4.0", - "@types/rbush": "^3.0.0", - "@types/react-grid-layout": "^1.3.2", - "@types/shallowequal": "^1.1.1", - "@types/three": "^0.166.0", - "api-client": "workspace:*", - "clsx": "^1.1.1", - "crc": "^3.8.0", - "date-fns": "^2.30.0", - "debug": "^4.2.0", - "eventemitter3": "^4.0.7", - "node-vibrant": "^3.1.6", - "rbush": "^3.0.1", - "react": "^18.2.0", - "react-customizable-progressbar": "^1.2.0", - "react-dom": "^18.2.0", - "react-grid-layout": "^1.3.4", - "react-router": "^6.14.1", - "react-router-dom": "^6.14.1", - "react-virtualized-auto-sizer": "^1.0.24", - "react-window": "^1.8.6", - "rmf-models": "workspace:*", - "shallowequal": "^1.1.0", - "three": "^0.166.1" - }, - "devDependencies": { - "@fontsource/roboto": "^4.3.0", - "@jsdevtools/coverage-istanbul-loader": "^3.0.5", - "@storybook/addon-essentials": "^8.2.6", - "@storybook/addon-interactions": "^8.2.6", - "@storybook/addon-links": "^8.2.6", - "@storybook/addon-onboarding": "^8.2.6", - "@storybook/blocks": "^8.2.6", - "@storybook/react": "^8.2.6", - "@storybook/react-vite": "^8.2.6", - "@storybook/test": "^8.2.6", - "@testing-library/dom": "^9.3.4", - "@testing-library/react": "^14.2.2", - "@testing-library/user-event": "^14.5.2", - "@types/debug": "^4.1.5", - "@types/react": "^18.2.14", - "@types/react-dom": "^18.2.6", - "@types/react-grid-layout": "^1.3.2", - "@types/react-virtualized-auto-sizer": "^1.0.1", - "@types/react-window": "^1.8.5", - "@vitest/coverage-v8": "^2.0.4", - "concurrently": "^8.2.2", - "eslint": "^8.57.0", - "eslint-plugin-react": "^7.35.0", - "eslint-plugin-react-hooks": "^4.6.2", - "file-loader": "^6.2.0", - "identity-obj-proxy": "^3.0.0", - "jsdom": "^24.1.1", - "process": "0.11.10", - "puppeteer": "*", - "require-from-string": "^2.0.2", - "storybook": "^8.2.6", - "typescript": "~5.5.4", - "typescript-eslint": "^7.5.0", - "vitest": "^2.0.4" - } -} diff --git a/packages/react-components/vite.config.ts b/packages/react-components/vite.config.ts deleted file mode 100644 index c43805ee1..000000000 --- a/packages/react-components/vite.config.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { defineConfig } from 'vitest/config'; - -export default defineConfig({ - test: { globals: true, environment: 'jsdom', passWithNoTests: true }, -}); diff --git a/packages/dashboard/.gitignore b/packages/rmf-dashboard-framework/.gitignore similarity index 100% rename from packages/dashboard/.gitignore rename to packages/rmf-dashboard-framework/.gitignore diff --git a/packages/react-components/.storybook/main.ts b/packages/rmf-dashboard-framework/.storybook/main.ts similarity index 88% rename from packages/react-components/.storybook/main.ts rename to packages/rmf-dashboard-framework/.storybook/main.ts index 8218eaff2..18bbba442 100644 --- a/packages/react-components/.storybook/main.ts +++ b/packages/rmf-dashboard-framework/.storybook/main.ts @@ -1,7 +1,7 @@ import type { StorybookConfig } from '@storybook/react-vite'; const config: StorybookConfig = { - stories: ['../lib/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + stories: ['../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], addons: [ '@storybook/addon-onboarding', '@storybook/addon-links', diff --git a/packages/rmf-dashboard-framework/.storybook/preview.tsx b/packages/rmf-dashboard-framework/.storybook/preview.tsx new file mode 100644 index 000000000..c6358ff55 --- /dev/null +++ b/packages/rmf-dashboard-framework/.storybook/preview.tsx @@ -0,0 +1,31 @@ +import { CssBaseline } from '@mui/material'; +import { Decorator, Preview } from '@storybook/react'; + +import { LocalizationProvider } from '../src/components/locale'; +import { TestProviders } from '../src/utils/test-utils.test'; + +const preview: Preview = { + parameters: { + controls: { + matchers: { + color: /(background|color)$/i, + date: /Date$/i, + }, + }, + }, +}; + +export default preview; + +const withBaseProviders: Decorator = (Story, context) => { + return ( + + + + + + + ); +}; + +export const decorators = [withBaseProviders]; diff --git a/packages/rmf-dashboard-framework/README.md b/packages/rmf-dashboard-framework/README.md new file mode 100644 index 000000000..9df1146c7 --- /dev/null +++ b/packages/rmf-dashboard-framework/README.md @@ -0,0 +1,58 @@ +# rmf-dashboard-framework + +`rmf-dashboard-framework` is a library that makes it easy to build a web application that provides visualization and control over the RMF system. + +## Getting Started + +See the [Getting Started](./docs/getting-started.md) docs. + +## MicroApps + +MicroApps are react components that can be used to build a page. The dashboard comes with many different micro-apps, each serving a different purpose when interacting with an Open-RMF deployment. The dashboard uses events to pipe information between micro-apps, for example clicking onto a task row in the Task app, will center the map onto the robot that the task was assigned to. + +Some of the built in MicroApps are: +* Robots +* Map +* Doors +* Lifts +* Mutex Groups +* Tasks +* Beacons +* Robot Info +* Task Details +* Task Logs + +It is also possible to create new MicroApps, see [Creating a MicroApp](./docs/micro-apps.md#creating-a-microapp) for some examples. + +## Workspaces + +A `Workspace` is a react component that render MicroApps based on a given layout, it makes it very easy to build a page in `rmf-dashboard-framework` by combining multiple MicroApps. Here is an example of a workspace + +```tsx + +``` + +The above workspace renders a "Tasks" and "Map" MicroApp with a fixed layout, but it supports a `designMode` that allows free customizable of the layout by the user at runtime + +```tsx + +``` + +## Examples + +See [examples](./examples/) diff --git a/packages/rmf-dashboard-framework/docs/getting-started.md b/packages/rmf-dashboard-framework/docs/getting-started.md new file mode 100644 index 000000000..410df5982 --- /dev/null +++ b/packages/rmf-dashboard-framework/docs/getting-started.md @@ -0,0 +1,119 @@ +## Getting Started + +Welcome to RMF Dashboard Framework! This tutorial will guide you through the initial setup and provide a basic example to help you start building your dashboard application. + +### Setup + +Prerequisites: + +- pnpm +- Latest Nodejs LTS + +Follow https://pnpm.io/installation to install pnpm, you can then install nodejs using pnpm + +```bash +pnpm env use --global lts +``` + +Clone this repo and install deps + + + +```bash +pnpm create vite -t react-ts basic-dashboard +cd basic-dashboard +git clone --depth 1 https://github.com/open-rmf/rmf-web +``` + +Add local dependency to `rmf-web`: + +```bash +pnpm add rmf-web/packages/rmf-dashboard-framework +``` + +Build `rmf-dashboard-framework` + +```bash +# cd +cd rmf-web +pnpm install --filter=rmf-dashboard-framework... +pnpm --filter=rmf-dashboard-framework^... build +``` + +Install `basic-dashboard` deps + +```bash +# cd +pnpm install +``` + +### Creating a Basic Dashboard + +At this point, you should be able to follow the [demo dashboard example](../examples/demo/main.tsx). You may also want to +* move or copy any resources required, for example `defaultLogo.png` +* install additional dependencies if you want to use the same fonts as the demo + +```bash +pnpm add @fontsource/roboto +``` + +### Starting a Dev Server + +Before starting the dev server, we need an RMF API server backend for the frontend to connect to. If you are targeting an existing deployment, change the `apiServerUrl` prop to connect to the correct url. If you do not have an existing server, you can start a local server with docker. + +```bash +docker run \ + --network host -it --rm \ + ghcr.io/open-rmf/rmf-web/api-server:latest +``` + +By default the testing server will be listening on http://localhost:8000, ensure that the `apiServerUrl` prop is correct. + +Now you can start the actual vite dev server + +```bash +pnpm dev +``` + +Navigate to http://localhost:5173 on a browser and you should see the dashboard. + +### Starting RMF Simulation + +If you are testing locally, you may see that the map, doors, robots etc are all empty, this is because the API server is not receiving any data from RMF. Check out [`rmf_demos`](https://github.com/open-rmf/rmf_demos) if you want to test with a RMF simulation. + +### Adding a New Tab + +The `tabs` props in `RmfDashboard` lets you configure the tabs available in the dashboard, you can add an item to the array to add a new tab, for example this will create a new tab that contain a single "Doors" MicroApp. + +```tsx +{ + name: 'My New Tab', + route: 'mynewtab', + element: , +} +``` + +The `layout` property defines the position and size of a MicroApp, the screen is divided into 12 columns and an unlimited number of rows, so this MicroApp will be positioned at the top left and have a width spanning the view port. For more information on the `layout` property, see [react-grid-layout](https://github.com/react-grid-layout/react-grid-layout). + +### Creating an optimized production build (optional) + +You shouldn't need to do this for local testing, but for reference, the example uses vite, an optimized production build can be created with + + +```bash +# cd +pnpm vite build +``` + +There is no dev server for a production build, you will need a web server to access it. + +```bash +# not recommended in production! +pnpx serve -s dist +``` diff --git a/packages/rmf-dashboard-framework/docs/micro-apps.md b/packages/rmf-dashboard-framework/docs/micro-apps.md new file mode 100644 index 000000000..07bb16a13 --- /dev/null +++ b/packages/rmf-dashboard-framework/docs/micro-apps.md @@ -0,0 +1,159 @@ +## MicroApps + +"MicroApps" are the building blocks of `rmf-dashboard-framework`. Each "window" you see in the demo example is a MicroApp. Under the hood, MicroApps are really just react components that receive props of the type `MicroAppProps`. + +### Creating a MicroApp + +The easiest way to create a MicroApp is to use the `createMicroApp` function. The function takes a `appId`, `displayName`, a callback that returns a dynamic import and a callback that return the props passed to the component. + +For example, if you have a `Foo` component in `foo.tsx`, this is how you can create a MicroApp from it. + +foo.tsx + +```tsx +export const Foo = () =>
hello
; +export default Foo; +``` + +foo-app.tsx + +```ts +createMicroApp( + 'example.foo', + 'Foo', + () => import('./foo'), + () => ({}), +); +``` + +Notice that we never import `Foo` directly, instead we only import it dynamically, this is so that vite can code-split the MicroApps and load only the MicroApps used in a tab. + +### Setting Props in the MicroApp + +The above example works because `Foo` does not take any props, but what if `Foo` display a message based on the props? + +foo.tsx + +```tsx +export const Foo = ({ message }) =>
{message}
; +export default Foo; +``` + +`message` will always be undefined because `rmf-dashboard-framework` does not know how to render your component, infact it wouldn't even build because there will be typescript errors. + +In this case, you can tell `rmf-dashboard-framework` how to render your component with the `props` param. + +foo-app.ts + +```ts +createMicroApp( + 'example.foo', + 'Foo', + () => import('./foo'), + () => ({ message: 'hello' }), +); +``` + +### MicroApp Settings + +Your component may want to expose some settings for the user to change, you can do that with `rmf-dashboard-framework`'s `useSettings` and `useAppController` hooks. + +foo.tsx + +```tsx +export const Foo = () => { + const settings = useSettings(); + const fooSettings = settings.microAppSettings['example.foo']; + const { updateSettings } = useAppController(); // call `updateSettings` to save new settings. + + return
{fooSettings.message}
; +}; + +export default Foo; +``` + +An alternative is to use the `settings` and `updateSettings` params in the `props` callback. + +foo-app.ts + +```ts +createMicroApp( + 'example.foo', + 'Foo', + () => import('./foo'), + (settings, updateSettings) => ({ message: settings.microAppSettings['example.foo'].message }), +); +``` + +Using the hooks is the recommended approach as the gives you the most flexibility in how to manage the settings. + +### Integrating with RMF + +In most cases, you want your MicroApp to display some information from RMF, `rmf-dashboard-framework` provide hooks for you to do that. The most important hook is `useRmfApi`, this will return a `RmfApi` instance that you can use to interact with RMF. + +For example, this will create a component that display the current floor of the lift `main_lift`. + +foo.tsx + +```tsx +export const Foo = () => { + const [liftState, setLiftState] = React.useState(null); + const rmfApi = useRmfApi(); + + React.useEffect(() => { + rmfApi.getLiftStateObs('main_lift').subscribe(setLiftState); + }, [rmfApi]); + + return
{liftState?.current_floor || 'Unknown'}
; +}; +``` + +### MicroApps with Custom Toolbar + +When you create a MicroApp with `createMicroApp`, it will use a default toolbar, in some cases, you may want to expose some actions on the toolbar. The `Tasks` MicroApp is an example that uses the toolbar this way. Since "MicroApps" are really just react components that takes a subset of `Window` props, you can create a custom MicroApp with a custom toolbar by creating a similar component to `Window`. + +foo.tsx + +```tsx +export const Foo = ({ onClose, ...otherProps }: MicroAppProps) => { + const [liftState, setLiftState] = React.useState(null); + const rmfApi = useRmfApi(); + + React.useEffect(() => { + rmfApi.getLiftStateObs('main_lift').subscribe(setLiftState); + }, [rmfApi]); + + return ( + + + onClose && onClose()} /> + + } + {...otherProps} + > +
{liftState?.current_floor || 'Unknown'}
+
+ ); +}; +``` + +foo-app.tsx + +```tsx +const Foo = lazy(() => import('./foo')); + +export default { + appId: 'example.foo', + displayName: 'Foo', + Component: (props) => ( + + + + ), +} satisfies MicroAppManifest; +``` + +Keep in mind that when creating a custom MicroApp this way, it is not enforced via typescript that the component is loaded lazily but it is still highly recommended for you to do so. Also unlike MicroApps created with `createMicroApp`, the entire `Window` is lazy loaded, not just the contents, this means that while the MicroApp is loading, nothing would be rendered unless you provide a `fallback` to `Suspense`. diff --git a/packages/dashboard/examples/custom-theme/index.html b/packages/rmf-dashboard-framework/examples/custom-theme/index.html similarity index 90% rename from packages/dashboard/examples/custom-theme/index.html rename to packages/rmf-dashboard-framework/examples/custom-theme/index.html index f13043862..97431e709 100644 --- a/packages/dashboard/examples/custom-theme/index.html +++ b/packages/rmf-dashboard-framework/examples/custom-theme/index.html @@ -13,6 +13,6 @@
- + diff --git a/packages/dashboard/examples/custom-theme/index.tsx b/packages/rmf-dashboard-framework/examples/custom-theme/main.tsx similarity index 83% rename from packages/dashboard/examples/custom-theme/index.tsx rename to packages/rmf-dashboard-framework/examples/custom-theme/main.tsx index eaa95fcf0..c28211ff9 100644 --- a/packages/dashboard/examples/custom-theme/index.tsx +++ b/packages/rmf-dashboard-framework/examples/custom-theme/main.tsx @@ -5,15 +5,20 @@ import '@fontsource/roboto/700.css'; import { createTheme } from '@mui/material'; import ReactDOM from 'react-dom/client'; -import { LocallyPersistentWorkspace, RmfDashboard } from 'rmf-dashboard/components'; -import { MicroAppManifest } from 'rmf-dashboard/components/micro-app'; -import doorsApp from 'rmf-dashboard/micro-apps/doors-app'; -import liftsApp from 'rmf-dashboard/micro-apps/lifts-app'; -import createMapApp from 'rmf-dashboard/micro-apps/map-app'; -import robotMutexGroupsApp from 'rmf-dashboard/micro-apps/robot-mutex-groups-app'; -import robotsApp from 'rmf-dashboard/micro-apps/robots-app'; -import tasksApp from 'rmf-dashboard/micro-apps/tasks-app'; -import StubAuthenticator from 'rmf-dashboard/services/stub-authenticator'; +import { + LocallyPersistentWorkspace, + MicroAppManifest, + RmfDashboard, +} from 'rmf-dashboard-framework/components'; +import { + createMapApp, + doorsApp, + liftsApp, + robotMutexGroupsApp, + robotsApp, + tasksApp, +} from 'rmf-dashboard-framework/micro-apps'; +import { StubAuthenticator } from 'rmf-dashboard-framework/services'; /* eslint-disable @typescript-eslint/no-unused-vars,@typescript-eslint/ban-ts-comment */ // Polar Night diff --git a/packages/dashboard/examples/demo/index.html b/packages/rmf-dashboard-framework/examples/demo/index.html similarity index 90% rename from packages/dashboard/examples/demo/index.html rename to packages/rmf-dashboard-framework/examples/demo/index.html index f13043862..97431e709 100644 --- a/packages/dashboard/examples/demo/index.html +++ b/packages/rmf-dashboard-framework/examples/demo/index.html @@ -13,6 +13,6 @@
- + diff --git a/packages/dashboard/examples/demo/index.tsx b/packages/rmf-dashboard-framework/examples/demo/main.tsx similarity index 83% rename from packages/dashboard/examples/demo/index.tsx rename to packages/rmf-dashboard-framework/examples/demo/main.tsx index 360f838e1..d6e4e5266 100644 --- a/packages/dashboard/examples/demo/index.tsx +++ b/packages/rmf-dashboard-framework/examples/demo/main.tsx @@ -7,17 +7,19 @@ import ReactDOM from 'react-dom/client'; import { InitialWindow, LocallyPersistentWorkspace, + MicroAppManifest, RmfDashboard, Workspace, -} from 'rmf-dashboard/components'; -import { MicroAppManifest } from 'rmf-dashboard/components/micro-app'; -import doorsApp from 'rmf-dashboard/micro-apps/doors-app'; -import liftsApp from 'rmf-dashboard/micro-apps/lifts-app'; -import createMapApp from 'rmf-dashboard/micro-apps/map-app'; -import robotMutexGroupsApp from 'rmf-dashboard/micro-apps/robot-mutex-groups-app'; -import robotsApp from 'rmf-dashboard/micro-apps/robots-app'; -import tasksApp from 'rmf-dashboard/micro-apps/tasks-app'; -import StubAuthenticator from 'rmf-dashboard/services/stub-authenticator'; +} from 'rmf-dashboard-framework/components'; +import { + createMapApp, + doorsApp, + liftsApp, + robotMutexGroupsApp, + robotsApp, + tasksApp, +} from 'rmf-dashboard-framework/micro-apps'; +import { StubAuthenticator } from 'rmf-dashboard-framework/services'; const mapApp = createMapApp({ attributionPrefix: 'Open-RMF', diff --git a/packages/dashboard/examples/keycloak/README.md b/packages/rmf-dashboard-framework/examples/keycloak/README.md similarity index 89% rename from packages/dashboard/examples/keycloak/README.md rename to packages/rmf-dashboard-framework/examples/keycloak/README.md index 684821ae6..da2c96f21 100644 --- a/packages/dashboard/examples/keycloak/README.md +++ b/packages/rmf-dashboard-framework/examples/keycloak/README.md @@ -29,6 +29,6 @@ the script will 3. Start rmf api server with the keycloak config ```bash -# be sure to run from packages/dashboard directory and source a supported rmf installation +# be sure to run from packages/rmf-dashboard-framework directory and source a supported rmf installation RMF_API_SERVER_CONFIG="$(pwd)/examples/keycloak/api_server_config.py" pnpm -C ../api-server start ``` diff --git a/packages/dashboard/examples/keycloak/api_server_config.py b/packages/rmf-dashboard-framework/examples/keycloak/api_server_config.py similarity index 100% rename from packages/dashboard/examples/keycloak/api_server_config.py rename to packages/rmf-dashboard-framework/examples/keycloak/api_server_config.py diff --git a/packages/dashboard/examples/keycloak/index.html b/packages/rmf-dashboard-framework/examples/keycloak/index.html similarity index 90% rename from packages/dashboard/examples/keycloak/index.html rename to packages/rmf-dashboard-framework/examples/keycloak/index.html index f13043862..97431e709 100644 --- a/packages/dashboard/examples/keycloak/index.html +++ b/packages/rmf-dashboard-framework/examples/keycloak/index.html @@ -13,6 +13,6 @@
- + diff --git a/packages/dashboard/examples/keycloak/keycloak-setup.bash b/packages/rmf-dashboard-framework/examples/keycloak/keycloak-setup.bash similarity index 100% rename from packages/dashboard/examples/keycloak/keycloak-setup.bash rename to packages/rmf-dashboard-framework/examples/keycloak/keycloak-setup.bash diff --git a/packages/dashboard/examples/keycloak/index.tsx b/packages/rmf-dashboard-framework/examples/keycloak/main.tsx similarity index 85% rename from packages/dashboard/examples/keycloak/index.tsx rename to packages/rmf-dashboard-framework/examples/keycloak/main.tsx index b5f5c7250..2997b8143 100644 --- a/packages/dashboard/examples/keycloak/index.tsx +++ b/packages/rmf-dashboard-framework/examples/keycloak/main.tsx @@ -7,17 +7,19 @@ import ReactDOM from 'react-dom/client'; import { InitialWindow, LocallyPersistentWorkspace, + MicroAppManifest, RmfDashboard, Workspace, -} from 'rmf-dashboard/components'; -import { MicroAppManifest } from 'rmf-dashboard/components/micro-app'; -import doorsApp from 'rmf-dashboard/micro-apps/doors-app'; -import liftsApp from 'rmf-dashboard/micro-apps/lifts-app'; -import createMapApp from 'rmf-dashboard/micro-apps/map-app'; -import robotMutexGroupsApp from 'rmf-dashboard/micro-apps/robot-mutex-groups-app'; -import robotsApp from 'rmf-dashboard/micro-apps/robots-app'; -import tasksApp from 'rmf-dashboard/micro-apps/tasks-app'; -import KeycloakAuthenticator from 'rmf-dashboard/services/keycloak'; +} from 'rmf-dashboard-framework/components'; +import { + createMapApp, + doorsApp, + liftsApp, + robotMutexGroupsApp, + robotsApp, + tasksApp, +} from 'rmf-dashboard-framework/micro-apps'; +import { KeycloakAuthenticator } from 'rmf-dashboard-framework/services'; const mapApp = createMapApp({ attributionPrefix: 'Open-RMF', diff --git a/packages/dashboard/examples/keycloak/utils.bash b/packages/rmf-dashboard-framework/examples/keycloak/utils.bash similarity index 100% rename from packages/dashboard/examples/keycloak/utils.bash rename to packages/rmf-dashboard-framework/examples/keycloak/utils.bash diff --git a/packages/dashboard/examples/shared/public/favicon.ico b/packages/rmf-dashboard-framework/examples/shared/public/favicon.ico similarity index 100% rename from packages/dashboard/examples/shared/public/favicon.ico rename to packages/rmf-dashboard-framework/examples/shared/public/favicon.ico diff --git a/packages/dashboard/examples/shared/public/resources/defaultLogo.png b/packages/rmf-dashboard-framework/examples/shared/public/resources/defaultLogo.png similarity index 100% rename from packages/dashboard/examples/shared/public/resources/defaultLogo.png rename to packages/rmf-dashboard-framework/examples/shared/public/resources/defaultLogo.png diff --git a/packages/dashboard/examples/shared/public/robots.txt b/packages/rmf-dashboard-framework/examples/shared/public/robots.txt similarity index 100% rename from packages/dashboard/examples/shared/public/robots.txt rename to packages/rmf-dashboard-framework/examples/shared/public/robots.txt diff --git a/packages/dashboard/examples/shared/public/silent-check-sso.html b/packages/rmf-dashboard-framework/examples/shared/public/silent-check-sso.html similarity index 100% rename from packages/dashboard/examples/shared/public/silent-check-sso.html rename to packages/rmf-dashboard-framework/examples/shared/public/silent-check-sso.html diff --git a/packages/dashboard/examples/shared/vite.config.ts b/packages/rmf-dashboard-framework/examples/shared/vite.config.ts similarity index 71% rename from packages/dashboard/examples/shared/vite.config.ts rename to packages/rmf-dashboard-framework/examples/shared/vite.config.ts index e6394d559..352b1818f 100644 --- a/packages/dashboard/examples/shared/vite.config.ts +++ b/packages/rmf-dashboard-framework/examples/shared/vite.config.ts @@ -6,9 +6,4 @@ import { defineConfig } from 'vite'; export default defineConfig({ plugins: [react()], publicDir: path.resolve(__dirname, 'public'), - resolve: { - alias: { - 'rmf-dashboard': path.resolve(__dirname, '../../src'), - }, - }, }); diff --git a/packages/dashboard/package.json b/packages/rmf-dashboard-framework/package.json similarity index 62% rename from packages/dashboard/package.json rename to packages/rmf-dashboard-framework/package.json index f0cf4105f..201572f4a 100644 --- a/packages/dashboard/package.json +++ b/packages/rmf-dashboard-framework/package.json @@ -1,18 +1,17 @@ { - "name": "rmf-dashboard", + "name": "rmf-dashboard-framework", "version": "0.2.0", "type": "module", "private": true, "scripts": { - "build": "pnpm run --filter {.}^... build && vite build", + "build:example": "pnpm run --filter {.}^... build && vite -c examples/shared/vite.config.ts build", "build-storybook": "storybook build", "gen-app-config-schema": "pnpm typescript-json-schema tsconfig.gen.json AppConfig --required -o app-config.schema.json", "lint": "tsc --build && eslint --max-warnings 0 src", - "start": "concurrently npm:start:rmf-server npm:start:react", + "start": "concurrently npm:start:rmf-server 'npm:start:example examples/demo'", "start:airport": "RMF_DASHBOARD_DEMO_MAP=airport_terminal.launch.xml pnpm run start:sim", "start:clinic": "RMF_DASHBOARD_DEMO_MAP=clinic.launch.xml pnpm run start:sim", - "start:example": "vite -c examples/shared/vite.config.ts", - "start:react": "pnpm run --filter {.}^... build && vite", + "start:example": "pnpm --filter=rmf-dashboard-framework^... build && vite -c examples/shared/vite.config.ts", "start:rmf": "node scripts/start-rmf.js", "start:rmf-server": "RMF_SERVER_USE_SIM_TIME=true npm --prefix ../api-server start", "start:rmf-server:psql": "RMF_SERVER_USE_SIM_TIME=true npm run --prefix ../api-server start:psql", @@ -21,49 +20,61 @@ "test": "vitest", "test:coverage": "vitest --coverage" }, - "dependencies": { - "@aldabil/react-scheduler": "^2.7.8", + "peerDependencies": { + "@aldabil/react-scheduler": "~2.7.8", "@emotion/react": "^11.13.0", "@emotion/styled": "^11.13.0", "@fontsource/roboto": "^4.3.0", "@mui/icons-material": "^5.8.3", + "@mui/lab": "5.0.0-alpha.172", "@mui/material": "^5.8.3", "@mui/system": "^5.8.3", + "@mui/x-data-grid": "^5.12.1", "@mui/x-date-pickers": "^6.19.0", "@react-three/drei": "^9.103.0", "@react-three/fiber": "^8.16.1", + "@types/crc": "^3.4.0", "@types/debug": "^4.1.5", "@types/react": "^18.2.14", "@types/react-dom": "^18.2.6", "@types/react-grid-layout": "^1.3.2", + "@types/react-virtualized-auto-sizer": "^1.0.1", + "@types/react-window": "^1.8.5", + "@types/shallowequal": "^1.1.1", "@types/three": "^0.166.0", "api-client": "workspace:*", "axios": "1.7.4", "canvas": "^2.11.2", + "clsx": "^1.1.1", + "crc": "^3.8.0", "date-fns": "^2.30.0", "debug": "^4.2.0", "eventemitter3": "^4.0.7", "keycloak-js": "^25.0.2", + "node-vibrant": "^3.1.6", "react": "^18.2.0", - "react-components": "workspace:*", + "react-customizable-progressbar": "^1.2.0", "react-dom": "^18.2.0", "react-error-boundary": "^4.0.13", "react-grid-layout": "^1.3.4", "react-router": "^6.14.1", "react-router-dom": "^6.14.1", + "react-virtualized-auto-sizer": "^1.0.24", + "react-window": "^1.8.6", "rmf-models": "workspace:*", "rxjs": "^7.5.5", + "shallowequal": "^1.1.0", "three": "^0.166.1" }, "devDependencies": { - "@babel/core": "^7.18.6", - "@storybook/addon-essentials": "^8.0.5", - "@storybook/addon-interactions": "^8.0.5", - "@storybook/addon-links": "^8.0.5", - "@storybook/addon-onboarding": "^8.0.5", - "@storybook/blocks": "^8.0.5", - "@storybook/react": "^8.0.5", - "@storybook/test": "^8.0.5", + "@storybook/addon-essentials": "^8.3.3", + "@storybook/addon-interactions": "^8.3.3", + "@storybook/addon-links": "^8.3.3", + "@storybook/addon-onboarding": "^8.3.3", + "@storybook/blocks": "^8.3.3", + "@storybook/react": "^8.3.3", + "@storybook/react-vite": "^8.3.3", + "@storybook/test": "^8.3.3", "@testing-library/dom": "^9.3.4", "@testing-library/react": "^14.2.2", "@testing-library/user-event": "^14.5.2", @@ -74,10 +85,16 @@ "eslint": "^8.57.0", "history": "^5.3.0", "jsdom": "^24.1.1", - "storybook": "^8.0.5", + "storybook": "^8.3.3", "typescript": "~5.5.4", "typescript-json-schema": "^0.64.0", "vite": "^5.3.5", "vitest": "^2.0.4" + }, + "exports": { + "./components": "./src/components/index.ts", + "./hooks": "./src/hooks/index.ts", + "./micro-apps": "./src/micro-apps/index.ts", + "./services": "./src/services/index.ts" } } diff --git a/packages/dashboard/public/favicon.ico b/packages/rmf-dashboard-framework/public/favicon.ico similarity index 100% rename from packages/dashboard/public/favicon.ico rename to packages/rmf-dashboard-framework/public/favicon.ico diff --git a/packages/dashboard/public/resources/defaultLogo.png b/packages/rmf-dashboard-framework/public/resources/defaultLogo.png similarity index 100% rename from packages/dashboard/public/resources/defaultLogo.png rename to packages/rmf-dashboard-framework/public/resources/defaultLogo.png diff --git a/packages/dashboard/public/robots.txt b/packages/rmf-dashboard-framework/public/robots.txt similarity index 100% rename from packages/dashboard/public/robots.txt rename to packages/rmf-dashboard-framework/public/robots.txt diff --git a/packages/dashboard/public/silent-check-sso.html b/packages/rmf-dashboard-framework/public/silent-check-sso.html similarity index 100% rename from packages/dashboard/public/silent-check-sso.html rename to packages/rmf-dashboard-framework/public/silent-check-sso.html diff --git a/packages/dashboard/rmf-launcher.js b/packages/rmf-dashboard-framework/rmf-launcher.js similarity index 100% rename from packages/dashboard/rmf-launcher.js rename to packages/rmf-dashboard-framework/rmf-launcher.js diff --git a/packages/dashboard/scripts/start-rmf.js b/packages/rmf-dashboard-framework/scripts/start-rmf.js similarity index 100% rename from packages/dashboard/scripts/start-rmf.js rename to packages/rmf-dashboard-framework/scripts/start-rmf.js diff --git a/packages/dashboard/src/components/admin/add-permission-dialog.stories.tsx b/packages/rmf-dashboard-framework/src/components/admin/add-permission-dialog.stories.tsx similarity index 92% rename from packages/dashboard/src/components/admin/add-permission-dialog.stories.tsx rename to packages/rmf-dashboard-framework/src/components/admin/add-permission-dialog.stories.tsx index 9d5558ff9..bd5ae2d21 100644 --- a/packages/dashboard/src/components/admin/add-permission-dialog.stories.tsx +++ b/packages/rmf-dashboard-framework/src/components/admin/add-permission-dialog.stories.tsx @@ -10,7 +10,7 @@ export default { type Story = StoryObj; export const Default: Story = { - storyName: 'Add Permission Dialog', + name: 'Add Permission Dialog', render: (args) => ( ; export const Default: Story = { - storyName: 'Create Role Dialog', + name: 'Create Role Dialog', render: (args) => ( ; export const Default: Story = { - storyName: 'Create User Dialog', + name: 'Create User Dialog', render: (args) => ( ; export const Default: Story = { - storyName: 'Drawer', + name: 'Drawer', }; diff --git a/packages/dashboard/src/components/admin/drawer.test.tsx b/packages/rmf-dashboard-framework/src/components/admin/drawer.test.tsx similarity index 100% rename from packages/dashboard/src/components/admin/drawer.test.tsx rename to packages/rmf-dashboard-framework/src/components/admin/drawer.test.tsx diff --git a/packages/dashboard/src/components/admin/drawer.tsx b/packages/rmf-dashboard-framework/src/components/admin/drawer.tsx similarity index 100% rename from packages/dashboard/src/components/admin/drawer.tsx rename to packages/rmf-dashboard-framework/src/components/admin/drawer.tsx diff --git a/packages/rmf-dashboard-framework/src/components/admin/index.ts b/packages/rmf-dashboard-framework/src/components/admin/index.ts new file mode 100644 index 000000000..a3820983e --- /dev/null +++ b/packages/rmf-dashboard-framework/src/components/admin/index.ts @@ -0,0 +1 @@ +export * from './routes'; diff --git a/packages/dashboard/src/components/admin/manage-roles-dialog.stories.tsx b/packages/rmf-dashboard-framework/src/components/admin/manage-roles-dialog.stories.tsx similarity index 95% rename from packages/dashboard/src/components/admin/manage-roles-dialog.stories.tsx rename to packages/rmf-dashboard-framework/src/components/admin/manage-roles-dialog.stories.tsx index 8f089a85e..05fb40bc8 100644 --- a/packages/dashboard/src/components/admin/manage-roles-dialog.stories.tsx +++ b/packages/rmf-dashboard-framework/src/components/admin/manage-roles-dialog.stories.tsx @@ -15,7 +15,7 @@ for (let i = 0; i < 5; i++) { type Story = StoryObj; export const Default: Story = { - storyName: 'Manage Roles Card', + name: 'Manage Roles Card', args: { assignedRoles: ['role1'], }, diff --git a/packages/dashboard/src/components/admin/manage-roles-dialog.test.tsx b/packages/rmf-dashboard-framework/src/components/admin/manage-roles-dialog.test.tsx similarity index 95% rename from packages/dashboard/src/components/admin/manage-roles-dialog.test.tsx rename to packages/rmf-dashboard-framework/src/components/admin/manage-roles-dialog.test.tsx index ded944bc6..b9e4815d7 100644 --- a/packages/dashboard/src/components/admin/manage-roles-dialog.test.tsx +++ b/packages/rmf-dashboard-framework/src/components/admin/manage-roles-dialog.test.tsx @@ -2,7 +2,7 @@ import { render as render_, waitFor, waitForElementToBeRemoved } from '@testing- import userEvent from '@testing-library/user-event'; import { describe, expect, it, vi } from 'vitest'; -import { AppControllerProvider } from '../../hooks/use-app-controller'; +import { AppControllerProvider } from '../../hooks'; import { makeMockAppController } from '../../utils/test-utils.test'; import { ManageRolesCard, ManageRolesDialog } from './manage-roles-dialog'; diff --git a/packages/dashboard/src/components/admin/manage-roles-dialog.tsx b/packages/rmf-dashboard-framework/src/components/admin/manage-roles-dialog.tsx similarity index 97% rename from packages/dashboard/src/components/admin/manage-roles-dialog.tsx rename to packages/rmf-dashboard-framework/src/components/admin/manage-roles-dialog.tsx index 984b4e0f5..1ab7fe85f 100644 --- a/packages/dashboard/src/components/admin/manage-roles-dialog.tsx +++ b/packages/rmf-dashboard-framework/src/components/admin/manage-roles-dialog.tsx @@ -16,9 +16,10 @@ import { styled, } from '@mui/material'; import React from 'react'; -import { Loading, TransferList, useAsync } from 'react-components'; -import { useAppController } from '../../hooks/use-app-controller'; +import { useAppController, useAsync } from '../../hooks'; +import { Loading } from '../loading'; +import { TransferList } from '../transfer-list'; const prefix = 'manage-roles-dialog'; const classes = { diff --git a/packages/dashboard/src/components/admin/page-css.ts b/packages/rmf-dashboard-framework/src/components/admin/page-css.ts similarity index 100% rename from packages/dashboard/src/components/admin/page-css.ts rename to packages/rmf-dashboard-framework/src/components/admin/page-css.ts diff --git a/packages/dashboard/src/components/admin/permissions-card.stories.tsx b/packages/rmf-dashboard-framework/src/components/admin/permissions-card.stories.tsx similarity index 95% rename from packages/dashboard/src/components/admin/permissions-card.stories.tsx rename to packages/rmf-dashboard-framework/src/components/admin/permissions-card.stories.tsx index 84ad07cd3..e9df0e695 100644 --- a/packages/dashboard/src/components/admin/permissions-card.stories.tsx +++ b/packages/rmf-dashboard-framework/src/components/admin/permissions-card.stories.tsx @@ -19,7 +19,7 @@ export default { type Story = StoryObj; export const Default: Story = { - storyName: 'Permissions Card', + name: 'Permissions Card', render: (args) => ( new Promise((res) => setTimeout(res, 100))} /> ), diff --git a/packages/dashboard/src/components/admin/permissions-card.test.tsx b/packages/rmf-dashboard-framework/src/components/admin/permissions-card.test.tsx similarity index 94% rename from packages/dashboard/src/components/admin/permissions-card.test.tsx rename to packages/rmf-dashboard-framework/src/components/admin/permissions-card.test.tsx index 6bd4ccc5f..78499d3c1 100644 --- a/packages/dashboard/src/components/admin/permissions-card.test.tsx +++ b/packages/rmf-dashboard-framework/src/components/admin/permissions-card.test.tsx @@ -2,8 +2,8 @@ import { fireEvent, render as render_, waitFor } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { afterAll, beforeAll, describe, expect, it, vi } from 'vitest'; -import { AppControllerProvider } from '../../hooks/use-app-controller'; -import { getActionText, RmfAction } from '../../services/permissions'; +import { AppControllerProvider } from '../../hooks'; +import { getActionText, RmfAction } from '../../services'; import { makeMockAppController } from '../../utils/test-utils.test'; import { PermissionsCard } from './permissions-card'; diff --git a/packages/dashboard/src/components/admin/permissions-card.tsx b/packages/rmf-dashboard-framework/src/components/admin/permissions-card.tsx similarity index 95% rename from packages/dashboard/src/components/admin/permissions-card.tsx rename to packages/rmf-dashboard-framework/src/components/admin/permissions-card.tsx index a996143ba..96c60b09d 100644 --- a/packages/dashboard/src/components/admin/permissions-card.tsx +++ b/packages/rmf-dashboard-framework/src/components/admin/permissions-card.tsx @@ -5,6 +5,7 @@ import { IconButton, Paper, PaperProps, + styled, Table, TableBody, TableCell, @@ -14,13 +15,12 @@ import { Toolbar, Typography, } from '@mui/material'; -import { styled } from '@mui/material'; import { Permission } from 'api-client'; import React from 'react'; -import { Loading, useAsync } from 'react-components'; -import { useAppController } from '../../hooks/use-app-controller'; -import { getActionText } from '../../services/permissions'; +import { useAppController, useAsync } from '../../hooks'; +import { getActionText } from '../../services'; +import { Loading } from '../loading'; import { AddPermissionDialog, AddPermissionDialogProps } from './add-permission-dialog'; const prefix = 'permissions-card'; diff --git a/packages/dashboard/src/components/admin/role-list-card.stories.tsx b/packages/rmf-dashboard-framework/src/components/admin/role-list-card.stories.tsx similarity index 91% rename from packages/dashboard/src/components/admin/role-list-card.stories.tsx rename to packages/rmf-dashboard-framework/src/components/admin/role-list-card.stories.tsx index ded434fa1..94ac2eec7 100644 --- a/packages/dashboard/src/components/admin/role-list-card.stories.tsx +++ b/packages/rmf-dashboard-framework/src/components/admin/role-list-card.stories.tsx @@ -1,6 +1,6 @@ import { Meta, StoryObj } from '@storybook/react'; -import { RmfAction } from '../../services/permissions'; +import { RmfAction } from '../../services'; import { RoleListCard } from './role-list-card'; export default { @@ -11,7 +11,7 @@ export default { type Story = StoryObj; export const Default: Story = { - storyName: 'Role List Card', + name: 'Role List Card', render: (args) => ( ( ; export const Default: Story = { - storyName: 'User Profile Card', + name: 'User Profile Card', render: (args) => { const [user, setUser] = React.useState({ username: 'example', diff --git a/packages/dashboard/src/components/admin/user-profile.test.tsx b/packages/rmf-dashboard-framework/src/components/admin/user-profile.test.tsx similarity index 94% rename from packages/dashboard/src/components/admin/user-profile.test.tsx rename to packages/rmf-dashboard-framework/src/components/admin/user-profile.test.tsx index 2c6e4ef1b..41556df9b 100644 --- a/packages/dashboard/src/components/admin/user-profile.test.tsx +++ b/packages/rmf-dashboard-framework/src/components/admin/user-profile.test.tsx @@ -3,7 +3,7 @@ import userEvent from '@testing-library/user-event'; import React from 'react'; import { describe, expect, it, vi } from 'vitest'; -import { AppControllerProvider } from '../../hooks/use-app-controller'; +import { AppControllerProvider } from '../../hooks'; import { makeMockAppController } from '../../utils/test-utils.test'; import { UserProfileCard } from './user-profile'; diff --git a/packages/dashboard/src/components/admin/user-profile.tsx b/packages/rmf-dashboard-framework/src/components/admin/user-profile.tsx similarity index 95% rename from packages/dashboard/src/components/admin/user-profile.tsx rename to packages/rmf-dashboard-framework/src/components/admin/user-profile.tsx index 510788884..f40e54840 100644 --- a/packages/dashboard/src/components/admin/user-profile.tsx +++ b/packages/rmf-dashboard-framework/src/components/admin/user-profile.tsx @@ -13,9 +13,8 @@ import { } from '@mui/material'; import { User } from 'api-client'; import React from 'react'; -import { useAsync } from 'react-components'; -import { useAppController } from '../../hooks/use-app-controller'; +import { useAppController, useAsync } from '../../hooks'; const classes = { avatar: 'user-profile-action', diff --git a/packages/dashboard/src/components/alert-manager.tsx b/packages/rmf-dashboard-framework/src/components/alert-manager.tsx similarity index 97% rename from packages/dashboard/src/components/alert-manager.tsx rename to packages/rmf-dashboard-framework/src/components/alert-manager.tsx index a6b930890..e18d56ecb 100644 --- a/packages/dashboard/src/components/alert-manager.tsx +++ b/packages/rmf-dashboard-framework/src/components/alert-manager.tsx @@ -17,11 +17,9 @@ import { TaskEventLog, } from 'api-client'; import React from 'react'; -import { base } from 'react-components'; import { Subscription } from 'rxjs'; -import { useAppController } from '../hooks/use-app-controller'; -import { useRmfApi } from '../hooks/use-rmf-api'; +import { useAppController, useRmfApi } from '../hooks'; import { AppEvents } from './app-events'; import { TaskCancelButton } from './tasks/task-cancellation'; @@ -126,10 +124,10 @@ const AlertDialog = React.memo((props: AlertDialogProps) => { style: { backgroundColor: alertRequest.tier === ApiServerModelsAlertsAlertRequestTier.Info - ? base.palette.success.dark + ? theme.palette.success.dark : alertRequest.tier === ApiServerModelsAlertsAlertRequestTier.Warning - ? base.palette.warning.dark - : base.palette.error.dark, + ? theme.palette.warning.dark + : theme.palette.error.dark, boxShadow: 'none', }, }} diff --git a/packages/dashboard/src/components/app-events.ts b/packages/rmf-dashboard-framework/src/components/app-events.ts similarity index 100% rename from packages/dashboard/src/components/app-events.ts rename to packages/rmf-dashboard-framework/src/components/app-events.ts diff --git a/packages/dashboard/src/components/appbar.test.tsx b/packages/rmf-dashboard-framework/src/components/appbar.test.tsx similarity index 92% rename from packages/dashboard/src/components/appbar.test.tsx rename to packages/rmf-dashboard-framework/src/components/appbar.test.tsx index c18015df5..195b12c15 100644 --- a/packages/dashboard/src/components/appbar.test.tsx +++ b/packages/rmf-dashboard-framework/src/components/appbar.test.tsx @@ -4,10 +4,8 @@ import userEvent from '@testing-library/user-event'; import React from 'react'; import { describe, expect, it, vi } from 'vitest'; -import { AuthenticatorProvider } from '../hooks/use-authenticator'; -import { RmfApiProvider } from '../hooks/use-rmf-api'; -import { RmfApi } from '../services/rmf-api'; -import { StubAuthenticator } from '../services/stub-authenticator'; +import { AuthenticatorProvider, RmfApiProvider } from '../hooks'; +import { RmfApi, StubAuthenticator } from '../services'; import { MockRmfApi, render, TestProviders } from '../utils/test-utils.test'; import AppBar from './appbar'; diff --git a/packages/dashboard/src/components/appbar.tsx b/packages/rmf-dashboard-framework/src/components/appbar.tsx similarity index 97% rename from packages/dashboard/src/components/appbar.tsx rename to packages/rmf-dashboard-framework/src/components/appbar.tsx index f97f5112c..4132a7e7f 100644 --- a/packages/dashboard/src/components/appbar.tsx +++ b/packages/rmf-dashboard-framework/src/components/appbar.tsx @@ -43,19 +43,21 @@ import { import { AlertRequest, FireAlarmTriggerState, TaskFavorite } from 'api-client'; import { formatDistance } from 'date-fns'; import React from 'react'; -import { ConfirmationDialog, TaskForm, TaskFormProps } from 'react-components'; import { Subscription } from 'rxjs'; -import { useAppController } from '../hooks/use-app-controller'; -import { useAuthenticator } from '../hooks/use-authenticator'; -import { useTaskFormData } from '../hooks/use-create-task-form'; -import { useResources } from '../hooks/use-resources'; -import { useRmfApi } from '../hooks/use-rmf-api'; -import { useSettings } from '../hooks/use-settings'; -import { useTaskRegistry } from '../hooks/use-task-registry'; -import { useUserProfile } from '../hooks/use-user-profile'; +import { + useAppController, + useAuthenticator, + useResources, + useRmfApi, + useSettings, + useTaskFormData, + useTaskRegistry, + useUserProfile, +} from '../hooks'; import { AppEvents } from './app-events'; -import { dispatchTask, scheduleTask } from './tasks/utils'; +import { ConfirmationDialog } from './confirmation-dialog'; +import { dispatchTask, scheduleTask, TaskForm, TaskFormProps } from './tasks'; import { DashboardThemes } from './theme'; export const APP_BAR_HEIGHT = '3.5rem'; diff --git a/packages/react-components/lib/beacons/beacon-table-datagrid.stories.tsx b/packages/rmf-dashboard-framework/src/components/beacons/beacon-table-datagrid.stories.tsx similarity index 89% rename from packages/react-components/lib/beacons/beacon-table-datagrid.stories.tsx rename to packages/rmf-dashboard-framework/src/components/beacons/beacon-table-datagrid.stories.tsx index 3e719eb91..35127766e 100644 --- a/packages/react-components/lib/beacons/beacon-table-datagrid.stories.tsx +++ b/packages/rmf-dashboard-framework/src/components/beacons/beacon-table-datagrid.stories.tsx @@ -1,5 +1,5 @@ import { BeaconDataGridTable } from './beacon-table-datagrid'; -import { makeBeaconState } from './test-utils.spec'; +import { makeBeaconState } from './test-utils.test'; export default { title: 'BeaconDataGridTable', diff --git a/packages/react-components/lib/beacons/beacon-table-datagrid.spec.tsx b/packages/rmf-dashboard-framework/src/components/beacons/beacon-table-datagrid.test.tsx similarity index 96% rename from packages/react-components/lib/beacons/beacon-table-datagrid.spec.tsx rename to packages/rmf-dashboard-framework/src/components/beacons/beacon-table-datagrid.test.tsx index 56591f8bb..61069a37c 100644 --- a/packages/react-components/lib/beacons/beacon-table-datagrid.spec.tsx +++ b/packages/rmf-dashboard-framework/src/components/beacons/beacon-table-datagrid.test.tsx @@ -1,7 +1,8 @@ import { render } from '@testing-library/react'; +import { describe, expect, it } from 'vitest'; import { BeaconDataGridTable } from './beacon-table-datagrid'; -import { makeBeaconState } from './test-utils.spec'; +import { makeBeaconState } from './test-utils.test'; describe('BeaconDataGridTable', () => { it('renders basic beacons data correctly', () => { diff --git a/packages/react-components/lib/beacons/beacon-table-datagrid.tsx b/packages/rmf-dashboard-framework/src/components/beacons/beacon-table-datagrid.tsx similarity index 96% rename from packages/react-components/lib/beacons/beacon-table-datagrid.tsx rename to packages/rmf-dashboard-framework/src/components/beacons/beacon-table-datagrid.tsx index 82a61d0a5..8af6b251e 100644 --- a/packages/react-components/lib/beacons/beacon-table-datagrid.tsx +++ b/packages/rmf-dashboard-framework/src/components/beacons/beacon-table-datagrid.tsx @@ -24,7 +24,7 @@ export function BeaconDataGridTable({ beacons }: BeaconDataGridTableProps): JSX. })(); return ( - + + { const rmfApi = useRmfApi(); diff --git a/packages/rmf-dashboard-framework/src/components/beacons/index.ts b/packages/rmf-dashboard-framework/src/components/beacons/index.ts new file mode 100644 index 000000000..87693b328 --- /dev/null +++ b/packages/rmf-dashboard-framework/src/components/beacons/index.ts @@ -0,0 +1 @@ +export * from './beacons-table'; diff --git a/packages/react-components/lib/beacons/test-utils.spec.ts b/packages/rmf-dashboard-framework/src/components/beacons/test-utils.test.ts similarity index 100% rename from packages/react-components/lib/beacons/test-utils.spec.ts rename to packages/rmf-dashboard-framework/src/components/beacons/test-utils.test.ts diff --git a/packages/react-components/lib/confirmation-dialog.stories.tsx b/packages/rmf-dashboard-framework/src/components/confirmation-dialog.stories.tsx similarity index 95% rename from packages/react-components/lib/confirmation-dialog.stories.tsx rename to packages/rmf-dashboard-framework/src/components/confirmation-dialog.stories.tsx index 14c89b4dd..3f5f02099 100644 --- a/packages/react-components/lib/confirmation-dialog.stories.tsx +++ b/packages/rmf-dashboard-framework/src/components/confirmation-dialog.stories.tsx @@ -14,7 +14,7 @@ export default { type Story = StoryObj; export const Default: Story = { - storyName: 'Confirmation Dialog', + name: 'Confirmation Dialog', render: (args) => ( { void; @@ -54,7 +54,7 @@ export const DoorSummary = ({ onClose, door, level }: DoorSummaryProps): JSX.Ele PaperProps={{ style: { boxShadow: 'none', - background: base.palette.info.main, + background: theme.palette.info.main, }, }} open={isOpen} diff --git a/packages/react-components/lib/doors/door-table-datagrid.stories.tsx b/packages/rmf-dashboard-framework/src/components/doors/door-table-datagrid.stories.tsx similarity index 52% rename from packages/react-components/lib/doors/door-table-datagrid.stories.tsx rename to packages/rmf-dashboard-framework/src/components/doors/door-table-datagrid.stories.tsx index 718257818..86c906579 100644 --- a/packages/react-components/lib/doors/door-table-datagrid.stories.tsx +++ b/packages/rmf-dashboard-framework/src/components/doors/door-table-datagrid.stories.tsx @@ -1,8 +1,9 @@ +import { Meta, StoryObj } from '@storybook/react'; import { Door as RmfDoor } from 'rmf-models/ros/rmf_building_map_msgs/msg'; import { DoorMode as RmfDoorMode } from 'rmf-models/ros/rmf_door_msgs/msg'; import { DoorDataGridTable, DoorTableData } from './door-table-datagrid'; -import { makeDoorState } from './test-utils.spec'; +import { makeDoorState } from './test-utils.test'; const mockDoors: DoorTableData[] = [ { @@ -17,9 +18,30 @@ const mockDoors: DoorTableData[] = [ }, ]; -export default { +const meta: Meta = { title: 'DoorDataGridTable', + component: DoorDataGridTable, + decorators: [ + (Story) => ( +
+ +
+ ), + ], }; -export const Default = () => ; -export const Empty = () => ; +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + args: { + doors: mockDoors, + }, +}; + +export const Empty: Story = { + args: { + doors: [], + }, +}; diff --git a/packages/react-components/lib/doors/door-table-datagrid.spec.tsx b/packages/rmf-dashboard-framework/src/components/doors/door-table-datagrid.test.tsx similarity index 94% rename from packages/react-components/lib/doors/door-table-datagrid.spec.tsx rename to packages/rmf-dashboard-framework/src/components/doors/door-table-datagrid.test.tsx index a79639b1f..472ec6eb1 100644 --- a/packages/react-components/lib/doors/door-table-datagrid.spec.tsx +++ b/packages/rmf-dashboard-framework/src/components/doors/door-table-datagrid.test.tsx @@ -1,9 +1,10 @@ import { render } from '@testing-library/react'; import { Door as RmfDoor } from 'rmf-models/ros/rmf_building_map_msgs/msg'; import { DoorMode as RmfDoorMode } from 'rmf-models/ros/rmf_door_msgs/msg'; +import { describe, expect, it } from 'vitest'; import { DoorDataGridTable, DoorTableData } from './door-table-datagrid'; -import { makeDoorState } from './test-utils.spec'; +import { makeDoorState } from './test-utils.test'; describe('DoorDataGridTable', () => { const mockDoors: DoorTableData[] = [ diff --git a/packages/react-components/lib/doors/door-table-datagrid.tsx b/packages/rmf-dashboard-framework/src/components/doors/door-table-datagrid.tsx similarity index 97% rename from packages/react-components/lib/doors/door-table-datagrid.tsx rename to packages/rmf-dashboard-framework/src/components/doors/door-table-datagrid.tsx index d8481cbe7..caa0d6380 100644 --- a/packages/react-components/lib/doors/door-table-datagrid.tsx +++ b/packages/rmf-dashboard-framework/src/components/doors/door-table-datagrid.tsx @@ -70,7 +70,7 @@ export function DoorDataGridTable({ doors, onDoorClick }: DoorDataGridTableProps })(); return ( - + + { return ( - + diff --git a/packages/dashboard/src/components/robots/robot-mutex-group-table.tsx b/packages/rmf-dashboard-framework/src/components/robots/robot-mutex-group-table.tsx similarity index 96% rename from packages/dashboard/src/components/robots/robot-mutex-group-table.tsx rename to packages/rmf-dashboard-framework/src/components/robots/robot-mutex-group-table.tsx index 7fbfe6c2e..32f1bde45 100644 --- a/packages/dashboard/src/components/robots/robot-mutex-group-table.tsx +++ b/packages/rmf-dashboard-framework/src/components/robots/robot-mutex-group-table.tsx @@ -1,9 +1,9 @@ import { TableContainer, Typography } from '@mui/material'; import React from 'react'; -import { ConfirmationDialog, MutexGroupData, MutexGroupTable } from 'react-components'; -import { useAppController } from '../../hooks/use-app-controller'; -import { useRmfApi } from '../../hooks/use-rmf-api'; +import { useAppController, useRmfApi } from '../../hooks'; +import { ConfirmationDialog } from '../confirmation-dialog'; +import { MutexGroupData, MutexGroupTable } from './mutex-group-table'; const RefreshMutexGroupTableInterval = 5000; diff --git a/packages/dashboard/src/components/robots/robot-summary.tsx b/packages/rmf-dashboard-framework/src/components/robots/robot-summary.tsx similarity index 94% rename from packages/dashboard/src/components/robots/robot-summary.tsx rename to packages/rmf-dashboard-framework/src/components/robots/robot-summary.tsx index e0071d59c..ea4b7e848 100644 --- a/packages/dashboard/src/components/robots/robot-summary.tsx +++ b/packages/rmf-dashboard-framework/src/components/robots/robot-summary.tsx @@ -21,6 +21,7 @@ import { LinearProgress, LinearProgressProps, TextField, + Theme, Typography, useMediaQuery, useTheme, @@ -31,38 +32,38 @@ import { TaskStateOutput as TaskState, } from 'api-client'; import React from 'react'; -import { base, RobotTableData } from 'react-components'; import { combineLatest, EMPTY, mergeMap, of } from 'rxjs'; -import { useRmfApi } from '../../hooks/use-rmf-api'; +import { useRmfApi } from '../../hooks'; import { TaskCancelButton } from '../tasks/task-cancellation'; import { TaskInspector } from '../tasks/task-inspector'; import { RobotDecommissionButton } from './robot-decommission'; +import { RobotTableData } from './robot-table-datagrid'; -const setTaskDialogColor = (robotStatus: Status | undefined | null) => { +const setTaskDialogColor = (robotStatus: Status | undefined | null, theme: Theme) => { if (!robotStatus) { - return base.palette.background.default; + return theme.palette.background.default; } switch (robotStatus) { case Status.Error: - return base.palette.error.dark; + return theme.palette.error.dark; case Status.Working: - return base.palette.success.dark; + return theme.palette.success.dark; default: - return base.palette.warning.main; + return theme.palette.warning.main; } }; const LinearProgressWithLabel = (props: LinearProgressProps & { value: number }) => { return ( - - + + - + {`${Math.round( props.value, )}%`} @@ -257,7 +258,7 @@ export const RobotSummary = React.memo(({ onClose, robot }: RobotSummaryProps) = Task progress - + diff --git a/packages/rmf-dashboard-framework/src/components/robots/robot-table-datagrid.stories.tsx b/packages/rmf-dashboard-framework/src/components/robots/robot-table-datagrid.stories.tsx new file mode 100644 index 000000000..35b0c189f --- /dev/null +++ b/packages/rmf-dashboard-framework/src/components/robots/robot-table-datagrid.stories.tsx @@ -0,0 +1,51 @@ +import { Meta, StoryObj } from '@storybook/react'; +import { ApiServerModelsRmfApiRobotStateStatus as RobotStatus } from 'api-client'; + +import { RobotDataGridTable } from './robot-table-datagrid'; + +const meta: Meta = { + title: 'RobotDataGridTable', + component: RobotDataGridTable, + decorators: [ + (Story) => ( +
+ +
+ ), + ], +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + args: { + robots: [ + { + fleet: 'Fleet A', + name: 'Robot 1', + estFinishTime: new Date('2023-05-01T09:00:00').getTime(), + battery: 0.8, + lastUpdateTime: new Date('2023-05-01T08:30:00').getTime(), + status: RobotStatus.Working, + }, + { + fleet: 'Fleet B', + name: 'Robot 2', + estFinishTime: new Date('2023-05-01T10:30:00').getTime(), + battery: 0.6, + lastUpdateTime: new Date('2023-05-01T10:00:00').getTime(), + status: RobotStatus.Charging, + }, + { + fleet: 'Fleet A', + name: 'Robot 3', + estFinishTime: new Date('2023-05-01T11:45:00').getTime(), + battery: 0.9, + lastUpdateTime: new Date('2023-05-01T11:30:00').getTime(), + status: RobotStatus.Idle, + }, + ], + }, +}; diff --git a/packages/react-components/lib/robots/robot-table-datagrid.spec.tsx b/packages/rmf-dashboard-framework/src/components/robots/robot-table-datagrid.test.tsx similarity index 96% rename from packages/react-components/lib/robots/robot-table-datagrid.spec.tsx rename to packages/rmf-dashboard-framework/src/components/robots/robot-table-datagrid.test.tsx index 6ba0dfb46..57ad15f47 100644 --- a/packages/react-components/lib/robots/robot-table-datagrid.spec.tsx +++ b/packages/rmf-dashboard-framework/src/components/robots/robot-table-datagrid.test.tsx @@ -1,8 +1,9 @@ import { fireEvent, render } from '@testing-library/react'; import { ApiServerModelsRmfApiRobotStateStatus as RobotStatus } from 'api-client'; +import { describe, expect, it, vi } from 'vitest'; import { RobotDataGridTable, RobotTableData } from './robot-table-datagrid'; -import { makeRobot } from './test-utils.spec'; +import { makeRobot } from './test-utils.test'; const allStatuses = Object.values(RobotStatus) as RobotStatus[]; diff --git a/packages/react-components/lib/robots/robot-table-datagrid.tsx b/packages/rmf-dashboard-framework/src/components/robots/robot-table-datagrid.tsx similarity index 98% rename from packages/react-components/lib/robots/robot-table-datagrid.tsx rename to packages/rmf-dashboard-framework/src/components/robots/robot-table-datagrid.tsx index 11afe6b7f..01e1bc358 100644 --- a/packages/react-components/lib/robots/robot-table-datagrid.tsx +++ b/packages/rmf-dashboard-framework/src/components/robots/robot-table-datagrid.tsx @@ -83,7 +83,7 @@ export function RobotDataGridTable({ onRobotClick, robots }: RobotDataGridTableP })(); return ( - + { diff --git a/packages/react-components/lib/tasks/task-form.stories.tsx b/packages/rmf-dashboard-framework/src/components/tasks/task-form.stories.tsx similarity index 100% rename from packages/react-components/lib/tasks/task-form.stories.tsx rename to packages/rmf-dashboard-framework/src/components/tasks/task-form.stories.tsx diff --git a/packages/react-components/lib/tasks/task-form.tsx b/packages/rmf-dashboard-framework/src/components/tasks/task-form.tsx similarity index 99% rename from packages/react-components/lib/tasks/task-form.tsx rename to packages/rmf-dashboard-framework/src/components/tasks/task-form.tsx index 9139aaee6..ffbdc8ed8 100644 --- a/packages/react-components/lib/tasks/task-form.tsx +++ b/packages/rmf-dashboard-framework/src/components/tasks/task-form.tsx @@ -44,8 +44,8 @@ import { TimePicker } from '@mui/x-date-pickers/TimePicker'; import type { TaskFavorite, TaskRequest } from 'api-client'; import React from 'react'; -import { Loading } from '..'; import { ConfirmationDialog, ConfirmationDialogProps } from '../confirmation-dialog'; +import { Loading } from '../loading'; import { TaskBookingLabels } from './booking-label'; import { getTaskBookingLabelFromTaskRequest, @@ -919,7 +919,7 @@ export function TaskForm({ > - + Favorite tasks {favoritesTasks.map((favoriteTask, index) => { @@ -1310,9 +1310,7 @@ export function TaskForm({ value={ScheduleUntilValue.NEVER} control={} label={ - - Never - + Never } sx={{ fontSize: isScreenHeightLessThan800 ? '0.8rem' : '1rem' }} /> @@ -1321,11 +1319,7 @@ export function TaskForm({ } - label={ - - On - - } + label={On} /> diff --git a/packages/react-components/lib/tasks/task-info.stories.tsx b/packages/rmf-dashboard-framework/src/components/tasks/task-info.stories.tsx similarity index 85% rename from packages/react-components/lib/tasks/task-info.stories.tsx rename to packages/rmf-dashboard-framework/src/components/tasks/task-info.stories.tsx index 574864ea9..8bc7daebb 100644 --- a/packages/react-components/lib/tasks/task-info.stories.tsx +++ b/packages/rmf-dashboard-framework/src/components/tasks/task-info.stories.tsx @@ -2,7 +2,7 @@ import { Paper } from '@mui/material'; import { Meta, StoryObj } from '@storybook/react'; import { TaskInfo } from './task-info'; -import { makeTaskState } from './test-data.spec'; +import { makeTaskState } from './test-data.test'; export default { title: 'Tasks/Task Info', @@ -12,7 +12,7 @@ export default { type Story = StoryObj; export const Default: Story = { - storyName: 'Task Info', + name: 'Task Info', args: { task: makeTaskState('task'), }, diff --git a/packages/react-components/lib/tasks/task-info.spec.tsx b/packages/rmf-dashboard-framework/src/components/tasks/task-info.test.tsx similarity index 75% rename from packages/react-components/lib/tasks/task-info.spec.tsx rename to packages/rmf-dashboard-framework/src/components/tasks/task-info.test.tsx index 0f09dc8e5..40f715bf0 100644 --- a/packages/react-components/lib/tasks/task-info.spec.tsx +++ b/packages/rmf-dashboard-framework/src/components/tasks/task-info.test.tsx @@ -1,7 +1,8 @@ import { render } from '@testing-library/react'; +import { describe, it } from 'vitest'; import { TaskInfo } from './task-info'; -import { makeTaskState } from './test-data.spec'; +import { makeTaskState } from './test-data.test'; describe('TaskInfo', () => { it('smoke test', () => { diff --git a/packages/react-components/lib/tasks/task-info.tsx b/packages/rmf-dashboard-framework/src/components/tasks/task-info.tsx similarity index 100% rename from packages/react-components/lib/tasks/task-info.tsx rename to packages/rmf-dashboard-framework/src/components/tasks/task-info.tsx diff --git a/packages/dashboard/src/components/tasks/task-inspector.tsx b/packages/rmf-dashboard-framework/src/components/tasks/task-inspector.tsx similarity index 96% rename from packages/dashboard/src/components/tasks/task-inspector.tsx rename to packages/rmf-dashboard-framework/src/components/tasks/task-inspector.tsx index 8ac0ea7d0..48f5e31a5 100644 --- a/packages/dashboard/src/components/tasks/task-inspector.tsx +++ b/packages/rmf-dashboard-framework/src/components/tasks/task-inspector.tsx @@ -2,10 +2,10 @@ import { Box, Dialog, DialogContent, DialogTitle, Divider, Grid, Typography } fr import { CardContent, useTheme } from '@mui/material'; import { TaskEventLog, TaskStateOutput as TaskState } from 'api-client'; import React from 'react'; -import { TaskInfo } from 'react-components'; -import { useRmfApi } from '../../hooks/use-rmf-api'; +import { useRmfApi } from '../../hooks'; import { TaskCancelButton } from './task-cancellation'; +import { TaskInfo } from './task-info'; import { TaskLogs } from './task-logs'; export interface TableDataGridState { @@ -69,7 +69,7 @@ export function TaskInspector({ task, onClose }: TableDataGridState): JSX.Elemen - + {taskState ? ( diff --git a/packages/dashboard/src/components/tasks/task-logs-app.tsx b/packages/rmf-dashboard-framework/src/components/tasks/task-logs-app.tsx similarity index 96% rename from packages/dashboard/src/components/tasks/task-logs-app.tsx rename to packages/rmf-dashboard-framework/src/components/tasks/task-logs-app.tsx index ff2b6dd61..436333d82 100644 --- a/packages/dashboard/src/components/tasks/task-logs-app.tsx +++ b/packages/rmf-dashboard-framework/src/components/tasks/task-logs-app.tsx @@ -2,7 +2,7 @@ import { CardContent } from '@mui/material'; import { TaskEventLog, TaskStateOutput as TaskState } from 'api-client'; import React from 'react'; -import { useRmfApi } from '../../hooks/use-rmf-api'; +import { useRmfApi } from '../../hooks'; import { AppEvents } from '../app-events'; import { TaskLogs } from './task-logs'; diff --git a/packages/dashboard/src/components/tasks/task-logs.test.tsx b/packages/rmf-dashboard-framework/src/components/tasks/task-logs.test.tsx similarity index 100% rename from packages/dashboard/src/components/tasks/task-logs.test.tsx rename to packages/rmf-dashboard-framework/src/components/tasks/task-logs.test.tsx diff --git a/packages/dashboard/src/components/tasks/task-logs.tsx b/packages/rmf-dashboard-framework/src/components/tasks/task-logs.tsx similarity index 99% rename from packages/dashboard/src/components/tasks/task-logs.tsx rename to packages/rmf-dashboard-framework/src/components/tasks/task-logs.tsx index cdf231b8a..2e052eb74 100644 --- a/packages/dashboard/src/components/tasks/task-logs.tsx +++ b/packages/rmf-dashboard-framework/src/components/tasks/task-logs.tsx @@ -54,7 +54,7 @@ export function TaskLogs({ taskLog, taskState, title }: TaskLogProps) { } return ( - + {taskState && (title ? title : taskState.booking.id)} diff --git a/packages/react-components/lib/tasks/task-schedule-event-edit-delete-popup.spec.tsx b/packages/rmf-dashboard-framework/src/components/tasks/task-schedule-event-edit-delete-popup.test.tsx similarity index 93% rename from packages/react-components/lib/tasks/task-schedule-event-edit-delete-popup.spec.tsx rename to packages/rmf-dashboard-framework/src/components/tasks/task-schedule-event-edit-delete-popup.test.tsx index 791772e76..55c8f9e25 100644 --- a/packages/react-components/lib/tasks/task-schedule-event-edit-delete-popup.spec.tsx +++ b/packages/rmf-dashboard-framework/src/components/tasks/task-schedule-event-edit-delete-popup.test.tsx @@ -1,4 +1,5 @@ import { fireEvent, render } from '@testing-library/react'; +import { describe, expect, it, vi } from 'vitest'; import { EventEditDeletePopup } from './task-schedule-event-edit-delete-popup'; diff --git a/packages/react-components/lib/tasks/task-schedule-event-edit-delete-popup.tsx b/packages/rmf-dashboard-framework/src/components/tasks/task-schedule-event-edit-delete-popup.tsx similarity index 100% rename from packages/react-components/lib/tasks/task-schedule-event-edit-delete-popup.tsx rename to packages/rmf-dashboard-framework/src/components/tasks/task-schedule-event-edit-delete-popup.tsx diff --git a/packages/dashboard/src/components/tasks/task-schedule-utils.ts b/packages/rmf-dashboard-framework/src/components/tasks/task-schedule-utils.ts similarity index 97% rename from packages/dashboard/src/components/tasks/task-schedule-utils.ts rename to packages/rmf-dashboard-framework/src/components/tasks/task-schedule-utils.ts index 1990895c0..3f5681bcb 100644 --- a/packages/dashboard/src/components/tasks/task-schedule-utils.ts +++ b/packages/rmf-dashboard-framework/src/components/tasks/task-schedule-utils.ts @@ -20,13 +20,10 @@ import { nextWednesday, startOfMinute, } from 'date-fns'; -import { - getShortDescription, - getTaskBookingLabelFromTaskRequest, - RecurringDays, - Schedule, - TaskDefinition, -} from 'react-components'; + +import { getTaskBookingLabelFromTaskRequest } from './task-booking-label-utils'; +import { RecurringDays, Schedule, TaskDefinition } from './task-form'; +import { getShortDescription } from './types'; /** * Generates a list of ProcessedEvents to occur within the query start and end, diff --git a/packages/dashboard/src/components/tasks/task-schedule.tsx b/packages/rmf-dashboard-framework/src/components/tasks/task-schedule.tsx similarity index 96% rename from packages/dashboard/src/components/tasks/task-schedule.tsx rename to packages/rmf-dashboard-framework/src/components/tasks/task-schedule.tsx index 65413e5f1..2588f1901 100644 --- a/packages/dashboard/src/components/tasks/task-schedule.tsx +++ b/packages/rmf-dashboard-framework/src/components/tasks/task-schedule.tsx @@ -11,20 +11,18 @@ import { WeekProps } from '@aldabil/react-scheduler/views/Week'; import { Button, Theme, Typography, useTheme } from '@mui/material'; import { ScheduledTask, ScheduledTaskScheduleOutput as ApiSchedule } from 'api-client'; import React from 'react'; -import { - ConfirmationDialog, - EventEditDeletePopup, - Schedule, - TaskForm, - TaskFormProps, -} from 'react-components'; -import { useAppController } from '../../hooks/use-app-controller'; -import { useTaskFormData } from '../../hooks/use-create-task-form'; -import { useRmfApi } from '../../hooks/use-rmf-api'; -import { useTaskRegistry } from '../../hooks/use-task-registry'; -import { useUserProfile } from '../../hooks/use-user-profile'; +import { + useAppController, + useRmfApi, + useTaskFormData, + useTaskRegistry, + useUserProfile, +} from '../../hooks'; import { AppEvents } from '../app-events'; +import { ConfirmationDialog } from '../confirmation-dialog'; +import { Schedule, TaskForm, TaskFormProps } from './task-form'; +import { EventEditDeletePopup } from './task-schedule-event-edit-delete-popup'; import { apiScheduleToSchedule, getScheduledTaskColor, diff --git a/packages/dashboard/src/components/tasks/task-summary.tsx b/packages/rmf-dashboard-framework/src/components/tasks/task-summary.tsx similarity index 88% rename from packages/dashboard/src/components/tasks/task-summary.tsx rename to packages/rmf-dashboard-framework/src/components/tasks/task-summary.tsx index 7dfcb594c..9af94b7d8 100644 --- a/packages/dashboard/src/components/tasks/task-summary.tsx +++ b/packages/rmf-dashboard-framework/src/components/tasks/task-summary.tsx @@ -4,6 +4,7 @@ import { LinearProgress, LinearProgressProps, TextField, + Theme, Typography, useMediaQuery, useTheme, @@ -17,19 +18,20 @@ import { TaskStateOutput as TaskState, } from 'api-client'; import React from 'react'; -import { base, getTaskBookingLabelFromTaskState, TaskBookingLabels } from 'react-components'; -import { useRmfApi } from '../../hooks/use-rmf-api'; +import { useRmfApi } from '../../hooks'; +import { TaskBookingLabels } from './booking-label'; +import { getTaskBookingLabelFromTaskState } from './task-booking-label-utils'; import { TaskCancelButton } from './task-cancellation'; import { TaskInspector } from './task-inspector'; const LinearProgressWithLabel = (props: LinearProgressProps & { value: number }) => { return ( - - + + - + {`${Math.round( props.value, )}%`} @@ -38,23 +40,23 @@ const LinearProgressWithLabel = (props: LinearProgressProps & { value: number }) ); }; -const setTaskDialogColor = (taskStatus: Status | undefined | null) => { +const setTaskDialogColor = (taskStatus: Status | undefined | null, theme: Theme) => { if (!taskStatus) { - return base.palette.background.default; + return theme.palette.background.default; } switch (taskStatus) { case Status.Failed: - return base.palette.error.dark; + return theme.palette.error.dark; case Status.Underway: - return base.palette.success.dark; + return theme.palette.success.dark; case Status.Queued: - return base.palette.info.main; + return theme.palette.info.main; default: - return base.palette.background.default; + return theme.palette.background.default; } }; @@ -169,7 +171,7 @@ export const TaskSummary = React.memo((props: TaskSummaryProps) => { { {taskProgress && ( - + )} diff --git a/packages/react-components/lib/tasks/task-table-datagrid.spec.tsx b/packages/rmf-dashboard-framework/src/components/tasks/task-table-datagrid.test.tsx similarity index 92% rename from packages/react-components/lib/tasks/task-table-datagrid.spec.tsx rename to packages/rmf-dashboard-framework/src/components/tasks/task-table-datagrid.test.tsx index b4922927a..f6a546f2b 100644 --- a/packages/react-components/lib/tasks/task-table-datagrid.spec.tsx +++ b/packages/rmf-dashboard-framework/src/components/tasks/task-table-datagrid.test.tsx @@ -1,7 +1,8 @@ import { cleanup, render, RenderResult, screen } from '@testing-library/react'; +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; import { FilterFields, TaskDataGridTable, Tasks } from './task-table-datagrid'; -import { makeTaskState } from './test-data.spec'; +import { makeTaskState } from './test-data.test'; describe('Tasks table', () => { const tasks: Tasks = { diff --git a/packages/react-components/lib/tasks/task-table-datagrid.tsx b/packages/rmf-dashboard-framework/src/components/tasks/task-table-datagrid.tsx similarity index 98% rename from packages/react-components/lib/tasks/task-table-datagrid.tsx rename to packages/rmf-dashboard-framework/src/components/tasks/task-table-datagrid.tsx index f4fe741f1..5b8890c30 100644 --- a/packages/react-components/lib/tasks/task-table-datagrid.tsx +++ b/packages/rmf-dashboard-framework/src/components/tasks/task-table-datagrid.tsx @@ -272,7 +272,7 @@ export function TaskDataGridTable({ } > - {startTimeString} + {startTimeString} ); }, @@ -311,7 +311,7 @@ export function TaskDataGridTable({ } > - {finishTimeString} + {finishTimeString} ); }, @@ -341,12 +341,12 @@ export function TaskDataGridTable({ } > - {`${statusString} (stale)`} + {`${statusString} (stale)`} ); } - return {statusString}; + return {statusString}; }, flex: 1, filterOperators: getMinimalStringFilterOperators, diff --git a/packages/react-components/lib/tasks/task-table.stories.tsx b/packages/rmf-dashboard-framework/src/components/tasks/task-table.stories.tsx similarity index 94% rename from packages/react-components/lib/tasks/task-table.stories.tsx rename to packages/rmf-dashboard-framework/src/components/tasks/task-table.stories.tsx index 6fbc4e825..52cba0306 100644 --- a/packages/react-components/lib/tasks/task-table.stories.tsx +++ b/packages/rmf-dashboard-framework/src/components/tasks/task-table.stories.tsx @@ -3,7 +3,7 @@ import { Meta, StoryObj } from '@storybook/react'; import React from 'react'; import { TaskTable } from './task-table'; -import { makeTaskState } from './test-data.spec'; +import { makeTaskState } from './test-data.test'; const tasks = [makeTaskState('task_1'), makeTaskState('task_2'), makeTaskState('task_3')]; @@ -40,7 +40,6 @@ export const Table: Story = { { it('shows all tasks', () => { diff --git a/packages/react-components/lib/tasks/task-table.tsx b/packages/rmf-dashboard-framework/src/components/tasks/task-table.tsx similarity index 100% rename from packages/react-components/lib/tasks/task-table.tsx rename to packages/rmf-dashboard-framework/src/components/tasks/task-table.tsx diff --git a/packages/react-components/lib/tasks/task-timeline.stories.tsx b/packages/rmf-dashboard-framework/src/components/tasks/task-timeline.stories.tsx similarity index 86% rename from packages/react-components/lib/tasks/task-timeline.stories.tsx rename to packages/rmf-dashboard-framework/src/components/tasks/task-timeline.stories.tsx index 13e4b1ca1..d834b1229 100644 --- a/packages/react-components/lib/tasks/task-timeline.stories.tsx +++ b/packages/rmf-dashboard-framework/src/components/tasks/task-timeline.stories.tsx @@ -1,7 +1,7 @@ import { Meta, StoryObj } from '@storybook/react'; import { TaskTimeline } from './task-timeline'; -import { makeTaskState } from './test-data.spec'; +import { makeTaskState } from './test-data.test'; export default { title: 'Tasks/Timeline', diff --git a/packages/react-components/lib/tasks/task-timeline.spec.tsx b/packages/rmf-dashboard-framework/src/components/tasks/task-timeline.test.tsx similarity index 93% rename from packages/react-components/lib/tasks/task-timeline.spec.tsx rename to packages/rmf-dashboard-framework/src/components/tasks/task-timeline.test.tsx index 95911e5ef..0fe00ae0f 100644 --- a/packages/react-components/lib/tasks/task-timeline.spec.tsx +++ b/packages/rmf-dashboard-framework/src/components/tasks/task-timeline.test.tsx @@ -1,7 +1,8 @@ import { render } from '@testing-library/react'; +import { describe, expect, it } from 'vitest'; import { TaskTimeline } from './task-timeline'; -import { makeTaskState } from './test-data.spec'; +import { makeTaskState } from './test-data.test'; describe('Task Timeline', () => { it('shows the time for each phase', () => { diff --git a/packages/react-components/lib/tasks/task-timeline.tsx b/packages/rmf-dashboard-framework/src/components/tasks/task-timeline.tsx similarity index 100% rename from packages/react-components/lib/tasks/task-timeline.tsx rename to packages/rmf-dashboard-framework/src/components/tasks/task-timeline.tsx diff --git a/packages/dashboard/src/components/tasks/tasks-window.tsx b/packages/rmf-dashboard-framework/src/components/tasks/tasks-window.tsx similarity index 78% rename from packages/dashboard/src/components/tasks/tasks-window.tsx rename to packages/rmf-dashboard-framework/src/components/tasks/tasks-window.tsx index 2b62a51f8..2286c41e7 100644 --- a/packages/dashboard/src/components/tasks/tasks-window.tsx +++ b/packages/rmf-dashboard-framework/src/components/tasks/tasks-window.tsx @@ -15,21 +15,20 @@ import { } from '@mui/material'; import { TaskStateInput as TaskState } from 'api-client'; import React from 'react'; + +import { MicroAppProps } from '../../components'; +import { useAppController, useRmfApi } from '../../hooks'; +import { AppEvents } from '../app-events'; +import { Window, WindowCloseButton, WindowToolbar } from '../window'; +import { TaskSchedule } from './task-schedule'; +import { TaskSummary } from './task-summary'; import { FilterFields, MuiMouseEvent, SortFields, TaskDataGridTable, Tasks, - Window, -} from 'react-components'; - -import { useAppController } from '../../hooks/use-app-controller'; -import { useRmfApi } from '../../hooks/use-rmf-api'; -import { AppEvents } from '../app-events'; -import { MicroAppProps } from '../micro-app'; -import { TaskSchedule } from './task-schedule'; -import { TaskSummary } from './task-summary'; +} from './task-table-datagrid'; import { exportCsvFull, exportCsvMinimal } from './utils'; const RefreshTaskQueueTableInterval = 15000; @@ -300,80 +299,83 @@ export const TasksWindow = React.memo( title="Tasks" onClose={onClose} toolbar={ - - - - - - { - exportTasksToCsv(true); - handleCloseExportMenu(); - }} - disableRipple - > - Export Minimal - - { - exportTasksToCsv(false); - handleCloseExportMenu(); - }} - disableRipple - > - Export Full - - - - + + - } + anchorEl={anchorExportElement} + open={openExportMenu} + onClose={handleCloseExportMenu} > - Refresh Task Queue - - - + { + exportTasksToCsv(true); + handleCloseExportMenu(); + }} + disableRipple + > + Export Minimal + + { + exportTasksToCsv(false); + handleCloseExportMenu(); + }} + disableRipple + > + Export Full + + + + + + + onClose && onClose()} /> + } {...otherProps} > diff --git a/packages/react-components/lib/tasks/test-data.spec.ts b/packages/rmf-dashboard-framework/src/components/tasks/test-data.test.ts similarity index 100% rename from packages/react-components/lib/tasks/test-data.spec.ts rename to packages/rmf-dashboard-framework/src/components/tasks/test-data.test.ts diff --git a/packages/react-components/lib/tasks/types/compose-clean.tsx b/packages/rmf-dashboard-framework/src/components/tasks/types/compose-clean.tsx similarity index 100% rename from packages/react-components/lib/tasks/types/compose-clean.tsx rename to packages/rmf-dashboard-framework/src/components/tasks/types/compose-clean.tsx diff --git a/packages/react-components/lib/tasks/types/custom-compose.tsx b/packages/rmf-dashboard-framework/src/components/tasks/types/custom-compose.tsx similarity index 100% rename from packages/react-components/lib/tasks/types/custom-compose.tsx rename to packages/rmf-dashboard-framework/src/components/tasks/types/custom-compose.tsx diff --git a/packages/react-components/lib/tasks/types/delivery-custom.spec.tsx b/packages/rmf-dashboard-framework/src/components/tasks/types/delivery-custom.test.tsx similarity index 99% rename from packages/react-components/lib/tasks/types/delivery-custom.spec.tsx rename to packages/rmf-dashboard-framework/src/components/tasks/types/delivery-custom.test.tsx index 06cb112cc..beb544ab2 100644 --- a/packages/react-components/lib/tasks/types/delivery-custom.spec.tsx +++ b/packages/rmf-dashboard-framework/src/components/tasks/types/delivery-custom.test.tsx @@ -1,3 +1,5 @@ +import { describe, expect, it } from 'vitest'; + import { deliveryCustomInsertCartId, deliveryCustomInsertDropoff, diff --git a/packages/react-components/lib/tasks/types/delivery-custom.tsx b/packages/rmf-dashboard-framework/src/components/tasks/types/delivery-custom.tsx similarity index 100% rename from packages/react-components/lib/tasks/types/delivery-custom.tsx rename to packages/rmf-dashboard-framework/src/components/tasks/types/delivery-custom.tsx diff --git a/packages/react-components/lib/tasks/types/delivery.tsx b/packages/rmf-dashboard-framework/src/components/tasks/types/delivery.tsx similarity index 100% rename from packages/react-components/lib/tasks/types/delivery.tsx rename to packages/rmf-dashboard-framework/src/components/tasks/types/delivery.tsx diff --git a/packages/react-components/lib/tasks/types/index.ts b/packages/rmf-dashboard-framework/src/components/tasks/types/index.ts similarity index 100% rename from packages/react-components/lib/tasks/types/index.ts rename to packages/rmf-dashboard-framework/src/components/tasks/types/index.ts diff --git a/packages/react-components/lib/tasks/types/patrol.tsx b/packages/rmf-dashboard-framework/src/components/tasks/types/patrol.tsx similarity index 100% rename from packages/react-components/lib/tasks/types/patrol.tsx rename to packages/rmf-dashboard-framework/src/components/tasks/types/patrol.tsx diff --git a/packages/react-components/lib/tasks/types/utils.ts b/packages/rmf-dashboard-framework/src/components/tasks/types/utils.ts similarity index 100% rename from packages/react-components/lib/tasks/types/utils.ts rename to packages/rmf-dashboard-framework/src/components/tasks/types/utils.ts diff --git a/packages/dashboard/src/components/tasks/utils.ts b/packages/rmf-dashboard-framework/src/components/tasks/utils.ts similarity index 88% rename from packages/dashboard/src/components/tasks/utils.ts rename to packages/rmf-dashboard-framework/src/components/tasks/utils.ts index 3de09be91..c388776fb 100644 --- a/packages/dashboard/src/components/tasks/utils.ts +++ b/packages/rmf-dashboard-framework/src/components/tasks/utils.ts @@ -1,13 +1,16 @@ import { AddExceptDateRequest, PostScheduledTaskRequest, + Priority, RobotTaskRequest, TaskRequest, TaskStateOutput as TaskState, } from 'api-client'; -import { getTaskBookingLabelFromTaskState, RobotDispatchTarget, Schedule } from 'react-components'; -import { RmfApi } from '../../services/rmf-api'; +import { RmfApi } from '../../services'; +import { getTaskBookingLabelFromTaskState } from './task-booking-label-utils'; +import { RobotDispatchTarget } from './task-form'; +import { Schedule } from './task-form'; import { toISOStringWithTimezone } from './task-schedule-utils'; export function exportCsvFull(timestamp: Date, allTasks: TaskState[]) { @@ -193,3 +196,26 @@ export async function editScheduledTaskSchedule( scheduleRequest, ); } + +export function createTaskPriority(prioritize: boolean): Priority { + return { type: 'binary', value: prioritize ? 1 : 0 }; +} + +// FIXME(ac): This method of parsing is crude, and will be fixed using schemas +// when we migrate to jsonforms. +export function parseTaskPriority(priority: Priority | null | undefined): boolean { + if (!priority) { + return false; + } + + if ( + typeof priority == 'object' && + 'type' in priority && + priority['type'] === 'binary' && + 'value' in priority && + typeof priority['value'] == 'number' + ) { + return (priority['value'] as number) > 0; + } + return false; +} diff --git a/packages/dashboard/src/components/theme.ts b/packages/rmf-dashboard-framework/src/components/theme.ts similarity index 100% rename from packages/dashboard/src/components/theme.ts rename to packages/rmf-dashboard-framework/src/components/theme.ts diff --git a/packages/react-components/lib/transfer-list.stories.tsx b/packages/rmf-dashboard-framework/src/components/transfer-list.stories.tsx similarity index 97% rename from packages/react-components/lib/transfer-list.stories.tsx rename to packages/rmf-dashboard-framework/src/components/transfer-list.stories.tsx index b779c64fa..cf379b83b 100644 --- a/packages/react-components/lib/transfer-list.stories.tsx +++ b/packages/rmf-dashboard-framework/src/components/transfer-list.stories.tsx @@ -43,7 +43,7 @@ const numbers: Record = { }; export const TransferListStory: Story = { - storyName: 'Transfer List', + name: 'Transfer List', render: (args) => { const [leftItems, setLeftItems] = React.useState(['one', 'two', 'three', 'four']); const [rightItems, setRightItems] = React.useState(['five', 'six', 'seven', 'eight']); diff --git a/packages/react-components/lib/transfer-list.spec.tsx b/packages/rmf-dashboard-framework/src/components/transfer-list.test.tsx similarity index 95% rename from packages/react-components/lib/transfer-list.spec.tsx rename to packages/rmf-dashboard-framework/src/components/transfer-list.test.tsx index 203d894ff..b1b063940 100644 --- a/packages/react-components/lib/transfer-list.spec.tsx +++ b/packages/rmf-dashboard-framework/src/components/transfer-list.test.tsx @@ -1,4 +1,5 @@ import { fireEvent, render } from '@testing-library/react'; +import { beforeEach, describe, expect, it, vi } from 'vitest'; import { TransferList } from './transfer-list'; diff --git a/packages/react-components/lib/transfer-list.tsx b/packages/rmf-dashboard-framework/src/components/transfer-list.tsx similarity index 100% rename from packages/react-components/lib/transfer-list.tsx rename to packages/rmf-dashboard-framework/src/components/transfer-list.tsx diff --git a/packages/react-components/lib/utils/geometry.spec.ts b/packages/rmf-dashboard-framework/src/components/utils/geometry.test.ts similarity index 98% rename from packages/react-components/lib/utils/geometry.spec.ts rename to packages/rmf-dashboard-framework/src/components/utils/geometry.test.ts index 758be3ced..efdb77387 100644 --- a/packages/react-components/lib/utils/geometry.spec.ts +++ b/packages/rmf-dashboard-framework/src/components/utils/geometry.test.ts @@ -1,3 +1,5 @@ +import { expect, it } from 'vitest'; + import { bezierControlPoints, fromRmfCoords, diff --git a/packages/react-components/lib/utils/geometry.ts b/packages/rmf-dashboard-framework/src/components/utils/geometry.ts similarity index 100% rename from packages/react-components/lib/utils/geometry.ts rename to packages/rmf-dashboard-framework/src/components/utils/geometry.ts diff --git a/packages/react-components/lib/utils/item-table.tsx b/packages/rmf-dashboard-framework/src/components/utils/item-table.tsx similarity index 100% rename from packages/react-components/lib/utils/item-table.tsx rename to packages/rmf-dashboard-framework/src/components/utils/item-table.tsx diff --git a/packages/react-components/lib/utils/misc.spec.ts b/packages/rmf-dashboard-framework/src/components/utils/misc.test.ts similarity index 92% rename from packages/react-components/lib/utils/misc.spec.ts rename to packages/rmf-dashboard-framework/src/components/utils/misc.test.ts index 27dafcb04..8683689d7 100644 --- a/packages/react-components/lib/utils/misc.spec.ts +++ b/packages/rmf-dashboard-framework/src/components/utils/misc.test.ts @@ -1,4 +1,6 @@ -import { almostShallowEqual } from '.'; +import { describe, expect, it } from 'vitest'; + +import { almostShallowEqual } from './misc'; import { defaultDict } from './misc'; it('sets correct default value', () => { diff --git a/packages/react-components/lib/utils/misc.ts b/packages/rmf-dashboard-framework/src/components/utils/misc.ts similarity index 100% rename from packages/react-components/lib/utils/misc.ts rename to packages/rmf-dashboard-framework/src/components/utils/misc.ts diff --git a/packages/react-components/lib/window/context.ts b/packages/rmf-dashboard-framework/src/components/window/context.ts similarity index 100% rename from packages/react-components/lib/window/context.ts rename to packages/rmf-dashboard-framework/src/components/window/context.ts diff --git a/packages/react-components/lib/window/demo.stories.tsx b/packages/rmf-dashboard-framework/src/components/window/demo.stories.tsx similarity index 97% rename from packages/react-components/lib/window/demo.stories.tsx rename to packages/rmf-dashboard-framework/src/components/window/demo.stories.tsx index 4589969f0..827224fab 100644 --- a/packages/react-components/lib/window/demo.stories.tsx +++ b/packages/rmf-dashboard-framework/src/components/window/demo.stories.tsx @@ -2,7 +2,7 @@ import { Typography } from '@mui/material'; import { Meta, StoryFn } from '@storybook/react'; import React from 'react'; -import { makeLayout } from './test-utils.spec'; +import { makeLayout } from './test-utils.test'; import { Window } from './window'; import { WindowContainer, WindowContainerProps } from './window-container'; diff --git a/packages/react-components/lib/window/index.ts b/packages/rmf-dashboard-framework/src/components/window/index.ts similarity index 59% rename from packages/react-components/lib/window/index.ts rename to packages/rmf-dashboard-framework/src/components/window/index.ts index 2ddd54bae..160aca78c 100644 --- a/packages/react-components/lib/window/index.ts +++ b/packages/rmf-dashboard-framework/src/components/window/index.ts @@ -1,3 +1,5 @@ +export * from './context'; export * from './window'; +export * from './window-close-button'; export * from './window-container'; export * from './window-toolbar'; diff --git a/packages/react-components/lib/window/no-rgl-animations.css b/packages/rmf-dashboard-framework/src/components/window/no-rgl-animations.css similarity index 100% rename from packages/react-components/lib/window/no-rgl-animations.css rename to packages/rmf-dashboard-framework/src/components/window/no-rgl-animations.css diff --git a/packages/react-components/lib/window/test-utils.spec.ts b/packages/rmf-dashboard-framework/src/components/window/test-utils.test.ts similarity index 100% rename from packages/react-components/lib/window/test-utils.spec.ts rename to packages/rmf-dashboard-framework/src/components/window/test-utils.test.ts diff --git a/packages/rmf-dashboard-framework/src/components/window/window-close-button.tsx b/packages/rmf-dashboard-framework/src/components/window/window-close-button.tsx new file mode 100644 index 000000000..19c62a101 --- /dev/null +++ b/packages/rmf-dashboard-framework/src/components/window/window-close-button.tsx @@ -0,0 +1,24 @@ +import CloseIcon from '@mui/icons-material/Close'; +import { IconButton, IconButtonProps } from '@mui/material'; +import React from 'react'; + +import { WindowManagerStateContext } from './context'; + +export const WindowCloseButton = ({ className, sx, ...otherProps }: IconButtonProps) => { + const windowManagerState = React.useContext(WindowManagerStateContext); + + return ( + windowManagerState.designMode && ( + + + + ) + ); +}; + +export default WindowCloseButton; diff --git a/packages/react-components/lib/window/window-container.tsx b/packages/rmf-dashboard-framework/src/components/window/window-container.tsx similarity index 97% rename from packages/react-components/lib/window/window-container.tsx rename to packages/rmf-dashboard-framework/src/components/window/window-container.tsx index b5a6ea0c1..6f0152275 100644 --- a/packages/react-components/lib/window/window-container.tsx +++ b/packages/rmf-dashboard-framework/src/components/window/window-container.tsx @@ -60,7 +60,7 @@ export const WindowContainer: React.FC = ({ isResizable={designMode} isDraggable={designMode} onLayoutChange={onLayoutChange} - draggableCancel=".custom-resize-handle,.window-toolbar-items" + draggableCancel=".custom-resize-handle,.window-toolbar-close" resizeHandle={} > {children} diff --git a/packages/react-components/lib/window/window-toolbar.stories.tsx b/packages/rmf-dashboard-framework/src/components/window/window-toolbar.stories.tsx similarity index 100% rename from packages/react-components/lib/window/window-toolbar.stories.tsx rename to packages/rmf-dashboard-framework/src/components/window/window-toolbar.stories.tsx diff --git a/packages/react-components/lib/window/window-toolbar.tsx b/packages/rmf-dashboard-framework/src/components/window/window-toolbar.tsx similarity index 100% rename from packages/react-components/lib/window/window-toolbar.tsx rename to packages/rmf-dashboard-framework/src/components/window/window-toolbar.tsx diff --git a/packages/react-components/lib/window/window.tsx b/packages/rmf-dashboard-framework/src/components/window/window.tsx similarity index 75% rename from packages/react-components/lib/window/window.tsx rename to packages/rmf-dashboard-framework/src/components/window/window.tsx index d9643a4a1..e3dd6191f 100644 --- a/packages/react-components/lib/window/window.tsx +++ b/packages/rmf-dashboard-framework/src/components/window/window.tsx @@ -1,16 +1,25 @@ import type {} from '@emotion/styled'; -import CloseIcon from '@mui/icons-material/Close'; -import { Box, IconButton, Paper, PaperProps, styled, useTheme } from '@mui/material'; +import { Box, Paper, PaperProps, styled, useTheme } from '@mui/material'; import React from 'react'; import { Layout } from 'react-grid-layout'; import { WindowManagerStateContext } from './context'; +import WindowCloseButton from './window-close-button'; import { WindowToolbar } from './window-toolbar'; export interface WindowProps extends PaperProps { + /** + * The title to show on the toolbar when using the default toolbar. Will be ignored when using custom toolbar. + */ title: string; + 'data-grid'?: Layout; + + /** + * A custom toolbar to use. + */ toolbar?: React.ReactNode; + onClose?: () => void; } @@ -40,24 +49,17 @@ export const Window = styled( '& > :not(.custom-resize-handle)': { pointerEvents: windowManagerState.designMode ? 'none' : undefined, }, - '& .window-toolbar-items': { - pointerEvents: 'auto', - }, ...sx, }} {...otherProps} > - - {toolbar} - {windowManagerState.designMode && ( - onClose && onClose()}> - - - )} - + {toolbar ? ( + toolbar + ) : ( + + onClose && onClose()} /> + + )} {childComponents} diff --git a/packages/react-components/lib/workcells/index.ts b/packages/rmf-dashboard-framework/src/components/workcells/index.ts similarity index 73% rename from packages/react-components/lib/workcells/index.ts rename to packages/rmf-dashboard-framework/src/components/workcells/index.ts index e62b6df7a..459db07c4 100644 --- a/packages/react-components/lib/workcells/index.ts +++ b/packages/rmf-dashboard-framework/src/components/workcells/index.ts @@ -1,7 +1,4 @@ import type { Dispenser, DispenserState, Ingestor, IngestorState } from 'api-client'; -export * from './workcell-panel'; -export * from './workcell-table'; - export type Workcell = Dispenser | Ingestor; export type WorkcellState = DispenserState | IngestorState; diff --git a/packages/react-components/lib/workcells/test-utils.spec.ts b/packages/rmf-dashboard-framework/src/components/workcells/test-utils.test.ts similarity index 100% rename from packages/react-components/lib/workcells/test-utils.spec.ts rename to packages/rmf-dashboard-framework/src/components/workcells/test-utils.test.ts diff --git a/packages/react-components/lib/workcells/utils.ts b/packages/rmf-dashboard-framework/src/components/workcells/utils.ts similarity index 100% rename from packages/react-components/lib/workcells/utils.ts rename to packages/rmf-dashboard-framework/src/components/workcells/utils.ts diff --git a/packages/react-components/lib/workcells/workcell-panel.stories.tsx b/packages/rmf-dashboard-framework/src/components/workcells/workcell-panel.stories.tsx similarity index 99% rename from packages/react-components/lib/workcells/workcell-panel.stories.tsx rename to packages/rmf-dashboard-framework/src/components/workcells/workcell-panel.stories.tsx index bcab44e9e..634210575 100644 --- a/packages/react-components/lib/workcells/workcell-panel.stories.tsx +++ b/packages/rmf-dashboard-framework/src/components/workcells/workcell-panel.stories.tsx @@ -1,6 +1,6 @@ import { Meta, StoryObj } from '@storybook/react'; -import { makeDispenser, makeDispenserState } from './test-utils.spec'; +import { makeDispenser, makeDispenserState } from './test-utils.test'; import { WorkcellPanel } from './workcell-panel'; export default { diff --git a/packages/react-components/lib/workcells/workcell-panel.spec.tsx b/packages/rmf-dashboard-framework/src/components/workcells/workcell-panel.test.tsx similarity index 95% rename from packages/react-components/lib/workcells/workcell-panel.spec.tsx rename to packages/rmf-dashboard-framework/src/components/workcells/workcell-panel.test.tsx index ae1878422..e84ac7dd0 100644 --- a/packages/react-components/lib/workcells/workcell-panel.spec.tsx +++ b/packages/rmf-dashboard-framework/src/components/workcells/workcell-panel.test.tsx @@ -1,6 +1,7 @@ import { fireEvent, render } from '@testing-library/react'; +import { beforeEach, describe, expect, it } from 'vitest'; -import { makeDispenser, makeDispenserState } from './test-utils.spec'; +import { makeDispenser, makeDispenserState } from './test-utils.test'; import { WorkcellPanel } from './workcell-panel'; function renderWorkcellPanel() { diff --git a/packages/react-components/lib/workcells/workcell-panel.tsx b/packages/rmf-dashboard-framework/src/components/workcells/workcell-panel.tsx similarity index 100% rename from packages/react-components/lib/workcells/workcell-panel.tsx rename to packages/rmf-dashboard-framework/src/components/workcells/workcell-panel.tsx diff --git a/packages/react-components/lib/workcells/workcell-table.spec.tsx b/packages/rmf-dashboard-framework/src/components/workcells/workcell-table.test.tsx similarity index 95% rename from packages/react-components/lib/workcells/workcell-table.spec.tsx rename to packages/rmf-dashboard-framework/src/components/workcells/workcell-table.test.tsx index 531bf2427..b52667d32 100644 --- a/packages/react-components/lib/workcells/workcell-table.spec.tsx +++ b/packages/rmf-dashboard-framework/src/components/workcells/workcell-table.test.tsx @@ -1,7 +1,8 @@ import { render } from '@testing-library/react'; import { DispenserState as RmfDispenserState } from 'rmf-models/ros/rmf_dispenser_msgs/msg'; +import { describe, expect, it } from 'vitest'; -import { makeDispenser, makeDispenserState } from './test-utils.spec'; +import { makeDispenser, makeDispenserState } from './test-utils.test'; import { WorkcellTable } from './workcell-table'; describe('Workcell table', () => { diff --git a/packages/react-components/lib/workcells/workcell-table.tsx b/packages/rmf-dashboard-framework/src/components/workcells/workcell-table.tsx similarity index 63% rename from packages/react-components/lib/workcells/workcell-table.tsx rename to packages/rmf-dashboard-framework/src/components/workcells/workcell-table.tsx index bd538eea7..6723b9856 100644 --- a/packages/react-components/lib/workcells/workcell-table.tsx +++ b/packages/rmf-dashboard-framework/src/components/workcells/workcell-table.tsx @@ -3,7 +3,7 @@ import clsx from 'clsx'; import React from 'react'; import { DispenserState as RmfDispenserState } from 'rmf-models/ros/rmf_dispenser_msgs/msg'; -import { ItemTableCell, useFixedTableCellStylesClasses } from '../utils'; +import { ItemTableCell, useFixedTableCellStylesClasses } from '../utils/item-table'; import { Workcell, WorkcellState } from '.'; import { dispenserModeToString } from './utils'; @@ -46,11 +46,10 @@ const WorkcellRow = React.memo( }, []); return ( - + {mode !== undefined && requestGuidQueue !== undefined && secondsRemaining !== undefined ? ( {dispenserModeToString(mode)} - + {requestGuidQueue.length} - + {requestGuidQueue} - + {secondsRemaining} ) : ( {workcell.guid} - + {'NA'} - + {'NA'} - + {'NA'} - + {'NA'} @@ -133,27 +102,17 @@ const WorkcellRow = React.memo( export const WorkcellTable = ({ workcells, workcellStates }: WorkcellTableProps): JSX.Element => { return ( - - - - - Dispenser Name - - - Op. Mode - - - No. Queued Requests - - - Request Queue ID - - - Seconds Remaining - +
+ + + Dispenser Name + Op. Mode + No. Queued Requests + Request Queue ID + Seconds Remaining - + {workcells.map((workcell) => { const workcellState: WorkcellState | undefined = workcellStates[workcell.guid]; return ( diff --git a/packages/dashboard/src/components/workspace.tsx b/packages/rmf-dashboard-framework/src/components/workspace.tsx similarity index 97% rename from packages/dashboard/src/components/workspace.tsx rename to packages/rmf-dashboard-framework/src/components/workspace.tsx index b420a1bb8..756e50443 100644 --- a/packages/dashboard/src/components/workspace.tsx +++ b/packages/rmf-dashboard-framework/src/components/workspace.tsx @@ -2,10 +2,10 @@ import AddIcon from '@mui/icons-material/Add'; import DesignModeIcon from '@mui/icons-material/AutoFixNormal'; import { Box, Fab, IconButton, Menu, MenuItem, Typography, useTheme } from '@mui/material'; import React from 'react'; -import { WindowContainer, WindowLayout } from 'react-components'; -import { useAppController } from '../hooks/use-app-controller'; -import { MicroAppManifest } from './micro-app'; +import { MicroAppManifest } from '../components'; +import { useAppController } from '../hooks'; +import { WindowContainer, WindowLayout } from './window'; export interface InitialWindow { layout: Omit; diff --git a/packages/dashboard/src/hooks/deferred-context.ts b/packages/rmf-dashboard-framework/src/hooks/deferred-context.ts similarity index 100% rename from packages/dashboard/src/hooks/deferred-context.ts rename to packages/rmf-dashboard-framework/src/hooks/deferred-context.ts diff --git a/packages/rmf-dashboard-framework/src/hooks/index.ts b/packages/rmf-dashboard-framework/src/hooks/index.ts new file mode 100644 index 000000000..163c9294d --- /dev/null +++ b/packages/rmf-dashboard-framework/src/hooks/index.ts @@ -0,0 +1,10 @@ +export * from './deferred-context'; +export * from './use-app-controller'; +export * from './use-async'; +export * from './use-authenticator'; +export * from './use-create-task-form'; +export * from './use-resources'; +export * from './use-rmf-api'; +export * from './use-settings'; +export * from './use-task-registry'; +export * from './use-user-profile'; diff --git a/packages/dashboard/src/hooks/use-app-controller.ts b/packages/rmf-dashboard-framework/src/hooks/use-app-controller.ts similarity index 90% rename from packages/dashboard/src/hooks/use-app-controller.ts rename to packages/rmf-dashboard-framework/src/hooks/use-app-controller.ts index 28d3b1d27..4b33b36e4 100644 --- a/packages/dashboard/src/hooks/use-app-controller.ts +++ b/packages/rmf-dashboard-framework/src/hooks/use-app-controller.ts @@ -1,6 +1,6 @@ import { AlertProps } from '@mui/material'; -import { Settings } from '../services/settings'; +import { Settings } from '../services'; import { createDeferredContext } from './deferred-context'; export interface AppController { diff --git a/packages/react-components/lib/use-async.spec.ts b/packages/rmf-dashboard-framework/src/hooks/use-async.test.ts similarity index 95% rename from packages/react-components/lib/use-async.spec.ts rename to packages/rmf-dashboard-framework/src/hooks/use-async.test.ts index 75c6cd31d..0d09d91db 100644 --- a/packages/react-components/lib/use-async.spec.ts +++ b/packages/rmf-dashboard-framework/src/hooks/use-async.test.ts @@ -1,4 +1,5 @@ import { renderHook } from '@testing-library/react'; +import { describe, expect, it } from 'vitest'; import { useAsync } from './use-async'; diff --git a/packages/react-components/lib/use-async.ts b/packages/rmf-dashboard-framework/src/hooks/use-async.ts similarity index 100% rename from packages/react-components/lib/use-async.ts rename to packages/rmf-dashboard-framework/src/hooks/use-async.ts diff --git a/packages/dashboard/src/hooks/use-authenticator.ts b/packages/rmf-dashboard-framework/src/hooks/use-authenticator.ts similarity index 72% rename from packages/dashboard/src/hooks/use-authenticator.ts rename to packages/rmf-dashboard-framework/src/hooks/use-authenticator.ts index d0fd61775..af6b50da6 100644 --- a/packages/dashboard/src/hooks/use-authenticator.ts +++ b/packages/rmf-dashboard-framework/src/hooks/use-authenticator.ts @@ -1,4 +1,4 @@ -import { Authenticator } from '../services/authenticator'; +import { Authenticator } from '../services'; import { createDeferredContext } from './deferred-context'; export const [useAuthenticator, AuthenticatorProvider] = createDeferredContext(); diff --git a/packages/dashboard/src/hooks/use-create-task-form.tsx b/packages/rmf-dashboard-framework/src/hooks/use-create-task-form.tsx similarity index 95% rename from packages/dashboard/src/hooks/use-create-task-form.tsx rename to packages/rmf-dashboard-framework/src/hooks/use-create-task-form.tsx index fa9d221ce..64bbfc807 100644 --- a/packages/dashboard/src/hooks/use-create-task-form.tsx +++ b/packages/rmf-dashboard-framework/src/hooks/use-create-task-form.tsx @@ -1,8 +1,8 @@ import React from 'react'; -import { getPlaces } from 'react-components'; import { Subscription } from 'rxjs'; -import { RmfApi } from '../services/rmf-api'; +import { getPlaces } from '../components/place'; +import { RmfApi } from '../services'; export const useTaskFormData = (rmfApi: RmfApi | undefined) => { const [waypointNames, setWaypointNames] = React.useState([]); diff --git a/packages/dashboard/src/hooks/use-resources.ts b/packages/rmf-dashboard-framework/src/hooks/use-resources.ts similarity index 100% rename from packages/dashboard/src/hooks/use-resources.ts rename to packages/rmf-dashboard-framework/src/hooks/use-resources.ts diff --git a/packages/dashboard/src/hooks/use-rmf-api.ts b/packages/rmf-dashboard-framework/src/hooks/use-rmf-api.ts similarity index 74% rename from packages/dashboard/src/hooks/use-rmf-api.ts rename to packages/rmf-dashboard-framework/src/hooks/use-rmf-api.ts index 40ff6e546..9c5ba19de 100644 --- a/packages/dashboard/src/hooks/use-rmf-api.ts +++ b/packages/rmf-dashboard-framework/src/hooks/use-rmf-api.ts @@ -1,4 +1,4 @@ -import { RmfApi } from '../services/rmf-api'; +import { RmfApi } from '../services'; import { createDeferredContext } from './deferred-context'; export const [useRmfApi, RmfApiProvider] = createDeferredContext(); diff --git a/packages/dashboard/src/hooks/use-settings.ts b/packages/rmf-dashboard-framework/src/hooks/use-settings.ts similarity index 74% rename from packages/dashboard/src/hooks/use-settings.ts rename to packages/rmf-dashboard-framework/src/hooks/use-settings.ts index c1ea65b55..99f6892cc 100644 --- a/packages/dashboard/src/hooks/use-settings.ts +++ b/packages/rmf-dashboard-framework/src/hooks/use-settings.ts @@ -1,4 +1,4 @@ -import { Settings } from '../services/settings'; +import { Settings } from '../services'; import { createDeferredContext } from './deferred-context'; export const [useSettings, SettingsProvider] = createDeferredContext(); diff --git a/packages/dashboard/src/hooks/use-task-registry.ts b/packages/rmf-dashboard-framework/src/hooks/use-task-registry.ts similarity index 89% rename from packages/dashboard/src/hooks/use-task-registry.ts rename to packages/rmf-dashboard-framework/src/hooks/use-task-registry.ts index a65e7451a..8be9434a5 100644 --- a/packages/dashboard/src/hooks/use-task-registry.ts +++ b/packages/rmf-dashboard-framework/src/hooks/use-task-registry.ts @@ -1,5 +1,4 @@ -import { TaskDefinition } from 'react-components'; - +import { TaskDefinition } from '../components/tasks/task-form'; import { createDeferredContext } from './deferred-context'; export interface TaskRegistry { diff --git a/packages/dashboard/src/hooks/use-user-profile.tsx b/packages/rmf-dashboard-framework/src/hooks/use-user-profile.tsx similarity index 72% rename from packages/dashboard/src/hooks/use-user-profile.tsx rename to packages/rmf-dashboard-framework/src/hooks/use-user-profile.tsx index bca58a758..c5a8dfe81 100644 --- a/packages/dashboard/src/hooks/use-user-profile.tsx +++ b/packages/rmf-dashboard-framework/src/hooks/use-user-profile.tsx @@ -1,4 +1,4 @@ -import { UserProfile } from '../services/authenticator'; +import { UserProfile } from '../services'; import { createDeferredContext } from './deferred-context'; export const [useUserProfile, UserProfileProvider] = createDeferredContext(); diff --git a/packages/rmf-dashboard-framework/src/micro-apps/doors-app.ts b/packages/rmf-dashboard-framework/src/micro-apps/doors-app.ts new file mode 100644 index 000000000..810764b7e --- /dev/null +++ b/packages/rmf-dashboard-framework/src/micro-apps/doors-app.ts @@ -0,0 +1,8 @@ +import { createMicroApp } from '../components'; + +export default createMicroApp( + 'doors-table', + 'Doors', + () => import('../components/doors/doors-table'), + () => ({}), +); diff --git a/packages/rmf-dashboard-framework/src/micro-apps/index.ts b/packages/rmf-dashboard-framework/src/micro-apps/index.ts new file mode 100644 index 000000000..d7e05f42e --- /dev/null +++ b/packages/rmf-dashboard-framework/src/micro-apps/index.ts @@ -0,0 +1,6 @@ +export { default as doorsApp } from './doors-app'; +export { default as liftsApp } from './lifts-app'; +export { default as createMapApp } from './map-app'; +export { default as robotMutexGroupsApp } from './robot-mutex-groups-app'; +export { default as robotsApp } from './robots-app'; +export { default as tasksApp } from './tasks-app'; diff --git a/packages/rmf-dashboard-framework/src/micro-apps/lifts-app.ts b/packages/rmf-dashboard-framework/src/micro-apps/lifts-app.ts new file mode 100644 index 000000000..b2f51fede --- /dev/null +++ b/packages/rmf-dashboard-framework/src/micro-apps/lifts-app.ts @@ -0,0 +1,8 @@ +import { createMicroApp } from '../components'; + +export default createMicroApp( + 'lifts-table', + 'Lifts', + () => import('../components/lifts/lifts-table'), + () => ({}), +); diff --git a/packages/dashboard/src/micro-apps/map-app.ts b/packages/rmf-dashboard-framework/src/micro-apps/map-app.ts similarity index 75% rename from packages/dashboard/src/micro-apps/map-app.ts rename to packages/rmf-dashboard-framework/src/micro-apps/map-app.ts index 962bbab27..e99faa306 100644 --- a/packages/dashboard/src/micro-apps/map-app.ts +++ b/packages/rmf-dashboard-framework/src/micro-apps/map-app.ts @@ -1,5 +1,5 @@ +import { createMicroApp, MicroAppManifest } from '../components'; import type { MapProps } from '../components/map'; -import { createMicroApp, MicroAppManifest } from '../components/micro-app'; export default function createMapApp(config: MapProps): MicroAppManifest { return createMicroApp( diff --git a/packages/dashboard/src/micro-apps/robot-mutex-groups-app.ts b/packages/rmf-dashboard-framework/src/micro-apps/robot-mutex-groups-app.ts similarity index 73% rename from packages/dashboard/src/micro-apps/robot-mutex-groups-app.ts rename to packages/rmf-dashboard-framework/src/micro-apps/robot-mutex-groups-app.ts index 6fe55e144..6068409e5 100644 --- a/packages/dashboard/src/micro-apps/robot-mutex-groups-app.ts +++ b/packages/rmf-dashboard-framework/src/micro-apps/robot-mutex-groups-app.ts @@ -1,4 +1,4 @@ -import { createMicroApp } from '../components/micro-app'; +import { createMicroApp } from '../components'; export default createMicroApp( 'robot-mutex-groups-table', diff --git a/packages/dashboard/src/micro-apps/robots-app.ts b/packages/rmf-dashboard-framework/src/micro-apps/robots-app.ts similarity index 69% rename from packages/dashboard/src/micro-apps/robots-app.ts rename to packages/rmf-dashboard-framework/src/micro-apps/robots-app.ts index c44b76183..26ee1de33 100644 --- a/packages/dashboard/src/micro-apps/robots-app.ts +++ b/packages/rmf-dashboard-framework/src/micro-apps/robots-app.ts @@ -1,4 +1,4 @@ -import { createMicroApp } from '../components/micro-app'; +import { createMicroApp } from '../components'; export default createMicroApp( 'robots-table', diff --git a/packages/rmf-dashboard-framework/src/micro-apps/tasks-app.tsx b/packages/rmf-dashboard-framework/src/micro-apps/tasks-app.tsx new file mode 100644 index 000000000..ad1b7c95a --- /dev/null +++ b/packages/rmf-dashboard-framework/src/micro-apps/tasks-app.tsx @@ -0,0 +1,16 @@ +import { lazy } from 'react'; +import { Suspense } from 'react'; + +import { MicroAppManifest } from '../components'; + +const TasksWindow = lazy(() => import('../components/tasks/tasks-window')); + +export default { + appId: 'tasks', + displayName: 'Tasks', + Component: (props) => ( + + + + ), +} satisfies MicroAppManifest; diff --git a/packages/dashboard/src/pages/index.ts b/packages/rmf-dashboard-framework/src/pages/index.ts similarity index 100% rename from packages/dashboard/src/pages/index.ts rename to packages/rmf-dashboard-framework/src/pages/index.ts diff --git a/packages/dashboard/src/pages/login-page.stories.tsx b/packages/rmf-dashboard-framework/src/pages/login-page.stories.tsx similarity index 86% rename from packages/dashboard/src/pages/login-page.stories.tsx rename to packages/rmf-dashboard-framework/src/pages/login-page.stories.tsx index c5f362bd3..97468ff6c 100644 --- a/packages/dashboard/src/pages/login-page.stories.tsx +++ b/packages/rmf-dashboard-framework/src/pages/login-page.stories.tsx @@ -4,7 +4,7 @@ import { LoginCardProps } from '../components/login-card'; import { LoginPage } from './login-page'; export default { - title: 'Login', + title: 'Login Page', component: LoginPage, argTypes: { title: { @@ -21,6 +21,6 @@ export default { type Story = StoryObj; export const Default: Story = { - storyName: 'LoginPage', - render: (args: LoginCardProps) => , + name: 'LoginPage', + render: (args: LoginCardProps) => , }; diff --git a/packages/dashboard/src/pages/login-page.test.tsx b/packages/rmf-dashboard-framework/src/pages/login-page.test.tsx similarity index 100% rename from packages/dashboard/src/pages/login-page.test.tsx rename to packages/rmf-dashboard-framework/src/pages/login-page.test.tsx diff --git a/packages/dashboard/src/pages/login-page.tsx b/packages/rmf-dashboard-framework/src/pages/login-page.tsx similarity index 90% rename from packages/dashboard/src/pages/login-page.tsx rename to packages/rmf-dashboard-framework/src/pages/login-page.tsx index 2716c776d..775d8fcfb 100644 --- a/packages/dashboard/src/pages/login-page.tsx +++ b/packages/rmf-dashboard-framework/src/pages/login-page.tsx @@ -1,6 +1,6 @@ import { styled } from '@mui/material'; -import { LoginCard, LoginCardProps } from '../components'; +import LoginCard, { LoginCardProps } from '../components/login-card'; const prefix = 'login-page'; const classes = { diff --git a/packages/dashboard/src/services/__mocks__/robot-trajectory-manager.ts b/packages/rmf-dashboard-framework/src/services/__mocks__/robot-trajectory-manager.ts similarity index 100% rename from packages/dashboard/src/services/__mocks__/robot-trajectory-manager.ts rename to packages/rmf-dashboard-framework/src/services/__mocks__/robot-trajectory-manager.ts diff --git a/packages/dashboard/src/services/__mocks__/trajectories.json b/packages/rmf-dashboard-framework/src/services/__mocks__/trajectories.json similarity index 100% rename from packages/dashboard/src/services/__mocks__/trajectories.json rename to packages/rmf-dashboard-framework/src/services/__mocks__/trajectories.json diff --git a/packages/dashboard/src/services/authenticator.ts b/packages/rmf-dashboard-framework/src/services/authenticator.ts similarity index 100% rename from packages/dashboard/src/services/authenticator.ts rename to packages/rmf-dashboard-framework/src/services/authenticator.ts diff --git a/packages/react-components/lib/color-manager.spec.ts b/packages/rmf-dashboard-framework/src/services/color-manager.test.ts similarity index 88% rename from packages/react-components/lib/color-manager.spec.ts rename to packages/rmf-dashboard-framework/src/services/color-manager.test.ts index c497d4d18..6d27065c4 100644 --- a/packages/react-components/lib/color-manager.spec.ts +++ b/packages/rmf-dashboard-framework/src/services/color-manager.test.ts @@ -1,3 +1,5 @@ +import { beforeEach, describe, expect, it } from 'vitest'; + import { ColorManager } from './color-manager'; let colorManager: ColorManager; diff --git a/packages/react-components/lib/color-manager.ts b/packages/rmf-dashboard-framework/src/services/color-manager.ts similarity index 97% rename from packages/react-components/lib/color-manager.ts rename to packages/rmf-dashboard-framework/src/services/color-manager.ts index 8de0727db..d7b55a1ba 100644 --- a/packages/react-components/lib/color-manager.ts +++ b/packages/rmf-dashboard-framework/src/services/color-manager.ts @@ -5,7 +5,7 @@ import { crc32 } from 'crc'; import Vibrant from 'node-vibrant'; import React from 'react'; -import { robotHash } from './robots'; +import { robotHash } from '../components/robots/utils'; function _hash(s: string): number { return crc32(s); diff --git a/packages/rmf-dashboard-framework/src/services/index.ts b/packages/rmf-dashboard-framework/src/services/index.ts new file mode 100644 index 000000000..b7c84b708 --- /dev/null +++ b/packages/rmf-dashboard-framework/src/services/index.ts @@ -0,0 +1,10 @@ +export * from './authenticator'; +export * from './color-manager'; +export * from './keycloak'; +export * from './negotiation-status-manager'; +export * from './permissions'; +export * from './rmf-api'; +export * from './robot-trajectory-manager'; +export * from './settings'; +export * from './stub-authenticator'; +export * from './trajectory-socket-manager'; diff --git a/packages/dashboard/src/services/keycloak.ts b/packages/rmf-dashboard-framework/src/services/keycloak.ts similarity index 100% rename from packages/dashboard/src/services/keycloak.ts rename to packages/rmf-dashboard-framework/src/services/keycloak.ts diff --git a/packages/dashboard/src/services/negotiation-status-manager.ts b/packages/rmf-dashboard-framework/src/services/negotiation-status-manager.ts similarity index 100% rename from packages/dashboard/src/services/negotiation-status-manager.ts rename to packages/rmf-dashboard-framework/src/services/negotiation-status-manager.ts diff --git a/packages/dashboard/src/services/permissions.ts b/packages/rmf-dashboard-framework/src/services/permissions.ts similarity index 100% rename from packages/dashboard/src/services/permissions.ts rename to packages/rmf-dashboard-framework/src/services/permissions.ts diff --git a/packages/dashboard/src/services/rmf-api.ts b/packages/rmf-dashboard-framework/src/services/rmf-api.ts similarity index 100% rename from packages/dashboard/src/services/rmf-api.ts rename to packages/rmf-dashboard-framework/src/services/rmf-api.ts diff --git a/packages/dashboard/src/services/robot-trajectory-manager.ts b/packages/rmf-dashboard-framework/src/services/robot-trajectory-manager.ts similarity index 98% rename from packages/dashboard/src/services/robot-trajectory-manager.ts rename to packages/rmf-dashboard-framework/src/services/robot-trajectory-manager.ts index 11303974c..cf6f0430b 100644 --- a/packages/dashboard/src/services/robot-trajectory-manager.ts +++ b/packages/rmf-dashboard-framework/src/services/robot-trajectory-manager.ts @@ -1,5 +1,4 @@ -import { Knot } from 'react-components'; - +import { Knot } from '../components/utils/geometry'; import { Authenticator } from './authenticator'; import TrajectorySocketManager from './trajectory-socket-manager'; diff --git a/packages/dashboard/src/services/settings.ts b/packages/rmf-dashboard-framework/src/services/settings.ts similarity index 100% rename from packages/dashboard/src/services/settings.ts rename to packages/rmf-dashboard-framework/src/services/settings.ts diff --git a/packages/dashboard/src/services/stub-authenticator.ts b/packages/rmf-dashboard-framework/src/services/stub-authenticator.ts similarity index 100% rename from packages/dashboard/src/services/stub-authenticator.ts rename to packages/rmf-dashboard-framework/src/services/stub-authenticator.ts diff --git a/packages/dashboard/src/services/trajectory-socket-manager.ts b/packages/rmf-dashboard-framework/src/services/trajectory-socket-manager.ts similarity index 100% rename from packages/dashboard/src/services/trajectory-socket-manager.ts rename to packages/rmf-dashboard-framework/src/services/trajectory-socket-manager.ts diff --git a/packages/dashboard/src/utils/api.ts b/packages/rmf-dashboard-framework/src/utils/api.ts similarity index 100% rename from packages/dashboard/src/utils/api.ts rename to packages/rmf-dashboard-framework/src/utils/api.ts diff --git a/packages/rmf-dashboard-framework/src/utils/index.ts b/packages/rmf-dashboard-framework/src/utils/index.ts new file mode 100644 index 000000000..83c4d931f --- /dev/null +++ b/packages/rmf-dashboard-framework/src/utils/index.ts @@ -0,0 +1,2 @@ +export * from './api'; +export * from './url'; diff --git a/packages/dashboard/src/utils/test-utils.test.tsx b/packages/rmf-dashboard-framework/src/utils/test-utils.test.tsx similarity index 87% rename from packages/dashboard/src/utils/test-utils.test.tsx rename to packages/rmf-dashboard-framework/src/utils/test-utils.test.tsx index 15979e284..670dc5604 100644 --- a/packages/dashboard/src/utils/test-utils.test.tsx +++ b/packages/rmf-dashboard-framework/src/utils/test-utils.test.tsx @@ -33,19 +33,20 @@ import { import axios from 'axios'; import React from 'react'; import { Subject } from 'rxjs'; -import { vi } from 'vitest'; -import { AppController, AppControllerProvider } from '../hooks/use-app-controller'; -import { AuthenticatorProvider } from '../hooks/use-authenticator'; -import { Resources, ResourcesProvider } from '../hooks/use-resources'; -import { RmfApiProvider } from '../hooks/use-rmf-api'; -import { SettingsProvider } from '../hooks/use-settings'; -import { TaskRegistry, TaskRegistryProvider } from '../hooks/use-task-registry'; -import { UserProfileProvider } from '../hooks/use-user-profile'; -import { UserProfile } from '../services/authenticator'; -import { RmfApi } from '../services/rmf-api'; -import { Settings } from '../services/settings'; -import StubAuthenticator from '../services/stub-authenticator'; +import { + AppController, + AppControllerProvider, + AuthenticatorProvider, + Resources, + ResourcesProvider, + RmfApiProvider, + SettingsProvider, + TaskRegistry, + TaskRegistryProvider, + UserProfileProvider, +} from '../hooks'; +import { RmfApi, Settings, StubAuthenticator, UserProfile } from '../services'; export const superUser: UserProfile = { user: { @@ -58,9 +59,9 @@ export const superUser: UserProfile = { export function makeMockAppController(): AppController { return { - updateSettings: vi.fn(), - showAlert: vi.fn(), - setExtraAppbarItems: vi.fn(), + updateSettings: () => {}, + showAlert: () => {}, + setExtraAppbarItems: () => {}, }; } diff --git a/packages/dashboard/src/utils/url.ts b/packages/rmf-dashboard-framework/src/utils/url.ts similarity index 100% rename from packages/dashboard/src/utils/url.ts rename to packages/rmf-dashboard-framework/src/utils/url.ts diff --git a/packages/react-components/test-data/assets/code-brackets.svg b/packages/rmf-dashboard-framework/test-data/assets/code-brackets.svg similarity index 100% rename from packages/react-components/test-data/assets/code-brackets.svg rename to packages/rmf-dashboard-framework/test-data/assets/code-brackets.svg diff --git a/packages/react-components/test-data/assets/colors.svg b/packages/rmf-dashboard-framework/test-data/assets/colors.svg similarity index 100% rename from packages/react-components/test-data/assets/colors.svg rename to packages/rmf-dashboard-framework/test-data/assets/colors.svg diff --git a/packages/react-components/test-data/assets/comments.svg b/packages/rmf-dashboard-framework/test-data/assets/comments.svg similarity index 100% rename from packages/react-components/test-data/assets/comments.svg rename to packages/rmf-dashboard-framework/test-data/assets/comments.svg diff --git a/packages/react-components/test-data/assets/direction.svg b/packages/rmf-dashboard-framework/test-data/assets/direction.svg similarity index 100% rename from packages/react-components/test-data/assets/direction.svg rename to packages/rmf-dashboard-framework/test-data/assets/direction.svg diff --git a/packages/react-components/test-data/assets/flow.svg b/packages/rmf-dashboard-framework/test-data/assets/flow.svg similarity index 100% rename from packages/react-components/test-data/assets/flow.svg rename to packages/rmf-dashboard-framework/test-data/assets/flow.svg diff --git a/packages/react-components/test-data/assets/office.png b/packages/rmf-dashboard-framework/test-data/assets/office.png similarity index 100% rename from packages/react-components/test-data/assets/office.png rename to packages/rmf-dashboard-framework/test-data/assets/office.png diff --git a/packages/react-components/test-data/assets/plugin.svg b/packages/rmf-dashboard-framework/test-data/assets/plugin.svg similarity index 100% rename from packages/react-components/test-data/assets/plugin.svg rename to packages/rmf-dashboard-framework/test-data/assets/plugin.svg diff --git a/packages/react-components/test-data/assets/repo.svg b/packages/rmf-dashboard-framework/test-data/assets/repo.svg similarity index 100% rename from packages/react-components/test-data/assets/repo.svg rename to packages/rmf-dashboard-framework/test-data/assets/repo.svg diff --git a/packages/react-components/test-data/assets/ros-health.png b/packages/rmf-dashboard-framework/test-data/assets/ros-health.png similarity index 100% rename from packages/react-components/test-data/assets/ros-health.png rename to packages/rmf-dashboard-framework/test-data/assets/ros-health.png diff --git a/packages/react-components/test-data/assets/roshealth-logo-white.png b/packages/rmf-dashboard-framework/test-data/assets/roshealth-logo-white.png similarity index 100% rename from packages/react-components/test-data/assets/roshealth-logo-white.png rename to packages/rmf-dashboard-framework/test-data/assets/roshealth-logo-white.png diff --git a/packages/react-components/test-data/assets/stackalt.svg b/packages/rmf-dashboard-framework/test-data/assets/stackalt.svg similarity index 100% rename from packages/react-components/test-data/assets/stackalt.svg rename to packages/rmf-dashboard-framework/test-data/assets/stackalt.svg diff --git a/packages/react-components/test-data/assets/tiny-robot.png b/packages/rmf-dashboard-framework/test-data/assets/tiny-robot.png similarity index 100% rename from packages/react-components/test-data/assets/tiny-robot.png rename to packages/rmf-dashboard-framework/test-data/assets/tiny-robot.png diff --git a/packages/react-components/tsconfig.json b/packages/rmf-dashboard-framework/tsconfig.app.json similarity index 87% rename from packages/react-components/tsconfig.json rename to packages/rmf-dashboard-framework/tsconfig.app.json index d008603f3..48c206f5b 100644 --- a/packages/react-components/tsconfig.json +++ b/packages/rmf-dashboard-framework/tsconfig.app.json @@ -1,12 +1,11 @@ { "compilerOptions": { - "composite": true, "target": "ES2020", "useDefineForClassFields": true, "lib": ["ES2020", "DOM", "DOM.Iterable"], - "types": ["vitest/globals"], "module": "ESNext", "skipLibCheck": true, + "types": ["vite/client"], /* Bundler mode */ "moduleResolution": "bundler", @@ -23,5 +22,5 @@ "noUnusedParameters": true, "noFallthroughCasesInSwitch": true }, - "include": ["lib/"] + "include": ["src", "examples", ".storybook/*"] } diff --git a/packages/dashboard/tsconfig.json b/packages/rmf-dashboard-framework/tsconfig.json similarity index 100% rename from packages/dashboard/tsconfig.json rename to packages/rmf-dashboard-framework/tsconfig.json diff --git a/packages/dashboard/tsconfig.node.json b/packages/rmf-dashboard-framework/tsconfig.node.json similarity index 60% rename from packages/dashboard/tsconfig.node.json rename to packages/rmf-dashboard-framework/tsconfig.node.json index 3afdd6e38..28194bb59 100644 --- a/packages/dashboard/tsconfig.node.json +++ b/packages/rmf-dashboard-framework/tsconfig.node.json @@ -1,7 +1,5 @@ { "compilerOptions": { - "composite": true, - "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", "skipLibCheck": true, "module": "ESNext", "moduleResolution": "bundler", @@ -9,5 +7,5 @@ "strict": true, "noEmit": true }, - "include": ["vite.config.ts"] + "include": ["vite.config.ts", "examples/shared/vite.config.ts"] } diff --git a/packages/rmf-dashboard-framework/vite.config.ts b/packages/rmf-dashboard-framework/vite.config.ts new file mode 100644 index 000000000..9a76ef21d --- /dev/null +++ b/packages/rmf-dashboard-framework/vite.config.ts @@ -0,0 +1,21 @@ +/// + +import react from '@vitejs/plugin-react-swc'; +import path from 'path'; +import { defineConfig } from 'vite'; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], + publicDir: path.resolve(__dirname, 'examples/shared/public'), + resolve: { + alias: { + 'rmf-dashboard': path.resolve(__dirname, './src'), + }, + }, + test: { + environment: 'jsdom', + globals: true, + passWithNoTests: true, + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d550aa5b4..a21fdae1e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -90,175 +90,6 @@ importers: specifier: workspace:* version: link:../../pipenv-install - packages/dashboard: - dependencies: - '@aldabil/react-scheduler': - specifier: ^2.7.8 - version: 2.7.8(5p2u46g4dnuejshpvwpzugasde) - '@emotion/react': - specifier: ^11.13.0 - version: 11.13.0(@types/react@18.3.3)(react@18.3.1) - '@emotion/styled': - specifier: ^11.13.0 - version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) - '@fontsource/roboto': - specifier: ^4.3.0 - version: 4.5.8 - '@mui/icons-material': - specifier: ^5.8.3 - version: 5.16.1(@mui/material@5.16.1(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) - '@mui/material': - specifier: ^5.8.3 - version: 5.16.1(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/system': - specifier: ^5.8.3 - version: 5.16.1(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) - '@mui/x-date-pickers': - specifier: ^6.19.0 - version: 6.19.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@mui/material@5.16.1(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@5.16.1(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(date-fns@2.30.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@react-three/drei': - specifier: ^9.103.0 - version: 9.108.3(@react-three/fiber@8.16.8(patch_hash=72hazlorpk2kzn3denlucgiftu)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(three@0.166.1))(@types/react@18.3.3)(@types/three@0.166.0)(immer@9.0.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(three@0.166.1) - '@react-three/fiber': - specifier: ^8.16.1 - version: 8.16.8(patch_hash=72hazlorpk2kzn3denlucgiftu)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(three@0.166.1) - '@types/debug': - specifier: ^4.1.5 - version: 4.1.12 - '@types/react': - specifier: ^18.2.14 - version: 18.3.3 - '@types/react-dom': - specifier: ^18.2.6 - version: 18.3.0 - '@types/react-grid-layout': - specifier: ^1.3.2 - version: 1.3.5 - '@types/three': - specifier: ^0.166.0 - version: 0.166.0 - api-client: - specifier: workspace:* - version: link:../api-client - axios: - specifier: 1.7.4 - version: 1.7.4(debug@4.3.5) - canvas: - specifier: ^2.11.2 - version: 2.11.2 - date-fns: - specifier: ^2.30.0 - version: 2.30.0 - debug: - specifier: ^4.2.0 - version: 4.3.5 - eventemitter3: - specifier: ^4.0.7 - version: 4.0.7 - keycloak-js: - specifier: ^25.0.2 - version: 25.0.2 - react: - specifier: ^18.2.0 - version: 18.3.1 - react-components: - specifier: workspace:* - version: link:../react-components - react-dom: - specifier: ^18.2.0 - version: 18.3.1(react@18.3.1) - react-error-boundary: - specifier: ^4.0.13 - version: 4.0.13(react@18.3.1) - react-grid-layout: - specifier: ^1.3.4 - version: 1.4.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-router: - specifier: ^6.14.1 - version: 6.24.1(react@18.3.1) - react-router-dom: - specifier: ^6.14.1 - version: 6.24.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rmf-models: - specifier: workspace:* - version: link:../rmf-models/dist - rxjs: - specifier: ^7.5.5 - version: 7.8.1 - three: - specifier: ^0.166.1 - version: 0.166.1 - devDependencies: - '@babel/core': - specifier: ^7.18.6 - version: 7.24.8 - '@storybook/addon-essentials': - specifier: ^8.0.5 - version: 8.2.2(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8))) - '@storybook/addon-interactions': - specifier: ^8.0.5 - version: 8.2.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.12)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@20.14.12)(typescript@5.5.4)))(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)))(vitest@2.0.4(@types/node@20.14.12)(jsdom@24.1.1(canvas@2.11.2))(terser@5.31.6)) - '@storybook/addon-links': - specifier: ^8.0.5 - version: 8.2.2(react@18.3.1)(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8))) - '@storybook/addon-onboarding': - specifier: ^8.0.5 - version: 8.2.2(react@18.3.1)(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8))) - '@storybook/blocks': - specifier: ^8.0.5 - version: 8.2.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8))) - '@storybook/react': - specifier: ^8.0.5 - version: 8.2.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)))(typescript@5.5.4) - '@storybook/test': - specifier: ^8.0.5 - version: 8.2.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.12)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@20.14.12)(typescript@5.5.4)))(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)))(vitest@2.0.4(@types/node@20.14.12)(jsdom@24.1.1(canvas@2.11.2))(terser@5.31.6)) - '@testing-library/dom': - specifier: ^9.3.4 - version: 9.3.4 - '@testing-library/react': - specifier: ^14.2.2 - version: 14.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@testing-library/user-event': - specifier: ^14.5.2 - version: 14.5.2(@testing-library/dom@9.3.4) - '@vitejs/plugin-react-swc': - specifier: ^3.7.0 - version: 3.7.0(vite@5.3.5(@types/node@20.14.12)(terser@5.31.6)) - '@vitest/coverage-v8': - specifier: ^2.0.4 - version: 2.0.4(vitest@2.0.4(@types/node@20.14.12)(jsdom@24.1.1(canvas@2.11.2))(terser@5.31.6)) - api-server: - specifier: file:../api-server - version: file:packages/api-server - concurrently: - specifier: ^8.2.2 - version: 8.2.2 - eslint: - specifier: ^8.57.0 - version: 8.57.0 - history: - specifier: ^5.3.0 - version: 5.3.0 - jsdom: - specifier: ^24.1.1 - version: 24.1.1(canvas@2.11.2) - storybook: - specifier: ^8.0.5 - version: 8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)) - typescript: - specifier: ~5.5.4 - version: 5.5.4 - typescript-json-schema: - specifier: ^0.64.0 - version: 0.64.0(@swc/core@1.5.7) - vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.12)(terser@5.31.6) - vitest: - specifier: ^2.0.4 - version: 2.0.4(@types/node@20.14.12)(jsdom@24.1.1(canvas@2.11.2))(terser@5.31.6) - packages/dashboard-e2e: devDependencies: '@babel/core': @@ -285,9 +116,6 @@ importers: concurrently: specifier: ^8.2.2 version: 8.2.2 - rmf-dashboard: - specifier: workspace:* - version: link:../dashboard serve: specifier: ^11.3.2 version: 11.3.2 @@ -298,20 +126,20 @@ importers: specifier: ~5.5.4 version: 5.5.4 - packages/react-components: + packages/rmf-dashboard-framework: dependencies: - '@date-io/core': - specifier: ^3.0.0 - version: 3.0.0 - '@date-io/date-fns': - specifier: ^2.17.0 - version: 2.17.0(date-fns@2.30.0) + '@aldabil/react-scheduler': + specifier: ~2.7.8 + version: 2.7.8(5p2u46g4dnuejshpvwpzugasde) '@emotion/react': specifier: ^11.13.0 version: 11.13.0(@types/react@18.3.3)(react@18.3.1) '@emotion/styled': specifier: ^11.13.0 version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + '@fontsource/roboto': + specifier: ^4.3.0 + version: 4.5.8 '@mui/icons-material': specifier: ^5.8.3 version: 5.16.1(@mui/material@5.16.1(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) @@ -339,12 +167,24 @@ importers: '@types/crc': specifier: ^3.4.0 version: 3.8.3 - '@types/rbush': - specifier: ^3.0.0 - version: 3.0.3 + '@types/debug': + specifier: ^4.1.5 + version: 4.1.12 + '@types/react': + specifier: ^18.2.14 + version: 18.3.3 + '@types/react-dom': + specifier: ^18.2.6 + version: 18.3.0 '@types/react-grid-layout': specifier: ^1.3.2 version: 1.3.5 + '@types/react-virtualized-auto-sizer': + specifier: ^1.0.1 + version: 1.0.4 + '@types/react-window': + specifier: ^1.8.5 + version: 1.8.8 '@types/shallowequal': specifier: ^1.1.1 version: 1.1.5 @@ -354,6 +194,12 @@ importers: api-client: specifier: workspace:* version: link:../api-client + axios: + specifier: 1.7.4 + version: 1.7.4(debug@4.3.6) + canvas: + specifier: ^2.11.2 + version: 2.11.2 clsx: specifier: ^1.1.1 version: 1.2.1 @@ -365,16 +211,16 @@ importers: version: 2.30.0 debug: specifier: ^4.2.0 - version: 4.3.5 + version: 4.3.6 eventemitter3: specifier: ^4.0.7 version: 4.0.7 + keycloak-js: + specifier: ^25.0.2 + version: 25.0.2 node-vibrant: specifier: ^3.1.6 - version: 3.1.6(debug@4.3.5) - rbush: - specifier: ^3.0.1 - version: 3.0.1 + version: 3.1.6(debug@4.3.6) react: specifier: ^18.2.0 version: 18.3.1 @@ -384,6 +230,9 @@ importers: react-dom: specifier: ^18.2.0 version: 18.3.1(react@18.3.1) + react-error-boundary: + specifier: ^4.0.13 + version: 4.0.13(react@18.3.1) react-grid-layout: specifier: ^1.3.4 version: 1.4.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -402,6 +251,9 @@ importers: rmf-models: specifier: workspace:* version: link:../rmf-models/dist + rxjs: + specifier: ^7.5.5 + version: 7.8.1 shallowequal: specifier: ^1.1.0 version: 1.1.0 @@ -409,36 +261,30 @@ importers: specifier: ^0.166.1 version: 0.166.1 devDependencies: - '@fontsource/roboto': - specifier: ^4.3.0 - version: 4.5.8 - '@jsdevtools/coverage-istanbul-loader': - specifier: ^3.0.5 - version: 3.0.5 '@storybook/addon-essentials': - specifier: ^8.2.6 - version: 8.2.6(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8))) + specifier: ^8.3.3 + version: 8.3.3(storybook@8.3.3) '@storybook/addon-interactions': - specifier: ^8.2.6 - version: 8.2.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.2.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@22.2.0)(typescript@5.5.4)))(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)))(vitest@2.0.4(@types/node@22.2.0)(jsdom@24.1.1(canvas@2.11.2))(terser@5.31.6)) + specifier: ^8.3.3 + version: 8.3.3(storybook@8.3.3) '@storybook/addon-links': - specifier: ^8.2.6 - version: 8.2.6(react@18.3.1)(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8))) + specifier: ^8.3.3 + version: 8.3.3(react@18.3.1)(storybook@8.3.3) '@storybook/addon-onboarding': - specifier: ^8.2.6 - version: 8.2.6(react@18.3.1)(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8))) + specifier: ^8.3.3 + version: 8.3.3(react@18.3.1)(storybook@8.3.3) '@storybook/blocks': - specifier: ^8.2.6 - version: 8.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8))) + specifier: ^8.3.3 + version: 8.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3) '@storybook/react': - specifier: ^8.2.6 - version: 8.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)))(typescript@5.5.4) + specifier: ^8.3.3 + version: 8.3.3(@storybook/test@8.3.3(storybook@8.3.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3)(typescript@5.5.4) '@storybook/react-vite': - specifier: ^8.2.6 - version: 8.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.19.0)(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)))(typescript@5.5.4)(vite@5.3.5(@types/node@22.2.0)(terser@5.31.6)) + specifier: ^8.3.3 + version: 8.3.3(@storybook/test@8.3.3(storybook@8.3.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.19.0)(storybook@8.3.3)(typescript@5.5.4)(vite@5.3.5(@types/node@22.2.0)(terser@5.31.6)) '@storybook/test': - specifier: ^8.2.6 - version: 8.2.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.2.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@22.2.0)(typescript@5.5.4)))(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)))(vitest@2.0.4(@types/node@22.2.0)(jsdom@24.1.1(canvas@2.11.2))(terser@5.31.6)) + specifier: ^8.3.3 + version: 8.3.3(storybook@8.3.3) '@testing-library/dom': specifier: ^9.3.4 version: 9.3.4 @@ -448,63 +294,39 @@ importers: '@testing-library/user-event': specifier: ^14.5.2 version: 14.5.2(@testing-library/dom@9.3.4) - '@types/debug': - specifier: ^4.1.5 - version: 4.1.12 - '@types/react': - specifier: ^18.2.14 - version: 18.3.3 - '@types/react-dom': - specifier: ^18.2.6 - version: 18.3.0 - '@types/react-virtualized-auto-sizer': - specifier: ^1.0.1 - version: 1.0.4 - '@types/react-window': - specifier: ^1.8.5 - version: 1.8.8 + '@vitejs/plugin-react-swc': + specifier: ^3.7.0 + version: 3.7.0(vite@5.3.5(@types/node@22.2.0)(terser@5.31.6)) '@vitest/coverage-v8': specifier: ^2.0.4 version: 2.0.4(vitest@2.0.4(@types/node@22.2.0)(jsdom@24.1.1(canvas@2.11.2))(terser@5.31.6)) + api-server: + specifier: file:../api-server + version: link:../api-server concurrently: specifier: ^8.2.2 version: 8.2.2 eslint: specifier: ^8.57.0 version: 8.57.0 - eslint-plugin-react: - specifier: ^7.35.0 - version: 7.35.0(eslint@8.57.0) - eslint-plugin-react-hooks: - specifier: ^4.6.2 - version: 4.6.2(eslint@8.57.0) - file-loader: - specifier: ^6.2.0 - version: 6.2.0(webpack@5.93.0(@swc/core@1.5.7)(esbuild@0.21.5)) - identity-obj-proxy: - specifier: ^3.0.0 - version: 3.0.0 + history: + specifier: ^5.3.0 + version: 5.3.0 jsdom: specifier: ^24.1.1 version: 24.1.1(canvas@2.11.2) - process: - specifier: 0.11.10 - version: 0.11.10 - puppeteer: - specifier: '*' - version: 22.13.0(typescript@5.5.4) - require-from-string: - specifier: ^2.0.2 - version: 2.0.2 storybook: - specifier: ^8.2.6 - version: 8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)) + specifier: ^8.3.3 + version: 8.3.3 typescript: specifier: ~5.5.4 version: 5.5.4 - typescript-eslint: - specifier: ^7.5.0 - version: 7.16.0(eslint@8.57.0)(typescript@5.5.4) + typescript-json-schema: + specifier: ^0.64.0 + version: 0.64.0(@swc/core@1.5.7) + vite: + specifier: ^5.3.5 + version: 5.3.5(@types/node@22.2.0)(terser@5.31.6) vitest: specifier: ^2.0.4 version: 2.0.4(@types/node@22.2.0)(jsdom@24.1.1(canvas@2.11.2))(terser@5.31.6) @@ -585,14 +407,6 @@ packages: resolution: {integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==} engines: {node: '>=6.9.0'} - '@babel/helper-annotate-as-pure@7.24.7': - resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-builder-binary-assignment-operator-visitor@7.24.7': - resolution: {integrity: sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==} - engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.24.8': resolution: {integrity: sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==} engines: {node: '>=6.9.0'} @@ -601,23 +415,6 @@ packages: resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.24.8': - resolution: {integrity: sha512-4f6Oqnmyp2PP3olgUMmOwC3akxSm5aBYraQ6YDdKy7NcAMkDECHWG0DEnV6M2UAkERgIBhYt8S27rURPg7SxWA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-create-regexp-features-plugin@7.24.7': - resolution: {integrity: sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-define-polyfill-provider@0.6.2': - resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - '@babel/helper-environment-visitor@7.24.7': resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} engines: {node: '>=6.9.0'} @@ -630,10 +427,6 @@ packages: resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} engines: {node: '>=6.9.0'} - '@babel/helper-member-expression-to-functions@7.24.8': - resolution: {integrity: sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==} - engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.24.7': resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} engines: {node: '>=6.9.0'} @@ -650,34 +443,10 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-optimise-call-expression@7.24.7': - resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} - engines: {node: '>=6.9.0'} - - '@babel/helper-plugin-utils@7.24.8': - resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-remap-async-to-generator@7.24.7': - resolution: {integrity: sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-replace-supers@7.24.7': - resolution: {integrity: sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/helper-simple-access@7.24.7': resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} engines: {node: '>=6.9.0'} - '@babel/helper-skip-transparent-expression-wrappers@7.24.7': - resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==} - engines: {node: '>=6.9.0'} - '@babel/helper-split-export-declaration@7.24.7': resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} engines: {node: '>=6.9.0'} @@ -694,10 +463,6 @@ packages: resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} engines: {node: '>=6.9.0'} - '@babel/helper-wrap-function@7.24.7': - resolution: {integrity: sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw==} - engines: {node: '>=6.9.0'} - '@babel/helpers@7.24.8': resolution: {integrity: sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ==} engines: {node: '>=6.9.0'} @@ -720,489 +485,8 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.7': - resolution: {integrity: sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.7': - resolution: {integrity: sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7': - resolution: {integrity: sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.7': - resolution: {integrity: sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': - resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-async-generators@7.8.4': - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-bigint@7.8.3': - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-class-properties@7.12.13': - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-class-static-block@7.14.5': - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-dynamic-import@7.8.3': - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-export-namespace-from@7.8.3': - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-flow@7.24.7': - resolution: {integrity: sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-assertions@7.24.7': - resolution: {integrity: sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-attributes@7.24.7': - resolution: {integrity: sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-meta@7.10.4': - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-json-strings@7.8.3': - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-jsx@7.24.7': - resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-logical-assignment-operators@7.10.4': - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-numeric-separator@7.10.4': - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-object-rest-spread@7.8.3': - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3': - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-optional-chaining@7.8.3': - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-private-property-in-object@7.14.5': - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-top-level-await@7.14.5': - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-typescript@7.24.7': - resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-unicode-sets-regex@7.18.6': - resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-arrow-functions@7.24.7': - resolution: {integrity: sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-async-generator-functions@7.24.7': - resolution: {integrity: sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-async-to-generator@7.24.7': - resolution: {integrity: sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-block-scoped-functions@7.24.7': - resolution: {integrity: sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-block-scoping@7.24.7': - resolution: {integrity: sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-class-properties@7.24.7': - resolution: {integrity: sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-class-static-block@7.24.7': - resolution: {integrity: sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 - - '@babel/plugin-transform-classes@7.24.8': - resolution: {integrity: sha512-VXy91c47uujj758ud9wx+OMgheXm4qJfyhj1P18YvlrQkNOSrwsteHk+EFS3OMGfhMhpZa0A+81eE7G4QC+3CA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-computed-properties@7.24.7': - resolution: {integrity: sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-destructuring@7.24.8': - resolution: {integrity: sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-dotall-regex@7.24.7': - resolution: {integrity: sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-duplicate-keys@7.24.7': - resolution: {integrity: sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-dynamic-import@7.24.7': - resolution: {integrity: sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-exponentiation-operator@7.24.7': - resolution: {integrity: sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-export-namespace-from@7.24.7': - resolution: {integrity: sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-flow-strip-types@7.24.7': - resolution: {integrity: sha512-cjRKJ7FobOH2eakx7Ja+KpJRj8+y+/SiB3ooYm/n2UJfxu0oEaOoxOinitkJcPqv9KxS0kxTGPUaR7L2XcXDXA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-for-of@7.24.7': - resolution: {integrity: sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-function-name@7.24.7': - resolution: {integrity: sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-json-strings@7.24.7': - resolution: {integrity: sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-literals@7.24.7': - resolution: {integrity: sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-logical-assignment-operators@7.24.7': - resolution: {integrity: sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-member-expression-literals@7.24.7': - resolution: {integrity: sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-amd@7.24.7': - resolution: {integrity: sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-commonjs@7.24.8': - resolution: {integrity: sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-systemjs@7.24.7': - resolution: {integrity: sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-umd@7.24.7': - resolution: {integrity: sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-named-capturing-groups-regex@7.24.7': - resolution: {integrity: sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-new-target@7.24.7': - resolution: {integrity: sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-nullish-coalescing-operator@7.24.7': - resolution: {integrity: sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-numeric-separator@7.24.7': - resolution: {integrity: sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-object-rest-spread@7.24.7': - resolution: {integrity: sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-object-super@7.24.7': - resolution: {integrity: sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-optional-catch-binding@7.24.7': - resolution: {integrity: sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-optional-chaining@7.24.8': - resolution: {integrity: sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-parameters@7.24.7': - resolution: {integrity: sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-private-methods@7.24.7': - resolution: {integrity: sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-private-property-in-object@7.24.7': - resolution: {integrity: sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-property-literals@7.24.7': - resolution: {integrity: sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-regenerator@7.24.7': - resolution: {integrity: sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-reserved-words@7.24.7': - resolution: {integrity: sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-shorthand-properties@7.24.7': - resolution: {integrity: sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-spread@7.24.7': - resolution: {integrity: sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-sticky-regex@7.24.7': - resolution: {integrity: sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-template-literals@7.24.7': - resolution: {integrity: sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-typeof-symbol@7.24.8': - resolution: {integrity: sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-typescript@7.24.8': - resolution: {integrity: sha512-CgFgtN61BbdOGCP4fLaAMOPkzWUh6yQZNMr5YSt8uz2cZSSiQONCQFWqsE4NeVfOIhqDOlS9CR3WD91FzMeB2Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-escapes@7.24.7': - resolution: {integrity: sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-property-regex@7.24.7': - resolution: {integrity: sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-regex@7.24.7': - resolution: {integrity: sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-sets-regex@7.24.7': - resolution: {integrity: sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/preset-env@7.24.8': - resolution: {integrity: sha512-vObvMZB6hNWuDxhSaEPTKCwcqkAIuDtE+bQGn4XMXne1DSLzFVY8Vmj1bm+mUQXYNN8NmaQEO+r8MMbzPr1jBQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/preset-flow@7.24.7': - resolution: {integrity: sha512-NL3Lo0NorCU607zU3NwRyJbpaB6E3t0xtd3LfAQKDfkeX4/ggcDXvkmkW42QWT5owUeW/jAe4hn+2qvkV1IbfQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/preset-modules@0.1.6-no-external-plugins': - resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} - peerDependencies: - '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - - '@babel/preset-typescript@7.24.7': - resolution: {integrity: sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/register@7.24.6': - resolution: {integrity: sha512-WSuFCc2wCqMeXkz/i3yfAAsxwWflEgbVkZzivgAmXl/MxrXeoYFZOOPllbC8R8WTF7u61wSRQtDVZ1879cdu6w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/regjsgen@0.8.0': - resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} - - '@babel/runtime-corejs3@7.24.8': - resolution: {integrity: sha512-DXG/BhegtMHhnN7YPIvxWd303/9aXvYFD1TjNL3CD6tUrhI2LVsg3Lck0aql5TRH29n4sj3emcROypkZVUfSuA==} + '@babel/runtime-corejs3@7.24.8': + resolution: {integrity: sha512-DXG/BhegtMHhnN7YPIvxWd303/9aXvYFD1TjNL3CD6tUrhI2LVsg3Lck0aql5TRH29n4sj3emcROypkZVUfSuA==} engines: {node: '>=6.9.0'} '@babel/runtime@7.24.8': @@ -1229,10 +513,6 @@ packages: resolution: {integrity: sha512-SkSBEHwwJRU52QEVZBmMBnE5Ux2/6WU1grdYyOhpbCNxbmJrDuDCphBzKZSO3taf0zztp+qkWlymE5tVL5l0TA==} engines: {node: '>=6.9.0'} - '@babel/types@7.24.9': - resolution: {integrity: sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ==} - engines: {node: '>=6.9.0'} - '@babel/types@7.25.2': resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} engines: {node: '>=6.9.0'} @@ -1247,26 +527,9 @@ packages: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} - '@date-io/core@2.17.0': - resolution: {integrity: sha512-+EQE8xZhRM/hsY0CDTVyayMDDY5ihc4MqXCrPxooKw19yAzUIC6uUqsZeaOFNL9YKTNxYKrJP5DFgE8o5xRCOw==} - - '@date-io/core@3.0.0': - resolution: {integrity: sha512-S3j+IAQVBYNkQzchVVhX40eBkGDreBpScy9RXwTS5j2+k07+62pMVPisQ44Gq76Rqy5AOG/EZXCwBpY/jbemvA==} - - '@date-io/date-fns@2.17.0': - resolution: {integrity: sha512-L0hWZ/mTpy3Gx/xXJ5tq5CzHo0L7ry6KEO9/w/JWiFWFLZgiNVo3ex92gOl3zmzjHqY/3Ev+5sehAr8UnGLEng==} - peerDependencies: - date-fns: ^2.0.0 - peerDependenciesMeta: - date-fns: - optional: true - '@emotion/babel-plugin@11.12.0': resolution: {integrity: sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==} - '@emotion/cache@11.11.0': - resolution: {integrity: sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==} - '@emotion/cache@11.13.1': resolution: {integrity: sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw==} @@ -1276,9 +539,6 @@ packages: '@emotion/is-prop-valid@1.3.0': resolution: {integrity: sha512-SHetuSLvJDzuNbOdtPVbq6yMMMlLoW5Q94uDqJZqy50gcmAjxFkVqmzqSGEFq9gT2iMuIeKV1PXVWmvUhuZLlQ==} - '@emotion/memoize@0.8.1': - resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} - '@emotion/memoize@0.9.0': resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==} @@ -1294,9 +554,6 @@ packages: '@emotion/serialize@1.3.0': resolution: {integrity: sha512-jACuBa9SlYajnpIVXB+XOXnfJHyckDfe6fOpORIM6yhBDlqGuExvDdZYHDQGoDf3bZXGv7tNr+LpLjJqiEQ6EA==} - '@emotion/sheet@1.2.2': - resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==} - '@emotion/sheet@1.4.0': resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==} @@ -1321,9 +578,6 @@ packages: '@emotion/utils@1.4.0': resolution: {integrity: sha512-spEnrA1b6hDR/C68lC2M7m6ALPUHZC0lIY7jAS/B/9DuuO1ZP04eov8SMv/6fwRd8pzmsn2AuJEznRREWlQrlQ==} - '@emotion/weak-memoize@0.3.1': - resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==} - '@emotion/weak-memoize@0.4.0': resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} @@ -1518,92 +772,22 @@ packages: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} - '@istanbuljs/load-nyc-config@1.1.0': - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} - '@istanbuljs/schema@0.1.3': resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} - '@jest/console@29.7.0': - resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/core@29.7.0': - resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - '@jest/environment@29.7.0': - resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/expect-utils@28.1.3': - resolution: {integrity: sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - '@jest/expect-utils@29.7.0': - resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/expect@29.7.0': - resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/fake-timers@29.7.0': - resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/globals@29.7.0': - resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/reporters@29.7.0': - resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + '@jest/expect-utils@28.1.3': + resolution: {integrity: sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} '@jest/schemas@28.1.3': resolution: {integrity: sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - '@jest/schemas@29.6.3': - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/source-map@29.6.3': - resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/test-result@29.7.0': - resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/test-sequencer@29.7.0': - resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/transform@29.7.0': - resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/types@28.1.3': resolution: {integrity: sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - '@jest/types@29.6.3': - resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jimp/bmp@0.16.13': resolution: {integrity: sha512-9edAxu7N2FX7vzkdl5Jo1BbACfycUtBQX+XBMcHA2bk62P8R0otgkHg798frgAk/WxQIzwxqOH6wMiCwrlAzdQ==} peerDependencies: @@ -1648,8 +832,8 @@ packages: '@jimp/utils@0.16.13': resolution: {integrity: sha512-VyCpkZzFTHXtKgVO35iKN0sYR10psGpV6SkcSeV4oF7eSYlR8Bl6aQLCzVeFjvESF7mxTmIiI3/XrMobVrtxDA==} - '@joshwooding/vite-plugin-react-docgen-typescript@0.3.1': - resolution: {integrity: sha512-pdoMZ9QaPnVlSM+SdU/wgg0nyD/8wQ7y90ttO2CMCyrrm7RxveYIJ5eNfjPaoMFqW41LZra7QO9j+xV4Y18Glw==} + '@joshwooding/vite-plugin-react-docgen-typescript@0.3.0': + resolution: {integrity: sha512-2D6y7fNvFmsLmRt6UCOFJPvFoPMJGT0Uh1Wg0RaigUp7kdQPs6yYn8Dmx6GZkOH/NW0yMTwRz/p0SRMMRo50vA==} peerDependencies: typescript: '>= 4.3.x' vite: ^3.0.0 || ^4.0.0 || ^5.0.0 @@ -1681,9 +865,6 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - '@jsdevtools/coverage-istanbul-loader@3.0.5': - resolution: {integrity: sha512-EUCPEkaRPvmHjWAAZkWMT7JDzpw7FKB00WTISaiXsbNOd5hCHg77XLA8sLYLFDo1zepYLo2w7GstN8YBqRXZfA==} - '@lukeed/csprng@1.1.0': resolution: {integrity: sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==} engines: {node: '>=8'} @@ -1813,16 +994,6 @@ packages: '@types/react': optional: true - '@mui/utils@5.16.1': - resolution: {integrity: sha512-4UQzK46tAEYs2xZv79hRiIc3GxZScd00kGPDadNrGztAEZlmSaUY8cb9ITd2xCiTfzsx5AN6DH8aaQ8QEKJQeQ==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@mui/utils@5.16.4': resolution: {integrity: sha512-nlppYwq10TBIFqp7qxY0SvbACOXeOjeVL3pOcDsK0FT8XjrEXh9/+lkg8AEIzD16z7YfiJDQjaJG2OLkE7BxNg==} engines: {node: '>=12.0.0'} @@ -1945,11 +1116,6 @@ packages: '@popperjs/core@2.11.8': resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} - '@puppeteer/browsers@2.2.3': - resolution: {integrity: sha512-bJ0UBsk0ESOs6RFcLXOt99a3yTDcOKlzfjad+rhFwdaG1Lu/Wzq58GHYCDTlZ9z6mldf4g+NTb+TXEfe0PpnsQ==} - engines: {node: '>=18'} - hasBin: true - '@react-spring/animated@9.6.1': resolution: {integrity: sha512-ls/rJBrAqiAYozjLo5EPPLLOb1LM0lNVQcXODTC1SMtS6DbuBCPaKco5svFUQFMP2dso3O+qcC4k9FsKc0KxMQ==} peerDependencies: @@ -2110,193 +1276,99 @@ packages: '@sinclair/typebox@0.24.51': resolution: {integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==} - '@sinclair/typebox@0.27.8': - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - '@sindresorhus/is@4.6.0': resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} engines: {node: '>=10'} - '@sindresorhus/merge-streams@2.3.0': - resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} - engines: {node: '>=18'} - - '@sinonjs/commons@3.0.1': - resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} - - '@sinonjs/fake-timers@10.3.0': - resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} - '@socket.io/component-emitter@3.1.2': resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} - '@storybook/addon-actions@8.2.2': - resolution: {integrity: sha512-SN4cSRt3f0qXi5te+yhMseSdQuZntA8lGlASbRmN77YQTpIaGsNiH88xFoky0s9qz531hiRfU1R0ZSMylBwSKw==} - peerDependencies: - storybook: ^8.2.2 - - '@storybook/addon-actions@8.2.6': - resolution: {integrity: sha512-iCsf3V28/jJ95w2zd8aSvR4denoA2UYV3fpNCTGOURqICyKOG3cyVxvqKp8Hhcwn7trNOsK+HlL6q5gpv56ViA==} - peerDependencies: - storybook: ^8.2.6 - - '@storybook/addon-backgrounds@8.2.2': - resolution: {integrity: sha512-m/xJe7uKL+kfJx7pQcHwAeIvJ3tdLIpDGrMAVDNDJHcAxfe44cFjIInaV/1HKf3y5Awap+DZFW66ekkxuI9zzA==} - peerDependencies: - storybook: ^8.2.2 - - '@storybook/addon-backgrounds@8.2.6': - resolution: {integrity: sha512-61NFowA6EmCw+Eyzp0U4fat9MlPDdnT7aoDyzqSImLwWLITY9IvmWuTeo7XKJZN3fe22z1r7cZseKdYrtaHcKw==} - peerDependencies: - storybook: ^8.2.6 - - '@storybook/addon-controls@8.2.2': - resolution: {integrity: sha512-y241aOANGzT5XBADUIvALwG/xF5eC6UItzmWJaFvOzSBCq74GIA0+Hu9atyFdvFQbXOrdvPWC4jR+9iuBFRxAA==} + '@storybook/addon-actions@8.3.3': + resolution: {integrity: sha512-cbpksmld7iADwDGXgojZ4r8LGI3YA3NP68duAHg2n1dtnx1oUaFK5wd6dbNuz7GdjyhIOIy3OKU1dAuylYNGOQ==} peerDependencies: - storybook: ^8.2.2 + storybook: ^8.3.3 - '@storybook/addon-controls@8.2.6': - resolution: {integrity: sha512-EHUwHy+oZZv3pXzN7fuXWrS/meHFjqcELY3RBvOyEkGf21agl6co6R1tnf6d5N5QoYAGfIbDO7dkauSL2RfNAw==} + '@storybook/addon-backgrounds@8.3.3': + resolution: {integrity: sha512-aX0OIrtjIB7UgSaiv20SFkfC1iWwJIGMPsPSJ5ZPhXIIOWIEBtSujh8YXwjDEXSC4DOHalmeT4bitRRe5KrVKA==} peerDependencies: - storybook: ^8.2.6 + storybook: ^8.3.3 - '@storybook/addon-docs@8.2.2': - resolution: {integrity: sha512-qk/yjAR9RpsSrKLLbeCgb6u58c8TmYqyJSnXgbAozZZNKHBWlIpvZ/hTNYud8qo0coPlxnLdjnZf32TykWGlAg==} + '@storybook/addon-controls@8.3.3': + resolution: {integrity: sha512-78xRtVpY7eX/Lti00JLgwYCBRB6ZcvzY3SWk0uQjEqcTnQGoQkVg2L7oWFDlDoA1LBY18P5ei2vu8MYT9GXU4g==} peerDependencies: - storybook: ^8.2.2 + storybook: ^8.3.3 - '@storybook/addon-docs@8.2.6': - resolution: {integrity: sha512-qe7hxntaezqjKdU9QS+Q9NFL6i/uNdBxdvOnCKgPhBAY/zY6yhk5t3sOvonynPK5nkaNAowfSNPIzNxAXlJ1sA==} + '@storybook/addon-docs@8.3.3': + resolution: {integrity: sha512-REUandqq1RnMNOhsocRwx5q2fdlBAYPTDFlKASYfEn4Ln5NgbQRGxOAWl7yXAAFzbDmUDU7K20hkauecF0tyMw==} peerDependencies: - storybook: ^8.2.6 + storybook: ^8.3.3 - '@storybook/addon-essentials@8.2.2': - resolution: {integrity: sha512-yN//BFMbSvNV0+Sll2hcKmgJX06TUKQDm6pZimUjkXczFtOmK7K/UdDmKjWS+qjhfJdWpxdRoEpxoHvvRmNfsA==} + '@storybook/addon-essentials@8.3.3': + resolution: {integrity: sha512-E/uXoUYcg8ulG3lVbsEKb4v5hnMeGkq9YJqiZYKgVK7iRFa6p4HeVB1wU1adnm7RgjWvh+p0vQRo4KL2CTNXqw==} peerDependencies: - storybook: ^8.2.2 + storybook: ^8.3.3 - '@storybook/addon-essentials@8.2.6': - resolution: {integrity: sha512-diGjGZcZNov+RCAVQBTm8JKP2kUtMRuJIQFBeXdPWpu6hYBk6lw1FlAf2GywWGCvdny1pJT90hfoD33qUMNuDg==} + '@storybook/addon-highlight@8.3.3': + resolution: {integrity: sha512-MB084xJM66rLU+iFFk34kjLUiAWzDiy6Kz4uZRa1CnNqEK0sdI8HaoQGgOxTIa2xgJor05/8/mlYlMkP/0INsQ==} peerDependencies: - storybook: ^8.2.6 + storybook: ^8.3.3 - '@storybook/addon-highlight@8.2.2': - resolution: {integrity: sha512-yDTRzzL+IJAymgY32xoZl09BGBVmPOUV2wVNGYcZkkBLvz2GSQMTfUe1/7F4jAx//+rFBu48/MQzsTC7Bk8kPw==} + '@storybook/addon-interactions@8.3.3': + resolution: {integrity: sha512-3w5tpCGYdF33wF44xEhTS3Zmcwd6nITtwy5q+PJvHCJAm3fpjzL3xrjtlHKDvXNwYacJPRCbWKn2QwtxZIdN0g==} peerDependencies: - storybook: ^8.2.2 + storybook: ^8.3.3 - '@storybook/addon-highlight@8.2.6': - resolution: {integrity: sha512-03cV9USsfP3bS4wYV06DYcIaGPfoheQe53Q0Jr1B2yJUVyIPKvmO2nGjLBsqzeL3Wl7vSfLQn0/dUdxCcbqLsw==} - peerDependencies: - storybook: ^8.2.6 - - '@storybook/addon-interactions@8.2.2': - resolution: {integrity: sha512-zRRuUwm/l41JtTUgjIoQTUgLT99Hsdz9cqKca/8NYo1MGBdEcKE41DH4aBIzKaOKFu7p9q00/o/X1EqYX4LMUA==} - peerDependencies: - storybook: ^8.2.2 - - '@storybook/addon-interactions@8.2.6': - resolution: {integrity: sha512-YXpHf8jWPz9HJV+Fw4GaunaCWeE6uqF24aLXdAd8xuhN1UfWJeNV6AwAvFQ0hTLqvmz0yMhX/5JXDKeKESoYDA==} - peerDependencies: - storybook: ^8.2.6 - - '@storybook/addon-links@8.2.2': - resolution: {integrity: sha512-eGh7O7SgTJMtnuXC0HlRPOegu1njcJS2cnVqjbzjvjxsPSBhbHpdYMi9Q9E7al/FKuqMUOjIR9YLIlmK1AJaqA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.2.2 - peerDependenciesMeta: - react: - optional: true - - '@storybook/addon-links@8.2.6': - resolution: {integrity: sha512-CUuU3nk8wyZ3bljCmOG/OCKazan+bPuNbCph8N763zyzdEx5M/CbBxV9d3pi3zjYpix7txlqrl2/YdMCejfyFw==} + '@storybook/addon-links@8.3.3': + resolution: {integrity: sha512-rz4KEbzr1ca4zZEZwbOnhKiaEsokCl1KkngxT/C1YIkpW908j/kg2nnIb5MrtlAW1nirXguAR74t6CGntvdU9w==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.2.6 + storybook: ^8.3.3 peerDependenciesMeta: react: optional: true - '@storybook/addon-measure@8.2.2': - resolution: {integrity: sha512-3rCo/aMltt5FrBVdr2dYlD8HlE2q9TLKGJZnwh9on4QyL6ArHbdYw0LmyHe/LrFahJ49w1XQZBMSJcAdRkkS7w==} - peerDependencies: - storybook: ^8.2.2 - - '@storybook/addon-measure@8.2.6': - resolution: {integrity: sha512-neI8YeSOAtOmzasLxo6O8ZLr2ebMaD7XVF+kYatl5+SpyuwwvUGcP9NkKe5S+mB8V2zxFUIsXS74XrhmQhRoaQ==} - peerDependencies: - storybook: ^8.2.6 - - '@storybook/addon-onboarding@8.2.2': - resolution: {integrity: sha512-dCdE8Mt/JW6cq6dY7co35Sul/bAkUT3ixaxBrUagFUYUQ/PTYM6p4/B+45RURD5S9z8LVHH1rVgmEeScm3U78w==} + '@storybook/addon-measure@8.3.3': + resolution: {integrity: sha512-R20Z83gnxDRrocES344dw1Of/zDhe3XHSM6TLq80UQTJ9PhnMI+wYHQlK9DsdP3KiRkI+pQA6GCOp0s2ZRy5dg==} peerDependencies: - storybook: ^8.2.2 + storybook: ^8.3.3 - '@storybook/addon-onboarding@8.2.6': - resolution: {integrity: sha512-udON3COEbi0f8A8+kdQxER6zueVMW2J4ES7ZrYyk7Z6LzzgAhfxmhdFTqEgY08jBEhuyskA2bA656GWk7X01EQ==} + '@storybook/addon-onboarding@8.3.3': + resolution: {integrity: sha512-QV3GZ54XSAh0KbdjHkcSmp7dmSuXrMvEKm1M106C33J9lJSai5wYqVhe3/DRVP9VbmSR96oa6gPc9Op4XJHFzw==} peerDependencies: - storybook: ^8.2.6 + storybook: ^8.3.3 - '@storybook/addon-outline@8.2.2': - resolution: {integrity: sha512-Y+PQtfTNO8GLX5nz+3x5AMfHNvdGvBXazJ29+Rl1ygYN1+Q9ZhRJDE1kAK0wLxb7CG14peAgdYEaQb3Rduv7HQ==} + '@storybook/addon-outline@8.3.3': + resolution: {integrity: sha512-OwqYfieNuqSqWNtUZLu3UmsfQNnwA2UaSMBZyeC2Dte9Jd59PPYggcWmH+b0S6OTbYXWNAUK5U6WdK+X9Ypzdw==} peerDependencies: - storybook: ^8.2.2 + storybook: ^8.3.3 - '@storybook/addon-outline@8.2.6': - resolution: {integrity: sha512-uAlPtqDWlq7MQQ4zJT80qdjbSdLF/zsvtPhidX6h9cjLKNPWAv79xJQ14AJHaMv+Hzy5xKnM4wdEhgPbzKabQg==} + '@storybook/addon-toolbars@8.3.3': + resolution: {integrity: sha512-4WyiVqDm4hlJdENIVQg9pLNLdfhnNKa+haerYYSzTVjzYrUx0X6Bxafshq+sud6aRtSYU14abwP56lfW8hgTlA==} peerDependencies: - storybook: ^8.2.6 + storybook: ^8.3.3 - '@storybook/addon-toolbars@8.2.2': - resolution: {integrity: sha512-JGOueOc3EPljlCl9dVSQee0aMYoqGNvN0UH+R6wYJ3bDZ+tUG/iYpsZVPUOvS8vzp3Imk5Is1kzQbQYJtzdGLg==} + '@storybook/addon-viewport@8.3.3': + resolution: {integrity: sha512-2S+UpbKAL+z1ppzUCkixjaem2UDMkfmm/kyJ1wm3A/ofGLYi4fjMSKNRckk+7NdolXGQJjBo0RcaotUTxFIFwQ==} peerDependencies: - storybook: ^8.2.2 + storybook: ^8.3.3 - '@storybook/addon-toolbars@8.2.6': - resolution: {integrity: sha512-0JmRirMpxHS6VZzBk0kY871xWTpkk3TN4S1sxoFf5fcnCfVTHDjEJ5Ws/QWru1RJlIZHuJKRdQIA6Vuq5X+KfQ==} - peerDependencies: - storybook: ^8.2.6 - - '@storybook/addon-viewport@8.2.2': - resolution: {integrity: sha512-gkZ8bsjGGP0NuevkT2iKC+szezSy+w4BrBDknf490mRU2K/B2e7TGojf/j/AtxzILMzD4IKzKUXbE/zwcqjZvA==} - peerDependencies: - storybook: ^8.2.2 - - '@storybook/addon-viewport@8.2.6': - resolution: {integrity: sha512-IAxH9H8tVFzSmZhKf5E+EALiAdkp19RzGqP/rWluD8LH7oW5HumQE/4oN0ZhVMy1RxYsCKFYjWyAp7AuxeMRSw==} - peerDependencies: - storybook: ^8.2.6 - - '@storybook/blocks@8.2.2': - resolution: {integrity: sha512-av0Tryg4toDl2L/d1ABErtsAk9wvM1su6+M4wq5/Go50sk5IjGTldhbZFa9zNOohxLkZwaj0Q5xAgJ1Y+m5KrQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.2.2 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - - '@storybook/blocks@8.2.6': - resolution: {integrity: sha512-nMlZJjVTyfOJ6xwORptsNuS1AZZlDbJUVXc2R8uukGd5GIXxxCdrPk4NvUsjfQslMT9LhYuFld3z62FATsM2rw==} + '@storybook/blocks@8.3.3': + resolution: {integrity: sha512-8Vsvxqstop3xfbsx3Dn1nEjyxvQUcOYd8vpxyp2YumxYO8FlXIRuYL6HAkYbcX8JexsKvCZYxor52D2vUGIKZg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.2.6 + storybook: ^8.3.3 peerDependenciesMeta: react: optional: true react-dom: optional: true - '@storybook/builder-vite@8.2.6': - resolution: {integrity: sha512-3PrsPZAedpQUbzRBEl23Fi1zG5bkQD76JsygVwmfiSm4Est4K8kW2AIB2ht9cIfKXh3mfQkyQlxXKHeQEHeQwQ==} + '@storybook/builder-vite@8.3.3': + resolution: {integrity: sha512-3yTXCLaB6bzhoPH3PqtacKkcaC1uV4L+IHTf1Zypx1NO1pLZHyhYf0T7dIOxTh2JZfqu1Pm9hTvOmWfR12m+9w==} peerDependencies: '@preact/preset-vite': '*' - storybook: ^8.2.6 + storybook: ^8.3.3 typescript: '>= 4.3.x' vite: ^4.0.0 || ^5.0.0 vite-plugin-glimmerx: '*' @@ -2308,32 +1380,18 @@ packages: vite-plugin-glimmerx: optional: true - '@storybook/codemod@8.2.2': - resolution: {integrity: sha512-wRUVKLHVUhbLJYKW3QOufUxJGwaUT4jTCD8+HOGpHPdJO3NrwXu186xt4tuPZO2Y/NnacPeCQPsaK5ok4O8o7A==} - - '@storybook/codemod@8.2.6': - resolution: {integrity: sha512-+mFJ6R+JhJLpU7VPDlXU5Yn6nqIBq745GaEosnIiFOdNo3jaxJ58wq/sGhbQvoCHPUxMA+sDQvR7pS62YFoLRQ==} - - '@storybook/components@8.2.6': - resolution: {integrity: sha512-H8ckH1AnLkHtMtvJ3J8LxnmDtHxkJ7NJacGctHMRrsBIvdKTVwlT4su5nAVVJlan/PrEou+jESfw+OjjBYE5PA==} + '@storybook/components@8.3.3': + resolution: {integrity: sha512-i2JYtesFGkdu+Hwuj+o9fLuO3yo+LPT1/8o5xBVYtEqsgDtEAyuRUWjSz8d8NPtzloGPOv5kvR6MokWDfbeMfw==} peerDependencies: - storybook: ^8.2.6 - - '@storybook/core@8.2.2': - resolution: {integrity: sha512-L4ojYI+Os/i5bCReDIlFgEDQSS94mbJlNU9WRzEGZpqNC5/hbFEC9Tip7P1MiRx9NrewkzU7b+UCP7mi3e4drQ==} + storybook: ^8.3.3 - '@storybook/core@8.2.6': - resolution: {integrity: sha512-XY71g3AcpD6IiER9k9Lt+vlUMYfPIYgWekd7e0Ggzz2gJkPuLunKEdQccLGDSHf5OFAobHhrTJc7ZsvWhmDMag==} - - '@storybook/csf-plugin@8.2.2': - resolution: {integrity: sha512-3K2RUpDDvq3DT46qAIj2VBC+fzTTebRUcZUsRfS6G1AzaX9p25iClEHiwcJacFkgQKhkci8A/Ly3Z4JJ3b4Pgw==} - peerDependencies: - storybook: ^8.2.2 + '@storybook/core@8.3.3': + resolution: {integrity: sha512-pmf2bP3fzh45e56gqOuBT8sDX05hGdUKIZ/hcI84d5xmd6MeHiPW8th2v946wCHcxHzxib2/UU9vQUh+mB4VNw==} - '@storybook/csf-plugin@8.2.6': - resolution: {integrity: sha512-USn7E/bMQYVqvFBuW6d9rKoSuCImjk0BAmc/0wIOuMQ/yQNp2Xze0m8eVkNHUIUDokyx0TXDjRjwq10Xxk16ag==} + '@storybook/csf-plugin@8.3.3': + resolution: {integrity: sha512-7AD7ojpXr3THqpTcEI4K7oKUfSwt1hummgL/cASuQvEPOwAZCVZl2gpGtKxcXhtJXTkn3GMCAvlYMoe7O/1YWw==} peerDependencies: - storybook: ^8.2.6 + storybook: ^8.3.3 '@storybook/csf@0.0.1': resolution: {integrity: sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw==} @@ -2344,94 +1402,68 @@ packages: '@storybook/global@5.0.0': resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} - '@storybook/icons@1.2.9': - resolution: {integrity: sha512-cOmylsz25SYXaJL/gvTk/dl3pyk7yBFRfeXTsHvTA3dfhoU/LWSq0NKL9nM7WBasJyn6XPSGnLS4RtKXLw5EUg==} + '@storybook/icons@1.2.12': + resolution: {integrity: sha512-UxgyK5W3/UV4VrI3dl6ajGfHM4aOqMAkFLWe2KibeQudLf6NJpDrDMSHwZj+3iKC4jFU7dkKbbtH2h/al4sW3Q==} engines: {node: '>=14.0.0'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - '@storybook/instrumenter@8.2.2': - resolution: {integrity: sha512-refwnHqKHhya45MgqakhMG0jKhTiEIAl0aOwAaQy9+zf9ncMIYQAXRQsSZ2Z188lFWE24wbeHKteb62a5ZfWwQ==} - peerDependencies: - storybook: ^8.2.2 - - '@storybook/instrumenter@8.2.6': - resolution: {integrity: sha512-RxtpcMTUSq8/wPM6cR6EXVrPEiNuRbC71cIFVFZagOFYvnnOKwSPV+GOLPK0wxMbGB4c5/+Xe8ADefmZTvxOsA==} - peerDependencies: - storybook: ^8.2.6 - - '@storybook/manager-api@8.2.6': - resolution: {integrity: sha512-uv36h/b5RhlajWtEg4cVPBYV8gZs6juux0nIE+6G9i7vt8Ild6gM9tW1KNabgZcaHFiyWJYCNWxJZoKjgUmXDg==} + '@storybook/instrumenter@8.3.3': + resolution: {integrity: sha512-ZiODB9EwCQkl4PBxGJjBHXRTLxcNs68ZZvR+xeMr0eMFzzlJG+trXoX5kK95oA4BFhGN+3uM0Zl3MoRjBtJTNA==} peerDependencies: - storybook: ^8.2.6 + storybook: ^8.3.3 - '@storybook/preview-api@8.2.6': - resolution: {integrity: sha512-5vTj2ndX5ng4nDntZYe+r8UwLjCIGFymhq5/r2adAvRKL+Bo4zQDWGO7bhvGJk16do2THb2JvPz49ComW9LLZw==} + '@storybook/manager-api@8.3.3': + resolution: {integrity: sha512-Na4U+McOeVUJAR6qzJfQ6y2Qt0kUgEDUriNoAn+curpoKPTmIaZ79RAXBzIqBl31VyQKknKpZbozoRGf861YaQ==} peerDependencies: - storybook: ^8.2.6 + storybook: ^8.3.3 - '@storybook/react-dom-shim@8.2.2': - resolution: {integrity: sha512-4fb1/yT9WXHzHjs0In6orIEZxga5eXd9UaXEFGudBgowCjDUVP9LabDdKTbGusz20lfaAkATsRG/W+EcSLoh8w==} + '@storybook/preview-api@8.3.3': + resolution: {integrity: sha512-GP2QlaF3BBQGAyo248N7549YkTQjCentsc1hUvqPnFWU4xfjkejbnFk8yLaIw0VbYbL7jfd7npBtjZ+6AnphMQ==} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.2.2 + storybook: ^8.3.3 - '@storybook/react-dom-shim@8.2.6': - resolution: {integrity: sha512-B+x8UAEQPDp1yhN3tMh09NvSL38QNfJB7PAyLgKrfE7xIAzvewq+RLW2DfGkoZCy+Zr7QSHm1p7NOgud8+sQCg==} + '@storybook/react-dom-shim@8.3.3': + resolution: {integrity: sha512-0dPC9K7+K5+X/bt3GwYmh+pCpisUyKVjWsI+PkzqGnWqaXFakzFakjswowIAIO1rf7wYZR591x3ehUAyL2bJiQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.2.6 + storybook: ^8.3.3 - '@storybook/react-vite@8.2.6': - resolution: {integrity: sha512-BpbteaIzsJZL1QN3iR7uuslrPfdtbZYXPhcU9awpfl5pW5MOQThuvl7728mwT8V7KdANeikJPgsnlETOb/afDA==} + '@storybook/react-vite@8.3.3': + resolution: {integrity: sha512-vzOqVaA/rv+X5J17eWKxdZztMKEKfsCSP8pNNmrqXWxK3pSlW0fAPxtn1kw3UNxGtAv71pcqvaCUtTJKqI1PYA==} engines: {node: '>=18.0.0'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.2.6 + storybook: ^8.3.3 vite: ^4.0.0 || ^5.0.0 - '@storybook/react@8.2.2': - resolution: {integrity: sha512-U4p/RV78yhjEwEzem8U7wE5/3sSpnqreGsPdAHMCIHd69e9tVeF0rwrTJGp917RClPjBKgEcfelCuvOlby4MrA==} + '@storybook/react@8.3.3': + resolution: {integrity: sha512-fHOW/mNqI+sZWttGOE32Q+rAIbN7/Oib091cmE8usOM0z0vPNpywUBtqC2cCQH39vp19bhTsQaSsTcoBSweAHw==} engines: {node: '>=18.0.0'} peerDependencies: + '@storybook/test': 8.3.3 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.2.2 + storybook: ^8.3.3 typescript: '>= 4.2.x' peerDependenciesMeta: - typescript: + '@storybook/test': optional: true - - '@storybook/react@8.2.6': - resolution: {integrity: sha512-awJlzfiAMrf8l9AgiLhjXEJ+HvS3VKPxNNQaRwBELGq/vigjJe656tMrhvg4OIlJXtlS+6XPshd2knLwjIWNLw==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.2.6 - typescript: '>= 4.2.x' - peerDependenciesMeta: typescript: optional: true - '@storybook/test@8.2.2': - resolution: {integrity: sha512-X2qAKErjTh1X7XLAZqCMtU0ZK8JuwdKmgiqU0oXWxIDmCX6/Dm9ZIcdMZHs/S+K/UnIByjNlQpTShLVfRUeN1w==} - peerDependencies: - storybook: ^8.2.2 - - '@storybook/test@8.2.6': - resolution: {integrity: sha512-nTzNxReBcMRlX1+8PNU/MuA9ArFbeQhfZXMBIwJJoHOhnNe1knYpyn1++xINxAHKOh0BBhQ0NIMoKdcGmW3V6w==} + '@storybook/test@8.3.3': + resolution: {integrity: sha512-uZ8nMIovfI2ry989K2+cYAeEVD/3dpjj2+Rbmy7DiZWWVhFALfmqaTRkzZfShLmlH0TFv+rfcBPihGccBtw0FQ==} peerDependencies: - storybook: ^8.2.6 + storybook: ^8.3.3 - '@storybook/theming@8.2.6': - resolution: {integrity: sha512-ICnYuLIVsYifVCMQljdHgrp+5vAquNybHxDGWiPeOxBicotwHF8rLhTckD2CdVQbMp0jk6r6jetvjXbFJ2MbvQ==} + '@storybook/theming@8.3.3': + resolution: {integrity: sha512-gWJKetI6XJQgkrvvry4ez10+jLaGNCQKi5ygRPM9N+qrjA3BB8F2LCuFUTBuisa4l64TILDNjfwP/YTWV5+u5A==} peerDependencies: - storybook: ^8.2.6 + storybook: ^8.3.3 '@swc/core-darwin-arm64@1.5.7': resolution: {integrity: sha512-bZLVHPTpH3h6yhwVl395k0Mtx8v6CGhq5r4KQdAoPbADU974Mauz1b6ViHAJ74O0IVE5vyy7tD3OpkQxL/vMDQ==} @@ -2512,34 +1544,17 @@ packages: resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} engines: {node: '>=10'} - '@testing-library/dom@10.1.0': - resolution: {integrity: sha512-wdsYKy5zupPyLCW2Je5DLHSxSfbIp6h80WoHOQc+RPtmPGA52O9x5MJEkv92Sjonpq+poOAtUKhh1kBGAXBrNA==} + '@testing-library/dom@10.4.0': + resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} engines: {node: '>=18'} '@testing-library/dom@9.3.4': resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==} engines: {node: '>=14'} - '@testing-library/jest-dom@6.4.5': - resolution: {integrity: sha512-AguB9yvTXmCnySBP1lWjfNNUwpbElsaQ567lt2VdGqAdHtpieLgjmcVyv1q7PMIvLbgpDdkWV5Ydv3FEejyp2A==} + '@testing-library/jest-dom@6.5.0': + resolution: {integrity: sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} - peerDependencies: - '@jest/globals': '>= 28' - '@types/bun': latest - '@types/jest': '>= 28' - jest: '>= 28' - vitest: '>= 0.32' - peerDependenciesMeta: - '@jest/globals': - optional: true - '@types/bun': - optional: true - '@types/jest': - optional: true - jest: - optional: true - vitest: - optional: true '@testing-library/react@14.3.1': resolution: {integrity: sha512-H99XjUhWQw0lTgyMN05W3xQG1Nh4lq574D8keFf1dDoNTJgp66VbJozRaczoF+wsiaPJNt/TcnfpLGufGxSrZQ==} @@ -2557,9 +1572,6 @@ packages: '@tokenizer/token@0.3.0': resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} - '@tootallnate/quickjs-emscripten@0.23.0': - resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} - '@tsconfig/node10@1.0.11': resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} @@ -2605,9 +1617,6 @@ packages: '@types/crc@3.8.3': resolution: {integrity: sha512-XR7+BLIOgpI8vEmABN30VEjxOq/AT+e03elBJjXgQEKW4/BAOTnjD93vdP6fAmisQ569/wuJNguvgBcg1fclbA==} - '@types/cross-spawn@6.0.6': - resolution: {integrity: sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==} - '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} @@ -2626,18 +1635,9 @@ packages: '@types/ejs@3.1.5': resolution: {integrity: sha512-nv+GSx77ZtXiJzwKdsASqi+YQ5Z7vwHsTP0JY2SiQgjGckkBRKZnk8nIM+7oUZ1VCtuTz0+By4qVR7fqzp/Dfg==} - '@types/emscripten@1.39.13': - resolution: {integrity: sha512-cFq+fO/isvhvmuP/+Sl4K4jtU6E23DoivtbO4r50e3odaxAiVdbfSYRDdJ4gCdxx+3aRjhphS5ZMwIH4hFy/Cw==} - '@types/escodegen@0.0.6': resolution: {integrity: sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig==} - '@types/eslint-scope@3.7.7': - resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} - - '@types/eslint@9.6.0': - resolution: {integrity: sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg==} - '@types/estree@0.0.51': resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} @@ -2659,9 +1659,6 @@ packages: '@types/glob@7.2.0': resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} - '@types/graceful-fs@4.1.9': - resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} - '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} @@ -2686,9 +1683,6 @@ packages: '@types/jasmine@3.10.18': resolution: {integrity: sha512-jOk52a1Kz+1oU5fNWwAcNe64/GsE7r/Q6ronwDox0D3ETo/cr4ICMQyeXrj7G6FPW1n8YjRoAZA2F0XBr6GicQ==} - '@types/jest@29.5.12': - resolution: {integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==} - '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -2731,18 +1725,9 @@ packages: '@types/node@16.9.1': resolution: {integrity: sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==} - '@types/node@18.19.39': - resolution: {integrity: sha512-nPwTRDKUctxw3di5b4TfT3I0sWDiWoPQCZjXhvdkINntwr8lcoVCKsTgnXeRubKIlfnV+eN/HYk6Jb40tbcEAQ==} - - '@types/node@18.19.42': - resolution: {integrity: sha512-d2ZFc/3lnK2YCYhos8iaNIYu9Vfhr92nHiyJHRltXWjXUBjEE+A4I58Tdbnw4VhggSW+2j5y5gTrLs4biNnubg==} - '@types/node@20.14.10': resolution: {integrity: sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==} - '@types/node@20.14.12': - resolution: {integrity: sha512-r7wNXakLeSsGT0H1AU863vS2wa5wBOK4bWMjZz2wj+8nBx+m5PeIn0k8AloSLpRuiwdRQZwarZqHE4FNArPuJQ==} - '@types/node@22.2.0': resolution: {integrity: sha512-bm6EG6/pCpkxDf/0gDNDdtDILMOHgaQBVOJGdwsqClnxA3xL6jtMv76rLBc006RVMWbmaf0xbmom4Z/5o2nRkQ==} @@ -2764,9 +1749,6 @@ packages: '@types/range-parser@1.2.7': resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} - '@types/rbush@3.0.3': - resolution: {integrity: sha512-lX55lR0iYCgapxD3IrgujpQA1zDxwZI5qMRelKvmKAsSMplFVr7wmMpG7/6+Op2tjrgEex8o3vjg8CRDrRNYxg==} - '@types/react-dom@18.3.0': resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} @@ -2851,9 +1833,6 @@ packages: '@types/yargs@17.0.32': resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} - '@types/yargs@17.0.33': - resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} - '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} @@ -2966,33 +1945,42 @@ packages: peerDependencies: vitest: 2.0.4 - '@vitest/expect@1.6.0': - resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} - '@vitest/expect@2.0.4': resolution: {integrity: sha512-39jr5EguIoanChvBqe34I8m1hJFI4+jxvdOpD7gslZrVQBKhh8H9eD7J/LJX4zakrw23W+dITQTDqdt43xVcJw==} + '@vitest/expect@2.0.5': + resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} + '@vitest/pretty-format@2.0.4': resolution: {integrity: sha512-RYZl31STbNGqf4l2eQM1nvKPXE0NhC6Eq0suTTePc4mtMQ1Fn8qZmjV4emZdEdG2NOWGKSCrHZjmTqDCDoeFBw==} + '@vitest/pretty-format@2.0.5': + resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==} + + '@vitest/pretty-format@2.1.1': + resolution: {integrity: sha512-SjxPFOtuINDUW8/UkElJYQSFtnWX7tMksSGW0vfjxMneFqxVr8YJ979QpMbDW7g+BIiq88RAGDjf7en6rvLPPQ==} + '@vitest/runner@2.0.4': resolution: {integrity: sha512-Gk+9Su/2H2zNfNdeJR124gZckd5st4YoSuhF1Rebi37qTXKnqYyFCd9KP4vl2cQHbtuVKjfEKrNJxHHCW8thbQ==} '@vitest/snapshot@2.0.4': resolution: {integrity: sha512-or6Mzoz/pD7xTvuJMFYEtso1vJo1S5u6zBTinfl+7smGUhqybn6VjzCDMhmTyVOFWwkCMuNjmNNxnyXPgKDoPw==} - '@vitest/spy@1.6.0': - resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} - '@vitest/spy@2.0.4': resolution: {integrity: sha512-uTXU56TNoYrTohb+6CseP8IqNwlNdtPwEO0AWl+5j7NelS6x0xZZtP0bDWaLvOfUbaYwhhWp1guzXUxkC7mW7Q==} - '@vitest/utils@1.6.0': - resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} + '@vitest/spy@2.0.5': + resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} '@vitest/utils@2.0.4': resolution: {integrity: sha512-Zc75QuuoJhOBnlo99ZVUkJIuq4Oj0zAkrQ2VzCqNCx6wAwViHEh5Fnp4fiJTE9rA+sAoXRf00Z9xGgfEzV6fzQ==} + '@vitest/utils@2.0.5': + resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} + + '@vitest/utils@2.1.1': + resolution: {integrity: sha512-Y6Q9TsI+qJ2CC0ZKj6VBb+T8UPz593N113nnUykqwANqhgf3QkZeHFlusgKLTqrnVHbj/XDKZcDHol+dxVT+rQ==} + '@wdio/browserstack-service@7.11.1': resolution: {integrity: sha512-TC2g6Kor15uwBKvupD2GGyT3QZnYS2sQ8MSl5YZacrWXgGvYdp7JADS/gQrTVy4beH1MrN8Ae8KnalLCh/D2GQ==} engines: {node: '>=12.0.0'} @@ -3052,65 +2040,6 @@ packages: resolution: {integrity: sha512-0n5mZha2QktV0181nMhw+IQ8MgYrqyvVDjP20P7JEnl6hehSkyXTAYQcYuKaw5AAVqipV3Eh96JBi5CnhpsoKQ==} engines: {node: '>=12.0.0'} - '@webassemblyjs/ast@1.12.1': - resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} - - '@webassemblyjs/floating-point-hex-parser@1.11.6': - resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} - - '@webassemblyjs/helper-api-error@1.11.6': - resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} - - '@webassemblyjs/helper-buffer@1.12.1': - resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==} - - '@webassemblyjs/helper-numbers@1.11.6': - resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} - - '@webassemblyjs/helper-wasm-bytecode@1.11.6': - resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} - - '@webassemblyjs/helper-wasm-section@1.12.1': - resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==} - - '@webassemblyjs/ieee754@1.11.6': - resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} - - '@webassemblyjs/leb128@1.11.6': - resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} - - '@webassemblyjs/utf8@1.11.6': - resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} - - '@webassemblyjs/wasm-edit@1.12.1': - resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==} - - '@webassemblyjs/wasm-gen@1.12.1': - resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==} - - '@webassemblyjs/wasm-opt@1.12.1': - resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==} - - '@webassemblyjs/wasm-parser@1.12.1': - resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==} - - '@webassemblyjs/wast-printer@1.12.1': - resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} - - '@xtuc/ieee754@1.2.0': - resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - - '@xtuc/long@4.2.2': - resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - - '@yarnpkg/fslib@2.10.3': - resolution: {integrity: sha512-41H+Ga78xT9sHvWLlFOZLIhtU6mTGZ20pZ29EiZa97vnxdohJD2AF42rCoAoWfqUz486xY6fhjMH+DYEM9r14A==} - engines: {node: '>=12 <14 || 14.2 - 14.9 || >14.10.0'} - - '@yarnpkg/libzip@2.3.0': - resolution: {integrity: sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg==} - engines: {node: '>=12 <14 || 14.2 - 14.9 || >14.10.0'} - '@zeit/schemas@2.6.0': resolution: {integrity: sha512-uUrgZ8AxS+Lio0fZKAipJjAh415JyrOZowliZAzmnJSsf7piVL5w+G0+gFJ0KSu3QRhvui/7zuvpLz03YjXAhg==} @@ -3121,11 +2050,6 @@ packages: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} - acorn-import-attributes@1.9.5: - resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} - peerDependencies: - acorn: ^8 - acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -3157,11 +2081,6 @@ packages: resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} engines: {node: '>= 14'} - ajv-keywords@3.5.2: - resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} - peerDependencies: - ajv: ^6.9.1 - ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} @@ -3226,9 +2145,6 @@ packages: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} - api-server@file:packages/api-server: - resolution: {directory: packages/api-server, type: directory} - aproba@2.0.0: resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} @@ -3258,9 +2174,6 @@ packages: arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -3309,17 +2222,10 @@ packages: resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} engines: {node: '>= 0.4'} - assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} - ast-types@0.13.4: - resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} - engines: {node: '>=4'} - ast-types@0.16.1: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} @@ -3349,89 +2255,23 @@ packages: axios@1.7.4: resolution: {integrity: sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==} - b4a@1.6.6: - resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==} - - babel-core@7.0.0-bridge.0: - resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - babel-jest@29.7.0: - resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.8.0 - - babel-plugin-istanbul@6.1.1: - resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} - engines: {node: '>=8'} - - babel-plugin-jest-hoist@29.6.3: - resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - babel-plugin-macros@3.1.0: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} - babel-plugin-polyfill-corejs2@0.4.11: - resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-polyfill-corejs3@0.10.4: - resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-polyfill-regenerator@0.6.2: - resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-preset-current-node-syntax@1.1.0: - resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} - peerDependencies: - '@babel/core': ^7.0.0 - - babel-preset-jest@29.6.3: - resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.0.0 - balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - bare-events@2.4.2: - resolution: {integrity: sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==} - - bare-fs@2.3.1: - resolution: {integrity: sha512-W/Hfxc/6VehXlsgFtbB5B4xFcsCl+pAh30cYhoFyXErf6oGrwjh8SwiPAdHgpmWonKuYpZgGywN0SXt7dgsADA==} - - bare-os@2.4.0: - resolution: {integrity: sha512-v8DTT08AS/G0F9xrhyLtepoo9EJBJ85FRSMbu1pQUlAf6A8T0tEEQGMVObWeqpjhSPXsE0VGlluFBJu2fdoTNg==} - - bare-path@2.1.3: - resolution: {integrity: sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==} - - bare-stream@2.1.3: - resolution: {integrity: sha512-tiDAH9H/kP+tvNO5sczyn9ZAA7utrSMobyDchsnyyXBuUe2FSQWbxhtuHB8jwpHYYevVo2UJpcmvvjrbHboUUQ==} - base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - basic-ftp@5.0.5: - resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} - engines: {node: '>=10.0.0'} + better-opn@3.0.2: + resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} + engines: {node: '>=12.0.0'} bidi-js@1.0.3: resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} - big.js@5.2.2: - resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} @@ -3479,9 +2319,6 @@ packages: browserstack-local@1.5.5: resolution: {integrity: sha512-jKne7yosrMcptj3hqxp36TP9k0ZW2sCqhyurX24rUL4G3eT7OLgv+CSQN8iq5dtkv5IK+g+v8fWvsiC/S9KxMg==} - bser@2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - buffer-crc32@0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} @@ -3542,10 +2379,6 @@ packages: resolution: {integrity: sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==} engines: {node: '>=4'} - camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} @@ -3568,10 +2401,6 @@ packages: centra@2.7.0: resolution: {integrity: sha512-PbFMgMSrmgx6uxCdm57RUos9Tc3fclMvhLSATYN39XsDV29B89zZ3KA89jmY0vwSGazyU+uerqwa6t+KaodPcg==} - chai@4.4.1: - resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} - engines: {node: '>=4'} - chai@5.1.1: resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==} engines: {node: '>=12'} @@ -3600,16 +2429,9 @@ packages: resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - char-regex@1.0.2: - resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} - engines: {node: '>=10'} - chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - check-error@2.1.1: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} @@ -3633,25 +2455,10 @@ packages: resolution: {integrity: sha512-Nk8DUCIfPR6p9WClPPFeP2ztpAdkT8xueoiDS03csea1uoJjm4w0p5Oy1hjykyjT1EQ0MMrEshLD3C8gHXyiZw==} engines: {node: '>=12.13.0'} - chrome-trace-event@1.0.4: - resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} - engines: {node: '>=6.0'} - - chromium-bidi@0.6.0: - resolution: {integrity: sha512-VnxVrpGojAjkiGFN2I+KtsDILFAjiGWVEDizOEnKzEDkT93eQT1cqTfUkqmOyLq33i1q4a1KDYbH+52CUe4Ufw==} - peerDependencies: - devtools-protocol: '*' - ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} - citty@0.1.6: - resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} - - cjs-module-lexer@1.3.1: - resolution: {integrity: sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==} - cli-boxes@1.0.0: resolution: {integrity: sha512-3Fo5wu8Ytle8q9iCzS4D2MWVL2X7JVWRiS1BnXbTFDhS9c/REkM9vd1AmabsoZoY5/dGi5TT9iKL8Kb6DeBRQg==} engines: {node: '>=0.10.0'} @@ -3687,10 +2494,6 @@ packages: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} - clone-deep@4.0.1: - resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} - engines: {node: '>=6'} - clone-response@1.0.3: resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} @@ -3706,13 +2509,6 @@ packages: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} - co@4.6.0: - resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - - collect-v8-coverage@1.0.2: - resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} - color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -3744,10 +2540,6 @@ packages: commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - commander@6.2.1: - resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} - engines: {node: '>= 6'} - commander@8.3.0: resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} engines: {node: '>= 12'} @@ -3783,16 +2575,9 @@ packages: engines: {node: ^14.13.0 || >=16.0.0} hasBin: true - confbox@0.1.7: - resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} - consola@2.15.3: resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} - consola@3.2.3: - resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} - engines: {node: ^14.18.0 || >=16.10.0} - console-control-strings@1.1.0: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} @@ -3825,9 +2610,6 @@ packages: resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} engines: {node: '>= 0.6'} - core-js-compat@3.37.1: - resolution: {integrity: sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==} - core-js-pure@3.37.1: resolution: {integrity: sha512-J/r5JTHSmzTxbiYYrzXg9w1VpqrYt+gexenBE9pugeyhwPZTAEJddyiReJWsLO6uNQ8xJZFbod6XC7KKwatCiA==} @@ -3838,15 +2620,6 @@ packages: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} - cosmiconfig@9.0.0: - resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} - engines: {node: '>=14'} - peerDependencies: - typescript: '>=4.9.5' - peerDependenciesMeta: - typescript: - optional: true - crc-32@1.2.2: resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} engines: {node: '>=0.8'} @@ -3859,11 +2632,6 @@ packages: crc@3.8.0: resolution: {integrity: sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==} - create-jest@29.7.0: - resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} @@ -3882,10 +2650,6 @@ packages: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} - crypto-random-string@4.0.0: - resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} - engines: {node: '>=12'} - css-shorthand-properties@1.1.1: resolution: {integrity: sha512-Md+Juc7M3uOdbAFwOYlTrccIZ7oCFuzrhKYQjdeUEW/sE1hv17Jp/Bws+ReOPpGVBTYCBoYo+G17V5Qo8QQ75A==} @@ -3902,10 +2666,6 @@ packages: csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - data-uri-to-buffer@6.0.2: - resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} - engines: {node: '>= 14'} - data-urls@5.0.0: resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} engines: {node: '>=18'} @@ -3955,15 +2715,6 @@ packages: supports-color: optional: true - debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - debug@4.3.5: resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} engines: {node: '>=6.0'} @@ -3997,18 +2748,6 @@ packages: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} - dedent@1.5.3: - resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: - optional: true - - deep-eql@4.1.4: - resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} - engines: {node: '>=6'} - deep-eql@5.0.2: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} @@ -4039,17 +2778,14 @@ packages: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} - defu@6.1.4: - resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - - degenerator@5.0.1: - resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} - engines: {node: '>= 14'} - delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -4072,21 +2808,10 @@ packages: detect-gpu@5.0.38: resolution: {integrity: sha512-36QeGHSXYcJ/RfrnPEScR8GDprbXFG4ZhXsfVNVHztZr38+fRxgHnJl3CjYXXjbeRUhu3ZZBJh6Lg0A9v0Qd8A==} - detect-indent@6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} - detect-libc@2.0.3: resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} - detect-newline@3.1.0: - resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} - engines: {node: '>=8'} - - devtools-protocol@0.0.1299070: - resolution: {integrity: sha512-+qtL3eX50qsJ7c+qVyagqi7AWMoQCBGNfoyJZMwm/NSXVqLYbuitrWEEIzxfUmTNy7//Xe8yhMmQ+elj3uAqSg==} - devtools-protocol@0.0.901419: resolution: {integrity: sha512-4INMPwNm9XRpBukhNbF7OB6fNTTCaI8pzy/fXg0xQzAy5h3zL1P8xT3QazgKqBrb/hAYwIBizqDBZ7GtJE74QQ==} @@ -4101,10 +2826,6 @@ packages: resolution: {integrity: sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} @@ -4173,10 +2894,6 @@ packages: electron-to-chromium@1.5.7: resolution: {integrity: sha512-6FTNWIWMxMy/ZY6799nBlPtF1DFDQ6VQJ7yyDP27SJNt5lwtQ5ufqVvHylb3fdQefvRcgA3fKcFMJi9OLwBRNw==} - emittery@0.13.1: - resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} - engines: {node: '>=12'} - emoji-regex@10.3.0: resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} @@ -4186,10 +2903,6 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - emojis-list@3.0.0: - resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} - engines: {node: '>= 4'} - encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} @@ -4204,23 +2917,10 @@ packages: resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} engines: {node: '>=10.0.0'} - enhanced-resolve@5.17.1: - resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} - engines: {node: '>=10.13.0'} - entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} - env-paths@2.2.1: - resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} - engines: {node: '>=6'} - - envinfo@7.13.0: - resolution: {integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==} - engines: {node: '>=4'} - hasBin: true - error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} @@ -4266,11 +2966,6 @@ packages: peerDependencies: esbuild: '>=0.12 <1' - esbuild-register@3.6.0: - resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} - peerDependencies: - esbuild: '>=0.12 <1' - esbuild@0.21.5: resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} engines: {node: '>=12'} @@ -4388,10 +3083,6 @@ packages: eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - execa@0.7.0: resolution: {integrity: sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==} engines: {node: '>=4'} @@ -4400,10 +3091,6 @@ packages: resolution: {integrity: sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA==} engines: {node: '>=4'} - execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} @@ -4411,10 +3098,6 @@ packages: exif-parser@0.1.12: resolution: {integrity: sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==} - exit@0.1.2: - resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} - engines: {node: '>= 0.8.0'} - expect-webdriverio@3.6.0: resolution: {integrity: sha512-8HuVToXDVzkKgUKIUzW/v3bP4ZoMDEwCjX9QmlRlMIvjt3HOSzSIBnRMv8lpeVTUKoR9DZNr/lSuKH4Amx4BBg==} @@ -4422,10 +3105,6 @@ packages: resolution: {integrity: sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - expect@29.7.0: - resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - express@4.19.2: resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} engines: {node: '>= 0.10.0'} @@ -4448,9 +3127,6 @@ packages: fast-equals@4.0.3: resolution: {integrity: sha512-G3BSX9cfKttjr+2o1O22tYMLq0DPluZnYtq1rXumE1SpL/F/SLIfHx08WYQoWSIpeMYf8sRbJ8++71+v6Pnxfg==} - fast-fifo@1.3.2: - resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} - fast-glob@3.3.2: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} @@ -4470,12 +3146,6 @@ packages: fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - fb-watchman@2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} - - fd-package-json@1.2.0: - resolution: {integrity: sha512-45LSPmWf+gC5tdCQMNH4s9Sr00bIkiD9aN7dc5hqkrEw1geRYyDQS1v1oMHAW3ysfxfndqGsrDREHHjNNbKUfA==} - fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} @@ -4493,12 +3163,6 @@ packages: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} - file-loader@6.2.0: - resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==} - engines: {node: '>= 10.13.0'} - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - file-type@16.5.4: resolution: {integrity: sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==} engines: {node: '>=10'} @@ -4514,10 +3178,6 @@ packages: resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} engines: {node: '>= 0.8'} - find-cache-dir@2.1.0: - resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} - engines: {node: '>=6'} - find-cache-dir@3.3.2: resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} engines: {node: '>=8'} @@ -4529,10 +3189,6 @@ packages: resolution: {integrity: sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==} engines: {node: '>=0.10.0'} - find-up@3.0.0: - resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} - engines: {node: '>=6'} - find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} @@ -4552,10 +3208,6 @@ packages: flatted@3.3.1: resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} - flow-parser@0.239.1: - resolution: {integrity: sha512-topOrETNxJ6T2gAnQiWqAlzGPj8uI2wtmNOlDIMNB+qyvGJZ6R++STbUOTAYmvPhOMz2gXnXPH0hOvURYmrBow==} - engines: {node: '>=0.4.0'} - follow-redirects@1.15.6: resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} engines: {node: '>=4.0'} @@ -4648,10 +3300,6 @@ packages: resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} engines: {node: '>= 0.4'} - get-package-type@0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} - get-port@5.1.1: resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} engines: {node: '>=8'} @@ -4664,10 +3312,6 @@ packages: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} - get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - get-stream@8.0.1: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} @@ -4676,17 +3320,9 @@ packages: resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} engines: {node: '>= 0.4'} - get-uri@6.0.3: - resolution: {integrity: sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==} - engines: {node: '>= 14'} - gifwrap@0.9.4: resolution: {integrity: sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==} - giget@1.2.3: - resolution: {integrity: sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==} - hasBin: true - github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} @@ -4704,9 +3340,6 @@ packages: peerDependencies: glob: ^7.1.6 - glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - glob@10.4.5: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true @@ -4742,10 +3375,6 @@ packages: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} - globby@14.0.2: - resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==} - engines: {node: '>=18'} - globule@1.3.4: resolution: {integrity: sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==} engines: {node: '>= 0.10'} @@ -4773,9 +3402,6 @@ packages: resolution: {integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==} engines: {node: '>=4.x'} - harmony-reflect@1.6.2: - resolution: {integrity: sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==} - has-ansi@2.0.0: resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} engines: {node: '>=0.10.0'} @@ -4880,10 +3506,6 @@ packages: resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} engines: {node: '>= 14'} - human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} @@ -4901,10 +3523,6 @@ packages: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} - identity-obj-proxy@3.0.0: - resolution: {integrity: sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==} - engines: {node: '>=4'} - ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -4925,11 +3543,6 @@ packages: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} - import-local@3.2.0: - resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} - engines: {node: '>=8'} - hasBin: true - imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -4960,10 +3573,6 @@ packages: resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} engines: {node: '>= 0.4'} - ip-address@9.0.5: - resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} - engines: {node: '>= 12'} - ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} @@ -5049,10 +3658,6 @@ packages: is-function@1.0.2: resolution: {integrity: sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==} - is-generator-fn@2.1.0: - resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} - engines: {node: '>=6'} - is-generator-function@1.0.10: resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} engines: {node: '>= 0.4'} @@ -5089,10 +3694,6 @@ packages: resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} engines: {node: '>=8'} - is-plain-object@2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} - is-plain-object@5.0.0: resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} engines: {node: '>=0.10.0'} @@ -5122,10 +3723,6 @@ packages: resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} engines: {node: '>=0.10.0'} - is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -5173,34 +3770,14 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - isobject@3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} - istanbul-lib-coverage@3.2.2: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} - istanbul-lib-instrument@4.0.3: - resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==} - engines: {node: '>=8'} - - istanbul-lib-instrument@5.2.1: - resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} - engines: {node: '>=8'} - - istanbul-lib-instrument@6.0.3: - resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} - engines: {node: '>=10'} - istanbul-lib-report@3.0.1: resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} engines: {node: '>=10'} - istanbul-lib-source-maps@4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} - engines: {node: '>=10'} - istanbul-lib-source-maps@5.0.6: resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} engines: {node: '>=10'} @@ -5236,159 +3813,26 @@ packages: resolution: {integrity: sha512-YIThBuHzaIIcjxeuLmPD40SjxkEcc8i//sGMDKCgkRMVgIwRJf5qyExtlJpQeh7pkeoBSOe6lQEdg+/9uKg9mw==} hasBin: true - jest-changed-files@29.7.0: - resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-circus@29.7.0: - resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-cli@29.7.0: - resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - jest-config@29.7.0: - resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - jest-diff@28.1.3: resolution: {integrity: sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - jest-diff@29.7.0: - resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-docblock@29.7.0: - resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-each@29.7.0: - resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-environment-node@29.7.0: - resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-get-type@28.0.2: resolution: {integrity: sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - jest-get-type@29.6.3: - resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-haste-map@29.7.0: - resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-leak-detector@29.7.0: - resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-matcher-utils@28.1.3: resolution: {integrity: sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - jest-matcher-utils@29.7.0: - resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-message-util@28.1.3: resolution: {integrity: sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - jest-message-util@29.7.0: - resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-mock@29.7.0: - resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-pnp-resolver@1.2.3: - resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} - engines: {node: '>=6'} - peerDependencies: - jest-resolve: '*' - peerDependenciesMeta: - jest-resolve: - optional: true - - jest-regex-util@29.6.3: - resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-resolve-dependencies@29.7.0: - resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-resolve@29.7.0: - resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-runner@29.7.0: - resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-runtime@29.7.0: - resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-snapshot@29.7.0: - resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-util@28.1.3: resolution: {integrity: sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - jest-util@29.7.0: - resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-validate@29.7.0: - resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-watcher@29.7.0: - resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} - - jest-worker@29.7.0: - resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest@29.7.0: - resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - jpeg-js@0.4.4: resolution: {integrity: sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==} @@ -5398,25 +3842,13 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true - jsbn@1.1.0: - resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} - - jscodeshift@0.15.2: - resolution: {integrity: sha512-FquR7Okgmc4Sd0aEDwqho3rEiKR3BdvuG9jfdHjLJ6JQoWSMpavug3AoIfnfWhxFlf+5pzQh8qjqz0DWFrNQzA==} - hasBin: true - peerDependencies: - '@babel/preset-env': ^7.1.6 - peerDependenciesMeta: - '@babel/preset-env': - optional: true + jsdoc-type-pratt-parser@4.1.0: + resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==} + engines: {node: '>=12.0.0'} jsdom@24.1.1: resolution: {integrity: sha512-5O1wWV99Jhq4DV7rCLIoZ/UIhyQeDR7wHVyZAHAshbrvZsLs+Xzz7gtwnlJTJDjleiTKh54F4dXrX70vJQTyJQ==} @@ -5427,10 +3859,6 @@ packages: canvas: optional: true - jsesc@0.5.0: - resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} - hasBin: true - jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} @@ -5470,14 +3898,6 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - - kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - ky@0.28.7: resolution: {integrity: sha512-a23i6qSr/ep15vdtw/zyEQIDLoUaKDg9Jf04CYl/0ns/wXNYna26zJpI+MeIFaPeDvkrjLPrKtKOiiI3IE53RQ==} engines: {node: '>=12'} @@ -5486,10 +3906,6 @@ packages: resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} engines: {node: '>= 0.6.3'} - leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} - levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -5523,18 +3939,6 @@ packages: resolution: {integrity: sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==} engines: {node: '>=0.10.0'} - loader-runner@4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} - engines: {node: '>=6.11.5'} - - loader-utils@2.0.4: - resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} - engines: {node: '>=8.9.0'} - - locate-path@3.0.0: - resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} - engines: {node: '>=6'} - locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} @@ -5546,9 +3950,6 @@ packages: lodash.clonedeep@4.5.0: resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} - lodash.debounce@4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - lodash.defaults@4.2.0: resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} @@ -5601,9 +4002,6 @@ packages: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true - loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - loupe@3.1.1: resolution: {integrity: sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==} @@ -5620,14 +4018,6 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - - lru-cache@7.18.3: - resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} - engines: {node: '>=12'} - lz-string@1.5.0: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true @@ -5648,10 +4038,6 @@ packages: magicast@0.3.4: resolution: {integrity: sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==} - make-dir@2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} - engines: {node: '>=6'} - make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} @@ -5663,9 +4049,6 @@ packages: make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} - map-obj@1.0.1: resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} engines: {node: '>=0.10.0'} @@ -5698,9 +4081,6 @@ packages: merge-descriptors@1.0.1: resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} - merge-source-map@1.1.0: - resolution: {integrity: sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==} - merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -5812,9 +4192,6 @@ packages: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} - mitt@3.0.1: - resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} - mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true @@ -5824,9 +4201,6 @@ packages: engines: {node: '>=10'} hasBin: true - mlly@1.7.1: - resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} - mocha@9.2.2: resolution: {integrity: sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==} engines: {node: '>= 12.0.0'} @@ -5864,20 +4238,6 @@ packages: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} - neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - - netmask@2.0.2: - resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} - engines: {node: '>= 0.4.0'} - - node-dir@0.1.17: - resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} - engines: {node: '>= 0.10.5'} - - node-fetch-native@1.6.4: - resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} - node-fetch@2.6.1: resolution: {integrity: sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==} engines: {node: 4.x || >=6.0.0} @@ -5891,9 +4251,6 @@ packages: encoding: optional: true - node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} @@ -5923,10 +4280,6 @@ packages: resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} engines: {node: '>=4'} - npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - npm-run-path@5.3.0: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -5938,11 +4291,6 @@ packages: nwsapi@2.2.12: resolution: {integrity: sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==} - nypm@0.3.9: - resolution: {integrity: sha512-BI2SdqqTHg2d4wJh8P9A1W+bslg33vOE9IZDY6eR2QC+Pu1iNBVZUqczrd43rJb+fMzHU7ltAYKsEFY/kHMFcw==} - engines: {node: ^14.16.0 || >=16.10.0} - hasBin: true - object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -5975,9 +4323,6 @@ packages: resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} engines: {node: '>= 0.4'} - ohash@1.1.3: - resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==} - omggif@1.0.10: resolution: {integrity: sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==} @@ -6000,6 +4345,10 @@ packages: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} @@ -6032,10 +4381,6 @@ packages: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} - p-locate@3.0.0: - resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} - engines: {node: '>=6'} - p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} @@ -6048,14 +4393,6 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - pac-proxy-agent@7.0.2: - resolution: {integrity: sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==} - engines: {node: '>= 14'} - - pac-resolver@7.0.1: - resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==} - engines: {node: '>= 14'} - package-json-from-dist@1.0.0: resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} @@ -6104,10 +4441,6 @@ packages: resolution: {integrity: sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==} engines: {node: '>=0.10.0'} - path-exists@3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} - path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -6155,16 +4488,9 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - path-type@5.0.0: - resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} - engines: {node: '>=12'} - pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - pathval@2.0.0: resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} engines: {node: '>= 14.16'} @@ -6203,10 +4529,6 @@ packages: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} - pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - pinkie-promise@2.0.1: resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} engines: {node: '>=0.10.0'} @@ -6215,25 +4537,14 @@ packages: resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} engines: {node: '>=0.10.0'} - pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - pixelmatch@4.0.2: resolution: {integrity: sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==} hasBin: true - pkg-dir@3.0.0: - resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} - engines: {node: '>=6'} - pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} - pkg-types@1.1.3: - resolution: {integrity: sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==} - pngjs@3.4.0: resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} engines: {node: '>=4.0.0'} @@ -6262,11 +4573,6 @@ packages: engines: {node: '>=14'} hasBin: true - prettier@3.3.3: - resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} - engines: {node: '>=14'} - hasBin: true - pretty-format@27.5.1: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -6275,10 +4581,6 @@ packages: resolution: {integrity: sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - pretty-ms@7.0.1: resolution: {integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==} engines: {node: '>=10'} @@ -6294,17 +4596,9 @@ packages: resolution: {integrity: sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg==} engines: {node: '>=0.4.0'} - progress@2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} - promise-worker-transferable@1.0.4: resolution: {integrity: sha512-bN+0ehEnrXfxV2ZQvU2PetO0n4gqBD4ulq3MI1WOPLgr7/Mg9yRQkX5+0v1vagr74ZTsl7XtzlaYDo2EuCeYJw==} - prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} - prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} @@ -6312,10 +4606,6 @@ packages: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} - proxy-agent@6.4.0: - resolution: {integrity: sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==} - engines: {node: '>= 14'} - proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} @@ -6344,18 +4634,6 @@ packages: resolution: {integrity: sha512-KU8zyb7AIOqNjLCN3wkrFXxh+EVaG+zrs2P03ATNjc3iwSxHsu5/EvZiREpQ/IJiT9xfQbDVgKcsvRuzLCxglQ==} engines: {node: '>=10.18.1'} - puppeteer-core@22.13.0: - resolution: {integrity: sha512-ZkpRX8nm/S39BnpcCverMzIc6oGWBPOUeOeaWRLKHqiKVCZ1l28HxPTYLitJlDiB16xZATSKpjul+sl+ZEm0HQ==} - engines: {node: '>=18'} - - puppeteer@22.13.0: - resolution: {integrity: sha512-nmICzeHTBtZiu+y4vs0fboe/NKIFwH5W8RZuxmEVAKNfBQg/8u5FEQAvPlWmyVpJoAVM5kXD5PEl3GlK3F9pPA==} - engines: {node: '>=18'} - hasBin: true - - pure-rand@6.1.0: - resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} - pyright@1.1.369: resolution: {integrity: sha512-K0mQzVNSN5yq+joFK0JraOlhtL2HKrubCa+SnFznkLsnoZKbmq7M8UpSSDsJKPFfevkmqOKodgGzvt27C6RJAg==} engines: {node: '>=14.0.0'} @@ -6378,16 +4656,10 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - queue-tick@1.0.1: - resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} - quick-lru@5.1.1: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} - quickselect@2.0.0: - resolution: {integrity: sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==} - randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} @@ -6403,9 +4675,6 @@ packages: resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} engines: {node: '>= 0.8'} - rbush@3.0.1: - resolution: {integrity: sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==} - rc@1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true @@ -6579,30 +4848,16 @@ packages: resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} engines: {node: '>= 0.4'} - regenerate-unicode-properties@10.1.1: - resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} - engines: {node: '>=4'} - - regenerate@1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - regenerator-transform@0.15.2: - resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} - regexp.prototype.flags@1.5.2: resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} engines: {node: '>= 0.4'} - regexpu-core@5.3.2: - resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} - engines: {node: '>=4'} - registry-auth-token@3.3.2: resolution: {integrity: sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==} @@ -6610,10 +4865,6 @@ packages: resolution: {integrity: sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==} engines: {node: '>=0.10.0'} - regjsparser@0.9.1: - resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} - hasBin: true - rehype-external-links@3.0.0: resolution: {integrity: sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw==} @@ -6644,22 +4895,10 @@ packages: resolve-alpn@1.2.1: resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} - resolve-cwd@3.0.0: - resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} - engines: {node: '>=8'} - resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} - resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - - resolve.exports@2.0.2: - resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} - engines: {node: '>=10'} - resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true @@ -6697,11 +4936,6 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rimraf@2.6.3: - resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} deprecated: Rimraf versions prior to v4 are no longer supported @@ -6766,14 +5000,6 @@ packages: scheduler@0.23.2: resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} - schema-utils@2.7.1: - resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==} - engines: {node: '>= 8.9.0'} - - schema-utils@3.3.0: - resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} - engines: {node: '>= 10.13.0'} - semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true @@ -6782,16 +5008,6 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} - engines: {node: '>=10'} - hasBin: true - - semver@7.6.2: - resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} - engines: {node: '>=10'} - hasBin: true - semver@7.6.3: resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} @@ -6808,9 +5024,6 @@ packages: serialize-javascript@6.0.0: resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} - serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - serve-handler@6.1.3: resolution: {integrity: sha512-FosMqFBNrLyeiIDvP1zgO6YoTzFYHxLDEIavhlmQ+knB2Z7l1t+kGLHkZIDN7UVWqQAmKI3D20A6F6jo3nDd4w==} @@ -6836,10 +5049,6 @@ packages: setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - shallow-clone@3.0.1: - resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} - engines: {node: '>=8'} - shallowequal@1.1.0: resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} @@ -6882,17 +5091,10 @@ packages: simple-get@3.1.1: resolution: {integrity: sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==} - sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - slash@5.1.0: - resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} - engines: {node: '>=14.16'} - slice-ansi@5.0.0: resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} @@ -6901,10 +5103,6 @@ packages: resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} engines: {node: '>=18'} - smart-buffer@4.2.0: - resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} - engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - socket.io-client@4.7.5: resolution: {integrity: sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==} engines: {node: '>=10.0.0'} @@ -6913,21 +5111,10 @@ packages: resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} engines: {node: '>=10.0.0'} - socks-proxy-agent@8.0.4: - resolution: {integrity: sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==} - engines: {node: '>= 14'} - - socks@2.8.3: - resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} - engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} - source-map-js@1.2.0: resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} engines: {node: '>=0.10.0'} - source-map-support@0.5.13: - resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} - source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} @@ -6963,12 +5150,6 @@ packages: split@0.3.3: resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==} - sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - - sprintf-js@1.1.3: - resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} - stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} @@ -6993,12 +5174,8 @@ packages: resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} engines: {node: '>= 0.4'} - storybook@8.2.2: - resolution: {integrity: sha512-xDT9gyzAEFQNeK7P+Mj/8bNzN+fbm6/4D6ihdSzmczayjydpNjMs74HDHMY6S4Bfu6tRVyEK2ALPGnr6ZVofBA==} - hasBin: true - - storybook@8.2.6: - resolution: {integrity: sha512-8j30wDxQmkcqI0fWcSYFsUCjErsY1yTWbTW+yjbwM8DyW18Cud6CwbFRCxjFsH+2M0CjP6Pqs/m1PGI0vcQscQ==} + storybook@8.3.3: + resolution: {integrity: sha512-FG2KAVQN54T9R6voudiEftehtkXtLO+YVGP2gBPfacEdDQjY++ld7kTbHzpTT/bpCDx7Yq3dqOegLm9arVJfYw==} hasBin: true stream-buffers@3.0.3: @@ -7008,17 +5185,10 @@ packages: stream-combiner@0.0.4: resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} - streamx@2.18.0: - resolution: {integrity: sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ==} - string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} - string-length@4.0.2: - resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} - engines: {node: '>=10'} - string-width@2.1.1: resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==} engines: {node: '>=4'} @@ -7083,18 +5253,10 @@ packages: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} - strip-bom@4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - strip-eof@1.0.0: resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} engines: {node: '>=0.10.0'} - strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} @@ -7154,23 +5316,13 @@ packages: symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} - tar-fs@2.0.0: resolution: {integrity: sha512-vaY0obB6Om/fso8a8vakQBzwholQ7v5+uy+tF3Ozvxv1KNezmVQAiWtcNmMHFSFPqL3dJA8ha6gdtFbfX9mcxA==} - tar-fs@3.0.5: - resolution: {integrity: sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==} - tar-stream@2.2.0: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} - tar-stream@3.1.7: - resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} - tar@6.2.1: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} @@ -7178,58 +5330,23 @@ packages: telejson@7.2.0: resolution: {integrity: sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==} - temp-dir@3.0.0: - resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} - engines: {node: '>=14.16'} - temp-fs@0.9.9: resolution: {integrity: sha512-WfecDCR1xC9b0nsrzSaxPf3ZuWeWLUWblW4vlDQAa1biQaKHiImHnJfeQocQe/hXKMcolRzgkcVX/7kK4zoWbw==} engines: {node: '>=0.8.0'} - temp@0.8.4: - resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} - engines: {node: '>=6.0.0'} - - tempy@3.1.0: - resolution: {integrity: sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==} - engines: {node: '>=14.16'} - term-size@1.2.0: resolution: {integrity: sha512-7dPUZQGy/+m3/wjVz3ZW5dobSoD/02NxJpoXUX0WIyjfVS3l0c+b/+9phIDFA7FHzkYtwtMFgeGZ/Y8jVTeqQQ==} engines: {node: '>=4'} - terser-webpack-plugin@5.3.10: - resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true - terser@5.31.6: resolution: {integrity: sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==} engines: {node: '>=10'} hasBin: true - test-exclude@6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} - test-exclude@7.0.1: resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} engines: {node: '>=18'} - text-decoder@1.1.1: - resolution: {integrity: sha512-8zll7REEv4GDD3x4/0pW+ppIxSNs7H1J10IKFZsuOMscumCdM2a+toDGLPA3T+1+fLBql4zbt5z83GEQGGV5VA==} - text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} @@ -7269,10 +5386,6 @@ packages: resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} engines: {node: '>=14.0.0'} - tinyspy@2.2.1: - resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} - engines: {node: '>=14.0.0'} - tinyspy@3.0.0: resolution: {integrity: sha512-q5nmENpTHgiPVd1cJDDc9cVoYN5x4vCvwT3FMilvKPKneCBZAxn2YWQjDF0UMcE9k0Cay1gBiDfTMU0g+mPMQA==} engines: {node: '>=14.0.0'} @@ -7281,9 +5394,6 @@ packages: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} - tmpl@1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} @@ -7388,10 +5498,6 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} @@ -7400,10 +5506,6 @@ packages: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} - type-fest@1.4.0: - resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} - engines: {node: '>=10'} - type-fest@2.19.0: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} @@ -7455,9 +5557,6 @@ packages: ua-parser-js@0.7.38: resolution: {integrity: sha512-fYmIy7fKTSFAhG3fuPlubeGaMoAd6r0rSnfEsO5nEY55i26KSLt9EH7PLQiiqPUhNqYIJvSkTy1oArIcXAbPbA==} - ufo@1.5.4: - resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} - uid@2.0.2: resolution: {integrity: sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==} engines: {node: '>=8'} @@ -7468,39 +5567,12 @@ packages: unbzip2-stream@1.3.3: resolution: {integrity: sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg==} - unbzip2-stream@1.4.3: - resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} - undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} undici-types@6.13.0: resolution: {integrity: sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==} - unicode-canonical-property-names-ecmascript@2.0.0: - resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} - engines: {node: '>=4'} - - unicode-match-property-ecmascript@2.0.0: - resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} - engines: {node: '>=4'} - - unicode-match-property-value-ecmascript@2.1.0: - resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} - engines: {node: '>=4'} - - unicode-property-aliases-ecmascript@2.1.0: - resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} - engines: {node: '>=4'} - - unicorn-magic@0.1.0: - resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} - engines: {node: '>=18'} - - unique-string@3.0.0: - resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} - engines: {node: '>=12'} - unist-util-is@6.0.0: resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} @@ -7544,9 +5616,6 @@ packages: url@0.11.3: resolution: {integrity: sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==} - urlpattern-polyfill@10.0.0: - resolution: {integrity: sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==} - use-sync-external-store@1.2.0: resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} peerDependencies: @@ -7580,10 +5649,6 @@ packages: v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - v8-to-istanbul@9.3.0: - resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} - engines: {node: '>=10.12.0'} - validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} @@ -7653,16 +5718,6 @@ packages: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} - walk-up-path@3.0.1: - resolution: {integrity: sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==} - - walker@1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - - watchpack@2.4.2: - resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} - engines: {node: '>=10.13.0'} - wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} @@ -7694,16 +5749,6 @@ packages: webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - webpack@5.93.0: - resolution: {integrity: sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - whatwg-encoding@3.1.1: resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} engines: {node: '>=18'} @@ -7781,13 +5826,6 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - write-file-atomic@2.4.3: - resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} - - write-file-atomic@4.0.2: - resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - ws@7.4.6: resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} engines: {node: '>=8.3.0'} @@ -7919,9 +5957,6 @@ packages: resolution: {integrity: sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==} engines: {node: '>= 10'} - zod@3.23.8: - resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} - zustand@3.7.2: resolution: {integrity: sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==} engines: {node: '>=12.7.0'} @@ -7970,8 +6005,7 @@ snapshots: '@babel/compat-data@7.24.8': {} - '@babel/compat-data@7.25.2': - optional: true + '@babel/compat-data@7.25.2': {} '@babel/core@7.24.8': dependencies: @@ -8012,7 +6046,6 @@ snapshots: semver: 6.3.1 transitivePeerDependencies: - supports-color - optional: true '@babel/generator@7.24.8': dependencies: @@ -8027,18 +6060,6 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 - optional: true - - '@babel/helper-annotate-as-pure@7.24.7': - dependencies: - '@babel/types': 7.24.8 - - '@babel/helper-builder-binary-assignment-operator-visitor@7.24.7': - dependencies: - '@babel/traverse': 7.24.8 - '@babel/types': 7.24.8 - transitivePeerDependencies: - - supports-color '@babel/helper-compilation-targets@7.24.8': dependencies: @@ -8055,40 +6076,6 @@ snapshots: browserslist: 4.23.3 lru-cache: 5.1.1 semver: 6.3.1 - optional: true - - '@babel/helper-create-class-features-plugin@7.24.8(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-function-name': 7.24.7 - '@babel/helper-member-expression-to-functions': 7.24.8 - '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.8) - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/helper-split-export-declaration': 7.24.7 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/helper-create-regexp-features-plugin@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-annotate-as-pure': 7.24.7 - regexpu-core: 5.3.2 - semver: 6.3.1 - - '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-compilation-targets': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - debug: 4.3.5 - lodash.debounce: 4.0.8 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color '@babel/helper-environment-visitor@7.24.7': dependencies: @@ -8101,826 +6088,77 @@ snapshots: '@babel/helper-hoist-variables@7.24.7': dependencies: - '@babel/types': 7.24.8 - - '@babel/helper-member-expression-to-functions@7.24.8': - dependencies: - '@babel/traverse': 7.24.8 - '@babel/types': 7.24.8 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-imports@7.24.7': - dependencies: - '@babel/traverse': 7.24.8 - '@babel/types': 7.24.8 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.24.8(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-simple-access': 7.24.7 - '@babel/helper-split-export-declaration': 7.24.7 - '@babel/helper-validator-identifier': 7.24.7 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-simple-access': 7.24.7 - '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.3 - transitivePeerDependencies: - - supports-color - optional: true - - '@babel/helper-optimise-call-expression@7.24.7': - dependencies: - '@babel/types': 7.24.8 - - '@babel/helper-plugin-utils@7.24.8': {} - - '@babel/helper-remap-async-to-generator@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-wrap-function': 7.24.7 - transitivePeerDependencies: - - supports-color - - '@babel/helper-replace-supers@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-member-expression-to-functions': 7.24.8 - '@babel/helper-optimise-call-expression': 7.24.7 - transitivePeerDependencies: - - supports-color - - '@babel/helper-simple-access@7.24.7': - dependencies: - '@babel/traverse': 7.24.8 - '@babel/types': 7.24.8 - transitivePeerDependencies: - - supports-color - - '@babel/helper-skip-transparent-expression-wrappers@7.24.7': - dependencies: - '@babel/traverse': 7.24.8 - '@babel/types': 7.24.8 - transitivePeerDependencies: - - supports-color - - '@babel/helper-split-export-declaration@7.24.7': - dependencies: - '@babel/types': 7.24.8 - - '@babel/helper-string-parser@7.24.8': {} - - '@babel/helper-validator-identifier@7.24.7': {} - - '@babel/helper-validator-option@7.24.8': {} - - '@babel/helper-wrap-function@7.24.7': - dependencies: - '@babel/helper-function-name': 7.24.7 - '@babel/template': 7.24.7 - '@babel/traverse': 7.24.8 - '@babel/types': 7.24.8 - transitivePeerDependencies: - - supports-color - - '@babel/helpers@7.24.8': - dependencies: - '@babel/template': 7.24.7 - '@babel/types': 7.24.8 - - '@babel/helpers@7.25.0': - dependencies: - '@babel/template': 7.25.0 - '@babel/types': 7.25.2 - optional: true - - '@babel/highlight@7.24.7': - dependencies: - '@babel/helper-validator-identifier': 7.24.7 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.0.1 - - '@babel/parser@7.24.8': - dependencies: - '@babel/types': 7.24.8 - - '@babel/parser@7.25.3': - dependencies: - '@babel/types': 7.25.2 - - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.24.8) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - optional: true - - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - optional: true - - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - optional: true - - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - optional: true - - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-flow@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-import-assertions@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - optional: true - - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - optional: true - - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - optional: true - - '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - optional: true - - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - optional: true - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - optional: true - - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - optional: true - - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - optional: true - - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - optional: true - - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - optional: true - - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - optional: true - - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - optional: true - - '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - optional: true - - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.8) - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-async-generator-functions@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-remap-async-to-generator': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.8) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-remap-async-to-generator': 7.24.7(@babel/core@7.24.8) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-block-scoping@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-class-properties@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-create-class-features-plugin': 7.24.8(@babel/core@7.24.8) - '@babel/helper-plugin-utils': 7.24.8 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-class-static-block@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-create-class-features-plugin': 7.24.8(@babel/core@7.24.8) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.8) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-classes@7.24.8(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-compilation-targets': 7.24.8 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-function-name': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.8) - '@babel/helper-split-export-declaration': 7.24.7 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/template': 7.24.7 - - '@babel/plugin-transform-destructuring@7.24.8(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-dotall-regex@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.8) - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-duplicate-keys@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-dynamic-import@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.8) - - '@babel/plugin-transform-exponentiation-operator@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.8) - - '@babel/plugin-transform-flow-strip-types@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.24.8) - - '@babel/plugin-transform-for-of@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-function-name@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-compilation-targets': 7.24.8 - '@babel/helper-function-name': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-json-strings@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.8) - - '@babel/plugin-transform-literals@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-logical-assignment-operators@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.8) - - '@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-modules-amd@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-module-transforms': 7.24.8(@babel/core@7.24.8) - '@babel/helper-plugin-utils': 7.24.8 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-commonjs@7.24.8(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-module-transforms': 7.24.8(@babel/core@7.24.8) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-simple-access': 7.24.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-systemjs@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-hoist-variables': 7.24.7 - '@babel/helper-module-transforms': 7.24.8(@babel/core@7.24.8) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-validator-identifier': 7.24.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-umd@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-module-transforms': 7.24.8(@babel/core@7.24.8) - '@babel/helper-plugin-utils': 7.24.8 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-named-capturing-groups-regex@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.8) - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-new-target@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-nullish-coalescing-operator@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.8) - - '@babel/plugin-transform-numeric-separator@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.8) - - '@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-compilation-targets': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.8) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.24.8) - - '@babel/plugin-transform-object-super@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.8) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-optional-catch-binding@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.8) - - '@babel/plugin-transform-optional-chaining@7.24.8(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.8) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-parameters@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-private-methods@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-create-class-features-plugin': 7.24.8(@babel/core@7.24.8) - '@babel/helper-plugin-utils': 7.24.8 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-private-property-in-object@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.24.8(@babel/core@7.24.8) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.8) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-regenerator@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - regenerator-transform: 0.15.2 - - '@babel/plugin-transform-reserved-words@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/types': 7.24.8 - '@babel/plugin-transform-spread@7.24.7(@babel/core@7.24.8)': + '@babel/helper-module-imports@7.24.7': dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.8 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.24.8)': + '@babel/helper-module-transforms@7.24.8(@babel/core@7.24.8)': dependencies: '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-typeof-symbol@7.24.8(@babel/core@7.24.8)': + '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + '@babel/traverse': 7.25.3 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-typescript@7.24.8(@babel/core@7.24.8)': + '@babel/helper-simple-access@7.24.7': dependencies: - '@babel/core': 7.24.8 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.24.8(@babel/core@7.24.8) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.24.8) + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.8 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-unicode-escapes@7.24.7(@babel/core@7.24.8)': + '@babel/helper-split-export-declaration@7.24.7': dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/types': 7.24.8 - '@babel/plugin-transform-unicode-property-regex@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.8) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-string-parser@7.24.8': {} - '@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.8) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-validator-identifier@7.24.7': {} - '@babel/plugin-transform-unicode-sets-regex@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.8) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-validator-option@7.24.8': {} - '@babel/preset-env@7.24.8(@babel/core@7.24.8)': + '@babel/helpers@7.24.8': dependencies: - '@babel/compat-data': 7.24.8 - '@babel/core': 7.24.8 - '@babel/helper-compilation-targets': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-validator-option': 7.24.8 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.8) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.8) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.8) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.8) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.8) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.8) - '@babel/plugin-syntax-import-assertions': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-syntax-import-attributes': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.8) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.8) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.8) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.8) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.8) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.8) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.8) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.8) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.8) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.8) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.8) - '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-async-generator-functions': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-block-scoped-functions': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-block-scoping': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-class-static-block': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-classes': 7.24.8(@babel/core@7.24.8) - '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-destructuring': 7.24.8(@babel/core@7.24.8) - '@babel/plugin-transform-dotall-regex': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-duplicate-keys': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-dynamic-import': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-exponentiation-operator': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-export-namespace-from': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-for-of': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-function-name': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-json-strings': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-literals': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-logical-assignment-operators': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-member-expression-literals': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-modules-amd': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.24.8) - '@babel/plugin-transform-modules-systemjs': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-modules-umd': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-new-target': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-numeric-separator': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-object-rest-spread': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-object-super': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-optional-catch-binding': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.24.8) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-property-literals': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-regenerator': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-reserved-words': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-template-literals': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-typeof-symbol': 7.24.8(@babel/core@7.24.8) - '@babel/plugin-transform-unicode-escapes': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-unicode-property-regex': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-unicode-sets-regex': 7.24.7(@babel/core@7.24.8) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.8) - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.8) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.8) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.8) - core-js-compat: 3.37.1 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color + '@babel/template': 7.24.7 + '@babel/types': 7.24.8 - '@babel/preset-flow@7.24.7(@babel/core@7.24.8)': + '@babel/helpers@7.25.0': dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-validator-option': 7.24.8 - '@babel/plugin-transform-flow-strip-types': 7.24.7(@babel/core@7.24.8) + '@babel/template': 7.25.0 + '@babel/types': 7.25.2 - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.8)': + '@babel/highlight@7.24.7': dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/types': 7.24.8 - esutils: 2.0.3 + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.1 - '@babel/preset-typescript@7.24.7(@babel/core@7.24.8)': + '@babel/parser@7.24.8': dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-validator-option': 7.24.8 - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.24.8) - '@babel/plugin-transform-typescript': 7.24.8(@babel/core@7.24.8) - transitivePeerDependencies: - - supports-color + '@babel/types': 7.24.8 - '@babel/register@7.24.6(@babel/core@7.24.8)': + '@babel/parser@7.25.3': dependencies: - '@babel/core': 7.24.8 - clone-deep: 4.0.1 - find-cache-dir: 2.1.0 - make-dir: 2.1.0 - pirates: 4.0.6 - source-map-support: 0.5.21 - - '@babel/regjsgen@0.8.0': {} + '@babel/types': 7.25.2 '@babel/runtime-corejs3@7.24.8': dependencies: @@ -8942,7 +6180,6 @@ snapshots: '@babel/code-frame': 7.24.7 '@babel/parser': 7.25.3 '@babel/types': 7.25.2 - optional: true '@babel/traverse@7.24.8': dependencies: @@ -8954,7 +6191,7 @@ snapshots: '@babel/helper-split-export-declaration': 7.24.7 '@babel/parser': 7.24.8 '@babel/types': 7.24.8 - debug: 4.3.5 + debug: 4.3.6 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -8970,7 +6207,6 @@ snapshots: globals: 11.12.0 transitivePeerDependencies: - supports-color - optional: true '@babel/types@7.24.8': dependencies: @@ -8978,12 +6214,6 @@ snapshots: '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 - '@babel/types@7.24.9': - dependencies: - '@babel/helper-string-parser': 7.24.8 - '@babel/helper-validator-identifier': 7.24.7 - to-fast-properties: 2.0.0 - '@babel/types@7.25.2': dependencies: '@babel/helper-string-parser': 7.24.8 @@ -8998,16 +6228,6 @@ snapshots: dependencies: '@jridgewell/trace-mapping': 0.3.9 - '@date-io/core@2.17.0': {} - - '@date-io/core@3.0.0': {} - - '@date-io/date-fns@2.17.0(date-fns@2.30.0)': - dependencies: - '@date-io/core': 2.17.0 - optionalDependencies: - date-fns: 2.30.0 - '@emotion/babel-plugin@11.12.0': dependencies: '@babel/helper-module-imports': 7.24.7 @@ -9024,14 +6244,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@emotion/cache@11.11.0': - dependencies: - '@emotion/memoize': 0.8.1 - '@emotion/sheet': 1.2.2 - '@emotion/utils': 1.4.0 - '@emotion/weak-memoize': 0.3.1 - stylis: 4.2.0 - '@emotion/cache@11.13.1': dependencies: '@emotion/memoize': 0.9.0 @@ -9046,8 +6258,6 @@ snapshots: dependencies: '@emotion/memoize': 0.9.0 - '@emotion/memoize@0.8.1': {} - '@emotion/memoize@0.9.0': {} '@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1)': @@ -9074,8 +6284,6 @@ snapshots: '@emotion/utils': 1.4.0 csstype: 3.1.3 - '@emotion/sheet@1.2.2': {} - '@emotion/sheet@1.4.0': {} '@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)': @@ -9101,8 +6309,6 @@ snapshots: '@emotion/utils@1.4.0': {} - '@emotion/weak-memoize@0.3.1': {} - '@emotion/weak-memoize@0.4.0': {} '@esbuild/aix-ppc64@0.21.5': @@ -9237,226 +6443,16 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 - '@istanbuljs/load-nyc-config@1.1.0': - dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.14.1 - resolve-from: 5.0.0 - optional: true - '@istanbuljs/schema@0.1.3': {} - '@jest/console@29.7.0': - dependencies: - '@jest/types': 29.6.3 - '@types/node': 22.2.0 - chalk: 4.1.2 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - slash: 3.0.0 - optional: true - - '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@20.14.12)(typescript@5.5.4))': - dependencies: - '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.2.0 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.9.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.2.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@20.14.12)(typescript@5.5.4)) - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-resolve-dependencies: 29.7.0 - jest-runner: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - jest-watcher: 29.7.0 - micromatch: 4.0.7 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - ts-node - optional: true - - '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@22.2.0)(typescript@5.5.4))': - dependencies: - '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.2.0 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.9.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.2.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@22.2.0)(typescript@5.5.4)) - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-resolve-dependencies: 29.7.0 - jest-runner: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - jest-watcher: 29.7.0 - micromatch: 4.0.7 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - ts-node - optional: true - - '@jest/environment@29.7.0': - dependencies: - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.2.0 - jest-mock: 29.7.0 - optional: true - '@jest/expect-utils@28.1.3': dependencies: jest-get-type: 28.0.2 - '@jest/expect-utils@29.7.0': - dependencies: - jest-get-type: 29.6.3 - optional: true - - '@jest/expect@29.7.0': - dependencies: - expect: 29.7.0 - jest-snapshot: 29.7.0 - transitivePeerDependencies: - - supports-color - optional: true - - '@jest/fake-timers@29.7.0': - dependencies: - '@jest/types': 29.6.3 - '@sinonjs/fake-timers': 10.3.0 - '@types/node': 22.2.0 - jest-message-util: 29.7.0 - jest-mock: 29.7.0 - jest-util: 29.7.0 - optional: true - - '@jest/globals@29.7.0': - dependencies: - '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0 - '@jest/types': 29.6.3 - jest-mock: 29.7.0 - transitivePeerDependencies: - - supports-color - optional: true - - '@jest/reporters@29.7.0': - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 22.2.0 - chalk: 4.1.2 - collect-v8-coverage: 1.0.2 - exit: 0.1.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - istanbul-lib-coverage: 3.2.2 - istanbul-lib-instrument: 6.0.3 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.7 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - jest-worker: 29.7.0 - slash: 3.0.0 - string-length: 4.0.2 - strip-ansi: 6.0.1 - v8-to-istanbul: 9.3.0 - transitivePeerDependencies: - - supports-color - optional: true - '@jest/schemas@28.1.3': dependencies: '@sinclair/typebox': 0.24.51 - '@jest/schemas@29.6.3': - dependencies: - '@sinclair/typebox': 0.27.8 - - '@jest/source-map@29.6.3': - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - callsites: 3.1.0 - graceful-fs: 4.2.11 - optional: true - - '@jest/test-result@29.7.0': - dependencies: - '@jest/console': 29.7.0 - '@jest/types': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.6 - collect-v8-coverage: 1.0.2 - optional: true - - '@jest/test-sequencer@29.7.0': - dependencies: - '@jest/test-result': 29.7.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - slash: 3.0.0 - optional: true - - '@jest/transform@29.7.0': - dependencies: - '@babel/core': 7.25.2 - '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.25 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 2.0.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-regex-util: 29.6.3 - jest-util: 29.7.0 - micromatch: 4.0.7 - pirates: 4.0.6 - slash: 3.0.0 - write-file-atomic: 4.0.2 - transitivePeerDependencies: - - supports-color - optional: true - '@jest/types@28.1.3': dependencies: '@jest/schemas': 28.1.3 @@ -9466,24 +6462,14 @@ snapshots: '@types/yargs': 17.0.32 chalk: 4.1.2 - '@jest/types@29.6.3': - dependencies: - '@jest/schemas': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.6 - '@types/istanbul-reports': 3.0.4 - '@types/node': 22.2.0 - '@types/yargs': 17.0.33 - chalk: 4.1.2 - optional: true - - '@jimp/bmp@0.16.13(@jimp/custom@0.16.13(debug@4.3.5))': + '@jimp/bmp@0.16.13(@jimp/custom@0.16.13(debug@4.3.6))': dependencies: '@babel/runtime': 7.24.8 - '@jimp/custom': 0.16.13(debug@4.3.5) + '@jimp/custom': 0.16.13(debug@4.3.6) '@jimp/utils': 0.16.13 bmp-js: 0.1.0 - '@jimp/core@0.16.13(debug@4.3.5)': + '@jimp/core@0.16.13(debug@4.3.6)': dependencies: '@babel/runtime': 7.24.8 '@jimp/utils': 0.16.13 @@ -9491,7 +6477,7 @@ snapshots: buffer: 5.7.1 exif-parser: 0.1.12 file-type: 16.5.4 - load-bmfont: 1.4.2(debug@4.3.5) + load-bmfont: 1.4.2(debug@4.3.6) mkdirp: 0.5.6 phin: 2.9.3 pixelmatch: 4.0.2 @@ -9499,56 +6485,56 @@ snapshots: transitivePeerDependencies: - debug - '@jimp/custom@0.16.13(debug@4.3.5)': + '@jimp/custom@0.16.13(debug@4.3.6)': dependencies: '@babel/runtime': 7.24.8 - '@jimp/core': 0.16.13(debug@4.3.5) + '@jimp/core': 0.16.13(debug@4.3.6) transitivePeerDependencies: - debug - '@jimp/gif@0.16.13(@jimp/custom@0.16.13(debug@4.3.5))': + '@jimp/gif@0.16.13(@jimp/custom@0.16.13(debug@4.3.6))': dependencies: '@babel/runtime': 7.24.8 - '@jimp/custom': 0.16.13(debug@4.3.5) + '@jimp/custom': 0.16.13(debug@4.3.6) '@jimp/utils': 0.16.13 gifwrap: 0.9.4 omggif: 1.0.10 - '@jimp/jpeg@0.16.13(@jimp/custom@0.16.13(debug@4.3.5))': + '@jimp/jpeg@0.16.13(@jimp/custom@0.16.13(debug@4.3.6))': dependencies: '@babel/runtime': 7.24.8 - '@jimp/custom': 0.16.13(debug@4.3.5) + '@jimp/custom': 0.16.13(debug@4.3.6) '@jimp/utils': 0.16.13 jpeg-js: 0.4.4 - '@jimp/plugin-resize@0.16.13(@jimp/custom@0.16.13(debug@4.3.5))': + '@jimp/plugin-resize@0.16.13(@jimp/custom@0.16.13(debug@4.3.6))': dependencies: '@babel/runtime': 7.24.8 - '@jimp/custom': 0.16.13(debug@4.3.5) + '@jimp/custom': 0.16.13(debug@4.3.6) '@jimp/utils': 0.16.13 - '@jimp/png@0.16.13(@jimp/custom@0.16.13(debug@4.3.5))': + '@jimp/png@0.16.13(@jimp/custom@0.16.13(debug@4.3.6))': dependencies: '@babel/runtime': 7.24.8 - '@jimp/custom': 0.16.13(debug@4.3.5) + '@jimp/custom': 0.16.13(debug@4.3.6) '@jimp/utils': 0.16.13 pngjs: 3.4.0 - '@jimp/tiff@0.16.13(@jimp/custom@0.16.13(debug@4.3.5))': + '@jimp/tiff@0.16.13(@jimp/custom@0.16.13(debug@4.3.6))': dependencies: '@babel/runtime': 7.24.8 - '@jimp/custom': 0.16.13(debug@4.3.5) + '@jimp/custom': 0.16.13(debug@4.3.6) utif: 2.0.1 - '@jimp/types@0.16.13(@jimp/custom@0.16.13(debug@4.3.5))': + '@jimp/types@0.16.13(@jimp/custom@0.16.13(debug@4.3.6))': dependencies: '@babel/runtime': 7.24.8 - '@jimp/bmp': 0.16.13(@jimp/custom@0.16.13(debug@4.3.5)) - '@jimp/custom': 0.16.13(debug@4.3.5) - '@jimp/gif': 0.16.13(@jimp/custom@0.16.13(debug@4.3.5)) - '@jimp/jpeg': 0.16.13(@jimp/custom@0.16.13(debug@4.3.5)) - '@jimp/png': 0.16.13(@jimp/custom@0.16.13(debug@4.3.5)) - '@jimp/tiff': 0.16.13(@jimp/custom@0.16.13(debug@4.3.5)) + '@jimp/bmp': 0.16.13(@jimp/custom@0.16.13(debug@4.3.6)) + '@jimp/custom': 0.16.13(debug@4.3.6) + '@jimp/gif': 0.16.13(@jimp/custom@0.16.13(debug@4.3.6)) + '@jimp/jpeg': 0.16.13(@jimp/custom@0.16.13(debug@4.3.6)) + '@jimp/png': 0.16.13(@jimp/custom@0.16.13(debug@4.3.6)) + '@jimp/tiff': 0.16.13(@jimp/custom@0.16.13(debug@4.3.6)) timm: 1.7.1 '@jimp/utils@0.16.13': @@ -9556,7 +6542,7 @@ snapshots: '@babel/runtime': 7.24.8 regenerator-runtime: 0.13.11 - '@joshwooding/vite-plugin-react-docgen-typescript@0.3.1(typescript@5.5.4)(vite@5.3.5(@types/node@22.2.0)(terser@5.31.6))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.3.0(typescript@5.5.4)(vite@5.3.5(@types/node@22.2.0)(terser@5.31.6))': dependencies: glob: 7.2.3 glob-promise: 4.2.2(glob@7.2.3) @@ -9580,6 +6566,7 @@ snapshots: dependencies: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 + optional: true '@jridgewell/sourcemap-codec@1.5.0': {} @@ -9593,16 +6580,6 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 - '@jsdevtools/coverage-istanbul-loader@3.0.5': - dependencies: - convert-source-map: 1.9.0 - istanbul-lib-instrument: 4.0.3 - loader-utils: 2.0.4 - merge-source-map: 1.1.0 - schema-utils: 2.7.1 - transitivePeerDependencies: - - supports-color - '@lukeed/csprng@1.1.0': {} '@mapbox/node-pre-gyp@1.0.11': @@ -9638,7 +6615,7 @@ snapshots: '@babel/runtime': 7.24.8 '@floating-ui/react-dom': 2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/types': 7.2.15(@types/react@18.3.3) - '@mui/utils': 5.16.1(@types/react@18.3.3)(react@18.3.1) + '@mui/utils': 5.16.4(@types/react@18.3.3)(react@18.3.1) '@popperjs/core': 2.11.8 clsx: 2.1.1 prop-types: 15.8.1 @@ -9664,7 +6641,7 @@ snapshots: '@mui/material': 5.16.1(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': 5.16.1(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/types': 7.2.15(@types/react@18.3.3) - '@mui/utils': 5.16.1(@types/react@18.3.3)(react@18.3.1) + '@mui/utils': 5.16.4(@types/react@18.3.3)(react@18.3.1) clsx: 2.1.1 prop-types: 15.8.1 react: 18.3.1 @@ -9681,7 +6658,7 @@ snapshots: '@mui/core-downloads-tracker': 5.16.1 '@mui/system': 5.16.1(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/types': 7.2.15(@types/react@18.3.3) - '@mui/utils': 5.16.1(@types/react@18.3.3)(react@18.3.1) + '@mui/utils': 5.16.4(@types/react@18.3.3)(react@18.3.1) '@types/react-transition-group': 4.4.10 clsx: 2.1.1 csstype: 3.1.3 @@ -9698,7 +6675,7 @@ snapshots: '@mui/private-theming@5.16.1(@types/react@18.3.3)(react@18.3.1)': dependencies: '@babel/runtime': 7.24.8 - '@mui/utils': 5.16.1(@types/react@18.3.3)(react@18.3.1) + '@mui/utils': 5.16.4(@types/react@18.3.3)(react@18.3.1) prop-types: 15.8.1 react: 18.3.1 optionalDependencies: @@ -9707,7 +6684,7 @@ snapshots: '@mui/styled-engine@5.16.1(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.24.8 - '@emotion/cache': 11.11.0 + '@emotion/cache': 11.13.1 csstype: 3.1.3 prop-types: 15.8.1 react: 18.3.1 @@ -9721,7 +6698,7 @@ snapshots: '@mui/private-theming': 5.16.1(@types/react@18.3.3)(react@18.3.1) '@mui/styled-engine': 5.16.1(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) '@mui/types': 7.2.15(@types/react@18.3.3) - '@mui/utils': 5.16.1(@types/react@18.3.3)(react@18.3.1) + '@mui/utils': 5.16.4(@types/react@18.3.3)(react@18.3.1) clsx: 2.1.1 csstype: 3.1.3 prop-types: 15.8.1 @@ -9735,16 +6712,6 @@ snapshots: optionalDependencies: '@types/react': 18.3.3 - '@mui/utils@5.16.1(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.8 - '@types/prop-types': 15.7.12 - prop-types: 15.8.1 - react: 18.3.1 - react-is: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - '@mui/utils@5.16.4(@types/react@18.3.3)(react@18.3.1)': dependencies: '@babel/runtime': 7.24.8 @@ -9761,7 +6728,7 @@ snapshots: '@babel/runtime': 7.24.8 '@mui/material': 5.16.1(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': 5.16.1(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) - '@mui/utils': 5.16.1(@types/react@18.3.3)(react@18.3.1) + '@mui/utils': 5.16.4(@types/react@18.3.3)(react@18.3.1) clsx: 1.2.1 prop-types: 15.8.1 react: 18.3.1 @@ -9873,19 +6840,6 @@ snapshots: '@popperjs/core@2.11.8': {} - '@puppeteer/browsers@2.2.3': - dependencies: - debug: 4.3.4 - extract-zip: 2.0.1 - progress: 2.0.3 - proxy-agent: 6.4.0 - semver: 7.6.0 - tar-fs: 3.0.5 - unbzip2-stream: 1.4.3 - yargs: 17.7.2 - transitivePeerDependencies: - - supports-color - '@react-spring/animated@9.6.1(react@18.3.1)': dependencies: '@react-spring/shared': 9.6.1(react@18.3.1) @@ -10033,280 +6987,120 @@ snapshots: '@sinclair/typebox@0.24.51': {} - '@sinclair/typebox@0.27.8': {} - '@sindresorhus/is@4.6.0': {} - '@sindresorhus/merge-streams@2.3.0': {} - - '@sinonjs/commons@3.0.1': - dependencies: - type-detect: 4.0.8 - optional: true - - '@sinonjs/fake-timers@10.3.0': - dependencies: - '@sinonjs/commons': 3.0.1 - optional: true - '@socket.io/component-emitter@3.1.2': {} - '@storybook/addon-actions@8.2.2(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': - dependencies: - '@storybook/global': 5.0.0 - '@types/uuid': 9.0.8 - dequal: 2.0.3 - polished: 4.3.1 - storybook: 8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)) - uuid: 9.0.1 - - '@storybook/addon-actions@8.2.6(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': + '@storybook/addon-actions@8.3.3(storybook@8.3.3)': dependencies: '@storybook/global': 5.0.0 '@types/uuid': 9.0.8 dequal: 2.0.3 polished: 4.3.1 - storybook: 8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)) + storybook: 8.3.3 uuid: 9.0.1 - '@storybook/addon-backgrounds@8.2.2(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': - dependencies: - '@storybook/global': 5.0.0 - memoizerific: 1.11.3 - storybook: 8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)) - ts-dedent: 2.2.0 - - '@storybook/addon-backgrounds@8.2.6(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': + '@storybook/addon-backgrounds@8.3.3(storybook@8.3.3)': dependencies: '@storybook/global': 5.0.0 memoizerific: 1.11.3 - storybook: 8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)) + storybook: 8.3.3 ts-dedent: 2.2.0 - '@storybook/addon-controls@8.2.2(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': - dependencies: - dequal: 2.0.3 - lodash: 4.17.21 - storybook: 8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)) - ts-dedent: 2.2.0 - - '@storybook/addon-controls@8.2.6(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': + '@storybook/addon-controls@8.3.3(storybook@8.3.3)': dependencies: + '@storybook/global': 5.0.0 dequal: 2.0.3 lodash: 4.17.21 - storybook: 8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)) - ts-dedent: 2.2.0 - - '@storybook/addon-docs@8.2.2(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': - dependencies: - '@babel/core': 7.24.8 - '@mdx-js/react': 3.0.1(@types/react@18.3.3)(react@18.3.1) - '@storybook/blocks': 8.2.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8))) - '@storybook/csf-plugin': 8.2.2(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8))) - '@storybook/global': 5.0.0 - '@storybook/react-dom-shim': 8.2.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8))) - '@types/react': 18.3.3 - fs-extra: 11.2.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - rehype-external-links: 3.0.0 - rehype-slug: 6.0.0 - storybook: 8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)) + storybook: 8.3.3 ts-dedent: 2.2.0 - transitivePeerDependencies: - - supports-color - '@storybook/addon-docs@8.2.6(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': + '@storybook/addon-docs@8.3.3(storybook@8.3.3)': dependencies: - '@babel/core': 7.24.8 '@mdx-js/react': 3.0.1(@types/react@18.3.3)(react@18.3.1) - '@storybook/blocks': 8.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8))) - '@storybook/csf-plugin': 8.2.6(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8))) + '@storybook/blocks': 8.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3) + '@storybook/csf-plugin': 8.3.3(storybook@8.3.3) '@storybook/global': 5.0.0 - '@storybook/react-dom-shim': 8.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8))) + '@storybook/react-dom-shim': 8.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3) '@types/react': 18.3.3 fs-extra: 11.2.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) rehype-external-links: 3.0.0 rehype-slug: 6.0.0 - storybook: 8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)) - ts-dedent: 2.2.0 - transitivePeerDependencies: - - supports-color - - '@storybook/addon-essentials@8.2.2(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': - dependencies: - '@storybook/addon-actions': 8.2.2(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8))) - '@storybook/addon-backgrounds': 8.2.2(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8))) - '@storybook/addon-controls': 8.2.2(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8))) - '@storybook/addon-docs': 8.2.2(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8))) - '@storybook/addon-highlight': 8.2.2(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8))) - '@storybook/addon-measure': 8.2.2(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8))) - '@storybook/addon-outline': 8.2.2(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8))) - '@storybook/addon-toolbars': 8.2.2(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8))) - '@storybook/addon-viewport': 8.2.2(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8))) - storybook: 8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)) + storybook: 8.3.3 ts-dedent: 2.2.0 - transitivePeerDependencies: - - supports-color - '@storybook/addon-essentials@8.2.6(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': - dependencies: - '@storybook/addon-actions': 8.2.6(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8))) - '@storybook/addon-backgrounds': 8.2.6(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8))) - '@storybook/addon-controls': 8.2.6(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8))) - '@storybook/addon-docs': 8.2.6(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8))) - '@storybook/addon-highlight': 8.2.6(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8))) - '@storybook/addon-measure': 8.2.6(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8))) - '@storybook/addon-outline': 8.2.6(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8))) - '@storybook/addon-toolbars': 8.2.6(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8))) - '@storybook/addon-viewport': 8.2.6(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8))) - storybook: 8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)) + '@storybook/addon-essentials@8.3.3(storybook@8.3.3)': + dependencies: + '@storybook/addon-actions': 8.3.3(storybook@8.3.3) + '@storybook/addon-backgrounds': 8.3.3(storybook@8.3.3) + '@storybook/addon-controls': 8.3.3(storybook@8.3.3) + '@storybook/addon-docs': 8.3.3(storybook@8.3.3) + '@storybook/addon-highlight': 8.3.3(storybook@8.3.3) + '@storybook/addon-measure': 8.3.3(storybook@8.3.3) + '@storybook/addon-outline': 8.3.3(storybook@8.3.3) + '@storybook/addon-toolbars': 8.3.3(storybook@8.3.3) + '@storybook/addon-viewport': 8.3.3(storybook@8.3.3) + storybook: 8.3.3 ts-dedent: 2.2.0 - transitivePeerDependencies: - - supports-color - - '@storybook/addon-highlight@8.2.2(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': - dependencies: - '@storybook/global': 5.0.0 - storybook: 8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)) - '@storybook/addon-highlight@8.2.6(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': + '@storybook/addon-highlight@8.3.3(storybook@8.3.3)': dependencies: '@storybook/global': 5.0.0 - storybook: 8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)) + storybook: 8.3.3 - '@storybook/addon-interactions@8.2.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.12)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@20.14.12)(typescript@5.5.4)))(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)))(vitest@2.0.4(@types/node@20.14.12)(jsdom@24.1.1(canvas@2.11.2))(terser@5.31.6))': + '@storybook/addon-interactions@8.3.3(storybook@8.3.3)': dependencies: '@storybook/global': 5.0.0 - '@storybook/instrumenter': 8.2.2(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8))) - '@storybook/test': 8.2.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.12)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@20.14.12)(typescript@5.5.4)))(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)))(vitest@2.0.4(@types/node@20.14.12)(jsdom@24.1.1(canvas@2.11.2))(terser@5.31.6)) + '@storybook/instrumenter': 8.3.3(storybook@8.3.3) + '@storybook/test': 8.3.3(storybook@8.3.3) polished: 4.3.1 - storybook: 8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)) + storybook: 8.3.3 ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@jest/globals' - - '@types/bun' - - '@types/jest' - - jest - - vitest - - '@storybook/addon-interactions@8.2.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.2.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@22.2.0)(typescript@5.5.4)))(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)))(vitest@2.0.4(@types/node@22.2.0)(jsdom@24.1.1(canvas@2.11.2))(terser@5.31.6))': - dependencies: - '@storybook/global': 5.0.0 - '@storybook/instrumenter': 8.2.6(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8))) - '@storybook/test': 8.2.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.2.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@22.2.0)(typescript@5.5.4)))(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)))(vitest@2.0.4(@types/node@22.2.0)(jsdom@24.1.1(canvas@2.11.2))(terser@5.31.6)) - polished: 4.3.1 - storybook: 8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)) - ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@jest/globals' - - '@types/bun' - - '@types/jest' - - jest - - vitest - - '@storybook/addon-links@8.2.2(react@18.3.1)(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': - dependencies: - '@storybook/csf': 0.1.11 - '@storybook/global': 5.0.0 - storybook: 8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)) - ts-dedent: 2.2.0 - optionalDependencies: - react: 18.3.1 - '@storybook/addon-links@8.2.6(react@18.3.1)(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': + '@storybook/addon-links@8.3.3(react@18.3.1)(storybook@8.3.3)': dependencies: '@storybook/csf': 0.1.11 '@storybook/global': 5.0.0 - storybook: 8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)) + storybook: 8.3.3 ts-dedent: 2.2.0 optionalDependencies: react: 18.3.1 - '@storybook/addon-measure@8.2.2(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': - dependencies: - '@storybook/global': 5.0.0 - storybook: 8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)) - tiny-invariant: 1.3.3 - - '@storybook/addon-measure@8.2.6(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': + '@storybook/addon-measure@8.3.3(storybook@8.3.3)': dependencies: '@storybook/global': 5.0.0 - storybook: 8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)) + storybook: 8.3.3 tiny-invariant: 1.3.3 - '@storybook/addon-onboarding@8.2.2(react@18.3.1)(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': - dependencies: - react-confetti: 6.1.0(react@18.3.1) - storybook: 8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)) - transitivePeerDependencies: - - react - - '@storybook/addon-onboarding@8.2.6(react@18.3.1)(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': + '@storybook/addon-onboarding@8.3.3(react@18.3.1)(storybook@8.3.3)': dependencies: react-confetti: 6.1.0(react@18.3.1) - storybook: 8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)) + storybook: 8.3.3 transitivePeerDependencies: - react - '@storybook/addon-outline@8.2.2(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': - dependencies: - '@storybook/global': 5.0.0 - storybook: 8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)) - ts-dedent: 2.2.0 - - '@storybook/addon-outline@8.2.6(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': + '@storybook/addon-outline@8.3.3(storybook@8.3.3)': dependencies: '@storybook/global': 5.0.0 - storybook: 8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)) + storybook: 8.3.3 ts-dedent: 2.2.0 - '@storybook/addon-toolbars@8.2.2(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': - dependencies: - storybook: 8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)) - - '@storybook/addon-toolbars@8.2.6(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': - dependencies: - storybook: 8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)) - - '@storybook/addon-viewport@8.2.2(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': - dependencies: - memoizerific: 1.11.3 - storybook: 8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)) - - '@storybook/addon-viewport@8.2.6(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': + '@storybook/addon-toolbars@8.3.3(storybook@8.3.3)': dependencies: - memoizerific: 1.11.3 - storybook: 8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)) + storybook: 8.3.3 - '@storybook/blocks@8.2.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': + '@storybook/addon-viewport@8.3.3(storybook@8.3.3)': dependencies: - '@storybook/csf': 0.1.11 - '@storybook/global': 5.0.0 - '@storybook/icons': 1.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@types/lodash': 4.17.6 - color-convert: 2.0.1 - dequal: 2.0.3 - lodash: 4.17.21 - markdown-to-jsx: 7.4.7(react@18.3.1) memoizerific: 1.11.3 - polished: 4.3.1 - react-colorful: 5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - storybook: 8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)) - telejson: 7.2.0 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - optionalDependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + storybook: 8.3.3 - '@storybook/blocks@8.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': + '@storybook/blocks@8.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3)': dependencies: '@storybook/csf': 0.1.11 '@storybook/global': 5.0.0 - '@storybook/icons': 1.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@storybook/icons': 1.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/lodash': 4.17.6 color-convert: 2.0.1 dequal: 2.0.3 @@ -10315,7 +7109,7 @@ snapshots: memoizerific: 1.11.3 polished: 4.3.1 react-colorful: 5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - storybook: 8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)) + storybook: 8.3.3 telejson: 7.2.0 ts-dedent: 2.2.0 util-deprecate: 1.0.2 @@ -10323,9 +7117,9 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@storybook/builder-vite@8.2.6(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)))(typescript@5.5.4)(vite@5.3.5(@types/node@22.2.0)(terser@5.31.6))': + '@storybook/builder-vite@8.3.3(storybook@8.3.3)(typescript@5.5.4)(vite@5.3.5(@types/node@22.2.0)(terser@5.31.6))': dependencies: - '@storybook/csf-plugin': 8.2.6(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8))) + '@storybook/csf-plugin': 8.3.3(storybook@8.3.3) '@types/find-cache-dir': 3.2.1 browser-assert: 1.2.1 es-module-lexer: 1.5.4 @@ -10333,7 +7127,7 @@ snapshots: find-cache-dir: 3.3.2 fs-extra: 11.2.0 magic-string: 0.30.10 - storybook: 8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)) + storybook: 8.3.3 ts-dedent: 2.2.0 vite: 5.3.5(@types/node@22.2.0)(terser@5.31.6) optionalDependencies: @@ -10341,61 +7135,23 @@ snapshots: transitivePeerDependencies: - supports-color - '@storybook/codemod@8.2.2': - dependencies: - '@babel/core': 7.24.8 - '@babel/preset-env': 7.24.8(@babel/core@7.24.8) - '@babel/types': 7.24.8 - '@storybook/core': 8.2.2 - '@storybook/csf': 0.1.11 - '@types/cross-spawn': 6.0.6 - cross-spawn: 7.0.3 - globby: 14.0.2 - jscodeshift: 0.15.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)) - lodash: 4.17.21 - prettier: 3.3.2 - recast: 0.23.9 - tiny-invariant: 1.3.3 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - '@storybook/codemod@8.2.6': - dependencies: - '@babel/core': 7.24.8 - '@babel/preset-env': 7.24.8(@babel/core@7.24.8) - '@babel/types': 7.24.9 - '@storybook/core': 8.2.6 - '@storybook/csf': 0.1.11 - '@types/cross-spawn': 6.0.6 - cross-spawn: 7.0.3 - globby: 14.0.2 - jscodeshift: 0.15.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)) - lodash: 4.17.21 - prettier: 3.3.3 - recast: 0.23.9 - tiny-invariant: 1.3.3 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - '@storybook/components@8.2.6(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': + '@storybook/components@8.3.3(storybook@8.3.3)': dependencies: - storybook: 8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)) + storybook: 8.3.3 - '@storybook/core@8.2.2': + '@storybook/core@8.3.3': dependencies: '@storybook/csf': 0.1.11 '@types/express': 4.17.21 - '@types/node': 18.19.39 + better-opn: 3.0.2 browser-assert: 1.2.1 esbuild: 0.21.5 esbuild-register: 3.5.0(esbuild@0.21.5) express: 4.19.2 + jsdoc-type-pratt-parser: 4.1.0 process: 0.11.10 recast: 0.23.9 + semver: 7.6.3 util: 0.12.5 ws: 8.18.0 transitivePeerDependencies: @@ -10403,32 +7159,9 @@ snapshots: - supports-color - utf-8-validate - '@storybook/core@8.2.6': - dependencies: - '@storybook/csf': 0.1.11 - '@types/express': 4.17.21 - '@types/node': 18.19.42 - browser-assert: 1.2.1 - esbuild: 0.21.5 - esbuild-register: 3.6.0(esbuild@0.21.5) - express: 4.19.2 - process: 0.11.10 - recast: 0.23.9 - util: 0.12.5 - ws: 8.18.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - '@storybook/csf-plugin@8.2.2(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': - dependencies: - storybook: 8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)) - unplugin: 1.11.0 - - '@storybook/csf-plugin@8.2.6(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': + '@storybook/csf-plugin@8.3.3(storybook@8.3.3)': dependencies: - storybook: 8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)) + storybook: 8.3.3 unplugin: 1.11.0 '@storybook/csf@0.0.1': @@ -10441,160 +7174,100 @@ snapshots: '@storybook/global@5.0.0': {} - '@storybook/icons@1.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@storybook/icons@1.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@storybook/instrumenter@8.2.2(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': - dependencies: - '@storybook/global': 5.0.0 - '@vitest/utils': 1.6.0 - storybook: 8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)) - util: 0.12.5 - - '@storybook/instrumenter@8.2.6(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': + '@storybook/instrumenter@8.3.3(storybook@8.3.3)': dependencies: '@storybook/global': 5.0.0 - '@vitest/utils': 1.6.0 - storybook: 8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)) + '@vitest/utils': 2.1.1 + storybook: 8.3.3 util: 0.12.5 - '@storybook/manager-api@8.2.6(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': - dependencies: - storybook: 8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)) - - '@storybook/preview-api@8.2.6(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': + '@storybook/manager-api@8.3.3(storybook@8.3.3)': dependencies: - storybook: 8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)) + storybook: 8.3.3 - '@storybook/react-dom-shim@8.2.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': + '@storybook/preview-api@8.3.3(storybook@8.3.3)': dependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - storybook: 8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)) + storybook: 8.3.3 - '@storybook/react-dom-shim@8.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': + '@storybook/react-dom-shim@8.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3)': dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - storybook: 8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)) + storybook: 8.3.3 - '@storybook/react-vite@8.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.19.0)(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)))(typescript@5.5.4)(vite@5.3.5(@types/node@22.2.0)(terser@5.31.6))': + '@storybook/react-vite@8.3.3(@storybook/test@8.3.3(storybook@8.3.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.19.0)(storybook@8.3.3)(typescript@5.5.4)(vite@5.3.5(@types/node@22.2.0)(terser@5.31.6))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.1(typescript@5.5.4)(vite@5.3.5(@types/node@22.2.0)(terser@5.31.6)) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.0(typescript@5.5.4)(vite@5.3.5(@types/node@22.2.0)(terser@5.31.6)) '@rollup/pluginutils': 5.1.0(rollup@4.19.0) - '@storybook/builder-vite': 8.2.6(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)))(typescript@5.5.4)(vite@5.3.5(@types/node@22.2.0)(terser@5.31.6)) - '@storybook/react': 8.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)))(typescript@5.5.4) + '@storybook/builder-vite': 8.3.3(storybook@8.3.3)(typescript@5.5.4)(vite@5.3.5(@types/node@22.2.0)(terser@5.31.6)) + '@storybook/react': 8.3.3(@storybook/test@8.3.3(storybook@8.3.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3)(typescript@5.5.4) find-up: 5.0.0 magic-string: 0.30.10 react: 18.3.1 react-docgen: 7.0.3 react-dom: 18.3.1(react@18.3.1) resolve: 1.22.8 - storybook: 8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)) + storybook: 8.3.3 tsconfig-paths: 4.2.0 vite: 5.3.5(@types/node@22.2.0)(terser@5.31.6) transitivePeerDependencies: - '@preact/preset-vite' + - '@storybook/test' - rollup - supports-color - typescript - vite-plugin-glimmerx - '@storybook/react@8.2.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)))(typescript@5.5.4)': - dependencies: - '@storybook/global': 5.0.0 - '@storybook/react-dom-shim': 8.2.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8))) - '@types/escodegen': 0.0.6 - '@types/estree': 0.0.51 - '@types/node': 18.19.39 - acorn: 7.4.1 - acorn-jsx: 5.3.2(acorn@7.4.1) - acorn-walk: 7.2.0 - escodegen: 2.1.0 - html-tags: 3.3.1 - lodash: 4.17.21 - prop-types: 15.8.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-element-to-jsx-string: 15.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - semver: 7.6.2 - storybook: 8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)) - ts-dedent: 2.2.0 - type-fest: 2.19.0 - util-deprecate: 1.0.2 - optionalDependencies: - typescript: 5.5.4 - - '@storybook/react@8.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)))(typescript@5.5.4)': + '@storybook/react@8.3.3(@storybook/test@8.3.3(storybook@8.3.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3)(typescript@5.5.4)': dependencies: - '@storybook/components': 8.2.6(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8))) + '@storybook/components': 8.3.3(storybook@8.3.3) '@storybook/global': 5.0.0 - '@storybook/manager-api': 8.2.6(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8))) - '@storybook/preview-api': 8.2.6(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8))) - '@storybook/react-dom-shim': 8.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8))) - '@storybook/theming': 8.2.6(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8))) + '@storybook/manager-api': 8.3.3(storybook@8.3.3) + '@storybook/preview-api': 8.3.3(storybook@8.3.3) + '@storybook/react-dom-shim': 8.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3) + '@storybook/theming': 8.3.3(storybook@8.3.3) '@types/escodegen': 0.0.6 '@types/estree': 0.0.51 - '@types/node': 18.19.42 + '@types/node': 22.2.0 acorn: 7.4.1 acorn-jsx: 5.3.2(acorn@7.4.1) acorn-walk: 7.2.0 escodegen: 2.1.0 html-tags: 3.3.1 - lodash: 4.17.21 prop-types: 15.8.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-element-to-jsx-string: 15.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) semver: 7.6.3 - storybook: 8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)) + storybook: 8.3.3 ts-dedent: 2.2.0 type-fest: 2.19.0 util-deprecate: 1.0.2 optionalDependencies: + '@storybook/test': 8.3.3(storybook@8.3.3) typescript: 5.5.4 - '@storybook/test@8.2.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.12)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@20.14.12)(typescript@5.5.4)))(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)))(vitest@2.0.4(@types/node@20.14.12)(jsdom@24.1.1(canvas@2.11.2))(terser@5.31.6))': - dependencies: - '@storybook/csf': 0.1.11 - '@storybook/instrumenter': 8.2.2(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8))) - '@testing-library/dom': 10.1.0 - '@testing-library/jest-dom': 6.4.5(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.12)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@20.14.12)(typescript@5.5.4)))(vitest@2.0.4(@types/node@20.14.12)(jsdom@24.1.1(canvas@2.11.2))(terser@5.31.6)) - '@testing-library/user-event': 14.5.2(@testing-library/dom@10.1.0) - '@vitest/expect': 1.6.0 - '@vitest/spy': 1.6.0 - storybook: 8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)) - util: 0.12.5 - transitivePeerDependencies: - - '@jest/globals' - - '@types/bun' - - '@types/jest' - - jest - - vitest - - '@storybook/test@8.2.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.2.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@22.2.0)(typescript@5.5.4)))(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)))(vitest@2.0.4(@types/node@22.2.0)(jsdom@24.1.1(canvas@2.11.2))(terser@5.31.6))': + '@storybook/test@8.3.3(storybook@8.3.3)': dependencies: '@storybook/csf': 0.1.11 - '@storybook/instrumenter': 8.2.6(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8))) - '@testing-library/dom': 10.1.0 - '@testing-library/jest-dom': 6.4.5(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.2.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@22.2.0)(typescript@5.5.4)))(vitest@2.0.4(@types/node@22.2.0)(jsdom@24.1.1(canvas@2.11.2))(terser@5.31.6)) - '@testing-library/user-event': 14.5.2(@testing-library/dom@10.1.0) - '@vitest/expect': 1.6.0 - '@vitest/spy': 1.6.0 - storybook: 8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)) + '@storybook/global': 5.0.0 + '@storybook/instrumenter': 8.3.3(storybook@8.3.3) + '@testing-library/dom': 10.4.0 + '@testing-library/jest-dom': 6.5.0 + '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0) + '@vitest/expect': 2.0.5 + '@vitest/spy': 2.0.5 + storybook: 8.3.3 util: 0.12.5 - transitivePeerDependencies: - - '@jest/globals' - - '@types/bun' - - '@types/jest' - - jest - - vitest - '@storybook/theming@8.2.6(storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': + '@storybook/theming@8.3.3(storybook@8.3.3)': dependencies: - storybook: 8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)) + storybook: 8.3.3 '@swc/core-darwin-arm64@1.5.7': optional: true @@ -10652,7 +7325,7 @@ snapshots: dependencies: defer-to-connect: 2.0.1 - '@testing-library/dom@10.1.0': + '@testing-library/dom@10.4.0': dependencies: '@babel/code-frame': 7.24.7 '@babel/runtime': 7.24.8 @@ -10674,37 +7347,15 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 - '@testing-library/jest-dom@6.4.5(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.12)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@20.14.12)(typescript@5.5.4)))(vitest@2.0.4(@types/node@20.14.12)(jsdom@24.1.1(canvas@2.11.2))(terser@5.31.6))': - dependencies: - '@adobe/css-tools': 4.4.0 - '@babel/runtime': 7.24.8 - aria-query: 5.3.0 - chalk: 3.0.0 - css.escape: 1.5.1 - dom-accessibility-api: 0.6.3 - lodash: 4.17.21 - redent: 3.0.0 - optionalDependencies: - '@jest/globals': 29.7.0 - '@types/jest': 29.5.12 - jest: 29.7.0(@types/node@20.14.12)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@20.14.12)(typescript@5.5.4)) - vitest: 2.0.4(@types/node@20.14.12)(jsdom@24.1.1(canvas@2.11.2))(terser@5.31.6) - - '@testing-library/jest-dom@6.4.5(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.2.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@22.2.0)(typescript@5.5.4)))(vitest@2.0.4(@types/node@22.2.0)(jsdom@24.1.1(canvas@2.11.2))(terser@5.31.6))': + '@testing-library/jest-dom@6.5.0': dependencies: '@adobe/css-tools': 4.4.0 - '@babel/runtime': 7.24.8 aria-query: 5.3.0 chalk: 3.0.0 css.escape: 1.5.1 dom-accessibility-api: 0.6.3 lodash: 4.17.21 redent: 3.0.0 - optionalDependencies: - '@jest/globals': 29.7.0 - '@types/jest': 29.5.12 - jest: 29.7.0(@types/node@22.2.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@22.2.0)(typescript@5.5.4)) - vitest: 2.0.4(@types/node@22.2.0)(jsdom@24.1.1(canvas@2.11.2))(terser@5.31.6) '@testing-library/react@14.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: @@ -10714,9 +7365,9 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@testing-library/user-event@14.5.2(@testing-library/dom@10.1.0)': + '@testing-library/user-event@14.5.2(@testing-library/dom@10.4.0)': dependencies: - '@testing-library/dom': 10.1.0 + '@testing-library/dom': 10.4.0 '@testing-library/user-event@14.5.2(@testing-library/dom@9.3.4)': dependencies: @@ -10724,8 +7375,6 @@ snapshots: '@tokenizer/token@0.3.0': {} - '@tootallnate/quickjs-emscripten@0.23.0': {} - '@tsconfig/node10@1.0.11': {} '@tsconfig/node12@1.0.11': {} @@ -10764,7 +7413,7 @@ snapshots: '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 20.14.10 + '@types/node': 22.2.0 '@types/cacheable-request@6.0.3': dependencies: @@ -10779,11 +7428,7 @@ snapshots: '@types/crc@3.8.3': dependencies: - '@types/node': 20.14.10 - - '@types/cross-spawn@6.0.6': - dependencies: - '@types/node': 20.14.10 + '@types/node': 22.2.0 '@types/debug@4.1.12': dependencies: @@ -10799,27 +7444,15 @@ snapshots: '@types/ejs@3.1.5': {} - '@types/emscripten@1.39.13': {} - '@types/escodegen@0.0.6': {} - '@types/eslint-scope@3.7.7': - dependencies: - '@types/eslint': 9.6.0 - '@types/estree': 1.0.5 - - '@types/eslint@9.6.0': - dependencies: - '@types/estree': 1.0.5 - '@types/json-schema': 7.0.15 - '@types/estree@0.0.51': {} '@types/estree@1.0.5': {} '@types/express-serve-static-core@4.19.5': dependencies: - '@types/node': 20.14.10 + '@types/node': 22.2.0 '@types/qs': 6.9.15 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -10840,12 +7473,7 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.14.12 - - '@types/graceful-fs@4.1.9': - dependencies: '@types/node': 22.2.0 - optional: true '@types/hast@3.0.4': dependencies: @@ -10872,12 +7500,6 @@ snapshots: '@types/jasmine@3.10.18': {} - '@types/jest@29.5.12': - dependencies: - expect: 29.7.0 - pretty-format: 29.7.0 - optional: true - '@types/json-schema@7.0.15': {} '@types/keyv@3.1.4': @@ -10914,22 +7536,10 @@ snapshots: '@types/node@16.9.1': {} - '@types/node@18.19.39': - dependencies: - undici-types: 5.26.5 - - '@types/node@18.19.42': - dependencies: - undici-types: 5.26.5 - '@types/node@20.14.10': dependencies: undici-types: 5.26.5 - '@types/node@20.14.12': - dependencies: - undici-types: 5.26.5 - '@types/node@22.2.0': dependencies: undici-types: 6.13.0 @@ -10946,8 +7556,6 @@ snapshots: '@types/range-parser@1.2.7': {} - '@types/rbush@3.0.3': {} - '@types/react-dom@18.3.0': dependencies: '@types/react': 18.3.3 @@ -11001,7 +7609,7 @@ snapshots: '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 20.14.10 + '@types/node': 22.2.0 '@types/send': 0.17.4 '@types/shallowequal@1.1.5': {} @@ -11050,14 +7658,9 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@types/yargs@17.0.33': - dependencies: - '@types/yargs-parser': 21.0.3 - optional: true - '@types/yauzl@2.10.3': dependencies: - '@types/node': 20.14.10 + '@types/node': 22.2.0 optional: true '@typescript-eslint/eslint-plugin@7.16.0(@typescript-eslint/parser@7.16.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)': @@ -11105,7 +7708,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 7.16.0(typescript@5.5.4) '@typescript-eslint/utils': 7.16.0(eslint@8.57.0)(typescript@5.5.4) - debug: 4.3.5 + debug: 4.3.6 eslint: 8.57.0 ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: @@ -11121,7 +7724,7 @@ snapshots: dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.5 + debug: 4.3.6 globby: 11.1.0 is-glob: 4.0.3 semver: 7.6.3 @@ -11135,7 +7738,7 @@ snapshots: dependencies: '@typescript-eslint/types': 7.16.0 '@typescript-eslint/visitor-keys': 7.16.0 - debug: 4.3.5 + debug: 4.3.6 globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.5 @@ -11193,36 +7796,18 @@ snapshots: '@use-gesture/core': 10.3.1 react: 18.3.1 - '@vitejs/plugin-react-swc@3.7.0(vite@5.3.5(@types/node@20.14.12)(terser@5.31.6))': + '@vitejs/plugin-react-swc@3.7.0(vite@5.3.5(@types/node@22.2.0)(terser@5.31.6))': dependencies: '@swc/core': 1.5.7 - vite: 5.3.5(@types/node@20.14.12)(terser@5.31.6) + vite: 5.3.5(@types/node@22.2.0)(terser@5.31.6) transitivePeerDependencies: - '@swc/helpers' - '@vitest/coverage-v8@2.0.4(vitest@2.0.4(@types/node@20.14.12)(jsdom@24.1.1(canvas@2.11.2))(terser@5.31.6))': - dependencies: - '@ampproject/remapping': 2.3.0 - '@bcoe/v8-coverage': 0.2.3 - debug: 4.3.5 - istanbul-lib-coverage: 3.2.2 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 5.0.6 - istanbul-reports: 3.1.7 - magic-string: 0.30.10 - magicast: 0.3.4 - std-env: 3.7.0 - test-exclude: 7.0.1 - tinyrainbow: 1.2.0 - vitest: 2.0.4(@types/node@20.14.12)(jsdom@24.1.1(canvas@2.11.2))(terser@5.31.6) - transitivePeerDependencies: - - supports-color - '@vitest/coverage-v8@2.0.4(vitest@2.0.4(@types/node@22.2.0)(jsdom@24.1.1(canvas@2.11.2))(terser@5.31.6))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 - debug: 4.3.5 + debug: 4.3.6 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.6 @@ -11236,12 +7821,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitest/expect@1.6.0': - dependencies: - '@vitest/spy': 1.6.0 - '@vitest/utils': 1.6.0 - chai: 4.4.1 - '@vitest/expect@2.0.4': dependencies: '@vitest/spy': 2.0.4 @@ -11249,10 +7828,25 @@ snapshots: chai: 5.1.1 tinyrainbow: 1.2.0 + '@vitest/expect@2.0.5': + dependencies: + '@vitest/spy': 2.0.5 + '@vitest/utils': 2.0.5 + chai: 5.1.1 + tinyrainbow: 1.2.0 + '@vitest/pretty-format@2.0.4': dependencies: tinyrainbow: 1.2.0 + '@vitest/pretty-format@2.0.5': + dependencies: + tinyrainbow: 1.2.0 + + '@vitest/pretty-format@2.1.1': + dependencies: + tinyrainbow: 1.2.0 + '@vitest/runner@2.0.4': dependencies: '@vitest/utils': 2.0.4 @@ -11264,20 +7858,13 @@ snapshots: magic-string: 0.30.10 pathe: 1.1.2 - '@vitest/spy@1.6.0': - dependencies: - tinyspy: 2.2.1 - '@vitest/spy@2.0.4': dependencies: tinyspy: 3.0.0 - '@vitest/utils@1.6.0': + '@vitest/spy@2.0.5': dependencies: - diff-sequences: 29.6.3 - estree-walker: 3.0.3 - loupe: 2.3.7 - pretty-format: 29.7.0 + tinyspy: 3.0.0 '@vitest/utils@2.0.4': dependencies: @@ -11286,6 +7873,19 @@ snapshots: loupe: 3.1.1 tinyrainbow: 1.2.0 + '@vitest/utils@2.0.5': + dependencies: + '@vitest/pretty-format': 2.0.5 + estree-walker: 3.0.3 + loupe: 3.1.1 + tinyrainbow: 1.2.0 + + '@vitest/utils@2.1.1': + dependencies: + '@vitest/pretty-format': 2.1.1 + loupe: 3.1.1 + tinyrainbow: 1.2.0 + '@wdio/browserstack-service@7.11.1(@wdio/cli@7.11.1)': dependencies: '@types/node': 15.14.9 @@ -11427,96 +8027,6 @@ snapshots: '@wdio/types': 7.10.1 p-iteration: 1.1.8 - '@webassemblyjs/ast@1.12.1': - dependencies: - '@webassemblyjs/helper-numbers': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - - '@webassemblyjs/floating-point-hex-parser@1.11.6': {} - - '@webassemblyjs/helper-api-error@1.11.6': {} - - '@webassemblyjs/helper-buffer@1.12.1': {} - - '@webassemblyjs/helper-numbers@1.11.6': - dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.11.6 - '@webassemblyjs/helper-api-error': 1.11.6 - '@xtuc/long': 4.2.2 - - '@webassemblyjs/helper-wasm-bytecode@1.11.6': {} - - '@webassemblyjs/helper-wasm-section@1.12.1': - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-buffer': 1.12.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/wasm-gen': 1.12.1 - - '@webassemblyjs/ieee754@1.11.6': - dependencies: - '@xtuc/ieee754': 1.2.0 - - '@webassemblyjs/leb128@1.11.6': - dependencies: - '@xtuc/long': 4.2.2 - - '@webassemblyjs/utf8@1.11.6': {} - - '@webassemblyjs/wasm-edit@1.12.1': - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-buffer': 1.12.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/helper-wasm-section': 1.12.1 - '@webassemblyjs/wasm-gen': 1.12.1 - '@webassemblyjs/wasm-opt': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 - '@webassemblyjs/wast-printer': 1.12.1 - - '@webassemblyjs/wasm-gen@1.12.1': - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/ieee754': 1.11.6 - '@webassemblyjs/leb128': 1.11.6 - '@webassemblyjs/utf8': 1.11.6 - - '@webassemblyjs/wasm-opt@1.12.1': - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-buffer': 1.12.1 - '@webassemblyjs/wasm-gen': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 - - '@webassemblyjs/wasm-parser@1.12.1': - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-api-error': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/ieee754': 1.11.6 - '@webassemblyjs/leb128': 1.11.6 - '@webassemblyjs/utf8': 1.11.6 - - '@webassemblyjs/wast-printer@1.12.1': - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@xtuc/long': 4.2.2 - - '@xtuc/ieee754@1.2.0': {} - - '@xtuc/long@4.2.2': {} - - '@yarnpkg/fslib@2.10.3': - dependencies: - '@yarnpkg/libzip': 2.3.0 - tslib: 1.14.1 - - '@yarnpkg/libzip@2.3.0': - dependencies: - '@types/emscripten': 1.39.13 - tslib: 1.14.1 - '@zeit/schemas@2.6.0': {} abbrev@1.1.1: {} @@ -11526,10 +8036,6 @@ snapshots: mime-types: 2.1.35 negotiator: 0.6.3 - acorn-import-attributes@1.9.5(acorn@8.12.1): - dependencies: - acorn: 8.12.1 - acorn-jsx@5.3.2(acorn@7.4.1): dependencies: acorn: 7.4.1 @@ -11550,20 +8056,16 @@ snapshots: agent-base@6.0.2: dependencies: - debug: 4.3.5 + debug: 4.3.6 transitivePeerDependencies: - supports-color agent-base@7.1.1: dependencies: - debug: 4.3.5 + debug: 4.3.6 transitivePeerDependencies: - supports-color - ajv-keywords@3.5.2(ajv@6.12.6): - dependencies: - ajv: 6.12.6 - ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 @@ -11619,8 +8121,6 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.1 - api-server@file:packages/api-server: {} - aproba@2.0.0: {} arch@2.2.0: {} @@ -11670,11 +8170,6 @@ snapshots: arg@4.1.3: {} - argparse@1.0.10: - dependencies: - sprintf-js: 1.0.3 - optional: true - argparse@2.0.1: {} aria-query@4.2.2: @@ -11750,14 +8245,8 @@ snapshots: is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.3 - assertion-error@1.1.0: {} - assertion-error@2.0.1: {} - ast-types@0.13.4: - dependencies: - tslib: 2.6.3 - ast-types@0.16.1: dependencies: tslib: 2.6.3 @@ -11790,44 +8279,13 @@ snapshots: transitivePeerDependencies: - debug - b4a@1.6.6: {} - - babel-core@7.0.0-bridge.0(@babel/core@7.24.8): - dependencies: - '@babel/core': 7.24.8 - - babel-jest@29.7.0(@babel/core@7.25.2): - dependencies: - '@babel/core': 7.25.2 - '@jest/transform': 29.7.0 - '@types/babel__core': 7.20.5 - babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.25.2) - chalk: 4.1.2 - graceful-fs: 4.2.11 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - optional: true - - babel-plugin-istanbul@6.1.1: + axios@1.7.4(debug@4.3.6): dependencies: - '@babel/helper-plugin-utils': 7.24.8 - '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-instrument: 5.2.1 - test-exclude: 6.0.0 + follow-redirects: 1.15.6(debug@4.3.6) + form-data: 4.0.0 + proxy-from-env: 1.1.0 transitivePeerDependencies: - - supports-color - optional: true - - babel-plugin-jest-hoist@29.6.3: - dependencies: - '@babel/template': 7.25.0 - '@babel/types': 7.25.2 - '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.20.6 - optional: true + - debug babel-plugin-macros@3.1.0: dependencies: @@ -11835,92 +8293,18 @@ snapshots: cosmiconfig: 7.1.0 resolve: 1.22.8 - babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.8): - dependencies: - '@babel/compat-data': 7.24.8 - '@babel/core': 7.24.8 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.8) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.8): - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.8) - core-js-compat: 3.37.1 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.8): - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.8) - transitivePeerDependencies: - - supports-color - - babel-preset-current-node-syntax@1.1.0(@babel/core@7.25.2): - dependencies: - '@babel/core': 7.25.2 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.2) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) - '@babel/plugin-syntax-import-attributes': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.2) - optional: true - - babel-preset-jest@29.6.3(@babel/core@7.25.2): - dependencies: - '@babel/core': 7.25.2 - babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.25.2) - optional: true - balanced-match@1.0.2: {} - bare-events@2.4.2: - optional: true - - bare-fs@2.3.1: - dependencies: - bare-events: 2.4.2 - bare-path: 2.1.3 - bare-stream: 2.1.3 - optional: true - - bare-os@2.4.0: - optional: true - - bare-path@2.1.3: - dependencies: - bare-os: 2.4.0 - optional: true - - bare-stream@2.1.3: - dependencies: - streamx: 2.18.0 - optional: true - base64-js@1.5.1: {} - basic-ftp@5.0.5: {} + better-opn@3.0.2: + dependencies: + open: 8.4.2 bidi-js@1.0.3: dependencies: require-from-string: 2.0.2 - big.js@5.2.2: {} - binary-extensions@2.3.0: {} bl@4.1.0: @@ -11999,11 +8383,6 @@ snapshots: transitivePeerDependencies: - supports-color - bser@2.1.1: - dependencies: - node-int64: 0.4.0 - optional: true - buffer-crc32@0.2.13: {} buffer-equal@0.0.1: {} @@ -12067,9 +8446,6 @@ snapshots: camelcase@4.1.0: {} - camelcase@5.3.1: - optional: true - camelcase@6.3.0: {} camera-controls@2.8.5(three@0.166.1): @@ -12089,22 +8465,12 @@ snapshots: - encoding - supports-color - centra@2.7.0(debug@4.3.5): + centra@2.7.0(debug@4.3.6): dependencies: - follow-redirects: 1.15.6(debug@4.3.5) + follow-redirects: 1.15.6(debug@4.3.6) transitivePeerDependencies: - debug - chai@4.4.1: - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.4 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.0.8 - chai@5.1.1: dependencies: assertion-error: 2.0.1 @@ -12145,15 +8511,8 @@ snapshots: chalk@5.3.0: {} - char-regex@1.0.2: - optional: true - chardet@0.7.0: {} - check-error@1.0.3: - dependencies: - get-func-name: 2.0.2 - check-error@2.1.1: {} chokidar@3.5.3: @@ -12193,24 +8552,8 @@ snapshots: transitivePeerDependencies: - supports-color - chrome-trace-event@1.0.4: {} - - chromium-bidi@0.6.0(devtools-protocol@0.0.1299070): - dependencies: - devtools-protocol: 0.0.1299070 - mitt: 3.0.1 - urlpattern-polyfill: 10.0.0 - zod: 3.23.8 - ci-info@3.9.0: {} - citty@0.1.6: - dependencies: - consola: 3.2.3 - - cjs-module-lexer@1.3.1: - optional: true - cli-boxes@1.0.0: {} cli-cursor@3.1.0: @@ -12247,12 +8590,6 @@ snapshots: strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - clone-deep@4.0.1: - dependencies: - is-plain-object: 2.0.4 - kind-of: 6.0.3 - shallow-clone: 3.0.1 - clone-response@1.0.3: dependencies: mimic-response: 1.0.1 @@ -12263,12 +8600,6 @@ snapshots: clsx@2.1.1: {} - co@4.6.0: - optional: true - - collect-v8-coverage@1.0.2: - optional: true - color-convert@1.9.3: dependencies: color-name: 1.1.3 @@ -12291,9 +8622,8 @@ snapshots: commander@12.1.0: {} - commander@2.20.3: {} - - commander@6.2.1: {} + commander@2.20.3: + optional: true commander@8.3.0: {} @@ -12349,12 +8679,8 @@ snapshots: tree-kill: 1.2.2 yargs: 17.7.2 - confbox@0.1.7: {} - consola@2.15.3: {} - consola@3.2.3: {} - console-control-strings@1.1.0: {} console.table@0.10.0: @@ -12377,10 +8703,6 @@ snapshots: cookie@0.6.0: {} - core-js-compat@3.37.1: - dependencies: - browserslist: 4.23.2 - core-js-pure@3.37.1: {} core-util-is@1.0.3: {} @@ -12393,15 +8715,6 @@ snapshots: path-type: 4.0.0 yaml: 1.10.2 - cosmiconfig@9.0.0(typescript@5.5.4): - dependencies: - env-paths: 2.2.1 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - parse-json: 5.2.0 - optionalDependencies: - typescript: 5.5.4 - crc-32@1.2.2: {} crc32-stream@4.0.3: @@ -12413,38 +8726,6 @@ snapshots: dependencies: buffer: 5.7.1 - create-jest@29.7.0(@types/node@20.14.12)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@20.14.12)(typescript@5.5.4)): - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.14.12)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@20.14.12)(typescript@5.5.4)) - jest-util: 29.7.0 - prompts: 2.4.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - optional: true - - create-jest@29.7.0(@types/node@22.2.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@22.2.0)(typescript@5.5.4)): - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@22.2.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@22.2.0)(typescript@5.5.4)) - jest-util: 29.7.0 - prompts: 2.4.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - optional: true - create-require@1.1.1: {} cross-env@7.0.3: @@ -12468,10 +8749,6 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - crypto-random-string@4.0.0: - dependencies: - type-fest: 1.4.0 - css-shorthand-properties@1.1.1: {} css-value@0.0.1: {} @@ -12484,8 +8761,6 @@ snapshots: csstype@3.1.3: {} - data-uri-to-buffer@6.0.2: {} - data-urls@5.0.0: dependencies: whatwg-mimetype: 4.0.0 @@ -12529,10 +8804,6 @@ snapshots: optionalDependencies: supports-color: 8.1.1 - debug@4.3.4: - dependencies: - ms: 2.1.2 - debug@4.3.5: dependencies: ms: 2.1.2 @@ -12553,15 +8824,6 @@ snapshots: dependencies: mimic-response: 3.1.0 - dedent@1.5.3(babel-plugin-macros@3.1.0): - optionalDependencies: - babel-plugin-macros: 3.1.0 - optional: true - - deep-eql@4.1.4: - dependencies: - type-detect: 4.0.8 - deep-eql@5.0.2: {} deep-equal@2.2.3: @@ -12603,20 +8865,14 @@ snapshots: es-errors: 1.3.0 gopd: 1.0.1 + define-lazy-prop@2.0.0: {} + define-properties@1.2.1: dependencies: define-data-property: 1.1.4 has-property-descriptors: 1.0.2 object-keys: 1.1.1 - defu@6.1.4: {} - - degenerator@5.0.1: - dependencies: - ast-types: 0.13.4 - escodegen: 2.1.0 - esprima: 4.0.1 - delayed-stream@1.0.0: {} delegates@1.0.0: {} @@ -12631,15 +8887,8 @@ snapshots: dependencies: webgl-constants: 1.1.1 - detect-indent@6.1.0: {} - detect-libc@2.0.3: {} - detect-newline@3.1.0: - optional: true - - devtools-protocol@0.0.1299070: {} - devtools-protocol@0.0.901419: {} devtools-protocol@0.0.915197: {} @@ -12665,8 +8914,6 @@ snapshots: diff-sequences@28.1.1: {} - diff-sequences@29.6.3: {} - diff@4.0.2: {} diff@5.0.0: {} @@ -12727,17 +8974,12 @@ snapshots: electron-to-chromium@1.5.7: {} - emittery@0.13.1: - optional: true - emoji-regex@10.3.0: {} emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} - emojis-list@3.0.0: {} - encodeurl@1.0.2: {} end-of-stream@1.4.4: @@ -12747,7 +8989,7 @@ snapshots: engine.io-client@6.5.4: dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.3.5 + debug: 4.3.6 engine.io-parser: 5.2.3 ws: 8.17.1 xmlhttprequest-ssl: 2.0.0 @@ -12758,17 +9000,8 @@ snapshots: engine.io-parser@5.2.3: {} - enhanced-resolve@5.17.1: - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.1 - entities@4.5.0: {} - env-paths@2.2.1: {} - - envinfo@7.13.0: {} - error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 @@ -12881,14 +9114,7 @@ snapshots: esbuild-register@3.5.0(esbuild@0.21.5): dependencies: - debug: 4.3.5 - esbuild: 0.21.5 - transitivePeerDependencies: - - supports-color - - esbuild-register@3.6.0(esbuild@0.21.5): - dependencies: - debug: 4.3.5 + debug: 4.3.6 esbuild: 0.21.5 transitivePeerDependencies: - supports-color @@ -13077,8 +9303,6 @@ snapshots: eventemitter3@5.0.1: {} - events@3.3.0: {} - execa@0.7.0: dependencies: cross-spawn: 5.1.0 @@ -13099,18 +9323,6 @@ snapshots: signal-exit: 3.0.7 strip-eof: 1.0.0 - execa@5.1.1: - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - execa@8.0.1: dependencies: cross-spawn: 7.0.3 @@ -13125,9 +9337,6 @@ snapshots: exif-parser@0.1.12: {} - exit@0.1.2: - optional: true - expect-webdriverio@3.6.0: dependencies: expect: 28.1.3 @@ -13141,15 +9350,6 @@ snapshots: jest-message-util: 28.1.3 jest-util: 28.1.3 - expect@29.7.0: - dependencies: - '@jest/expect-utils': 29.7.0 - jest-get-type: 29.6.3 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - optional: true - express@4.19.2: dependencies: accepts: 1.3.8 @@ -13194,7 +9394,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.3.5 + debug: 4.3.6 get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -13208,8 +9408,6 @@ snapshots: fast-equals@4.0.3: {} - fast-fifo@1.3.2: {} - fast-glob@3.3.2: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -13232,15 +9430,6 @@ snapshots: dependencies: reusify: 1.0.4 - fb-watchman@2.0.2: - dependencies: - bser: 2.1.1 - optional: true - - fd-package-json@1.2.0: - dependencies: - walk-up-path: 3.0.1 - fd-slicer@1.1.0: dependencies: pend: 1.2.0 @@ -13257,12 +9446,6 @@ snapshots: dependencies: flat-cache: 3.2.0 - file-loader@6.2.0(webpack@5.93.0(@swc/core@1.5.7)(esbuild@0.21.5)): - dependencies: - loader-utils: 2.0.4 - schema-utils: 3.3.0 - webpack: 5.93.0(@swc/core@1.5.7)(esbuild@0.21.5) - file-type@16.5.4: dependencies: readable-web-to-node-stream: 3.0.2 @@ -13287,13 +9470,7 @@ snapshots: statuses: 2.0.1 unpipe: 1.0.0 transitivePeerDependencies: - - supports-color - - find-cache-dir@2.1.0: - dependencies: - commondir: 1.0.1 - make-dir: 2.1.0 - pkg-dir: 3.0.0 + - supports-color find-cache-dir@3.3.2: dependencies: @@ -13308,10 +9485,6 @@ snapshots: path-exists: 2.1.0 pinkie-promise: 2.0.1 - find-up@3.0.0: - dependencies: - locate-path: 3.0.0 - find-up@4.1.0: dependencies: locate-path: 5.0.0 @@ -13332,12 +9505,14 @@ snapshots: flatted@3.3.1: {} - flow-parser@0.239.1: {} - follow-redirects@1.15.6(debug@4.3.5): optionalDependencies: debug: 4.3.5 + follow-redirects@1.15.6(debug@4.3.6): + optionalDependencies: + debug: 4.3.6 + for-each@0.3.3: dependencies: is-callable: 1.2.7 @@ -13425,9 +9600,6 @@ snapshots: has-symbols: 1.0.3 hasown: 2.0.2 - get-package-type@0.1.0: - optional: true - get-port@5.1.1: {} get-stream@3.0.0: {} @@ -13436,8 +9608,6 @@ snapshots: dependencies: pump: 3.0.0 - get-stream@6.0.1: {} - get-stream@8.0.1: {} get-symbol-description@1.0.2: @@ -13446,31 +9616,11 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.2.4 - get-uri@6.0.3: - dependencies: - basic-ftp: 5.0.5 - data-uri-to-buffer: 6.0.2 - debug: 4.3.5 - fs-extra: 11.2.0 - transitivePeerDependencies: - - supports-color - gifwrap@0.9.4: dependencies: image-q: 4.0.0 omggif: 1.0.10 - giget@1.2.3: - dependencies: - citty: 0.1.6 - consola: 3.2.3 - defu: 6.1.4 - node-fetch-native: 1.6.4 - nypm: 0.3.9 - ohash: 1.1.3 - pathe: 1.1.2 - tar: 6.2.1 - github-slugger@2.0.0: {} glob-parent@5.1.2: @@ -13486,8 +9636,6 @@ snapshots: '@types/glob': 7.2.0 glob: 7.2.3 - glob-to-regexp@0.4.1: {} - glob@10.4.5: dependencies: foreground-child: 3.2.1 @@ -13549,15 +9697,6 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 - globby@14.0.2: - dependencies: - '@sindresorhus/merge-streams': 2.3.0 - fast-glob: 3.3.2 - ignore: 5.3.1 - path-type: 5.0.0 - slash: 5.1.0 - unicorn-magic: 0.1.0 - globule@1.3.4: dependencies: glob: 7.1.7 @@ -13592,8 +9731,6 @@ snapshots: growl@1.10.5: {} - harmony-reflect@1.6.2: {} - has-ansi@2.0.0: dependencies: ansi-regex: 2.1.1 @@ -13669,7 +9806,7 @@ snapshots: http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.1 - debug: 4.3.5 + debug: 4.3.6 transitivePeerDependencies: - supports-color @@ -13681,33 +9818,31 @@ snapshots: https-proxy-agent@5.0.0: dependencies: agent-base: 6.0.2 - debug: 4.3.5 + debug: 4.3.6 transitivePeerDependencies: - supports-color https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.3.5 + debug: 4.3.6 transitivePeerDependencies: - supports-color https-proxy-agent@7.0.4: dependencies: agent-base: 7.1.1 - debug: 4.3.5 + debug: 4.3.6 transitivePeerDependencies: - supports-color https-proxy-agent@7.0.5: dependencies: agent-base: 7.1.1 - debug: 4.3.5 + debug: 4.3.6 transitivePeerDependencies: - supports-color - human-signals@2.1.0: {} - human-signals@5.0.0: {} husky@9.0.11: {} @@ -13720,10 +9855,6 @@ snapshots: dependencies: safer-buffer: 2.1.2 - identity-obj-proxy@3.0.0: - dependencies: - harmony-reflect: 1.6.2 - ieee754@1.2.1: {} ignore@5.3.1: {} @@ -13742,12 +9873,6 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 - import-local@3.2.0: - dependencies: - pkg-dir: 4.2.0 - resolve-cwd: 3.0.0 - optional: true - imurmurhash@0.1.4: {} indent-string@3.2.0: {} @@ -13787,11 +9912,6 @@ snapshots: hasown: 2.0.2 side-channel: 1.0.6 - ip-address@9.0.5: - dependencies: - jsbn: 1.1.0 - sprintf-js: 1.1.3 - ipaddr.js@1.9.1: {} is-absolute-url@4.0.1: {} @@ -13863,9 +9983,6 @@ snapshots: is-function@1.0.2: {} - is-generator-fn@2.1.0: - optional: true - is-generator-function@1.0.10: dependencies: has-tostringtag: 1.0.2 @@ -13890,10 +10007,6 @@ snapshots: is-plain-obj@2.1.0: {} - is-plain-object@2.0.4: - dependencies: - isobject: 3.0.1 - is-plain-object@5.0.0: {} is-potential-custom-element-name@1.0.1: {} @@ -13915,8 +10028,6 @@ snapshots: is-stream@1.1.0: {} - is-stream@2.0.1: {} - is-stream@3.0.0: {} is-string@1.0.7: @@ -13956,60 +10067,18 @@ snapshots: isexe@2.0.0: {} - isobject@3.0.1: {} - istanbul-lib-coverage@3.2.2: {} - istanbul-lib-instrument@4.0.3: - dependencies: - '@babel/core': 7.24.8 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.2 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - istanbul-lib-instrument@5.2.1: - dependencies: - '@babel/core': 7.25.2 - '@babel/parser': 7.25.3 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.2 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - optional: true - - istanbul-lib-instrument@6.0.3: - dependencies: - '@babel/core': 7.25.2 - '@babel/parser': 7.25.3 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.2 - semver: 7.6.3 - transitivePeerDependencies: - - supports-color - optional: true - istanbul-lib-report@3.0.1: dependencies: istanbul-lib-coverage: 3.2.2 make-dir: 4.0.0 supports-color: 7.2.0 - istanbul-lib-source-maps@4.0.1: - dependencies: - debug: 4.3.6 - istanbul-lib-coverage: 3.2.2 - source-map: 0.6.1 - transitivePeerDependencies: - - supports-color - optional: true - istanbul-lib-source-maps@5.0.6: dependencies: '@jridgewell/trace-mapping': 0.3.25 - debug: 4.3.5 + debug: 4.3.6 istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: - supports-color @@ -14044,409 +10113,43 @@ snapshots: dependencies: async: 3.2.5 chalk: 4.1.2 - filelist: 1.0.4 - minimatch: 3.1.2 - - jasmine-core@3.99.1: {} - - jasmine@3.99.0: - dependencies: - glob: 7.2.3 - jasmine-core: 3.99.1 - - jest-changed-files@29.7.0: - dependencies: - execa: 5.1.1 - jest-util: 29.7.0 - p-limit: 3.1.0 - optional: true - - jest-circus@29.7.0(babel-plugin-macros@3.1.0): - dependencies: - '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.2.0 - chalk: 4.1.2 - co: 4.6.0 - dedent: 1.5.3(babel-plugin-macros@3.1.0) - is-generator-fn: 2.1.0 - jest-each: 29.7.0 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - p-limit: 3.1.0 - pretty-format: 29.7.0 - pure-rand: 6.1.0 - slash: 3.0.0 - stack-utils: 2.0.6 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - optional: true - - jest-cli@29.7.0(@types/node@20.14.12)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@20.14.12)(typescript@5.5.4)): - dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@20.14.12)(typescript@5.5.4)) - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.14.12)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@20.14.12)(typescript@5.5.4)) - exit: 0.1.2 - import-local: 3.2.0 - jest-config: 29.7.0(@types/node@20.14.12)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@20.14.12)(typescript@5.5.4)) - jest-util: 29.7.0 - jest-validate: 29.7.0 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - optional: true - - jest-cli@29.7.0(@types/node@22.2.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@22.2.0)(typescript@5.5.4)): - dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@22.2.0)(typescript@5.5.4)) - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.2.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@22.2.0)(typescript@5.5.4)) - exit: 0.1.2 - import-local: 3.2.0 - jest-config: 29.7.0(@types/node@22.2.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@22.2.0)(typescript@5.5.4)) - jest-util: 29.7.0 - jest-validate: 29.7.0 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - optional: true - - jest-config@29.7.0(@types/node@20.14.12)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@20.14.12)(typescript@5.5.4)): - dependencies: - '@babel/core': 7.25.2 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.25.2) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0(babel-plugin-macros@3.1.0) - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.7 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 20.14.12 - ts-node: 10.9.2(@swc/core@1.5.7)(@types/node@20.14.12)(typescript@5.5.4) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - optional: true - - jest-config@29.7.0(@types/node@22.2.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@20.14.12)(typescript@5.5.4)): - dependencies: - '@babel/core': 7.25.2 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.25.2) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0(babel-plugin-macros@3.1.0) - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.7 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 22.2.0 - ts-node: 10.9.2(@swc/core@1.5.7)(@types/node@20.14.12)(typescript@5.5.4) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - optional: true - - jest-config@29.7.0(@types/node@22.2.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@22.2.0)(typescript@5.5.4)): - dependencies: - '@babel/core': 7.25.2 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.25.2) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0(babel-plugin-macros@3.1.0) - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.7 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 22.2.0 - ts-node: 10.9.2(@swc/core@1.5.7)(@types/node@22.2.0)(typescript@5.5.4) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - optional: true - - jest-diff@28.1.3: - dependencies: - chalk: 4.1.2 - diff-sequences: 28.1.1 - jest-get-type: 28.0.2 - pretty-format: 28.1.3 - - jest-diff@29.7.0: - dependencies: - chalk: 4.1.2 - diff-sequences: 29.6.3 - jest-get-type: 29.6.3 - pretty-format: 29.7.0 - optional: true - - jest-docblock@29.7.0: - dependencies: - detect-newline: 3.1.0 - optional: true - - jest-each@29.7.0: - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - jest-get-type: 29.6.3 - jest-util: 29.7.0 - pretty-format: 29.7.0 - optional: true - - jest-environment-node@29.7.0: - dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.2.0 - jest-mock: 29.7.0 - jest-util: 29.7.0 - optional: true - - jest-get-type@28.0.2: {} - - jest-get-type@29.6.3: - optional: true - - jest-haste-map@29.7.0: - dependencies: - '@jest/types': 29.6.3 - '@types/graceful-fs': 4.1.9 - '@types/node': 22.2.0 - anymatch: 3.1.3 - fb-watchman: 2.0.2 - graceful-fs: 4.2.11 - jest-regex-util: 29.6.3 - jest-util: 29.7.0 - jest-worker: 29.7.0 - micromatch: 4.0.7 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.3 - optional: true - - jest-leak-detector@29.7.0: - dependencies: - jest-get-type: 29.6.3 - pretty-format: 29.7.0 - optional: true - - jest-matcher-utils@28.1.3: - dependencies: - chalk: 4.1.2 - jest-diff: 28.1.3 - jest-get-type: 28.0.2 - pretty-format: 28.1.3 - - jest-matcher-utils@29.7.0: - dependencies: - chalk: 4.1.2 - jest-diff: 29.7.0 - jest-get-type: 29.6.3 - pretty-format: 29.7.0 - optional: true - - jest-message-util@28.1.3: - dependencies: - '@babel/code-frame': 7.24.7 - '@jest/types': 28.1.3 - '@types/stack-utils': 2.0.3 - chalk: 4.1.2 - graceful-fs: 4.2.11 - micromatch: 4.0.7 - pretty-format: 28.1.3 - slash: 3.0.0 - stack-utils: 2.0.6 - - jest-message-util@29.7.0: - dependencies: - '@babel/code-frame': 7.24.7 - '@jest/types': 29.6.3 - '@types/stack-utils': 2.0.3 - chalk: 4.1.2 - graceful-fs: 4.2.11 - micromatch: 4.0.7 - pretty-format: 29.7.0 - slash: 3.0.0 - stack-utils: 2.0.6 - optional: true - - jest-mock@29.7.0: - dependencies: - '@jest/types': 29.6.3 - '@types/node': 22.2.0 - jest-util: 29.7.0 - optional: true - - jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): - optionalDependencies: - jest-resolve: 29.7.0 - optional: true + filelist: 1.0.4 + minimatch: 3.1.2 - jest-regex-util@29.6.3: - optional: true + jasmine-core@3.99.1: {} - jest-resolve-dependencies@29.7.0: + jasmine@3.99.0: dependencies: - jest-regex-util: 29.6.3 - jest-snapshot: 29.7.0 - transitivePeerDependencies: - - supports-color - optional: true + glob: 7.2.3 + jasmine-core: 3.99.1 - jest-resolve@29.7.0: + jest-diff@28.1.3: dependencies: chalk: 4.1.2 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) - jest-util: 29.7.0 - jest-validate: 29.7.0 - resolve: 1.22.8 - resolve.exports: 2.0.2 - slash: 3.0.0 - optional: true + diff-sequences: 28.1.1 + jest-get-type: 28.0.2 + pretty-format: 28.1.3 - jest-runner@29.7.0: - dependencies: - '@jest/console': 29.7.0 - '@jest/environment': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.2.0 - chalk: 4.1.2 - emittery: 0.13.1 - graceful-fs: 4.2.11 - jest-docblock: 29.7.0 - jest-environment-node: 29.7.0 - jest-haste-map: 29.7.0 - jest-leak-detector: 29.7.0 - jest-message-util: 29.7.0 - jest-resolve: 29.7.0 - jest-runtime: 29.7.0 - jest-util: 29.7.0 - jest-watcher: 29.7.0 - jest-worker: 29.7.0 - p-limit: 3.1.0 - source-map-support: 0.5.13 - transitivePeerDependencies: - - supports-color - optional: true + jest-get-type@28.0.2: {} - jest-runtime@29.7.0: + jest-matcher-utils@28.1.3: dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/globals': 29.7.0 - '@jest/source-map': 29.6.3 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.2.0 chalk: 4.1.2 - cjs-module-lexer: 1.3.1 - collect-v8-coverage: 1.0.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-mock: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - slash: 3.0.0 - strip-bom: 4.0.0 - transitivePeerDependencies: - - supports-color - optional: true + jest-diff: 28.1.3 + jest-get-type: 28.0.2 + pretty-format: 28.1.3 - jest-snapshot@29.7.0: + jest-message-util@28.1.3: dependencies: - '@babel/core': 7.25.2 - '@babel/generator': 7.25.0 - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.25.2) - '@babel/types': 7.25.2 - '@jest/expect-utils': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.25.2) + '@babel/code-frame': 7.24.7 + '@jest/types': 28.1.3 + '@types/stack-utils': 2.0.3 chalk: 4.1.2 - expect: 29.7.0 graceful-fs: 4.2.11 - jest-diff: 29.7.0 - jest-get-type: 29.6.3 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - natural-compare: 1.4.0 - pretty-format: 29.7.0 - semver: 7.6.3 - transitivePeerDependencies: - - supports-color - optional: true + micromatch: 4.0.7 + pretty-format: 28.1.3 + slash: 3.0.0 + stack-utils: 2.0.6 jest-util@28.1.3: dependencies: @@ -14457,122 +10160,17 @@ snapshots: graceful-fs: 4.2.11 picomatch: 2.3.1 - jest-util@29.7.0: - dependencies: - '@jest/types': 29.6.3 - '@types/node': 22.2.0 - chalk: 4.1.2 - ci-info: 3.9.0 - graceful-fs: 4.2.11 - picomatch: 2.3.1 - optional: true - - jest-validate@29.7.0: - dependencies: - '@jest/types': 29.6.3 - camelcase: 6.3.0 - chalk: 4.1.2 - jest-get-type: 29.6.3 - leven: 3.1.0 - pretty-format: 29.7.0 - optional: true - - jest-watcher@29.7.0: - dependencies: - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.2.0 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - emittery: 0.13.1 - jest-util: 29.7.0 - string-length: 4.0.2 - optional: true - - jest-worker@27.5.1: - dependencies: - '@types/node': 22.2.0 - merge-stream: 2.0.0 - supports-color: 8.1.1 - - jest-worker@29.7.0: - dependencies: - '@types/node': 22.2.0 - jest-util: 29.7.0 - merge-stream: 2.0.0 - supports-color: 8.1.1 - optional: true - - jest@29.7.0(@types/node@20.14.12)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@20.14.12)(typescript@5.5.4)): - dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@20.14.12)(typescript@5.5.4)) - '@jest/types': 29.6.3 - import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@20.14.12)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@20.14.12)(typescript@5.5.4)) - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - optional: true - - jest@29.7.0(@types/node@22.2.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@22.2.0)(typescript@5.5.4)): - dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@22.2.0)(typescript@5.5.4)) - '@jest/types': 29.6.3 - import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@22.2.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.5.7)(@types/node@22.2.0)(typescript@5.5.4)) - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - optional: true - jpeg-js@0.4.4: {} js-sha256@0.11.0: {} js-tokens@4.0.0: {} - js-yaml@3.14.1: - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - optional: true - js-yaml@4.1.0: dependencies: argparse: 2.0.1 - jsbn@1.1.0: {} - - jscodeshift@0.15.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)): - dependencies: - '@babel/core': 7.24.8 - '@babel/parser': 7.24.8 - '@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.24.8) - '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.24.8) - '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.24.8) - '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.24.8) - '@babel/preset-flow': 7.24.7(@babel/core@7.24.8) - '@babel/preset-typescript': 7.24.7(@babel/core@7.24.8) - '@babel/register': 7.24.6(@babel/core@7.24.8) - babel-core: 7.0.0-bridge.0(@babel/core@7.24.8) - chalk: 4.1.2 - flow-parser: 0.239.1 - graceful-fs: 4.2.11 - micromatch: 4.0.7 - neo-async: 2.6.2 - node-dir: 0.1.17 - recast: 0.23.9 - temp: 0.8.4 - write-file-atomic: 2.4.3 - optionalDependencies: - '@babel/preset-env': 7.24.8(@babel/core@7.24.8) - transitivePeerDependencies: - - supports-color + jsdoc-type-pratt-parser@4.1.0: {} jsdom@24.1.1(canvas@2.11.2): dependencies: @@ -14604,8 +10202,6 @@ snapshots: - supports-color - utf-8-validate - jsesc@0.5.0: {} - jsesc@2.5.2: {} json-buffer@3.0.1: {} @@ -14642,18 +10238,12 @@ snapshots: dependencies: json-buffer: 3.0.1 - kind-of@6.0.3: {} - - kleur@3.0.3: {} - ky@0.28.7: {} lazystream@1.0.1: dependencies: readable-stream: 2.3.8 - leven@3.1.0: {} - levn@0.4.1: dependencies: prelude-ls: 1.2.1 @@ -14698,14 +10288,14 @@ snapshots: rfdc: 1.4.1 wrap-ansi: 9.0.0 - load-bmfont@1.4.2(debug@4.3.5): + load-bmfont@1.4.2(debug@4.3.6): dependencies: buffer-equal: 0.0.1 mime: 1.6.0 parse-bmfont-ascii: 1.0.6 parse-bmfont-binary: 1.0.6 parse-bmfont-xml: 1.1.6 - phin: 3.7.1(debug@4.3.5) + phin: 3.7.1(debug@4.3.6) xhr: 2.6.0 xtend: 4.0.2 transitivePeerDependencies: @@ -14719,19 +10309,6 @@ snapshots: pinkie-promise: 2.0.1 strip-bom: 2.0.0 - loader-runner@4.3.0: {} - - loader-utils@2.0.4: - dependencies: - big.js: 5.2.2 - emojis-list: 3.0.0 - json5: 2.2.3 - - locate-path@3.0.0: - dependencies: - p-locate: 3.0.0 - path-exists: 3.0.0 - locate-path@5.0.0: dependencies: p-locate: 4.1.0 @@ -14742,8 +10319,6 @@ snapshots: lodash.clonedeep@4.5.0: {} - lodash.debounce@4.0.8: {} - lodash.defaults@4.2.0: {} lodash.difference@4.5.0: {} @@ -14787,10 +10362,6 @@ snapshots: dependencies: js-tokens: 4.0.0 - loupe@2.3.7: - dependencies: - get-func-name: 2.0.2 - loupe@3.1.1: dependencies: get-func-name: 2.0.2 @@ -14808,12 +10379,6 @@ snapshots: dependencies: yallist: 3.1.1 - lru-cache@6.0.0: - dependencies: - yallist: 4.0.0 - - lru-cache@7.18.3: {} - lz-string@1.5.0: {} maath@0.10.8(@types/three@0.166.0)(three@0.166.1): @@ -14831,15 +10396,10 @@ snapshots: magicast@0.3.4: dependencies: - '@babel/parser': 7.24.8 - '@babel/types': 7.24.8 + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 source-map-js: 1.2.0 - make-dir@2.1.0: - dependencies: - pify: 4.0.1 - semver: 5.7.2 - make-dir@3.1.0: dependencies: semver: 6.3.1 @@ -14850,11 +10410,6 @@ snapshots: make-error@1.3.6: {} - makeerror@1.0.12: - dependencies: - tmpl: 1.0.5 - optional: true - map-obj@1.0.1: {} map-or-similar@1.5.0: {} @@ -14877,10 +10432,6 @@ snapshots: merge-descriptors@1.0.1: {} - merge-source-map@1.1.0: - dependencies: - source-map: 0.6.1 - merge-stream@2.0.0: {} merge2@1.4.1: {} @@ -14967,21 +10518,12 @@ snapshots: minipass: 3.3.6 yallist: 4.0.0 - mitt@3.0.1: {} - mkdirp@0.5.6: dependencies: minimist: 1.2.8 mkdirp@1.0.4: {} - mlly@1.7.1: - dependencies: - acorn: 8.12.1 - pathe: 1.1.2 - pkg-types: 1.1.3 - ufo: 1.5.4 - mocha@9.2.2: dependencies: '@ungap/promise-all-settled': 1.1.2 @@ -15027,34 +10569,21 @@ snapshots: negotiator@0.6.3: {} - neo-async@2.6.2: {} - - netmask@2.0.2: {} - - node-dir@0.1.17: - dependencies: - minimatch: 3.1.2 - - node-fetch-native@1.6.4: {} - node-fetch@2.6.1: {} node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 - node-int64@0.4.0: - optional: true - node-releases@2.0.14: {} node-releases@2.0.18: {} - node-vibrant@3.1.6(debug@4.3.5): + node-vibrant@3.1.6(debug@4.3.6): dependencies: - '@jimp/custom': 0.16.13(debug@4.3.5) - '@jimp/plugin-resize': 0.16.13(@jimp/custom@0.16.13(debug@4.3.5)) - '@jimp/types': 0.16.13(@jimp/custom@0.16.13(debug@4.3.5)) + '@jimp/custom': 0.16.13(debug@4.3.6) + '@jimp/plugin-resize': 0.16.13(@jimp/custom@0.16.13(debug@4.3.6)) + '@jimp/types': 0.16.13(@jimp/custom@0.16.13(debug@4.3.6)) '@types/lodash': 4.17.6 '@types/node': 10.17.60 lodash: 4.17.21 @@ -15081,10 +10610,6 @@ snapshots: dependencies: path-key: 2.0.1 - npm-run-path@4.0.1: - dependencies: - path-key: 3.1.1 - npm-run-path@5.3.0: dependencies: path-key: 4.0.0 @@ -15098,15 +10623,6 @@ snapshots: nwsapi@2.2.12: {} - nypm@0.3.9: - dependencies: - citty: 0.1.6 - consola: 3.2.3 - execa: 8.0.1 - pathe: 1.1.2 - pkg-types: 1.1.3 - ufo: 1.5.4 - object-assign@4.1.1: {} object-inspect@1.13.2: {} @@ -15144,8 +10660,6 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.0.0 - ohash@1.1.3: {} - omggif@1.0.10: {} on-finished@2.4.1: @@ -15166,6 +10680,12 @@ snapshots: dependencies: mimic-fn: 4.0.0 + open@8.4.2: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -15203,10 +10723,6 @@ snapshots: dependencies: yocto-queue: 0.1.0 - p-locate@3.0.0: - dependencies: - p-limit: 2.3.0 - p-locate@4.1.0: dependencies: p-limit: 2.3.0 @@ -15217,24 +10733,6 @@ snapshots: p-try@2.2.0: {} - pac-proxy-agent@7.0.2: - dependencies: - '@tootallnate/quickjs-emscripten': 0.23.0 - agent-base: 7.1.1 - debug: 4.3.5 - get-uri: 6.0.3 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.5 - pac-resolver: 7.0.1 - socks-proxy-agent: 8.0.4 - transitivePeerDependencies: - - supports-color - - pac-resolver@7.0.1: - dependencies: - degenerator: 5.0.1 - netmask: 2.0.2 - package-json-from-dist@1.0.0: {} pako@1.0.11: {} @@ -15279,8 +10777,6 @@ snapshots: dependencies: pinkie-promise: 2.0.1 - path-exists@3.0.0: {} - path-exists@4.0.0: {} path-is-absolute@1.0.1: {} @@ -15314,12 +10810,8 @@ snapshots: path-type@4.0.0: {} - path-type@5.0.0: {} - pathe@1.1.2: {} - pathval@1.1.1: {} - pathval@2.0.0: {} pause-stream@0.0.11: @@ -15332,9 +10824,9 @@ snapshots: phin@2.9.3: {} - phin@3.7.1(debug@4.3.5): + phin@3.7.1(debug@4.3.6): dependencies: - centra: 2.7.0(debug@4.3.5) + centra: 2.7.0(debug@4.3.6) transitivePeerDependencies: - debug @@ -15346,34 +10838,20 @@ snapshots: pify@2.3.0: {} - pify@4.0.1: {} - pinkie-promise@2.0.1: dependencies: pinkie: 2.0.4 pinkie@2.0.4: {} - pirates@4.0.6: {} - pixelmatch@4.0.2: dependencies: pngjs: 3.4.0 - pkg-dir@3.0.0: - dependencies: - find-up: 3.0.0 - pkg-dir@4.2.0: dependencies: find-up: 4.1.0 - pkg-types@1.1.3: - dependencies: - confbox: 0.1.7 - mlly: 1.7.1 - pathe: 1.1.2 - pngjs@3.4.0: {} polished@4.3.1: @@ -15394,8 +10872,6 @@ snapshots: prettier@3.3.2: {} - prettier@3.3.3: {} - pretty-format@27.5.1: dependencies: ansi-regex: 5.0.1 @@ -15409,12 +10885,6 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.3.1 - pretty-format@29.7.0: - dependencies: - '@jest/schemas': 29.6.3 - ansi-styles: 5.2.0 - react-is: 18.3.1 - pretty-ms@7.0.1: dependencies: parse-ms: 2.1.0 @@ -15425,18 +10895,11 @@ snapshots: progress@2.0.1: {} - progress@2.0.3: {} - promise-worker-transferable@1.0.4: dependencies: is-promise: 2.2.2 lie: 3.3.0 - prompts@2.4.2: - dependencies: - kleur: 3.0.3 - sisteransi: 1.0.5 - prop-types@15.8.1: dependencies: loose-envify: 1.4.0 @@ -15448,19 +10911,6 @@ snapshots: forwarded: 0.2.0 ipaddr.js: 1.9.1 - proxy-agent@6.4.0: - dependencies: - agent-base: 7.1.1 - debug: 4.3.5 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.5 - lru-cache: 7.18.3 - pac-proxy-agent: 7.0.2 - proxy-from-env: 1.1.0 - socks-proxy-agent: 8.0.4 - transitivePeerDependencies: - - supports-color - proxy-from-env@1.1.0: {} ps-tree@1.2.0: @@ -15499,33 +10949,6 @@ snapshots: - supports-color - utf-8-validate - puppeteer-core@22.13.0: - dependencies: - '@puppeteer/browsers': 2.2.3 - chromium-bidi: 0.6.0(devtools-protocol@0.0.1299070) - debug: 4.3.5 - devtools-protocol: 0.0.1299070 - ws: 8.18.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - puppeteer@22.13.0(typescript@5.5.4): - dependencies: - '@puppeteer/browsers': 2.2.3 - cosmiconfig: 9.0.0(typescript@5.5.4) - devtools-protocol: 0.0.1299070 - puppeteer-core: 22.13.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - typescript - - utf-8-validate - - pure-rand@6.1.0: - optional: true - pyright@1.1.369: optionalDependencies: fsevents: 2.3.3 @@ -15544,12 +10967,8 @@ snapshots: queue-microtask@1.2.3: {} - queue-tick@1.0.1: {} - quick-lru@5.1.1: {} - quickselect@2.0.0: {} - randombytes@2.1.0: dependencies: safe-buffer: 5.2.1 @@ -15565,10 +10984,6 @@ snapshots: iconv-lite: 0.4.24 unpipe: 1.0.0 - rbush@3.0.1: - dependencies: - quickselect: 2.0.0 - rc@1.2.8: dependencies: deep-extend: 0.6.0 @@ -15601,9 +11016,9 @@ snapshots: react-docgen@7.0.3: dependencies: - '@babel/core': 7.24.8 - '@babel/traverse': 7.24.8 - '@babel/types': 7.24.8 + '@babel/core': 7.25.2 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.6 '@types/doctrine': 0.0.9 @@ -15784,20 +11199,10 @@ snapshots: globalthis: 1.0.4 which-builtin-type: 1.1.4 - regenerate-unicode-properties@10.1.1: - dependencies: - regenerate: 1.4.2 - - regenerate@1.4.2: {} - regenerator-runtime@0.13.11: {} regenerator-runtime@0.14.1: {} - regenerator-transform@0.15.2: - dependencies: - '@babel/runtime': 7.24.8 - regexp.prototype.flags@1.5.2: dependencies: call-bind: 1.0.7 @@ -15805,15 +11210,6 @@ snapshots: es-errors: 1.3.0 set-function-name: 2.0.2 - regexpu-core@5.3.2: - dependencies: - '@babel/regjsgen': 0.8.0 - regenerate: 1.4.2 - regenerate-unicode-properties: 10.1.1 - regjsparser: 0.9.1 - unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.1.0 - registry-auth-token@3.3.2: dependencies: rc: 1.2.8 @@ -15823,10 +11219,6 @@ snapshots: dependencies: rc: 1.2.8 - regjsparser@0.9.1: - dependencies: - jsesc: 0.5.0 - rehype-external-links@3.0.0: dependencies: '@types/hast': 3.0.4 @@ -15858,19 +11250,8 @@ snapshots: resolve-alpn@1.2.1: {} - resolve-cwd@3.0.0: - dependencies: - resolve-from: 5.0.0 - optional: true - resolve-from@4.0.0: {} - resolve-from@5.0.0: - optional: true - - resolve.exports@2.0.2: - optional: true - resolve@1.22.8: dependencies: is-core-module: 2.14.0 @@ -15905,13 +11286,9 @@ snapshots: rfdc@1.4.1: {} - rgb2hex@0.2.5: {} - - rimraf@2.5.4: - dependencies: - glob: 7.2.3 + rgb2hex@0.2.5: {} - rimraf@2.6.3: + rimraf@2.5.4: dependencies: glob: 7.2.3 @@ -15994,28 +11371,10 @@ snapshots: dependencies: loose-envify: 1.4.0 - schema-utils@2.7.1: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) - - schema-utils@3.3.0: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) - semver@5.7.2: {} semver@6.3.1: {} - semver@7.6.0: - dependencies: - lru-cache: 6.0.0 - - semver@7.6.2: {} - semver@7.6.3: {} send@0.18.0: @@ -16044,10 +11403,6 @@ snapshots: dependencies: randombytes: 2.1.0 - serialize-javascript@6.0.2: - dependencies: - randombytes: 2.1.0 - serve-handler@6.1.3: dependencies: bytes: 3.0.0 @@ -16102,10 +11457,6 @@ snapshots: setprototypeof@1.2.0: {} - shallow-clone@3.0.1: - dependencies: - kind-of: 6.0.3 - shallowequal@1.1.0: {} shebang-command@1.2.0: @@ -16143,12 +11494,8 @@ snapshots: once: 1.4.0 simple-concat: 1.0.1 - sisteransi@1.0.5: {} - slash@3.0.0: {} - slash@5.1.0: {} - slice-ansi@5.0.0: dependencies: ansi-styles: 6.2.1 @@ -16159,8 +11506,6 @@ snapshots: ansi-styles: 6.2.1 is-fullwidth-code-point: 5.0.0 - smart-buffer@4.2.0: {} - socket.io-client@4.7.5: dependencies: '@socket.io/component-emitter': 3.1.2 @@ -16175,31 +11520,12 @@ snapshots: socket.io-parser@4.2.4: dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.3.5 - transitivePeerDependencies: - - supports-color - - socks-proxy-agent@8.0.4: - dependencies: - agent-base: 7.1.1 - debug: 4.3.5 - socks: 2.8.3 + debug: 4.3.6 transitivePeerDependencies: - supports-color - socks@2.8.3: - dependencies: - ip-address: 9.0.5 - smart-buffer: 4.2.0 - source-map-js@1.2.0: {} - source-map-support@0.5.13: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - optional: true - source-map-support@0.5.21: dependencies: buffer-from: 1.1.2 @@ -16235,11 +11561,6 @@ snapshots: dependencies: through: 2.3.8 - sprintf-js@1.0.3: - optional: true - - sprintf-js@1.1.3: {} - stack-utils@2.0.6: dependencies: escape-string-regexp: 2.0.0 @@ -16260,74 +11581,10 @@ snapshots: dependencies: internal-slot: 1.0.7 - storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)): - dependencies: - '@babel/core': 7.24.8 - '@babel/types': 7.24.8 - '@storybook/codemod': 8.2.2 - '@storybook/core': 8.2.2 - '@types/semver': 7.5.8 - '@yarnpkg/fslib': 2.10.3 - '@yarnpkg/libzip': 2.3.0 - chalk: 4.1.2 - commander: 6.2.1 - cross-spawn: 7.0.3 - detect-indent: 6.1.0 - envinfo: 7.13.0 - execa: 5.1.1 - fd-package-json: 1.2.0 - find-up: 5.0.0 - fs-extra: 11.2.0 - giget: 1.2.3 - globby: 14.0.2 - jscodeshift: 0.15.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)) - leven: 3.1.0 - ora: 5.4.1 - prettier: 3.3.2 - prompts: 2.4.2 - semver: 7.6.2 - strip-json-comments: 3.1.1 - tempy: 3.1.0 - tiny-invariant: 1.3.3 - ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@babel/preset-env' - - bufferutil - - supports-color - - utf-8-validate - - storybook@8.2.6(@babel/preset-env@7.24.8(@babel/core@7.24.8)): + storybook@8.3.3: dependencies: - '@babel/core': 7.24.8 - '@babel/types': 7.24.9 - '@storybook/codemod': 8.2.6 - '@storybook/core': 8.2.6 - '@types/semver': 7.5.8 - '@yarnpkg/fslib': 2.10.3 - '@yarnpkg/libzip': 2.3.0 - chalk: 4.1.2 - commander: 6.2.1 - cross-spawn: 7.0.3 - detect-indent: 6.1.0 - envinfo: 7.13.0 - execa: 5.1.1 - fd-package-json: 1.2.0 - find-up: 5.0.0 - fs-extra: 11.2.0 - giget: 1.2.3 - globby: 14.0.2 - jscodeshift: 0.15.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)) - leven: 3.1.0 - ora: 5.4.1 - prettier: 3.3.3 - prompts: 2.4.2 - semver: 7.6.3 - strip-json-comments: 3.1.1 - tempy: 3.1.0 - tiny-invariant: 1.3.3 - ts-dedent: 2.2.0 + '@storybook/core': 8.3.3 transitivePeerDependencies: - - '@babel/preset-env' - bufferutil - supports-color - utf-8-validate @@ -16338,22 +11595,8 @@ snapshots: dependencies: duplexer: 0.1.2 - streamx@2.18.0: - dependencies: - fast-fifo: 1.3.2 - queue-tick: 1.0.1 - text-decoder: 1.1.1 - optionalDependencies: - bare-events: 2.4.2 - string-argv@0.3.2: {} - string-length@4.0.2: - dependencies: - char-regex: 1.0.2 - strip-ansi: 6.0.1 - optional: true - string-width@2.1.1: dependencies: is-fullwidth-code-point: 2.0.0 @@ -16446,13 +11689,8 @@ snapshots: strip-bom@3.0.0: {} - strip-bom@4.0.0: - optional: true - strip-eof@1.0.0: {} - strip-final-newline@2.0.0: {} - strip-final-newline@3.0.0: {} strip-indent@3.0.0: @@ -16498,8 +11736,6 @@ snapshots: symbol-tree@3.2.4: {} - tapable@2.2.1: {} - tar-fs@2.0.0: dependencies: chownr: 1.1.4 @@ -16507,14 +11743,6 @@ snapshots: pump: 3.0.0 tar-stream: 2.2.0 - tar-fs@3.0.5: - dependencies: - pump: 3.0.0 - tar-stream: 3.1.7 - optionalDependencies: - bare-fs: 2.3.1 - bare-path: 2.1.3 - tar-stream@2.2.0: dependencies: bl: 4.1.0 @@ -16523,12 +11751,6 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 - tar-stream@3.1.7: - dependencies: - b4a: 1.6.6 - fast-fifo: 1.3.2 - streamx: 2.18.0 - tar@6.2.1: dependencies: chownr: 2.0.0 @@ -16542,51 +11764,20 @@ snapshots: dependencies: memoizerific: 1.11.3 - temp-dir@3.0.0: {} - temp-fs@0.9.9: dependencies: rimraf: 2.5.4 - temp@0.8.4: - dependencies: - rimraf: 2.6.3 - - tempy@3.1.0: - dependencies: - is-stream: 3.0.0 - temp-dir: 3.0.0 - type-fest: 2.19.0 - unique-string: 3.0.0 - term-size@1.2.0: dependencies: execa: 0.7.0 - terser-webpack-plugin@5.3.10(@swc/core@1.5.7)(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.5.7)(esbuild@0.21.5)): - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - jest-worker: 27.5.1 - schema-utils: 3.3.0 - serialize-javascript: 6.0.2 - terser: 5.31.6 - webpack: 5.93.0(@swc/core@1.5.7)(esbuild@0.21.5) - optionalDependencies: - '@swc/core': 1.5.7 - esbuild: 0.21.5 - terser@5.31.6: dependencies: '@jridgewell/source-map': 0.3.6 acorn: 8.12.1 commander: 2.20.3 source-map-support: 0.5.21 - - test-exclude@6.0.0: - dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 7.2.3 - minimatch: 3.1.2 optional: true test-exclude@7.0.1: @@ -16595,10 +11786,6 @@ snapshots: glob: 10.4.5 minimatch: 9.0.5 - text-decoder@1.1.1: - dependencies: - b4a: 1.6.6 - text-table@0.2.0: {} three-mesh-bvh@0.7.6(three@0.166.1): @@ -16631,17 +11818,12 @@ snapshots: tinyrainbow@1.2.0: {} - tinyspy@2.2.1: {} - tinyspy@3.0.0: {} tmp@0.0.33: dependencies: os-tmpdir: 1.0.2 - tmpl@1.0.5: - optional: true - to-fast-properties@2.0.0: {} to-regex-range@5.0.1: @@ -16690,48 +11872,7 @@ snapshots: ts-dedent@2.2.0: {} - ts-node@10.9.2(@swc/core@1.5.7)(@types/node@20.14.12)(typescript@5.1.6): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 20.14.12 - acorn: 8.12.1 - acorn-walk: 8.3.3 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.1.6 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.5.7 - - ts-node@10.9.2(@swc/core@1.5.7)(@types/node@20.14.12)(typescript@5.5.4): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 20.14.12 - acorn: 8.12.1 - acorn-walk: 8.3.3 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.5.4 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.5.7 - optional: true - - ts-node@10.9.2(@swc/core@1.5.7)(@types/node@22.2.0)(typescript@5.5.4): + ts-node@10.9.2(@swc/core@1.5.7)(@types/node@22.2.0)(typescript@5.1.6): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -16745,12 +11886,11 @@ snapshots: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.5.4 + typescript: 5.1.6 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: '@swc/core': 1.5.7 - optional: true ts-node@9.1.1(typescript@5.5.4): dependencies: @@ -16793,14 +11933,10 @@ snapshots: dependencies: prelude-ls: 1.2.1 - type-detect@4.0.8: {} - type-fest@0.20.2: {} type-fest@0.21.3: {} - type-fest@1.4.0: {} - type-fest@2.19.0: {} type-is@1.6.18: @@ -16854,11 +11990,11 @@ snapshots: typescript-json-schema@0.64.0(@swc/core@1.5.7): dependencies: '@types/json-schema': 7.0.15 - '@types/node': 20.14.12 + '@types/node': 22.2.0 glob: 7.2.3 path-equal: 1.2.5 safe-stable-stringify: 2.4.3 - ts-node: 10.9.2(@swc/core@1.5.7)(@types/node@20.14.12)(typescript@5.1.6) + ts-node: 10.9.2(@swc/core@1.5.7)(@types/node@22.2.0)(typescript@5.1.6) typescript: 5.1.6 yargs: 17.7.2 transitivePeerDependencies: @@ -16871,8 +12007,6 @@ snapshots: ua-parser-js@0.7.38: {} - ufo@1.5.4: {} - uid@2.0.2: dependencies: '@lukeed/csprng': 1.1.0 @@ -16889,32 +12023,10 @@ snapshots: buffer: 5.7.1 through: 2.3.8 - unbzip2-stream@1.4.3: - dependencies: - buffer: 5.7.1 - through: 2.3.8 - undici-types@5.26.5: {} undici-types@6.13.0: {} - unicode-canonical-property-names-ecmascript@2.0.0: {} - - unicode-match-property-ecmascript@2.0.0: - dependencies: - unicode-canonical-property-names-ecmascript: 2.0.0 - unicode-property-aliases-ecmascript: 2.1.0 - - unicode-match-property-value-ecmascript@2.1.0: {} - - unicode-property-aliases-ecmascript@2.1.0: {} - - unicorn-magic@0.1.0: {} - - unique-string@3.0.0: - dependencies: - crypto-random-string: 4.0.0 - unist-util-is@6.0.0: dependencies: '@types/unist': 3.0.2 @@ -16974,8 +12086,6 @@ snapshots: punycode: 1.4.1 qs: 6.12.3 - urlpattern-polyfill@10.0.0: {} - use-sync-external-store@1.2.0(react@18.3.1): dependencies: react: 18.3.1 @@ -17004,13 +12114,6 @@ snapshots: v8-compile-cache-lib@3.0.1: {} - v8-to-istanbul@9.3.0: - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - '@types/istanbul-lib-coverage': 2.0.6 - convert-source-map: 2.0.0 - optional: true - validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 @@ -17018,27 +12121,10 @@ snapshots: vary@1.1.2: {} - vite-node@2.0.4(@types/node@20.14.12)(terser@5.31.6): - dependencies: - cac: 6.7.14 - debug: 4.3.5 - pathe: 1.1.2 - tinyrainbow: 1.2.0 - vite: 5.3.5(@types/node@20.14.12)(terser@5.31.6) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - vite-node@2.0.4(@types/node@22.2.0)(terser@5.31.6): dependencies: cac: 6.7.14 - debug: 4.3.5 + debug: 4.3.6 pathe: 1.1.2 tinyrainbow: 1.2.0 vite: 5.3.5(@types/node@22.2.0)(terser@5.31.6) @@ -17052,16 +12138,6 @@ snapshots: - supports-color - terser - vite@5.3.5(@types/node@20.14.12)(terser@5.31.6): - dependencies: - esbuild: 0.21.5 - postcss: 8.4.39 - rollup: 4.19.0 - optionalDependencies: - '@types/node': 20.14.12 - fsevents: 2.3.3 - terser: 5.31.6 - vite@5.3.5(@types/node@22.2.0)(terser@5.31.6): dependencies: esbuild: 0.21.5 @@ -17072,39 +12148,6 @@ snapshots: fsevents: 2.3.3 terser: 5.31.6 - vitest@2.0.4(@types/node@20.14.12)(jsdom@24.1.1(canvas@2.11.2))(terser@5.31.6): - dependencies: - '@ampproject/remapping': 2.3.0 - '@vitest/expect': 2.0.4 - '@vitest/pretty-format': 2.0.4 - '@vitest/runner': 2.0.4 - '@vitest/snapshot': 2.0.4 - '@vitest/spy': 2.0.4 - '@vitest/utils': 2.0.4 - chai: 5.1.1 - debug: 4.3.5 - execa: 8.0.1 - magic-string: 0.30.10 - pathe: 1.1.2 - std-env: 3.7.0 - tinybench: 2.8.0 - tinypool: 1.0.0 - tinyrainbow: 1.2.0 - vite: 5.3.5(@types/node@20.14.12)(terser@5.31.6) - vite-node: 2.0.4(@types/node@20.14.12)(terser@5.31.6) - why-is-node-running: 2.3.0 - optionalDependencies: - '@types/node': 20.14.12 - jsdom: 24.1.1(canvas@2.11.2) - transitivePeerDependencies: - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - vitest@2.0.4(@types/node@22.2.0)(jsdom@24.1.1(canvas@2.11.2))(terser@5.31.6): dependencies: '@ampproject/remapping': 2.3.0 @@ -17142,18 +12185,6 @@ snapshots: dependencies: xml-name-validator: 5.0.0 - walk-up-path@3.0.1: {} - - walker@1.0.8: - dependencies: - makeerror: 1.0.12 - optional: true - - watchpack@2.4.2: - dependencies: - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - wcwidth@1.0.1: dependencies: defaults: 1.0.4 @@ -17218,37 +12249,6 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.93.0(@swc/core@1.5.7)(esbuild@0.21.5): - dependencies: - '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.5 - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/wasm-edit': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 - acorn: 8.12.1 - acorn-import-attributes: 1.9.5(acorn@8.12.1) - browserslist: 4.23.3 - chrome-trace-event: 1.0.4 - enhanced-resolve: 5.17.1 - es-module-lexer: 1.5.4 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 3.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.5.7)(esbuild@0.21.5)(webpack@5.93.0(@swc/core@1.5.7)(esbuild@0.21.5)) - watchpack: 2.4.2 - webpack-sources: 3.2.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - whatwg-encoding@3.1.1: dependencies: iconv-lite: 0.6.3 @@ -17354,18 +12354,6 @@ snapshots: wrappy@1.0.2: {} - write-file-atomic@2.4.3: - dependencies: - graceful-fs: 4.2.11 - imurmurhash: 0.1.4 - signal-exit: 3.0.7 - - write-file-atomic@4.0.2: - dependencies: - imurmurhash: 0.1.4 - signal-exit: 3.0.7 - optional: true - ws@7.4.6: {} ws@8.17.1: {} @@ -17462,8 +12450,6 @@ snapshots: compress-commons: 4.1.2 readable-stream: 3.6.2 - zod@3.23.8: {} - zustand@3.7.2(react@18.3.1): optionalDependencies: react: 18.3.1