diff --git a/.eslintrc.js b/.eslintrc.js index d570a3b9a866..2522e23f609c 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -81,8 +81,7 @@ module.exports = { "jsx-a11y/heading-has-content": "off", "jsx-a11y/anchor-has-content": "off", }, - overrides: [ - ], + overrides: [], settings: { "import/resolver": { webpack: { diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md index bb40d2b6ca6b..d9be01211370 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.md +++ b/.github/ISSUE_TEMPLATE/bug-report.md @@ -31,3 +31,4 @@ N/A + diff --git a/.github/workflows/build-fleetd-base-msi.yml b/.github/workflows/build-fleetd-base-msi.yml new file mode 100644 index 000000000000..c3149f524d72 --- /dev/null +++ b/.github/workflows/build-fleetd-base-msi.yml @@ -0,0 +1,109 @@ +# This workflow can be used to build a fleetd-base.msi package +# that can be hosted on a local server to test Autopilot workflows. +# +# Output is the fleetd-base.msi itself and the corresponding meta.json. +# Both files should be served at the stable/ path. +name: Build and codesign fleetd-base.msi + +on: + workflow_dispatch: # allow manual action + inputs: + orbit-channel: + description: "TUF channel for the orbit component" + required: false + default: "stable" + type: string + osqueryd-channel: + description: "TUF channel for the osqueryd component" + required: false + default: "stable" + type: string + desktop-channel: + description: "TUF channel for the Fleet Desktop component" + required: false + default: "stable" + type: string + base-url: + description: "URL that will host the generated fleetd-base.msi and meta.json at stable/" + required: true + type: string + +defaults: + run: + # fail-fast using bash -eo pipefail. See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#exit-codes-and-error-action-preference + shell: bash + +permissions: + contents: read + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Harden Runner + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 + with: + egress-policy: audit + + - name: Install fleetctl + run: npm install -g fleetctl + + - name: Build MSI + id: build-msi + run: | + fleetctl package --type msi \ + --fleet-desktop \ + --fleet-url dummy \ + --enroll-secret dummy \ + --orbit-channel ${{ github.event.inputs.orbit-channel }} \ + --osqueryd-channel ${{ github.event.inputs.osqueryd-channel }} \ + --desktop-channel ${{ github.event.inputs.desktop-channel }} + mv fleet-osquery*.msi fleetd-base.msi + + - name: Upload fleetd-base.msi for code signing + uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # 4.3.3 + with: + name: unsigned-windows + path: fleetd-base.msi + + code-sign: + needs: build + uses: ./.github/workflows/code-sign-windows.yml + with: + filename: fleetd-base.msi + upload_name: fleetd-base-msi + secrets: + DIGICERT_KEYLOCKER_CERTIFICATE: ${{ secrets.DIGICERT_KEYLOCKER_CERTIFICATE }} + DIGICERT_KEYLOCKER_PASSWORD: ${{ secrets.DIGICERT_KEYLOCKER_PASSWORD }} + DIGICERT_KEYLOCKER_HOST_URL: ${{ secrets.DIGICERT_KEYLOCKER_HOST_URL }} + DIGICERT_API_KEY: ${{ secrets.DIGICERT_API_KEY }} + DIGICERT_KEYLOCKER_CERTIFICATE_FINGERPRINT: ${{ secrets.DIGICERT_KEYLOCKER_CERTIFICATE_FINGERPRINT }} + + generate: + needs: [build, code-sign] + runs-on: ubuntu-latest + steps: + - name: Download signed artifact + uses: actions/download-artifact@9c19ed7fe5d278cd354c7dfd5d3b88589c7e2395 # v4.1.6 + with: + name: fleetd-base-msi + + - name: Hash fleetd-base.msi + run: | + echo "fleetd_base_msi_sha256=$(shasum -a 256 fleetd-base.msi | cut -d ' ' -f 1)" >> $GITHUB_ENV + + - name: Generate meta.json + run: | + + echo '{ + "fleetd_base_msi_url": "${{ github.event.inputs.base-url }}/stable/fleetd-base.msi", + "fleetd_base_msi_sha256": "${{ env.fleetd_base_msi_sha256 }}" + }' > meta.json + : # Check that meta.json is valid + jq -e . >/dev/null 2>&1 <<< $(cat meta.json) + + - name: Upload meta.json + uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # 4.3.3 + with: + name: meta.json + path: meta.json \ No newline at end of file diff --git a/.github/workflows/build-fleetd_tables.yaml b/.github/workflows/build-fleetd_tables.yaml index 45d7a73b4a76..56adcdd4b3ef 100644 --- a/.github/workflows/build-fleetd_tables.yaml +++ b/.github/workflows/build-fleetd_tables.yaml @@ -34,7 +34,7 @@ jobs: - name: Build binaries run: make fleetd-tables-all - - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v2 + - uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 with: name: fleetd_tables path: fleetd_tables_* diff --git a/.github/workflows/build-orbit.yaml b/.github/workflows/build-orbit.yaml index 002d2657f6ed..790e4e2712b1 100644 --- a/.github/workflows/build-orbit.yaml +++ b/.github/workflows/build-orbit.yaml @@ -73,7 +73,7 @@ jobs: ORBIT_COMMIT: ${{ github.sha }} - name: Upload orbit - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v2 + uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 with: name: orbit path: | diff --git a/.github/workflows/deploy-fleet-website.yml b/.github/workflows/deploy-fleet-website.yml index cd61ac458b2a..ac7e3c0b95e3 100644 --- a/.github/workflows/deploy-fleet-website.yml +++ b/.github/workflows/deploy-fleet-website.yml @@ -31,7 +31,7 @@ jobs: strategy: matrix: - node-version: [16.x] + node-version: [20.x] steps: - name: Harden Runner diff --git a/.github/workflows/dogfood-gitops.yml b/.github/workflows/dogfood-gitops.yml index be7b92df68ab..ada707cb8af6 100644 --- a/.github/workflows/dogfood-gitops.yml +++ b/.github/workflows/dogfood-gitops.yml @@ -66,7 +66,6 @@ jobs: DOGFOOD_FAILING_POLICIES_WEBHOOK_URL: ${{ secrets.DOGFOOD_FAILING_POLICIES_WEBHOOK_URL }} DOGFOOD_VULNERABILITIES_WEBHOOK_URL: ${{ secrets.DOGFOOD_VULNERABILITIES_WEBHOOK_URL }} DOGFOOD_WORKSTATIONS_ENROLL_SECRET: ${{ secrets.DOGFOOD_WORKSTATIONS_ENROLL_SECRET }} - DOGFOOD_WORKSTATIONS_CANARY_CALENDAR_WEBHOOK_URL: ${{ secrets.DOGFOOD_WORKSTATIONS_CANARY_CALENDAR_WEBHOOK_URL }} DOGFOOD_WORKSTATIONS_CANARY_ENROLL_SECRET: ${{ secrets.DOGFOOD_WORKSTATIONS_CANARY_ENROLL_SECRET }} DOGFOOD_SERVERS_ENROLL_SECRET: ${{ secrets.DOGFOOD_SERVERS_ENROLL_SECRET }} DOGFOOD_SERVERS_CANARY_ENROLL_SECRET: ${{ secrets.DOGFOOD_SERVERS_CANARY_ENROLL_SECRET }} @@ -77,6 +76,9 @@ jobs: DOGFOOD_COMPANY_OWNED_IPADS_ENROLL_SECRET: ${{ secrets.DOGFOOD_COMPANY_OWNED_IPADS_ENROLL_SECRET }} FLEET_SECRET_MANAGED_CHROME_ENROLLMENT_TOKEN: ${{ secrets.CLOUD_MANAGEMENT_ENROLLMENT_TOKEN }} DOGFOOD_PERSONALLY_OWNED_IPHONES_ENROLL_SECRET: ${{ secrets.DOGFOOD_PERSONALLY_OWNED_IPHONES_ENROLL_SECRET }} + DOGFOOD_ACTIVITIES_WEBHOOK_URL: ${{ secrets.DOGFOOD_ACTIVITIES_WEBHOOK_URL }} + DOGFOOD_CALENDAR_WEBHOOK_URL: ${{ secrets.DOGFOOD_CALENDAR_WEBHOOK_URL }} + DOGFOOD_HOST_STATUS_WEBHOOK_URL: ${{ secrets.DOGFOOD_HOST_STATUS_WEBHOOK_URL }} - name: Notify on Gitops failure if: failure() && github.ref_name == 'main' diff --git a/.github/workflows/generate-desktop-targets.yml b/.github/workflows/generate-desktop-targets.yml index a6f8eca86b8f..0a8d5f205424 100644 --- a/.github/workflows/generate-desktop-targets.yml +++ b/.github/workflows/generate-desktop-targets.yml @@ -19,7 +19,7 @@ defaults: shell: bash env: - FLEET_DESKTOP_VERSION: 1.37.0 + FLEET_DESKTOP_VERSION: 1.38.1 permissions: contents: write diff --git a/.github/workflows/test-js.yml b/.github/workflows/test-js.yml index 19b2f08a05cb..2997040e2a42 100644 --- a/.github/workflows/test-js.yml +++ b/.github/workflows/test-js.yml @@ -58,7 +58,7 @@ jobs: **/node_modules key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }} restore-keys: | - ${{ runner.os }}-modules- + ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }} - name: Install JS Dependencies if: steps.js-cache.outputs.cache-hit != 'true' diff --git a/.github/workflows/test-website.yml b/.github/workflows/test-website.yml index 3045c9d4a7c1..e0a02d6b8e7d 100644 --- a/.github/workflows/test-website.yml +++ b/.github/workflows/test-website.yml @@ -29,7 +29,7 @@ jobs: strategy: matrix: - node-version: [16.x] + node-version: [20.x] steps: - name: Harden Runner diff --git a/.storybook/main.ts b/.storybook/main.ts index a77c72a42bf8..97be577e076f 100644 --- a/.storybook/main.ts +++ b/.storybook/main.ts @@ -53,6 +53,7 @@ const config: StorybookConfig = { "@storybook/addon-a11y", "@storybook/test-runner", "@storybook/addon-designs", + "@storybook/addon-webpack5-compiler-babel" ], typescript: { check: false, @@ -68,9 +69,7 @@ const config: StorybookConfig = { name: "@storybook/react-webpack5", options: {}, }, - docs: { - autodocs: true, - }, + docs: {}, }; export default config; diff --git a/.storybook/preview.js b/.storybook/preview.js index 48afd568ae90..1f8bd3e37241 100644 --- a/.storybook/preview.js +++ b/.storybook/preview.js @@ -1,9 +1,9 @@ export const parameters = { - actions: { argTypesRegex: "^on[A-Z].*" }, controls: { matchers: { color: /(background|color)$/i, date: /Date$/, }, }, -} \ No newline at end of file +}; +export const tags = ["autodocs"]; diff --git a/.vscode/launch.json b/.vscode/launch.json index 885f407fb8e5..ed3343bd9a39 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -101,6 +101,31 @@ "path": "${workspaceFolder}/frontend" } ] + }, + { + "name": "Jest: test current file", + "type": "node", + "request": "launch", + "program": "${workspaceRoot}/node_modules/.bin/jest", + "args": [ + "--config", + "./frontend/test/jest.config.ts", + "${relativeFile}" + ], + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen" + }, + { + "name": "Jest: run all tests", + "type": "node", + "request": "launch", + "program": "${workspaceRoot}/node_modules/.bin/jest", + "args": [ + "--config", + "./frontend/test/jest.config.ts" + ], + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen" } ] } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index b2feb390d340..db43e1be699b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,14 @@ +## Fleet 4.62.3 (Jan 24, 2025) + +### Bug fixes + +* Fixed issue verifying Windows CSP profiles that contain ADMX policies. +* Archived disk encryption keys when they were created or updated. They were never fully deleted from the database. +* Fixed issue where some Windows MDM profiles were not sent to hosts when hosts came back online. +* Removed the resend button for failed Windows disk encryption profiles and added messaging that tells the user that Fleet will automatically retry the profile again. +* Fixed bug where iOS devices were being removed prematurely by expiration policy. +* Removed request timeout on bootstrap package uploads for consistency with software package upload endpoints. + ## Fleet 4.62.2 (Jan 17, 2025) ### Bug fixes diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 969a6fa58660..000000000000 --- a/Dockerfile +++ /dev/null @@ -1,13 +0,0 @@ -FROM alpine:3.21@sha256:2c43f33bd1502ec7818bce9eea60e062d04eeadc4aa31cad9dabecb1e48b647b -LABEL maintainer="Fleet Developers" - -RUN apk --update add ca-certificates -RUN apk --no-cache add jq - -# Create FleetDM group and user -RUN addgroup -S fleet && adduser -S fleet -G fleet - -COPY ./build/binary-bundle/linux/fleet ./build/binary-bundle/linux/fleetctl /usr/bin/ - -USER fleet -CMD ["fleet", "serve"] diff --git a/Makefile b/Makefile index 23c7fc5c178c..0f0b1c231696 100644 --- a/Makefile +++ b/Makefile @@ -274,16 +274,6 @@ clean: clean-assets clean-assets: git clean -fx assets -docker-build-release: xp-fleet xp-fleetctl - docker build -t "${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG}" . - docker tag "${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG}" fleetdm/fleet:${VERSION} - docker tag "${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG}" fleetdm/fleet:latest - -docker-push-release: docker-build-release - docker push "${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG}" - docker push fleetdm/fleet:${VERSION} - docker push fleetdm/fleet:latest - fleetctl-docker: xp-fleetctl docker build -t fleetdm/fleetctl --platform=linux/amd64 -f tools/fleetctl-docker/Dockerfile . diff --git a/articles/enroll-hosts.md b/articles/enroll-hosts.md index 31b6d832ae7e..a6962de0886e 100644 --- a/articles/enroll-hosts.md +++ b/articles/enroll-hosts.md @@ -331,9 +331,17 @@ Fleetd will send stdout/stderr logs to the following directories: - Linux: Orbit and osqueryd stdout/stderr output is sent to syslog (`/var/log/syslog` on Debian systems, `/var/log/messages` on CentOS, and `journalctl -u orbit` on Fedora). If the `logger_path` agent configuration is set to `filesystem`, fleetd will send osquery's "result" and "status" logs to the following directories: - - Windows: C:\Program Files\Orbit\osquery_log - - macOS: /opt/orbit/osquery_log - - Linux: /opt/orbit/osquery_log + - Windows: `C:\Program Files\Orbit\osquery_log` + - macOS: `/opt/orbit/osquery_log` + - Linux: `/opt/orbit/osquery_log` + +The Fleet Desktop log files can be found in the following directories depending on the platform: + + - Linux: `$XDG_STATE_HOME/Fleet or $HOME/.local/state/Fleet` + - macOS: `$HOME/Library/Logs/Fleet` + - Windows: `%LocalAppData%/Fleet` + +The log file name is `fleet-desktop.log`. ### Using system keystore for enroll secret diff --git a/articles/prevent-tampering-login-items.md b/articles/prevent-tampering-login-items.md new file mode 100644 index 000000000000..1924b89396f6 --- /dev/null +++ b/articles/prevent-tampering-login-items.md @@ -0,0 +1,110 @@ +# Prevent tampering of Fleet agent and other login items + +## Introduction + +macOS Ventura saw a whole new suite of security tools and provided more visibility about what is actually running on your machine. The Login Items section in System Settings shows all programs that start on boot (including LaunchAgents and LaunchDaemons for both the user and the system). In previous versions of macOS, the Login Items list in the "Users & Groups" pane only showed programs that registered themselves to be displayed. This provided a security blindspot because most malware would not have exposed itself. + +Since the release of Ventura, users can now manage Login Items, LaunchAgents and LaunchDaemons all from a single place in System Settings. Before this change, the only visibility into items that execute when the device starts up or the user logs in required finding hidden directories in the Finder, using the Terminal, or relying on 3rd party software. This has always been problematic, particularly with LaunchAgents, since any process can add a persistent item without authorization from or notification to the user. + +Now in macOS, not only can users see which apps are set up for persistence, they can also control them from a single place in System Settings. Importantly, when apps add a LaunchAgent, LaunchDaemon, or Login Item, the system now displays a banner. + +![Login Item Banner](../website/assets/images/articles/login-item-banner.png) + +## Login items in the enterprise + +While transparency and openness to see what is running on your machine is a [key tenant of Fleet](https://fleetdm.com/handbook/company#openness), there is a valid use case to be able to manage these as an admin and prevent your users from being able to tamper with or disable certain applications and LaunchAgents. You donā€™t want your users to be able to disable security or other management tools deployed to your endpoints. + +To properly manage these ā€œLogin Itemsā€, admins need to use an MDM to deploy a profile with the new `com.apple.servicemanagement` payload. This profile cannot be manually installed and it must be deployed from an MDM to a device. + +![Profile Error](../website/assets/images/articles/user-profile-error.png) + +## The anatomy of the payload + +The payload is fairly easy to craft. Itā€™s comprised of the object `ServiceManagementManagedLoginItems.Rule` which has 4 parts: + +- **Comment** - *string* - Description of the rule (Optional) +- **RuleType** - *string* - The type of comparison to make (Required) + - Possible Values: BundleIdentifier, BundleIdentifierPrefix, Label, LabelPrefix, TeamIdentifier +- **RuleValue** - *string* - The value to compare with each login itemā€™s value, to determine if this rule is a match (Required) +- **TeamIdentifier** - *string* - An additional constraint to limit the scope of the rule that the system tests after matching the RuleType and RuleValue (Optional) + +Together, these values give you a plist file that looks something like this: + +``` +Rules + + + RuleType + BundleIdentifier + RuleValue + com.example.myapp + Comment + My Example App + + +``` + +Apple provides some extensive documentation in their [platform deployment guides](https://support.apple.com/en-euro/guide/deployment/depdca572563/web) about this topic. They also have a good primer on the [management of these](https://support.apple.com/en-euro/guide/deployment/dep07b92494/1/web/1.0) through MDM. + + +## Building for Fleet Login Items + +To get started, we need to grab some information from a device about what we are looking to lock down. This is where `sudo sfltool dumpbtm` will come in handy. This tool prints the current status of login and background items, including loaded servicemanagement payload UUIDs. + +On my device that is running Fleet, this is the example output: + +``` +UUID: 341C8C1E-1FA5-4788-A05B-D13560C2AEDD +Name: Fleet Device Management Inc +Developer Name: Fleet Device Management Inc +Type: developer (0x20) +Flags: [ ] (0) +Disposition: [disabled, allowed, visible, notified] (0xa) +Identifier: Fleet Device Management Inc +URL: (null) +Generation: 3 +Embedded Item Identifiers: + #1: 16.com.fleetdm.orbit +``` + +For this payload, we will use the RuleType of LabelPrefix with the RuleValue of `com.fleetdm.orbit`ā€”thatā€™s all you need! + +``` + + + Comment + Profile to prevent Fleet agent from being disabled + RuleType + LabelPrefix + RuleValue + com.fleetdm.orbit + + +``` + +We suggest using a profile builder such as iMazing to build these in order to easily include the other metadata that your MDM is looking for. Youā€™re going to want to look for the payload type `Service Management - Managed Login Items`. + +For a complete `.mobileconfig` example, check out [this repo.](https://github.com/harrisonravazzolo/Bluth-Company-GitOps/blob/main/lib/macos/configuration-profiles-traditional/managed-login-items.mobileconfig) + +> Note that this profile can include many different entries for other Login Items and other rule types can be added to make a comprehensive array of items you want to target. + +Upload this .mobileconfig to your MDM and once itā€™s deployed to your endpoints, you will see something like such in the Login Items section of the System Settings: + +![Profile Error](../website/assets/images/articles/locked-login-item.png) + +And thatā€™s it! + +## Conclusion + +macOS Ventura has introduced significant improvements in system security and transparency, giving users and administrators more visibility and control over Login Items, LaunchAgents, and LaunchDaemons. By leveraging the new Service Management payload through MDM, admins can now effectively prevent users from disabling critical management and security tools. + +The ability to use specific rule types like LabelPrefix provides administrators with a granular approach to protecting essential system components. By deploying a carefully crafted .mobileconfig profile, admins can ensure that key applications like the Fleet Device Management agent remain active and cannot be tampered with by end-users. Other items that we recommend including in your payload are applications such as SentinelOne or other EDR tools, Nudge, Data Loss Prevention (DLP) agents, or remote management tools. + +Want to know more about Fleet's comprehensive MDM platform? Visit fleetdm.com and use the 'Talk to an engineer' [link.](https://fleetdm.com/contact) + + + + + + + diff --git a/articles/secrets-in-scripts-and-configuration-profiles.md b/articles/secrets-in-scripts-and-configuration-profiles.md index fb59836d569f..5f7664a81109 100644 --- a/articles/secrets-in-scripts-and-configuration-profiles.md +++ b/articles/secrets-in-scripts-and-configuration-profiles.md @@ -1,5 +1,9 @@ # Hide secrets in scripts in configuration profiles +
+ +
+ In Fleet you can hide secrets, like API tokens or software license keys, in Fleet [scripts](https://fleetdm.com/guides/scripts) and [configuration profiles](https://fleetdm.com/guides/custom-os-settings). Secrets are encrypted and stored securely in Fleet, until they're delivered to the host. Secrets are hidden in when the script or configuration profile is viewed in the Fleet UI or API. Currently, hiding secrets is only available using [Fleet's YAML (GitOps)](https://fleetdm.com/docs/configuration/yaml-files). diff --git a/articles/teams.md b/articles/teams.md index 934be78511e7..0e80441e845b 100644 --- a/articles/teams.md +++ b/articles/teams.md @@ -1,14 +1,17 @@ # Teams -_Available in Fleet Premium_ +> Teams are available in Fleet Premium. -In Fleet, you can group hosts together in a "team" in Fleet. This way, you can apply queries, policies, scripts, and more that are tailored to a host's risk/compliance needs. +In Fleet, you can organize hosts into 'teams' to apply queries, policies, scripts, and other configurations tailored to their specific risk and compliance requirements. -A host can only belong to one team. +To manage teams: -You can give users access to only some teams. +1. Select your avatar in the top navigation. +2. Choose **Settings > Teams**. -You can manage teams by selecting your avatar in the top navigation and then **Settings > Teams**. +> **Note:** +> - A host can only belong to one team. +> - You can give users access to only some teams. ## Best practice @@ -22,11 +25,25 @@ Fleet's best practice teams: - `šŸ”³šŸ¢ Company-owned iPads`: iPads purchased by the organization that enroll to Fleet automatically via Apple Business Manager. For example, conference-room iPads. - `šŸ“±šŸ” Personally-owned iPhones`: End users' personal iPhones, like those enrolled through a BYOD program, that have access to company resources. -If some of your hosts don't fall under the above teams, what are these hosts for? The answer determines the the hosts' risk/compliance needs, and thus their security basline, and thus their "team" in Fleet. If the hosts' have a different compliance needs, and thus different security baseline, then it's time to create a new team in Fleet. +If some of your hosts don't fit into the teams listed above, consider their purpose. This will help determine their risk and compliance requirements, which in turn define their security baseline and appropriate team in Fleet. If these hosts have distinct compliance needs and security baselines, it's advisable to create a new team in Fleet. -## Adding hosts to a team +## Add hosts to a team -You can add hosts to a new team in Fleet by either enrolling the host with a team's enroll secret or by transferring the host via the Fleet UI after the host has been enrolled to Fleet. +You can add hosts to a team in Fleet by either enrolling the host with a team's enroll secret or by transferring the host via Fleet UI after the host has been enrolled to Fleet. + +### Enroll hosts with a team's enroll secret + +1. In Fleet UI, navigate to **Settings > Teams** and select the team you wish to add a host to. +2. Select **Add hosts** and follow the on-screen instructions. + +> Quick tip: When viewing a specific team (from the **Teams** dropdown), Selecting **Add hosts** will display instructions to add new hosts directly to that team. + +### Transfer a host + +1. In Fleet UI, navigate to the **Hosts** page and select the host you wish to transfer. +2. From the host details page, press **Actions > Transfer** and follow the on-screen instructions. + +> Quick tip: You can hit the checkbox next to the host you wish to transfer to access its quick menu. From there, select **Transfer** and follow the on-screen instructions. ## Advanced diff --git a/articles/translating-jamf-pro-terminology.md b/articles/translating-jamf-pro-terminology.md index 4296bff13077..30ad8f7d2a2e 100644 --- a/articles/translating-jamf-pro-terminology.md +++ b/articles/translating-jamf-pro-terminology.md @@ -1,16 +1,14 @@ # Translating Jamf Pro terminology & capabilities -## Introduction Whether you are using Fleet alongside Jamf Pro to manage your Apple devices or preparing for a complete transition to Fleet as a modern, comprehensive platform for managing devices across all operating systems, this guide will help you compare and align Fleet's terminology and capabilities with those familiar from Jamf Pro. ## Reference table -| | | | -| ------------------------------ | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| Jamf | Fleet | Notes | +| Jamf | Fleet | Notes | +| ------------------------------ | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Smart Group | Dynamic label | [Managing labels in Fleet](https://fleetdm.com/guides/managing-labels-in-fleet) | | Static Group | Manual label | | | Extension Attribute | Query or policy | Depending on your use case, a query is similar to an Extension Attribute used to gather specific information from a device. Similarly, a policy is used to return a boolean (Yes/No or True/False) response about a device. | diff --git a/assets/images/check.svg b/assets/images/check.svg new file mode 100644 index 000000000000..bd4df0b1de76 --- /dev/null +++ b/assets/images/check.svg @@ -0,0 +1,3 @@ + diff --git a/changes/22353-abm-hosts-upcoming-activities b/changes/22353-abm-hosts-upcoming-activities new file mode 100644 index 000000000000..ee74914b6d44 --- /dev/null +++ b/changes/22353-abm-hosts-upcoming-activities @@ -0,0 +1 @@ +- Hosts that are restored from ABM no longer have old activities in their feed diff --git a/changes/22464-list-hosts-populate-users-labels b/changes/22464-list-hosts-populate-users-labels new file mode 100644 index 000000000000..8f7cdc48fd12 --- /dev/null +++ b/changes/22464-list-hosts-populate-users-labels @@ -0,0 +1 @@ +- Added option to populate users and labels on list hosts endpoint diff --git a/changes/22544-move-linux-lock-wipe b/changes/22544-move-linux-lock-wipe new file mode 100644 index 000000000000..44207ca71dec --- /dev/null +++ b/changes/22544-move-linux-lock-wipe @@ -0,0 +1 @@ +- Removed duplicate Linux lock and wipe scripts from repository diff --git a/changes/22919-semver-util b/changes/22919-semver-util new file mode 100644 index 000000000000..26beef7b9067 --- /dev/null +++ b/changes/22919-semver-util @@ -0,0 +1 @@ +* Added util wrapper func around semver package to allow for custom preprocessing. Upgraded semver library to 3.3.1 and usage everywhere to version 3. \ No newline at end of file diff --git a/changes/23096-fma-errors b/changes/23096-fma-errors new file mode 100644 index 000000000000..43fb96194638 --- /dev/null +++ b/changes/23096-fma-errors @@ -0,0 +1 @@ +- Fleet UI: Surfaced cleaner errors when adding Fleet-maintained apps diff --git a/changes/23116-fma-dl-url b/changes/23116-fma-dl-url new file mode 100644 index 000000000000..4314a262ac16 --- /dev/null +++ b/changes/23116-fma-dl-url @@ -0,0 +1 @@ +- Fleet UI: Surfaced download URL for Fleet-maintained app when adding the software to Fleet diff --git a/changes/23241-lock-api-response b/changes/23241-lock-api-response new file mode 100644 index 000000000000..069b8633edb1 --- /dev/null +++ b/changes/23241-lock-api-response @@ -0,0 +1 @@ +* Included current host status and pending action in lock, unlock, and wipe API calls diff --git a/changes/23312-update-policies-empty-state b/changes/23312-update-policies-empty-state new file mode 100644 index 000000000000..b02eb7f53f82 --- /dev/null +++ b/changes/23312-update-policies-empty-state @@ -0,0 +1 @@ +- Clarified text on the Policies page when no policies exist for the selected team (or All Teams) diff --git a/changes/23924-handle-long-team-names b/changes/23924-handle-long-team-names new file mode 100644 index 000000000000..1c12f3dd8277 --- /dev/null +++ b/changes/23924-handle-long-team-names @@ -0,0 +1 @@ +* Improve the teams dropdown so that it gracefully hides overflow from long team names diff --git a/changes/24035-team-agent-options-ui-resets b/changes/24035-team-agent-options-ui-resets new file mode 100644 index 000000000000..f4bb9bcba5c6 --- /dev/null +++ b/changes/24035-team-agent-options-ui-resets @@ -0,0 +1 @@ +* Maintain user's updates to the team agent options form when they navigate away and back again. \ No newline at end of file diff --git a/changes/24486-error-for-invalid-invites b/changes/24486-error-for-invalid-invites new file mode 100644 index 000000000000..c3517863a45c --- /dev/null +++ b/changes/24486-error-for-invalid-invites @@ -0,0 +1 @@ +- Check the server for validity of any Fleet invites diff --git a/changes/24732-gzip b/changes/24732-gzip new file mode 100644 index 000000000000..dc93fa6ec96c --- /dev/null +++ b/changes/24732-gzip @@ -0,0 +1 @@ +* Added gzip compression for static CSS and JS assets to decrease bundle download times diff --git a/changes/25015-user-page-responsive b/changes/25015-user-page-responsive new file mode 100644 index 000000000000..2cfa9a2e8792 --- /dev/null +++ b/changes/25015-user-page-responsive @@ -0,0 +1 @@ +- Fleet UI: Fixed user page responsiveness to not overflow horizontally diff --git a/changes/25160-optimize-software-during-enrollment b/changes/25160-optimize-software-during-enrollment new file mode 100644 index 000000000000..9d649162477b --- /dev/null +++ b/changes/25160-optimize-software-during-enrollment @@ -0,0 +1,2 @@ +* Optimized software ingestion queries to use existing DB indexes in the software titles table. +* Fixed a bug "software not found for checksum" in software ingestion transaction retries. diff --git a/changes/25201-unknown-installer-version b/changes/25201-unknown-installer-version new file mode 100644 index 000000000000..6b7ecc7c4938 --- /dev/null +++ b/changes/25201-unknown-installer-version @@ -0,0 +1 @@ +* Revised software installer package validation to mark installers with no version as "unknown" for version rather than rejecting them diff --git a/changes/25241-smtp-helo-domain b/changes/25241-smtp-helo-domain new file mode 100644 index 000000000000..7c8cf30d9762 --- /dev/null +++ b/changes/25241-smtp-helo-domain @@ -0,0 +1 @@ +- Fixed mail being sent with the incorrect SMTP Domain (thank you mccormickt) diff --git a/changes/25251-url-fleet-app-response b/changes/25251-url-fleet-app-response new file mode 100644 index 000000000000..ce3766ce139b --- /dev/null +++ b/changes/25251-url-fleet-app-response @@ -0,0 +1 @@ +* Added download url for fleet maintained apps as `url` property on `fleet/software/fleet_maintained_apps/:id` \ No newline at end of file diff --git a/changes/25257-dropdown-improvements b/changes/25257-dropdown-improvements new file mode 100644 index 000000000000..86360f17b7d9 --- /dev/null +++ b/changes/25257-dropdown-improvements @@ -0,0 +1 @@ +- Fleet UI: Improved the look and feel of dropdowns \ No newline at end of file diff --git a/changes/25261-identical-hostnames-label-membership b/changes/25261-identical-hostnames-label-membership new file mode 100644 index 000000000000..ddd5f61d253e --- /dev/null +++ b/changes/25261-identical-hostnames-label-membership @@ -0,0 +1,2 @@ +- Fixed a bug where adding or removing a host with an identical name to/from a label caused the + same action to be performed on other host(s) with the same name as well. diff --git a/changes/25307-fleetctl-package-link b/changes/25307-fleetctl-package-link new file mode 100644 index 000000000000..8b3e96d3e571 --- /dev/null +++ b/changes/25307-fleetctl-package-link @@ -0,0 +1 @@ +- Added link to information about installing fleetd when packages are generated diff --git a/changes/25318-update-sso-settings-error-states b/changes/25318-update-sso-settings-error-states new file mode 100644 index 000000000000..d1c840ca5a68 --- /dev/null +++ b/changes/25318-update-sso-settings-error-states @@ -0,0 +1 @@ +* Add clearer error states to metadata-related fields in the SSO settings form diff --git a/changes/25346-fix-manage-automations-link-on-dash b/changes/25346-fix-manage-automations-link-on-dash new file mode 100644 index 000000000000..e00499bee31d --- /dev/null +++ b/changes/25346-fix-manage-automations-link-on-dash @@ -0,0 +1 @@ +- Removed erroneous "manage automations" link on dashboard for maintainers diff --git a/changes/25366-manage-automation-dropdown-styling b/changes/25366-manage-automation-dropdown-styling new file mode 100644 index 000000000000..ade66298db54 --- /dev/null +++ b/changes/25366-manage-automation-dropdown-styling @@ -0,0 +1 @@ +- Fleet UI: Fixed styling for manage automation buttons and dropdown diff --git a/changes/25567-renew-vpp b/changes/25567-renew-vpp new file mode 100644 index 000000000000..57aaf6435492 --- /dev/null +++ b/changes/25567-renew-vpp @@ -0,0 +1 @@ +* Fixed a bug in Fleet's handling of VPP token renewal requests diff --git a/changes/25581-session-id b/changes/25581-session-id new file mode 100644 index 000000000000..fed7ac6044ed --- /dev/null +++ b/changes/25581-session-id @@ -0,0 +1 @@ +Fix Windows MDM issue where SessionID of 0 was not allowed. diff --git a/changes/25590-node b/changes/25590-node new file mode 100644 index 000000000000..ab82059aaa27 --- /dev/null +++ b/changes/25590-node @@ -0,0 +1 @@ +* Bump Node.js version to 20.18.1 diff --git a/changes/25597-false-positives b/changes/25597-false-positives new file mode 100644 index 000000000000..54bb85396348 --- /dev/null +++ b/changes/25597-false-positives @@ -0,0 +1 @@ +* Resolved false-positives for the `pass` Homebrew package and `jira` Python package via a vulnerability feed update available to all Fleet versions on 2025-01-22 diff --git a/changes/25609-archive-encryption-keys b/changes/25609-archive-encryption-keys new file mode 100644 index 000000000000..a3848afbd53a --- /dev/null +++ b/changes/25609-archive-encryption-keys @@ -0,0 +1 @@ +Disk encryption keys are now archived when they are created or updated. They are never fully deleted from the database. diff --git a/changes/25615-windows-mdm-profiles b/changes/25615-windows-mdm-profiles new file mode 100644 index 000000000000..79e1239d1f2b --- /dev/null +++ b/changes/25615-windows-mdm-profiles @@ -0,0 +1 @@ +Fixed issue where some Windows MDM profiles were not being sent to hosts when hosts came back online. diff --git a/changes/25640-fix-idp-source b/changes/25640-fix-idp-source new file mode 100644 index 000000000000..6bddefa0ee7b --- /dev/null +++ b/changes/25640-fix-idp-source @@ -0,0 +1 @@ +- Fixes incorrect source value in device mapping REST API documentation diff --git a/changes/25748-remove-fleetctl-from-fleetdm-fleet-docker-image b/changes/25748-remove-fleetctl-from-fleetdm-fleet-docker-image new file mode 100644 index 000000000000..e1e620e03eca --- /dev/null +++ b/changes/25748-remove-fleetctl-from-fleetdm-fleet-docker-image @@ -0,0 +1 @@ +* Removed `fleetctl` binary from the `fleetdm/fleet` docker image. diff --git a/changes/25759-illegal-argument-errors b/changes/25759-illegal-argument-errors new file mode 100644 index 000000000000..f9b6ca55ed95 --- /dev/null +++ b/changes/25759-illegal-argument-errors @@ -0,0 +1 @@ +Illegal argument errors will no longer be logged at the ERROR level on the server. Since these are client errors, they will be logged at the DEBUG level instead. This will reduce the amount of noise in the server logs and help debugging other issues. diff --git a/changes/issue-21691-windows-disk-encryption-dont-resend b/changes/issue-21691-windows-disk-encryption-dont-resend new file mode 100644 index 000000000000..b9d964677712 --- /dev/null +++ b/changes/issue-21691-windows-disk-encryption-dont-resend @@ -0,0 +1,2 @@ +- remove the resend button for failed windows disk encryption profiles and add messaging that tells +the user that Fleet with automatically retry this profile again. diff --git a/changes/issue-23912-ui-for-activities b/changes/issue-23912-ui-for-activities new file mode 100644 index 000000000000..bd7f1a602ca4 --- /dev/null +++ b/changes/issue-23912-ui-for-activities @@ -0,0 +1 @@ +- update the UI a new activities design diff --git a/changes/issue-24992-padding-fixes-around-lists b/changes/issue-24992-padding-fixes-around-lists new file mode 100644 index 000000000000..8fd3ae43e331 --- /dev/null +++ b/changes/issue-24992-padding-fixes-around-lists @@ -0,0 +1 @@ +- normalise padding spacing for list headers, lists, and help text across various modals. diff --git a/changes/issue-25735-fix-500-vulnerable-host-software b/changes/issue-25735-fix-500-vulnerable-host-software new file mode 100644 index 000000000000..7115ab83dc19 --- /dev/null +++ b/changes/issue-25735-fix-500-vulnerable-host-software @@ -0,0 +1 @@ +- fix when trying to filter by vulnerable software for ios or ipad host. diff --git a/charts/fleet/Chart.yaml b/charts/fleet/Chart.yaml index ee8635da633c..a6437c12f36d 100644 --- a/charts/fleet/Chart.yaml +++ b/charts/fleet/Chart.yaml @@ -4,11 +4,11 @@ name: fleet keywords: - fleet - osquery -version: v6.3.3 +version: v6.3.4 home: https://github.com/fleetdm/fleet sources: - https://github.com/fleetdm/fleet.git -appVersion: v4.62.2 +appVersion: v4.62.3 dependencies: - name: mysql condition: mysql.enabled diff --git a/charts/fleet/values.yaml b/charts/fleet/values.yaml index 5fb78cfc7faa..130b9cd16a93 100644 --- a/charts/fleet/values.yaml +++ b/charts/fleet/values.yaml @@ -3,7 +3,7 @@ hostName: fleet.localhost replicas: 3 # The number of Fleet instances to deploy imageRepository: fleetdm/fleet -imageTag: v4.62.2 # Version of Fleet to deploy +imageTag: v4.62.3 # Version of Fleet to deploy podAnnotations: {} # Additional annotations to add to the Fleet pod serviceAnnotations: {} # Additional annotations to add to the Fleet service serviceAccountAnnotations: {} # Additional annotations to add to the Fleet service account diff --git a/cmd/fleetctl/package.go b/cmd/fleetctl/package.go index 271203390693..9ece0fc873a3 100644 --- a/cmd/fleetctl/package.go +++ b/cmd/fleetctl/package.go @@ -379,27 +379,29 @@ func packageCommand() *cli.Command { path, _ = filepath.Abs(path) pathBase := filepath.Base(path) - var installInstructions = "double-click the installer" + var installInstructions = "double-clicking the installer" var deviceType string switch c.String("type") { case "pkg": - installInstructions += fmt.Sprintf(" or run the command `sudo installer -pkg \"%s\" -target /`", pathBase) + installInstructions += fmt.Sprintf(" or running the command `sudo installer -pkg \"%s\" -target /`", pathBase) deviceType = "macOS" case "deb": - installInstructions += fmt.Sprintf(" or run the command `sudo apt install \"%s\"`", pathBase) + installInstructions += fmt.Sprintf(" or running the command `sudo apt install \"%s\"`", pathBase) deviceType = "Debian-based Linux" case "rpm": - installInstructions += fmt.Sprintf(" or run the command `sudo dnf install \"%s\"`", pathBase) + installInstructions += fmt.Sprintf(" or running the command `sudo dnf install \"%s\"`", pathBase) deviceType = "RPM-based Linux" case "msi": - installInstructions += fmt.Sprintf(" or run the command `msiexec /i \"%s\"` as administrator", pathBase) + installInstructions += fmt.Sprintf(" or running the command `msiexec /i \"%s\"` as administrator", pathBase) deviceType = "Windows" } fmt.Printf(` Success! You generated fleetd at %s -To add a new %s device to Fleet, %s. +To add a new %s device to Fleet, install fleetd by %s. + +Learn more: https://fleetdm.com/guides/enroll-hosts To add other devices to Fleet, distribute fleetd using Chef, Ansible, Jamf, or Puppet. Learn how: https://fleetdm.com/learn-more-about/enrolling-hosts `, path, deviceType, installInstructions) diff --git a/cmd/osquery-perf/agent.go b/cmd/osquery-perf/agent.go index 388f08537a83..3608403a09c1 100644 --- a/cmd/osquery-perf/agent.go +++ b/cmd/osquery-perf/agent.go @@ -28,6 +28,7 @@ import ( "time" "github.com/fleetdm/fleet/v4/cmd/osquery-perf/installer_cache" + "github.com/fleetdm/fleet/v4/cmd/osquery-perf/osquery_perf" "github.com/fleetdm/fleet/v4/pkg/file" "github.com/fleetdm/fleet/v4/pkg/mdm/mdmtest" "github.com/fleetdm/fleet/v4/server/fleet" @@ -60,6 +61,8 @@ var ( ubuntuSoftware []map[string]string installerMetadataCache installer_cache.Metadata + + linuxRandomBuildNumber = randomString(8) ) func loadMacOSVulnerableSoftware() { @@ -105,7 +108,7 @@ func loadExtraVulnerableSoftware() { log.Printf("Loaded %d vulnerable vscode_extensions software", len(vsCodeExtensionsVulnerableSoftware)) } -func loadSoftwareItems(fs embed.FS, path string) []map[string]string { +func loadSoftwareItems(fs embed.FS, path string, source string) []map[string]string { bz2, err := fs.Open(path) if err != nil { panic(err) @@ -128,7 +131,7 @@ func loadSoftwareItems(fs embed.FS, path string) []map[string]string { softwareRows = append(softwareRows, map[string]string{ "name": s.Name, "version": s.Version, - "source": "programs", + "source": source, }) } return softwareRows @@ -137,242 +140,8 @@ func loadSoftwareItems(fs embed.FS, path string) []map[string]string { func init() { loadMacOSVulnerableSoftware() loadExtraVulnerableSoftware() - windowsSoftware = loadSoftwareItems(windowsSoftwareFS, "windows_11-software.json.bz2") - ubuntuSoftware = loadSoftwareItems(ubuntuSoftwareFS, "ubuntu_2204-software.json.bz2") -} - -type Stats struct { - startTime time.Time - errors int - osqueryEnrollments int - orbitEnrollments int - mdmEnrollments int - mdmSessions int - distributedWrites int - mdmCommandsReceived int - distributedReads int - configRequests int - configErrors int - resultLogRequests int - orbitErrors int - mdmErrors int - ddmDeclarationItemsErrors int - ddmConfigurationErrors int - ddmActivationErrors int - ddmStatusErrors int - ddmDeclarationItemsSuccess int - ddmConfigurationSuccess int - ddmActivationSuccess int - ddmStatusSuccess int - desktopErrors int - distributedReadErrors int - distributedWriteErrors int - resultLogErrors int - bufferedLogs int - - l sync.Mutex -} - -func (s *Stats) IncrementErrors(errors int) { - s.l.Lock() - defer s.l.Unlock() - s.errors += errors -} - -func (s *Stats) IncrementEnrollments() { - s.l.Lock() - defer s.l.Unlock() - s.osqueryEnrollments++ -} - -func (s *Stats) IncrementOrbitEnrollments() { - s.l.Lock() - defer s.l.Unlock() - s.orbitEnrollments++ -} - -func (s *Stats) IncrementMDMEnrollments() { - s.l.Lock() - defer s.l.Unlock() - s.mdmEnrollments++ -} - -func (s *Stats) IncrementMDMSessions() { - s.l.Lock() - defer s.l.Unlock() - s.mdmSessions++ -} - -func (s *Stats) IncrementDistributedWrites() { - s.l.Lock() - defer s.l.Unlock() - s.distributedWrites++ -} - -func (s *Stats) IncrementMDMCommandsReceived() { - s.l.Lock() - defer s.l.Unlock() - s.mdmCommandsReceived++ -} - -func (s *Stats) IncrementDistributedReads() { - s.l.Lock() - defer s.l.Unlock() - s.distributedReads++ -} - -func (s *Stats) IncrementConfigRequests() { - s.l.Lock() - defer s.l.Unlock() - s.configRequests++ -} - -func (s *Stats) IncrementConfigErrors() { - s.l.Lock() - defer s.l.Unlock() - s.configErrors++ -} - -func (s *Stats) IncrementResultLogRequests() { - s.l.Lock() - defer s.l.Unlock() - s.resultLogRequests++ -} - -func (s *Stats) IncrementOrbitErrors() { - s.l.Lock() - defer s.l.Unlock() - s.orbitErrors++ -} - -func (s *Stats) IncrementMDMErrors() { - s.l.Lock() - defer s.l.Unlock() - s.mdmErrors++ -} - -func (s *Stats) IncrementDDMDeclarationItemsErrors() { - s.l.Lock() - defer s.l.Unlock() - s.ddmDeclarationItemsErrors++ -} - -func (s *Stats) IncrementDDMConfigurationErrors() { - s.l.Lock() - defer s.l.Unlock() - s.ddmConfigurationErrors++ -} - -func (s *Stats) IncrementDDMActivationErrors() { - s.l.Lock() - defer s.l.Unlock() - s.ddmActivationErrors++ -} - -func (s *Stats) IncrementDDMStatusErrors() { - s.l.Lock() - defer s.l.Unlock() - s.ddmStatusErrors++ -} - -func (s *Stats) IncrementDDMDeclarationItemsSuccess() { - s.l.Lock() - defer s.l.Unlock() - s.ddmDeclarationItemsSuccess++ -} - -func (s *Stats) IncrementDDMConfigurationSuccess() { - s.l.Lock() - defer s.l.Unlock() - s.ddmConfigurationSuccess++ -} - -func (s *Stats) IncrementDDMActivationSuccess() { - s.l.Lock() - defer s.l.Unlock() - s.ddmActivationSuccess++ -} - -func (s *Stats) IncrementDDMStatusSuccess() { - s.l.Lock() - defer s.l.Unlock() - s.ddmStatusSuccess++ -} - -func (s *Stats) IncrementDesktopErrors() { - s.l.Lock() - defer s.l.Unlock() - s.desktopErrors++ -} - -func (s *Stats) IncrementDistributedReadErrors() { - s.l.Lock() - defer s.l.Unlock() - s.distributedReadErrors++ -} - -func (s *Stats) IncrementDistributedWriteErrors() { - s.l.Lock() - defer s.l.Unlock() - s.distributedWriteErrors++ -} - -func (s *Stats) IncrementResultLogErrors() { - s.l.Lock() - defer s.l.Unlock() - s.resultLogErrors++ -} - -func (s *Stats) UpdateBufferedLogs(v int) { - s.l.Lock() - defer s.l.Unlock() - s.bufferedLogs += v - if s.bufferedLogs < 0 { - s.bufferedLogs = 0 - } -} - -func (s *Stats) Log() { - s.l.Lock() - defer s.l.Unlock() - - log.Printf( - "uptime: %s, error rate: %.2f, osquery enrolls: %d, orbit enrolls: %d, mdm enrolls: %d, distributed/reads: %d, distributed/writes: %d, config requests: %d, result log requests: %d, mdm sessions initiated: %d, mdm commands received: %d, config errors: %d, distributed/read errors: %d, distributed/write errors: %d, log result errors: %d, orbit errors: %d, desktop errors: %d, mdm errors: %d, ddm declaration items success: %d, ddm declaration items errors: %d, ddm activation success: %d, ddm activation errors: %d, ddm configuration success: %d, ddm configuration errors: %d, ddm status success: %d, ddm status errors: %d, buffered logs: %d", - time.Since(s.startTime).Round(time.Second), - float64(s.errors)/float64(s.osqueryEnrollments), - s.osqueryEnrollments, - s.orbitEnrollments, - s.mdmEnrollments, - s.distributedReads, - s.distributedWrites, - s.configRequests, - s.resultLogRequests, - s.mdmSessions, - s.mdmCommandsReceived, - s.configErrors, - s.distributedReadErrors, - s.distributedWriteErrors, - s.resultLogErrors, - s.orbitErrors, - s.desktopErrors, - s.mdmErrors, - s.ddmDeclarationItemsSuccess, - s.ddmDeclarationItemsErrors, - s.ddmActivationSuccess, - s.ddmActivationErrors, - s.ddmConfigurationSuccess, - s.ddmConfigurationErrors, - s.ddmStatusSuccess, - s.ddmStatusErrors, - s.bufferedLogs, - ) -} - -func (s *Stats) runLoop() { - ticker := time.Tick(10 * time.Second) - for range ticker { - s.Log() - } + windowsSoftware = loadSoftwareItems(windowsSoftwareFS, "windows_11-software.json.bz2", "programs") + ubuntuSoftware = loadSoftwareItems(ubuntuSoftwareFS, "ubuntu_2204-software.json.bz2", "deb_packages") } type nodeKeyManager struct { @@ -436,7 +205,7 @@ type mdmAgent struct { model string serverAddress string softwareCount softwareEntityCount - stats *Stats + stats *osquery_perf.Stats strings map[string]string } @@ -463,7 +232,7 @@ type agent struct { liveQueryNoResultsProb float64 strings map[string]string serverAddress string - stats *Stats + stats *osquery_perf.Stats nodeKeyManager *nodeKeyManager nodeKey string templates *template.Template @@ -498,6 +267,9 @@ type agent struct { softwareInstaller softwareInstaller + linuxUniqueSoftwareVersion bool + linuxUniqueSoftwareTitle bool + // Software installed on the host via Fleet. Key is the software name + version + bundle identifier. installedSoftware sync.Map @@ -584,6 +356,8 @@ func newAgent( disableScriptExec bool, disableFleetDesktop bool, loggerTLSMaxLines int, + linuxUniqueSoftwareVersion bool, + linuxUniqueSoftwareTitle bool, ) *agent { var deviceAuthToken *string if rand.Float64() <= orbitProb { @@ -661,6 +435,9 @@ func newAgent( softwareVSCodeExtensionsFailProb: softwareVSCodeExtensionsQueryFailureProb, softwareInstaller: softwareInstaller, + linuxUniqueSoftwareVersion: linuxUniqueSoftwareVersion, + linuxUniqueSoftwareTitle: linuxUniqueSoftwareTitle, + macMDMClient: macMDMClient, winMDMClient: winMDMClient, @@ -1314,13 +1091,14 @@ func (a *agent) installSoftwareItem(installerID string, orbitClient *service.Orb if !failed { var cacheMiss bool // Download the file if needed to get its metadata - meta, cacheMiss, err = installerMetadataCache.Get(installer.InstallerID, orbitClient) + meta, cacheMiss, err = installerMetadataCache.Get(installer, orbitClient) if err != nil { return } - if !cacheMiss { - // If we didn't download and analyze the file, we do a download and don't save the result + if !cacheMiss && installer.SoftwareInstallerURL == nil { + // If we didn't download and analyze the file, AND we did not use a CDN URL to get the file, + // we do a download now and don't save the result. Doing this download adds realistic load on the server. err = orbitClient.DownloadAndDiscardSoftwareInstaller(installer.InstallerID) if err != nil { log.Println("download and discard software installer:", err) @@ -2314,7 +2092,23 @@ func (a *agent) processQuery(name, query string, cachedResults *cachedResults) ( if ss == fleet.StatusOK { switch a.os { //nolint:gocritic // ignore singleCaseSwitch case "ubuntu": - results = ubuntuSoftware + results = make([]map[string]string, 0, len(ubuntuSoftware)) + for _, s := range ubuntuSoftware { + softwareName := s["name"] + if a.linuxUniqueSoftwareTitle { + softwareName = fmt.Sprintf("%s-%d-%s", softwareName, a.agentIndex, linuxRandomBuildNumber) + } + version := s["version"] + if a.linuxUniqueSoftwareVersion { + version = fmt.Sprintf("1.2.%d-%s", a.agentIndex, linuxRandomBuildNumber) + } + m := map[string]string{ + "name": softwareName, + "source": s["source"], + "version": version, + } + results = append(results, m) + } a.installedSoftware.Range(func(key, value interface{}) bool { results = append(results, value.(map[string]string)) return true @@ -2684,6 +2478,18 @@ func main() { uniqueSoftwareUninstallProb = flag.Float64("unique_software_uninstall_prob", 0.1, "Probability of uninstalling unique_software_uninstall_count common software/s") uniqueVSCodeExtensionsSoftwareUninstallProb = flag.Float64("unique_vscode_extensions_software_uninstall_prob", 0.1, "Probability of uninstalling unique_vscode_extensions_software_uninstall_count common software/s") + // WARNING: This will generate massive amounts of entries in the software table, + // because linux devices report many individual software items, ~1600, compared to Windows around ~100s or macOS around ~500s. + // + // This flag can be used to load test software ingestion for Linux during enrollment (during enrollment all devices + // report software to Fleet, so the initial reads/inserts can be expensive). + linuxUniqueSoftwareVersion = flag.Bool("linux_unique_software_version", false, "Make version of software items on linux hosts unique. WARNING: This will generate massive amounts of entries in the software table, because linux devices report many individual software items (compared to Windows/macOS).") + // WARNING: This will generate massive amounts of entries in the software and software_titles tables, + // + // This flag can be used to load test software ingestion for Linux during enrollment (during enrollment all devices + // report software to Fleet, so the initial reads/inserts can be expensive). + linuxUniqueSoftwareTitle = flag.Bool("linux_unique_software_title", false, "Make name of software items on linux hosts unique. WARNING: This will generate massive amounts of titles which is not realistic but serves to test performance of software ingestion when processing large number of titles.") + vulnerableSoftwareCount = flag.Int("vulnerable_software_count", 10, "Number of vulnerable installed applications reported to fleet") withLastOpenedSoftwareCount = flag.Int("with_last_opened_software_count", 10, "Number of applications that may report a last opened timestamp to fleet") lastOpenedChangeProb = flag.Float64("last_opened_change_prob", 0.1, "Probability of last opened timestamp to be reported as changed [0, 1]") @@ -2765,10 +2571,11 @@ func main() { // Spread starts over the interval to prevent thundering herd sleepTime := *startPeriod / time.Duration(*hostCount) - stats := &Stats{ - startTime: time.Now(), + stats := &osquery_perf.Stats{ + StartTime: time.Now(), } - go stats.runLoop() + go stats.RunLoop() + installerMetadataCache.Stats = stats nodeKeyManager := &nodeKeyManager{} if nodeKeyFile != nil { @@ -2883,6 +2690,8 @@ func main() { *disableScriptExec, *disableFleetDesktop, *loggerTLSMaxLines, + *linuxUniqueSoftwareVersion, + *linuxUniqueSoftwareTitle, ) a.stats = stats a.nodeKeyManager = nodeKeyManager diff --git a/cmd/osquery-perf/installer_cache/installer-cache.go b/cmd/osquery-perf/installer_cache/installer-cache.go index 2581528fabfa..f85d4a72c8c2 100644 --- a/cmd/osquery-perf/installer_cache/installer-cache.go +++ b/cmd/osquery-perf/installer_cache/installer-cache.go @@ -5,6 +5,7 @@ import ( "os" "sync" + "github.com/fleetdm/fleet/v4/cmd/osquery-perf/osquery_perf" "github.com/fleetdm/fleet/v4/pkg/file" "github.com/fleetdm/fleet/v4/server/fleet" "github.com/fleetdm/fleet/v4/server/service" @@ -16,9 +17,10 @@ import ( type Metadata struct { mu sync.Mutex cache map[uint]*file.InstallerMetadata + Stats *osquery_perf.Stats } -func (c *Metadata) Get(key uint, orbitClient *service.OrbitClient) (meta *file.InstallerMetadata, +func (c *Metadata) Get(installer *fleet.SoftwareInstallDetails, orbitClient *service.OrbitClient) (meta *file.InstallerMetadata, cacheMiss bool, err error) { c.mu.Lock() defer c.mu.Unlock() @@ -26,41 +28,60 @@ func (c *Metadata) Get(key uint, orbitClient *service.OrbitClient) (meta *file.I c.cache = make(map[uint]*file.InstallerMetadata, 1) } - meta, ok := c.cache[key] + meta, ok := c.cache[installer.InstallerID] if !ok { var err error - meta, err = populateMetadata(orbitClient, key) + meta, err = c.populateMetadata(installer, orbitClient) if err != nil { return nil, false, err } - c.cache[key] = meta + c.cache[installer.InstallerID] = meta cacheMiss = true } return meta, cacheMiss, nil } -func populateMetadata(orbitClient *service.OrbitClient, installerID uint) (*file.InstallerMetadata, error) { +func (c *Metadata) populateMetadata(installer *fleet.SoftwareInstallDetails, orbitClient *service.OrbitClient) (*file.InstallerMetadata, + error) { tmpDir, err := os.MkdirTemp("", "") if err != nil { - log.Println("create temp dir:", err) + c.Stats.IncrementOrbitErrors() + log.Println("level=error, create temp dir:", err) return nil, err } defer os.RemoveAll(tmpDir) - path, err := orbitClient.DownloadSoftwareInstaller(installerID, tmpDir) - if err != nil { - log.Println("download software installer:", err) - return nil, err + + var path string + if installer.SoftwareInstallerURL != nil { + path, err = orbitClient.DownloadSoftwareInstallerFromURL(installer.SoftwareInstallerURL.URL, + installer.SoftwareInstallerURL.Filename, tmpDir) + if err != nil { + log.Printf("level=error, msg=download software installer from URL; is CloudFront CDN configured correctly?, err=%s", err) + c.Stats.IncrementOrbitErrors() + return nil, err + } + } + + if path == "" { + path, err = orbitClient.DownloadSoftwareInstaller(installer.InstallerID, tmpDir) + if err != nil { + log.Printf("level=error, msg=download software installer, err=%s", err) + c.Stats.IncrementOrbitErrors() + return nil, err + } } // Figure out what we're actually installing here and add it to software inventory tfr, err := fleet.NewKeepFileReader(path) if err != nil { - log.Println("open installer:", err) + c.Stats.IncrementOrbitErrors() + log.Println("level=error, open installer:", err) return nil, err } defer tfr.Close() item, err := file.ExtractInstallerMetadata(tfr) if err != nil { - log.Println("extract installer metadata:", err) + c.Stats.IncrementOrbitErrors() + log.Println("level=error, extract installer metadata:", err) return nil, err } return item, nil diff --git a/cmd/osquery-perf/osquery_perf/stats.go b/cmd/osquery-perf/osquery_perf/stats.go new file mode 100644 index 000000000000..f20e851078f9 --- /dev/null +++ b/cmd/osquery-perf/osquery_perf/stats.go @@ -0,0 +1,241 @@ +package osquery_perf + +import ( + "log" + "sync" + "time" +) + +type Stats struct { + StartTime time.Time + errors int + osqueryEnrollments int + orbitEnrollments int + mdmEnrollments int + mdmSessions int + distributedWrites int + mdmCommandsReceived int + distributedReads int + configRequests int + configErrors int + resultLogRequests int + orbitErrors int + mdmErrors int + ddmDeclarationItemsErrors int + ddmConfigurationErrors int + ddmActivationErrors int + ddmStatusErrors int + ddmDeclarationItemsSuccess int + ddmConfigurationSuccess int + ddmActivationSuccess int + ddmStatusSuccess int + desktopErrors int + distributedReadErrors int + distributedWriteErrors int + resultLogErrors int + bufferedLogs int + + l sync.Mutex +} + +func (s *Stats) IncrementErrors(errors int) { + s.l.Lock() + defer s.l.Unlock() + s.errors += errors +} + +func (s *Stats) IncrementEnrollments() { + s.l.Lock() + defer s.l.Unlock() + s.osqueryEnrollments++ +} + +func (s *Stats) IncrementOrbitEnrollments() { + s.l.Lock() + defer s.l.Unlock() + s.orbitEnrollments++ +} + +func (s *Stats) IncrementMDMEnrollments() { + s.l.Lock() + defer s.l.Unlock() + s.mdmEnrollments++ +} + +func (s *Stats) IncrementMDMSessions() { + s.l.Lock() + defer s.l.Unlock() + s.mdmSessions++ +} + +func (s *Stats) IncrementDistributedWrites() { + s.l.Lock() + defer s.l.Unlock() + s.distributedWrites++ +} + +func (s *Stats) IncrementMDMCommandsReceived() { + s.l.Lock() + defer s.l.Unlock() + s.mdmCommandsReceived++ +} + +func (s *Stats) IncrementDistributedReads() { + s.l.Lock() + defer s.l.Unlock() + s.distributedReads++ +} + +func (s *Stats) IncrementConfigRequests() { + s.l.Lock() + defer s.l.Unlock() + s.configRequests++ +} + +func (s *Stats) IncrementConfigErrors() { + s.l.Lock() + defer s.l.Unlock() + s.configErrors++ +} + +func (s *Stats) IncrementResultLogRequests() { + s.l.Lock() + defer s.l.Unlock() + s.resultLogRequests++ +} + +func (s *Stats) IncrementOrbitErrors() { + s.l.Lock() + defer s.l.Unlock() + s.orbitErrors++ +} + +func (s *Stats) IncrementMDMErrors() { + s.l.Lock() + defer s.l.Unlock() + s.mdmErrors++ +} + +func (s *Stats) IncrementDDMDeclarationItemsErrors() { + s.l.Lock() + defer s.l.Unlock() + s.ddmDeclarationItemsErrors++ +} + +func (s *Stats) IncrementDDMConfigurationErrors() { + s.l.Lock() + defer s.l.Unlock() + s.ddmConfigurationErrors++ +} + +func (s *Stats) IncrementDDMActivationErrors() { + s.l.Lock() + defer s.l.Unlock() + s.ddmActivationErrors++ +} + +func (s *Stats) IncrementDDMStatusErrors() { + s.l.Lock() + defer s.l.Unlock() + s.ddmStatusErrors++ +} + +func (s *Stats) IncrementDDMDeclarationItemsSuccess() { + s.l.Lock() + defer s.l.Unlock() + s.ddmDeclarationItemsSuccess++ +} + +func (s *Stats) IncrementDDMConfigurationSuccess() { + s.l.Lock() + defer s.l.Unlock() + s.ddmConfigurationSuccess++ +} + +func (s *Stats) IncrementDDMActivationSuccess() { + s.l.Lock() + defer s.l.Unlock() + s.ddmActivationSuccess++ +} + +func (s *Stats) IncrementDDMStatusSuccess() { + s.l.Lock() + defer s.l.Unlock() + s.ddmStatusSuccess++ +} + +func (s *Stats) IncrementDesktopErrors() { + s.l.Lock() + defer s.l.Unlock() + s.desktopErrors++ +} + +func (s *Stats) IncrementDistributedReadErrors() { + s.l.Lock() + defer s.l.Unlock() + s.distributedReadErrors++ +} + +func (s *Stats) IncrementDistributedWriteErrors() { + s.l.Lock() + defer s.l.Unlock() + s.distributedWriteErrors++ +} + +func (s *Stats) IncrementResultLogErrors() { + s.l.Lock() + defer s.l.Unlock() + s.resultLogErrors++ +} + +func (s *Stats) UpdateBufferedLogs(v int) { + s.l.Lock() + defer s.l.Unlock() + s.bufferedLogs += v + if s.bufferedLogs < 0 { + s.bufferedLogs = 0 + } +} + +func (s *Stats) Log() { + s.l.Lock() + defer s.l.Unlock() + + log.Printf( + "uptime: %s, error rate: %.2f, osquery enrolls: %d, orbit enrolls: %d, mdm enrolls: %d, distributed/reads: %d, distributed/writes: %d, config requests: %d, result log requests: %d, mdm sessions initiated: %d, mdm commands received: %d, config errors: %d, distributed/read errors: %d, distributed/write errors: %d, log result errors: %d, orbit errors: %d, desktop errors: %d, mdm errors: %d, ddm declaration items success: %d, ddm declaration items errors: %d, ddm activation success: %d, ddm activation errors: %d, ddm configuration success: %d, ddm configuration errors: %d, ddm status success: %d, ddm status errors: %d, buffered logs: %d", + time.Since(s.StartTime).Round(time.Second), + float64(s.errors)/float64(s.osqueryEnrollments), + s.osqueryEnrollments, + s.orbitEnrollments, + s.mdmEnrollments, + s.distributedReads, + s.distributedWrites, + s.configRequests, + s.resultLogRequests, + s.mdmSessions, + s.mdmCommandsReceived, + s.configErrors, + s.distributedReadErrors, + s.distributedWriteErrors, + s.resultLogErrors, + s.orbitErrors, + s.desktopErrors, + s.mdmErrors, + s.ddmDeclarationItemsSuccess, + s.ddmDeclarationItemsErrors, + s.ddmActivationSuccess, + s.ddmActivationErrors, + s.ddmConfigurationSuccess, + s.ddmConfigurationErrors, + s.ddmStatusSuccess, + s.ddmStatusErrors, + s.bufferedLogs, + ) +} + +func (s *Stats) RunLoop() { + ticker := time.Tick(10 * time.Second) + for range ticker { + s.Log() + } +} diff --git a/docker-compose.yml b/docker-compose.yml index 62dc87a9db7c..cc1279d9442c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -128,7 +128,7 @@ services: # CAdvisor container allows monitoring other containers. Useful for # development. cadvisor: - image: google/cadvisor:latest + image: gcr.io/cadvisor/cadvisor:latest ports: - "5678:8080" volumes: diff --git a/docs/Configuration/agent-configuration.md b/docs/Configuration/agent-configuration.md index 36158f76f0f0..75d75a04caec 100644 --- a/docs/Configuration/agent-configuration.md +++ b/docs/Configuration/agent-configuration.md @@ -53,10 +53,10 @@ config: To see a description for all available settings, first [enroll your host](https://fleetdm.com/guides/enroll-hosts) to Fleet. Then, open your **Terminal** app and run `sudo orbit shell` to open an interactive osquery shell. Then run the following osquery query: ``` -osquery > SELECT name, value, description FROM osquery; +osquery > SELECT name, default_value, value, description FROM osquery_flags; ``` -You can also run this query to verify that the latest settings have been applied to your hosts. +> Running the interactive osquery shell loads a standalone instance of osquery, with a default configuration rather than the one set in `Agent options`. If you'd like to verify that your hosts are running with the latest settings set in `options`, run the query as a live query through Fleet. > If you revoked an old enroll secret, the `command_line_flags` won't update for hosts that enrolled to Fleet using this old enroll secret. This is because fleetd uses the enroll secret to receive new flags from Fleet. For these hosts, all existing features will work as expected. diff --git a/docs/Configuration/yaml-files.md b/docs/Configuration/yaml-files.md index ffec778328b3..65cbd36895ec 100644 --- a/docs/Configuration/yaml-files.md +++ b/docs/Configuration/yaml-files.md @@ -349,6 +349,7 @@ Use `labels_include_any` to target hosts that have any label in the array or `la - `pre_install_query.path` is the osquery query Fleet runs before installing the software. Software will be installed only if the [query returns results](https://fleetdm.com/tables) (default: `""`). - `install_script.path` specifies the command Fleet will run on hosts to install software. The [default script](https://github.com/fleetdm/fleet/tree/main/pkg/file/scripts) is dependent on the software type (i.e. .pkg). - `uninstall_script.path` is the script Fleet will run on hosts to uninstall software. The [default script](https://github.com/fleetdm/fleet/tree/main/pkg/file/scripts) is dependent on the software type (i.e. .pkg). +- `post_install_script.path` is the script Fleet will run on hosts after the software install. There is no default. - `self_service` specifies whether or not end users can install from **Fleet Desktop > Self-service**. #### Example @@ -361,6 +362,8 @@ install_script: path: ../lib/software/tailscale-install-script.ps1 uninstall_script: path: ../lib/software/tailscale-uninstall-script.ps1 +post_install_script: + path: ../lib/software/tailscale-config-script.ps1 self_service: true ``` @@ -424,7 +427,7 @@ org_settings: ### org_info -- `name` is the name of your organization (default: `""`) +- `org_name` is the name of your organization (default: `""`) - `logo_url` is a public URL of the logo for your organization (default: Fleet logo). - `org_logo_url_light_background` is a public URL of the logo for your organization that can be used with light backgrounds (default: Fleet logo). - `contact_url` is a URL that appears in error messages presented to end users (default: `"https://fleetdm.com/company/contact"`) @@ -590,7 +593,7 @@ org_settings: - `enable_failing_policies_webhook` (default: `false`) - `destination_url` is the URL to `POST` to when the condition for the webhook triggers (default: `""`). - `policy_ids` is the list of policies that will trigger a webhook. -- `host_batch_size` is the maximum number of hosts to batch in each webhook. A value of `0` means no batching (default: `0`). +- `host_batch_size` is the maximum number of host identifiers to send in one webhook request. A value of `0` means all host identifiers with a failing policy will be sent in a single request. #### Example @@ -630,8 +633,7 @@ org_settings: - `enable_vulnerabilities_webhook` (default: `false`) - `destination_url` is the URL to `POST` to when the condition for the webhook triggers (default: `""`). -- `days_count` is the number of days that hosts need to be offline to count as part of the percentage (default: `0`). -- `host_batch_size` is the maximum number of hosts to batch in each webhook. A value of `0` means no batching (default: `0`). +- `host_batch_size` is the maximum number of host identifiers to send in one webhook request. A value of `0` means all host identifiers with a detected vulnerability will be sent in a single request. #### Example diff --git a/docs/Contributing/API-for-contributors.md b/docs/Contributing/API-for-contributors.md index 8bfa61d60752..3246068dca94 100644 --- a/docs/Contributing/API-for-contributors.md +++ b/docs/Contributing/API-for-contributors.md @@ -4186,7 +4186,7 @@ _Available in Fleet Premium._ }, { "app_store_id": "497799835", - "self_service": true, + "self_service": true } ] } @@ -4194,7 +4194,32 @@ _Available in Fleet Premium._ ##### Default response -`Status: 204` +`Status: 200` + +```json +{ + "app_store_apps": [ + { + "team_id": 1, + "title_id": 123, + "app_store_id": "597799333", + "platform": "darwin" + }, + { + "team_id": 1, + "title_id": 124, + "app_store_id": "597799333", + "platform": "ios" + }, + { + "team_id": 1, + "title_id": 125, + "app_store_id": "597799333", + "platform": "ipados" + } + ] +} +``` ### Get token to download package diff --git a/docs/Contributing/Building-Fleet.md b/docs/Contributing/Building-Fleet.md index 20de06ffd3ce..8747b4950715 100644 --- a/docs/Contributing/Building-Fleet.md +++ b/docs/Contributing/Building-Fleet.md @@ -38,7 +38,7 @@ sudo npm install -g yarn # Install nvm to manage node versions (apt very out of date) https://github.com/nvm-sh/nvm#install--update-script curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash # refresh your session before continuing -nvm install v20.11.1 +nvm install v20.18.1 ``` #### Windows @@ -72,7 +72,7 @@ The binaries are now available in `./build/`. To set up a working local development environment, you must install the following minimum toolset: * [Go](https://golang.org/doc/install) -* [Node.js v20.11.1](https://nodejs.org/en/download/) and [Yarn](https://yarnpkg.com/en/docs/install) +* [Node.js v20.18.1](https://nodejs.org/en/download/) and [Yarn](https://yarnpkg.com/en/docs/install) * [GNU Make](https://www.gnu.org/software/make/) (probably already installed if you're on macOS/Linux) Once you have those minimum requirements, check out this [Loom video](https://www.loom.com/share/e7439f058eb44c45af872abe8f8de4a1) that walks through starting up a local development environment for Fleet. diff --git a/docs/Contributing/Testing-and-local-development.md b/docs/Contributing/Testing-and-local-development.md index 24fdea72903c..d7a41532dbf4 100644 --- a/docs/Contributing/Testing-and-local-development.md +++ b/docs/Contributing/Testing-and-local-development.md @@ -555,11 +555,11 @@ $ msiexec /i fleetd-base.msi FLEET_URL="" FLEET_SECRET="Render -

Deploy to Render in 5 minutes

+ +

Deploy to Render in 5 minutes

Render is a cloud hosting service that makes it easy to get up and running fast, without the typical configuration headaches of larger enterprise hosting providers. @@ -60,7 +60,7 @@ Render is a cloud hosting service that makes it easy to get up and running fast, Support for add/install software features is coming soon. Get [commmunity support](https://chat.osquery.io/c/fleet). -

AWS

+

Deploy at scale with AWS and Terraform

The simplest way to get started with Fleet at scale is to use AWS with Terraform. diff --git a/docs/Get started/anatomy.md b/docs/Get started/anatomy.md index a2e56f333be5..9d153414e449 100644 --- a/docs/Get started/anatomy.md +++ b/docs/Get started/anatomy.md @@ -2,43 +2,40 @@ This page details the core concepts you need to know to use Fleet. ## Fleet UI -Fleet UI is the GUI (graphical user interface) used to control Fleet. [Docs](https://fleetdm.com/docs/using-fleet/fleet-ui). +Fleet UI is the GUI (graphical user interface) used to control Fleet. [Learn more](https://youtu.be/1VNvg3_drow?si=SWyQSEQMoHUYDZ8C). ## Fleetctl Fleetctl (pronouced ā€œfleet controlā€) is a CLI (command line interface) tool for managing Fleet from the command line. [Docs](https://fleetdm.com/docs/using-fleet/fleetctl-cli). ## Fleetd -Fleetd is a bundle of agents provided by Fleet to gather information about your devices. Fleetd includes [osquery](https://www.osquery.io/), [Orbit](https://github.com/fleetdm/fleet/blob/main/orbit/README.md), Fleet Desktop, and the [Fleetd Chrome extension](https://github.com/fleetdm/fleet/blob/main/ee/fleetd-chrome/README.md). - -## Osquery -Osquery is an open-source tool for gathering information about the state of any device that the osquery agent has been installed on. [Learn more](https://www.osquery.io/). - -## Orbit -Orbit is an osquery version and configuration manager, built by Fleet. +Fleetd is a bundle of agents provided by Fleet to gather information about your devices. Fleetd includes: +- **Osquery:** an open-source tool for gathering information about the state of any device that the osquery agent has been installed on. [Learn more](https://www.osquery.io/). +- **Orbit:** an osquery version and configuration manager, built by Fleet. [Learn more](https://github.com/fleetdm/fleet/blob/main/orbit/README.md) +- **Fleetd Chrome extension:** enrolls ChromeOS devices in Fleet. [Docs](https://github.com/fleetdm/fleet/blob/main/ee/fleetd-chrome/README.md). ## Fleet Desktop Fleet Desktop is a menu bar icon that gives end users visibility into the security and status of their machine. [Docs](https://fleetdm.com/docs/using-fleet/fleet-desktop). -## Fleetd Chrome extension -The Fleetd Chrome extension enrolls ChromeOS devices in Fleet. [Docs](https://github.com/fleetdm/fleet/blob/main/ee/fleetd-chrome/README.md). - ## Host A host is a computer, server, or other endpoint. Fleet gathers information from Fleet's agent (fleetd) installed on each of your hosts. [Docs](https://fleetdm.com/docs/using-fleet/adding-hosts). ## Team -A team is a group of hosts. Use teams to segment your hosts into groups that reflect your organization's IT and security policies. [Docs](https://fleetdm.com/docs/using-fleet/teams). + +A team is a group of hosts. Organize hosts into teams to apply queries, policies, scripts, and other configurations tailored to their specific risk and compliance requirements. [Read the guide](https://fleetdm.com/guides/teams). ## Query A query in Fleet refers to an osquery query. Osquery uses basic SQL commands to request data from hosts. Use queries to manage, monitor, and identify threats on your devices. [Docs](https://fleetdm.com/docs/using-fleet/fleet-ui). ## Policy A policy is a specific ā€œyesā€ or ā€œnoā€ query. Use policies to manage security compliance in your -organization. Learn more [here](https://fleetdm.com/securing/what-are-fleet-policies). +organization. [Read the guide](https://fleetdm.com/securing/what-are-fleet-policies). ## Host vitals -Host vitals are the hard-coded queries Fleet uses to populate device details. +Fleet's built-in queries for collecting and storing important device information. -## Software library -An inventory of each hostā€™s installed software, including information about detected vulnerabilities (CVEs). +## Software +Software in Fleet refers to the following: +- **Software library:** a collection of Fleet-maintained apps, VPP, and custom install packages that can be installed on your hosts. [See available software](https://fleetdm.com/app-library). +- **Software inventory** an inventory of each hostā€™s installed software, including information about detected vulnerabilities (CVEs). diff --git a/docs/REST API/rest-api.md b/docs/REST API/rest-api.md index a21ac53a51f1..876546283f76 100644 --- a/docs/REST API/rest-api.md +++ b/docs/REST API/rest-api.md @@ -1337,7 +1337,7 @@ Modifies the Fleet's configuration with the supplied information. { "server_settings": { "server_url": "https://localhost:8080", - "enable_analytics": true, + "enable_analytics": true, "live_query_disabled": false, "query_reports_disabled": false, "ai_features_disabled": false @@ -1837,7 +1837,7 @@ _Available in Fleet Premium._ "path": "path/to/profile3.xml", "labels": ["Label 1", "Label 2"] } - ] + ] }, "end_user_authentication": { "entity_id": "", @@ -3520,7 +3520,7 @@ Note that IdP email is only supported on macOS hosts. It's collected once, durin "device_mapping": [ { "email": "user@example.com", - "source": "identity_provider" + "source": "mdm_idp_accounts" }, { "email": "user@example.com", @@ -3571,7 +3571,7 @@ Updates the email for the `custom` data source in the human-device mapping. This "device_mapping": [ { "email": "user@example.com", - "source": "identity_provider" + "source": "mdm_idp_accounts" }, { "email": "user@example.com", @@ -3964,6 +3964,7 @@ Resends a configuration profile for the specified host. | id | integer | path | **Required**. The host's ID. | | query | string | query | Search query keywords. Searchable fields include `name`. | | available_for_install | boolean | query | If `true` or `1`, only list software that is available for install (added by the user). Default is `false`. | +| vulnerable | boolean | query | If `true` or `1`, only list software that have vulnerabilities. Default is `false`. | | page | integer | query | Page number of the results to fetch.| | per_page | integer | query | Results per page.| @@ -4024,7 +4025,7 @@ Resends a configuration profile for the specified host. "uninstalled_at": "2024-05-15T15:23:57Z" } }, - "app_store_app": null, + "app_store_app": null, "source": "", "status": "pending_uninstall", "installed_versions": [], @@ -4334,7 +4335,7 @@ To wipe a macOS, iOS, iPadOS, or Windows host, the host must have MDM turned on. "script_execution_id": "ecf22dba-07dc-40a9-b122-5480e948b756", "status": "failed_uninstall" } - }, + }, { "created_at": "2023-07-27T14:35:08Z", "actor_id": 1, @@ -5473,7 +5474,7 @@ Get aggregate status counts of profiles for to macOS and Windows hosts that are - [Set custom MDM setup enrollment profile](#set-custom-mdm-setup-enrollment-profile) - [Get custom MDM setup enrollment profile](#get-custom-mdm-setup-enrollment-profile) - [Delete custom MDM setup enrollment profile](#delete-custom-mdm-setup-enrollment-profile) -- [Get Over-the-Air (OTA) enrollment profile](#get-over-the-air-ota-enrollment-profile) +- [Get Over-the-Air (OTA) enrollment profile](#get-over-the-air-ota-enrollment-profile) - [Get manual enrollment profile](#get-manual-enrollment-profile) - [Upload a bootstrap package](#upload-a-bootstrap-package) - [Get metadata about a bootstrap package](#get-metadata-about-a-bootstrap-package) @@ -9614,7 +9615,6 @@ Returns information about the specified Fleet-maintained app. "fleet_maintained_app": { "id": 1, "name": "1Password", - "filename": "1Password-8.10.44-aarch64.zip", "version": "8.10.40", "platform": "darwin", "install_script": "#!/bin/sh\ninstaller -pkg \"$INSTALLER_PATH\" -target /", @@ -9763,7 +9763,7 @@ _Available in Fleet Premium._ Get the results of a software package install. -To get the results of an App Store app install, use the [List MDM commands](#list-mdm-commands) and [Get MDM command results](#get-mdm-command-results) API enpoints. Fleet uses an MDM command to install App Store apps. +To get the results of an App Store app install, use the [List MDM commands](#list-mdm-commands) and [Get MDM command results](#get-mdm-command-results) API endpoints. Fleet uses an MDM command to install App Store apps. | Name | Type | In | Description | | ---- | ------- | ---- | -------------------------------------------- | diff --git a/docs/queries.yml b/docs/queries.yml new file mode 100644 index 000000000000..67714837f34f --- /dev/null +++ b/docs/queries.yml @@ -0,0 +1,1594 @@ +# Host vital queries (from `server/service/osquery_utils/queries.go`) +apiVersion: v1 +kind: built-in +spec: + name: Battery + platform: windows, darwin + description: Determines battery health based on the cycle count, designed capacity, and max capacity of the battery. + query: | + SELECT + serial_number, cycle_count, designed_capacity, max_capacity + FROM battery + purpose: Informational + tags: built-in + discovery: battery +--- +apiVersion: v1 +kind: built-in +spec: + name: ChromeOS profile user info + platform: chrome + description: Retrieves information about profiles on ChromeOS devices + query: SELECT email FROM users + purpose: Informational + tags: built-in +--- +apiVersion: v1 +kind: built-in +spec: + name: Disk encryption (macOS) + platform: darwin + description: Retrieves the disk encryption status of a macOS device. + query: | + SELECT + 1 + FROM disk_encryption + WHERE user_uuid IS NOT "" + AND filevault_status = 'on' LIMIT 1 + purpose: Informational + tags: built-in +--- +apiVersion: v1 +kind: built-in +spec: + name: Disk encryption (Linux) + platform: linux + description: "Retrieves the default disk's (/) encryption status of a device running Linux." + query: | + SELECT + de.encrypted, m.path + FROM disk_encryption de + JOIN mounts m ON m.device_alias = de.name + purpose: Informational + tags: built-in +--- +apiVersion: v1 +kind: built-in +spec: + name: Disk encryption (Windows) + platform: windows + description: Retrieves the disk encryption status of a Windows device. + query: | + WITH encrypted(enabled) AS ( + SELECT CASE WHEN + NOT EXISTS(SELECT 1 FROM windows_optional_features WHERE name = 'BitLocker') + OR + (SELECT 1 FROM windows_optional_features WHERE name = 'BitLocker' AND state = 1) + THEN (SELECT 1 FROM bitlocker_info WHERE drive_letter = 'C:' AND protection_status = 1) + END) + SELECT 1 FROM encrypted WHERE enabled IS NOT NULL + purpose: Informational + tags: built-in +--- +apiVersion: v1 +kind: built-in +spec: + name: Disk space + platform: linux, darwin + description: Retrieves total amount of free disk space on a host. + query: | + SELECT + (blocks_available * 100 / blocks) AS percent_disk_space_available, + round((blocks_available * blocks_size * 10e-10),2) AS gigs_disk_space_available, + round((blocks * blocks_size * 10e-10),2) AS gigs_total_disk_space + FROM mounts + WHERE path = '/' LIMIT 1 + purpose: Informational + tags: built-in +--- +apiVersion: v1 +kind: built-in +spec: + name: Disk space (Windows) + platform: windows + description: Retrieves total amount of free disk space on a Windows host. + query: | + SELECT + ROUND((sum(free_space) * 100 * 10e-10) / (sum(size) * 10e-10)) AS percent_disk_space_available, + ROUND(sum(free_space) * 10e-10) AS gigs_disk_space_available, + ROUND(sum(size) * 10e-10) AS gigs_total_disk_space + FROM logical_drives + WHERE file_system = 'NTFS' LIMIT 1 + purpose: Informational + tags: built-in +--- +apiVersion: v1 +kind: built-in +spec: + name: Google Chrome profiles + platform: windows, darwin, linux, chrome + description: Retrieves the email address of Google Chrome profile on a host. + query: | + SELECT + email + FROM google_chrome_profiles + WHERE NOT ephemeral AND email <> '' + discovery: google_chrome_profiles + purpose: Informational + tags: built-in +# --- # Note: this vital is commented out because it requires the kubequery osquery extension. +# apiVersion: v1 +# kind: built-in +# spec: +# name: Kubequery info +# platform: windows, darwin, linux, chrome +# description: Retrieves information about Kubernetes clusters running kubequery. +# query: SELECT * FROM kubernetes_info +# # discovery: kubernetes_info # Note: this value is commented out because this table is from kubequery and does not exist in the osquery schema. +# purpose: Informational +# tags: built-in +--- +apiVersion: v1 +kind: built-in +spec: + name: MDM (macOS) + platform: darwin + description: Retrieves information about the mobile device management (MDM) solution this host is enrolled in. + query: | + SELECT + enrolled, server_url, installed_from_dep, payload_identifier + FROM mdm + discovery: mdm + purpose: Informational + tags: built-in +--- +apiVersion: v1 +kind: built-in +spec: + name: MDM configuration profiles + platform: darwin + description: Retrieves information about mobile device management (MDM) configuration profiles installed on a macOS device. + query: | + SELECT + display_name, identifier, install_date + FROM macos_profiles + WHERE type = "Configuration" + discovery: macos_profiles + purpose: Informational + tags: built-in +--- +apiVersion: v1 +kind: built-in +spec: + name: MDM Disk encryption key file + platform: darwin + description: Retrieves the encrypted FileVault recovery key for managed macOS devices. + query: | + WITH + de AS (SELECT IFNULL((SELECT 1 FROM disk_encryption WHERE user_uuid IS NOT "" AND filevault_status = 'on' LIMIT 1), 0) as encrypted), + fv AS (SELECT base64_encrypted as filevault_key FROM filevault_prk) + SELECT encrypted, filevault_key FROM de LEFT JOIN fv + discovery: filevault_prk + purpose: Informational + tags: built-in +--- +apiVersion: v1 +kind: built-in +spec: + name: MDM Disk encryption key file lines + platform: darwin + description: Retrieves the encrypted FileVault recovery key and checks for related file data on managed macOS devices. + query: | + WITH + de AS (SELECT IFNULL((SELECT 1 FROM disk_encryption WHERE user_uuid IS NOT "" AND filevault_status = 'on' LIMIT 1), 0) as encrypted), + fl AS (SELECT line FROM file_lines WHERE path = '/var/db/FileVaultPRK.dat') + SELECT encrypted, hex(line) as hex_line FROM de LEFT JOIN fl; + discovery: filevault_prk # TODO: this query's discovery query also checks for file_lines. + purpose: Informational + tags: built-in +--- +apiVersion: v1 +kind: built-in +spec: + name: MDM (Windows) + platform: windows + description: Retrieves information about the mobile device management (MDM) solution a windows device is enrolled in. + query: | + WITH registry_keys AS ( + SELECT * + FROM registry + WHERE path LIKE 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Enrollments\%%' + ), + enrollment_info AS ( + SELECT + MAX(CASE WHEN name = 'UPN' THEN data END) AS upn, + MAX(CASE WHEN name = 'DiscoveryServiceFullURL' THEN data END) AS discovery_service_url, + MAX(CASE WHEN name = 'ProviderID' THEN data END) AS provider_id, + MAX(CASE WHEN name = 'EnrollmentState' THEN data END) AS state, + MAX(CASE WHEN name = 'AADResourceID' THEN data END) AS aad_resource_id + FROM registry_keys + GROUP BY key + ), + installation_info AS ( + SELECT data AS installation_type + FROM registry + WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallationType' + LIMIT 1 + ) + SELECT + e.aad_resource_id, + e.discovery_service_url, + e.provider_id, + i.installation_type + FROM installation_info i + LEFT JOIN enrollment_info e ON e.upn IS NOT NULL + WHERE COALESCE(e.state, '0') IN ('0', '1', '2', '3') + LIMIT 1 + purpose: Informational + tags: built-in +--- +apiVersion: v1 +kind: built-in +spec: + name: Munki info + platform: darwin + description: Retrives information about the last Munki run on a macOS device. + query: | + SELECT + version, errors, warnings + FROM munki_info + discovery: munki_info + purpose: Informational + tags: built-in +--- +apiVersion: v1 +kind: built-in +spec: + name: Network interfaces (Chrome) + platform: chrome + description: Retrives information about a ChromeOS device's current network. + query: | + SELECT + ipv4 AS address, mac + FROM network_interfaces LIMIT 1 + purpose: Informational + tags: built-in +--- +apiVersion: v1 +kind: built-in +spec: + name: Network interfaces (macOS/Linux) + platform: darwin, linux + description: Retrieves information about network interfaces on macOS and Linux devices + query: | + SELECT + ia.address, + id.mac + FROM + interface_addresses ia + JOIN interface_details id ON id.interface = ia.interface + JOIN routes r ON r.interface = ia.interface + WHERE + (r.destination = '0.0.0.0' OR r.destination = '::') AND r.netmask = 0 + AND r.type = 'gateway' + AND ( + inet_aton(ia.address) IS NOT NULL AND ( + split(ia.address, '.', 0) = '10' + OR (split(ia.address, '.', 0) = '172' AND (CAST(split(ia.address, '.', 1) AS INTEGER) & 0xf0) = 16) + OR (split(ia.address, '.', 0) = '192' AND split(ia.address, '.', 1) = '168') + ) + OR (inet_aton(ia.address) IS NULL AND regex_match(lower(ia.address), '^f[cd][0-9a-f][0-9a-f]:[0-9a-f:]+', 0) IS NOT NULL) + ) + ORDER BY + r.metric ASC, + inet_aton(ia.address) IS NOT NULL DESC + LIMIT 1; + purpose: Informational + tags: built-in +--- +apiVersion: v1 +kind: built-in +spec: + name: Network interfaces (Windows) + platform: windows + description: Retrieves information about network interfaces on devices running windows. + query: | + SELECT + ia.address, + id.mac + FROM + interface_addresses ia + JOIN interface_details id ON id.interface = ia.interface + JOIN routes r ON r.interface = ia.address + WHERE + (r.destination = '0.0.0.0' OR r.destination = '::') AND r.netmask = 0 + AND r.type = 'remote' + AND ( + inet_aton(ia.address) IS NOT NULL AND ( + split(ia.address, '.', 0) = '10' + OR (split(ia.address, '.', 0) = '172' AND (CAST(split(ia.address, '.', 1) AS INTEGER) & 0xf0) = 16) + OR (split(ia.address, '.', 0) = '192' AND split(ia.address, '.', 1) = '168') + ) + OR (inet_aton(ia.address) IS NULL AND regex_match(lower(ia.address), '^f[cd][0-9a-f][0-9a-f]:[0-9a-f:]+', 0) IS NOT NULL) + ) + ORDER BY + r.metric ASC, + inet_aton(ia.address) IS NOT NULL DESC + LIMIT 1; + purpose: Informational + tags: built-in +--- +apiVersion: v1 +kind: built-in +spec: + name: Orbit information + platform: darwin, linux, windows + description: Retreives configuration information the osquery version and configuration manager running on a device. + query: SELECT * FROM orbit_info + purpose: Informational + tags: built-in +--- +apiVersion: v1 +kind: built-in +spec: + name: Operating system information (Chrome) + platform: chrome + description: Retrieves information about a ChromeOS device's operating system. + query: | + SELECT + os.name, + os.major, + os.minor, + os.patch, + os.build, + os.arch, + os.platform, + os.version AS version, + os.version AS kernel_version + FROM + os_version os; + purpose: Informational + tags: built-in +--- +apiVersion: v1 +kind: built-in +spec: + name: Operating system information (macOS/Linux) + platform: darwin, linux + description: Retrieves information about a Unix-based device's operating system. + query: | + SELECT + os.name, + os.major, + os.minor, + os.patch, + os.extra, + os.build, + os.arch, + os.platform, + os.version AS version, + k.version AS kernel_version + FROM + os_version os, + kernel_info k + purpose: Informational + tags: built-in +--- +apiVersion: v1 +kind: built-in +spec: + name: Operating system information (Windows) + platform: windows + description: Retrieves information about a Windows device's operating system. + query: | + WITH display_version_table AS ( + SELECT data as display_version + FROM registry + WHERE path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\DisplayVersion' + ), + ubr_table AS ( + SELECT data AS ubr + FROM registry + WHERE path ='HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\UBR' + ) + SELECT + os.name, + os.platform, + os.arch, + k.version as kernel_version, + COALESCE(CONCAT((SELECT version FROM os_version), '.', u.ubr), k.version) AS version, + COALESCE(d.display_version, '') AS display_version + FROM + os_version os, + kernel_info k + LEFT JOIN + display_version_table d + LEFT JOIN + ubr_table u + purpose: Informational + tags: built-in +--- +apiVersion: v1 +kind: built-in +spec: + name: Operating system version (Windows) + platform: windows + description: Retrieves operating system version information from a Windows device. + query: | + WITH display_version_table AS ( + SELECT data as display_version + FROM registry + WHERE path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\DisplayVersion' + ), + ubr_table AS ( + SELECT data AS ubr + FROM registry + WHERE path ='HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\UBR' + ) + SELECT + os.name, + COALESCE(d.display_version, '') AS display_version, + COALESCE(CONCAT((SELECT version FROM os_version), '.', u.ubr), k.version) AS version + FROM + os_version os, + kernel_info k + LEFT JOIN + display_version_table d + LEFT JOIN + ubr_table u + purpose: Informational + tags: built-in +--- +apiVersion: v1 +kind: built-in +spec: + name: Osquery flags + platform: darwin, linux, windows + description: Retrieves the values of osquery configuration flags related to query scheduling, configuration updates, and logging intervals for active processes. + query: | + SELECT + name, value + FROM osquery_flags + WHERE name IN ("distributed_interval", "config_tls_refresh", "config_refresh", "logger_tls_period") + purpose: Informational + tags: built-in +--- +apiVersion: v1 +kind: built-in +spec: + name: Osquery information + platform: darwin, windows, linux + description: Gathers information about the osquery process running on a device. + query: SELECT * FROM osquery_info LIMIT 1 + purpose: Informational + tags: built-in +--- +apiVersion: v1 +kind: built-in +spec: + name: Scheduled osquery statistics + platform: darwin, windows, linux + description: Retrieves statistics about queries that are scheduled on a device. + query: | + SELECT *, + (SELECT value from osquery_flags where name = 'pack_delimiter') AS delimiter + FROM osquery_schedule + purpose: Informational + tags: built-in +--- +apiVersion: v1 +kind: built-in +spec: + name: Software (Chrome) + platform: chrome + description: Gathers information about software installed on a ChromeOS device. + query: | + SELECT + name AS name, + version AS version, + identifier AS extension_id, + browser_type AS browser, + 'chrome_extensions' AS source, + '' AS vendor, + '' AS installed_path + FROM chrome_extensions + purpose: Informational + tags: built-in +--- +apiVersion: v1 +kind: built-in +spec: + name: Software (macOS) + platform: darwin + description: Gathers information about software installed on a device running linux. + query: | + WITH cached_users AS (WITH cached_groups AS (select * from groups) + SELECT uid, username, type, groupname, shell + FROM users LEFT JOIN cached_groups USING (gid) + WHERE type <> 'special' AND shell NOT LIKE '%/false' AND shell NOT LIKE '%/nologin' AND shell NOT LIKE '%/shutdown' AND shell NOT LIKE '%/halt' AND username NOT LIKE '%$' AND username NOT LIKE '\_%' ESCAPE '\' AND NOT (username = 'sync' AND shell ='/bin/sync' AND directory <> '')) + SELECT + name AS name, + version AS version, + '' AS extension_id, + '' AS browser, + 'deb_packages' AS source, + '' AS release, + '' AS vendor, + '' AS arch, + '' AS installed_path + FROM deb_packages + WHERE status LIKE '% ok installed' + UNION + SELECT + package AS name, + version AS version, + '' AS extension_id, + '' AS browser, + 'portage_packages' AS source, + '' AS release, + '' AS vendor, + '' AS arch, + '' AS installed_path + FROM portage_packages + UNION + SELECT + name AS name, + version AS version, + '' AS extension_id, + '' AS browser, + 'rpm_packages' AS source, + release AS release, + vendor AS vendor, + arch AS arch, + '' AS installed_path + FROM rpm_packages + UNION + SELECT + name AS name, + version AS version, + '' AS extension_id, + '' AS browser, + 'npm_packages' AS source, + '' AS release, + '' AS vendor, + '' AS arch, + path AS installed_path + FROM npm_packages + UNION + SELECT + name AS name, + version AS version, + identifier AS extension_id, + browser_type AS browser, + 'chrome_extensions' AS source, + '' AS release, + '' AS vendor, + '' AS arch, + path AS installed_path + FROM cached_users CROSS JOIN chrome_extensions USING (uid) + UNION + SELECT + name AS name, + version AS version, + identifier AS extension_id, + 'firefox' AS browser, + 'firefox_addons' AS source, + '' AS release, + '' AS vendor, + '' AS arch, + path AS installed_path + FROM cached_users CROSS JOIN firefox_addons USING (uid) + UNION + SELECT + name AS name, + version AS version, + '' AS extension_id, + '' AS browser, + 'python_packages' AS source, + '' AS release, + '' AS vendor, + '' AS arch, + path AS installed_path + FROM python_packages + purpose: Informational + tags: built-in +--- +apiVersion: v1 +kind: built-in +spec: + name: Software (Linux) + platform: linux + description: Gathers information about software installed on a device running linux. + query: | + WITH cached_users AS (WITH cached_groups AS (select * from groups) + SELECT uid, username, type, groupname, shell + FROM users LEFT JOIN cached_groups USING (gid) + WHERE type <> 'special' AND shell NOT LIKE '%/false' AND shell NOT LIKE '%/nologin' AND shell NOT LIKE '%/shutdown' AND shell NOT LIKE '%/halt' AND username NOT LIKE '%$' AND username NOT LIKE '\_%' ESCAPE '\' AND NOT (username = 'sync' AND shell ='/bin/sync' AND directory <> '')) + SELECT + name AS name, + version AS version, + '' AS extension_id, + '' AS browser, + 'deb_packages' AS source, + '' AS release, + '' AS vendor, + '' AS arch, + '' AS installed_path + FROM deb_packages + WHERE status LIKE '% ok installed' + UNION + SELECT + package AS name, + version AS version, + '' AS extension_id, + '' AS browser, + 'portage_packages' AS source, + '' AS release, + '' AS vendor, + '' AS arch, + '' AS installed_path + FROM portage_packages + UNION + SELECT + name AS name, + version AS version, + '' AS extension_id, + '' AS browser, + 'rpm_packages' AS source, + release AS release, + vendor AS vendor, + arch AS arch, + '' AS installed_path + FROM rpm_packages + UNION + SELECT + name AS name, + version AS version, + '' AS extension_id, + '' AS browser, + 'npm_packages' AS source, + '' AS release, + '' AS vendor, + '' AS arch, + path AS installed_path + FROM npm_packages + UNION + SELECT + name AS name, + version AS version, + identifier AS extension_id, + browser_type AS browser, + 'chrome_extensions' AS source, + '' AS release, + '' AS vendor, + '' AS arch, + path AS installed_path + FROM cached_users CROSS JOIN chrome_extensions USING (uid) + UNION + SELECT + name AS name, + version AS version, + identifier AS extension_id, + 'firefox' AS browser, + 'firefox_addons' AS source, + '' AS release, + '' AS vendor, + '' AS arch, + path AS installed_path + FROM cached_users CROSS JOIN firefox_addons USING (uid) + UNION + SELECT + name AS name, + version AS version, + '' AS extension_id, + '' AS browser, + 'python_packages' AS source, + '' AS release, + '' AS vendor, + '' AS arch, + path AS installed_path + FROM python_packages + purpose: Informational + tags: built-in +--- +apiVersion: v1 +kind: built-in +spec: + name: Software codesign + platform: darwin + description: A software override query to append codesign information to macOS software entries. Requires fleetd + query: | + WITH cached_users AS (WITH cached_groups AS (select * from groups) + SELECT uid, username, type, groupname, shell + FROM users LEFT JOIN cached_groups USING (gid) + WHERE type <> 'special' AND shell NOT LIKE '%/false' AND shell NOT LIKE '%/nologin' AND shell NOT LIKE '%/shutdown' AND shell NOT LIKE '%/halt' AND username NOT LIKE '%$' AND username NOT LIKE '\_%' ESCAPE '\' AND NOT (username = 'sync' AND shell ='/bin/sync' AND directory <> '')) + SELECT + name AS name, + version AS version, + '' AS extension_id, + '' AS browser, + 'deb_packages' AS source, + '' AS release, + '' AS vendor, + '' AS arch, + '' AS installed_path + FROM deb_packages + WHERE status LIKE '% ok installed' + UNION + SELECT + package AS name, + version AS version, + '' AS extension_id, + '' AS browser, + 'portage_packages' AS source, + '' AS release, + '' AS vendor, + '' AS arch, + '' AS installed_path + FROM portage_packages + UNION + SELECT + name AS name, + version AS version, + '' AS extension_id, + '' AS browser, + 'rpm_packages' AS source, + release AS release, + vendor AS vendor, + arch AS arch, + '' AS installed_path + FROM rpm_packages + UNION + SELECT + name AS name, + version AS version, + '' AS extension_id, + '' AS browser, + 'npm_packages' AS source, + '' AS release, + '' AS vendor, + '' AS arch, + path AS installed_path + FROM npm_packages + UNION + SELECT + name AS name, + version AS version, + identifier AS extension_id, + browser_type AS browser, + 'chrome_extensions' AS source, + '' AS release, + '' AS vendor, + '' AS arch, + path AS installed_path + FROM cached_users CROSS JOIN chrome_extensions USING (uid) + UNION + SELECT + name AS name, + version AS version, + identifier AS extension_id, + 'firefox' AS browser, + 'firefox_addons' AS source, + '' AS release, + '' AS vendor, + '' AS arch, + path AS installed_path + FROM cached_users CROSS JOIN firefox_addons USING (uid) + UNION + SELECT + name AS name, + version AS version, + '' AS extension_id, + '' AS browser, + 'python_packages' AS source, + '' AS release, + '' AS vendor, + '' AS arch, + path AS installed_path + FROM python_packages + purpose: Informational + tags: built-in +--- +apiVersion: v1 +kind: built-in +spec: + name: Software Firefox + platform: darwin + description: A software override query to differentiate between Firefox and Firefox ESR on macOS. Requires fleetd + query: | + WITH app_paths AS ( + SELECT path + FROM apps + WHERE bundle_identifier = 'org.mozilla.firefox' + ), + remoting_name AS ( + SELECT value, path + FROM parse_ini + WHERE key = 'RemotingName' + AND path IN (SELECT CONCAT(path, '/Contents/Resources/application.ini') FROM app_paths) + ) + SELECT + CASE + WHEN remoting_name.value = 'firefox-esr' THEN 'Firefox ESR.app' + ELSE 'Firefox.app' + END AS name, + COALESCE(NULLIF(apps.bundle_short_version, ''), apps.bundle_version) AS version, + apps.bundle_identifier AS bundle_identifier, + '' AS extension_id, + '' AS browser, + 'apps' AS source, + '' AS vendor, + apps.last_opened_time AS last_opened_at, + apps.path AS installed_path + FROM apps + LEFT JOIN remoting_name ON apps.path = REPLACE(remoting_name.path, '/Contents/Resources/application.ini', '') + WHERE apps.bundle_identifier = 'org.mozilla.firefox' + discovery: parse_ini + purpose: Informational + tags: built-in +--- +apiVersion: v1 +kind: built-in +spec: + name: VScode extensions + platform: darwin, windows, linux + description: Gathers information about Visual Studio Code extensions installed on a device. + query: | + WITH cached_users AS (WITH cached_groups AS (select * from groups) + SELECT uid, username, type, groupname, shell + FROM users LEFT JOIN cached_groups USING (gid) + WHERE type <> 'special' AND shell NOT LIKE '%/false' AND shell NOT LIKE '%/nologin' AND shell NOT LIKE '%/shutdown' AND shell NOT LIKE '%/halt' AND username NOT LIKE '%$' AND username NOT LIKE '\_%' ESCAPE '\' AND NOT (username = 'sync' AND shell ='/bin/sync' AND directory <> '')) + SELECT + name, + version, + '' AS bundle_identifier, + uuid AS extension_id, + '' AS browser, + 'vscode_extensions' AS source, + publisher AS vendor, + '' AS last_opened_at, + path AS installed_path + FROM cached_users CROSS JOIN vscode_extensions USING (uid) + discovery: vscode_extensions + purpose: Informational + tags: built-in +--- +apiVersion: v1 +kind: built-in +spec: + name: Software (Windows) + platform: windows + description: Gathers information about software installed on a device running Windows. + query: | + WITH cached_users AS (WITH cached_groups AS (select * from groups) + SELECT uid, username, type, groupname, shell + FROM users LEFT JOIN cached_groups USING (gid) + WHERE type <> 'special' AND shell NOT LIKE '%/false' AND shell NOT LIKE '%/nologin' AND shell NOT LIKE '%/shutdown' AND shell NOT LIKE '%/halt' AND username NOT LIKE '%$' AND username NOT LIKE '\_%' ESCAPE '\' AND NOT (username = 'sync' AND shell ='/bin/sync' AND directory <> '')) + SELECT + name AS name, + version AS version, + '' AS extension_id, + '' AS browser, + 'programs' AS source, + publisher AS vendor, + install_location AS installed_path + FROM programs + UNION + SELECT + name AS name, + version AS version, + '' AS extension_id, + '' AS browser, + 'python_packages' AS source, + '' AS vendor, + path AS installed_path + FROM python_packages + UNION + SELECT + name AS name, + version AS version, + '' AS extension_id, + '' AS browser, + 'ie_extensions' AS source, + '' AS vendor, + path AS installed_path + FROM ie_extensions + UNION + SELECT + name AS name, + version AS version, + identifier AS extension_id, + browser_type AS browser, + 'chrome_extensions' AS source, + '' AS vendor, + path AS installed_path + FROM cached_users CROSS JOIN chrome_extensions USING (uid) + UNION + SELECT + name AS name, + version AS version, + identifier AS extension_id, + 'firefox' AS browser, + 'firefox_addons' AS source, + '' AS vendor, + path AS installed_path + FROM cached_users CROSS JOIN firefox_addons USING (uid) + UNION + SELECT + name AS name, + version AS version, + '' AS extension_id, + '' AS browser, + 'chocolatey_packages' AS source, + '' AS vendor, + path AS installed_path + FROM chocolatey_packages + purpose: Informational + tags: built-in +--- +apiVersion: v1 +kind: built-in +spec: + name: System information + platform: windows + description: Retrieves information about a device's hardware. + query: SELECT * FROM system_info LIMIT 1 + purpose: Informational + tags: built-in +--- +apiVersion: v1 +kind: built-in +spec: + name: Uptime + platform: darwin, linux, windows + description: Retrieves the amount time passed since a device's last boot. + query: SELECT * FROM uptime LIMIT 1 + purpose: Informational + tags: built-in +--- +apiVersion: v1 +kind: built-in +spec: + name: Users + platform: darwin, linux, windows + description: Retrieves information about user accounts. + query: | + WITH cached_groups AS (select * from groups) + SELECT uid, username, type, groupname, shell + FROM users LEFT JOIN cached_groups USING (gid) + WHERE type <> 'special' AND shell NOT LIKE '%/false' AND shell NOT LIKE '%/nologin' AND shell NOT LIKE '%/shutdown' AND shell NOT LIKE '%/halt' AND username NOT LIKE '%$' AND username NOT LIKE '\_%' ESCAPE '\' AND NOT (username = 'sync' AND shell ='/bin/sync' AND directory <> '') + purpose: Informational + tags: built-in +--- +apiVersion: v1 +kind: built-in +spec: + name: Users (Chrome) + platform: chrome + description: Retrieves information about user accounts on a ChromeOS device. + query: | + SELECT + uid, username, email + FROM users; + purpose: Informational + tags: built-in +--- +apiVersion: v1 +kind: built-in +spec: + name: Windows update history + platform: windows + description: Retrieves the history of the update events on a Windows host. + query: | + SELECT + date, title + FROM windows_update_history + WHERE result_code = 'Succeeded'; + discovery: windows_update_history + purpose: Informational + tags: built-in +--- +# From docs/01-Using-Fleet/standard-query-library/standard-query-library.yml +apiVersion: v1 +kind: query +spec: + name: Get OpenSSL versions + platform: linux + description: Retrieves the OpenSSL version. + query: SELECT name AS name, version AS version, 'deb_packages' AS source FROM deb_packages WHERE name LIKE 'openssl%' UNION SELECT name AS name, version AS version, 'apt_sources' AS source FROM apt_sources WHERE name LIKE 'openssl%' UNION SELECT name AS name, version AS version, 'rpm_packages' AS source FROM rpm_packages WHERE name LIKE 'openssl%'; + purpose: Informational + tags: inventory + contributors: zwass +--- +apiVersion: v1 +kind: query +spec: + name: Get authorized SSH keys + platform: darwin, linux + description: Presence of authorized SSH keys may be unusual on laptops. Could be completely normal on servers, but may be worth auditing for unusual keys and/or changes. + query: SELECT username, authorized_keys. * FROM users CROSS JOIN authorized_keys USING (uid); + purpose: Informational + remediation: Check out the linked table (https://github.com/fleetdm/fleet/blob/32b4d53e7f1428ce43b0f9fa52838cbe7b413eed/handbook/queries/detect-hosts-with-high-severity-vulnerable-versions-of-openssl.md#table-of-vulnerable-openssl-versions) to determine if the installed version is a high severity vulnerability and view the corresponding CVE(s) + tags: built-in, ssh + contributors: mike-j-thomas +--- +apiVersion: v1 +kind: query +spec: + name: Get authorized keys for Domain Joined Accounts + platform: darwin, linux + description: List authorized_keys for each user on the system. + query: SELECT * FROM users CROSS JOIN authorized_keys USING(uid) WHERE username IN (SELECT distinct(username) FROM last); + purpose: Informational + tags: active directory, ssh + contributors: anelshaer +--- +apiVersion: v1 +kind: query +spec: + name: Get crashes + platform: darwin + description: Retrieve application, system, and mobile app crash logs. + query: SELECT uid, datetime, responsible, exception_type, identifier, version, crash_path FROM users CROSS JOIN crashes USING (uid); + purpose: Informational + tags: troubleshooting + contributors: zwass +--- +apiVersion: v1 +kind: query +spec: + name: Get installed Chrome Extensions + platform: darwin, linux, windows + description: List installed Chrome Extensions for all users. + query: SELECT * FROM users CROSS JOIN chrome_extensions USING (uid); + purpose: Informational + tags: browser, built-in, inventory + contributors: zwass +--- +apiVersion: v1 +kind: query +spec: + name: Get installed Linux software + platform: linux + description: Get all software installed on a Linux computer, including browser plugins and installed packages. Note that this does not include other running processes in the processes table. + query: SELECT name AS name, version AS version, 'Package (APT)' AS type, 'apt_sources' AS source FROM apt_sources UNION SELECT name AS name, version AS version, 'Package (deb)' AS type, 'deb_packages' AS source FROM deb_packages UNION SELECT package AS name, version AS version, 'Package (Portage)' AS type, 'portage_packages' AS source FROM portage_packages UNION SELECT name AS name, version AS version, 'Package (RPM)' AS type, 'rpm_packages' AS source FROM rpm_packages UNION SELECT name AS name, '' AS version, 'Package (YUM)' AS type, 'yum_sources' AS source FROM yum_sources UNION SELECT name AS name, version AS version, 'Package (NPM)' AS type, 'npm_packages' AS source FROM npm_packages UNION SELECT name AS name, version AS version, 'Package (Python)' AS type, 'python_packages' AS source FROM python_packages; + purpose: Informational + tags: inventory, built-in + contributors: zwass +--- +apiVersion: v1 +kind: query +spec: + name: Get installed macOS software + platform: darwin + description: Get all software installed on a macOS computer, including apps, browser plugins, and installed packages. Note that this does not include other running processes in the processes table. + query: SELECT name AS name, bundle_short_version AS version, 'Application (macOS)' AS type, 'apps' AS source FROM apps UNION SELECT name AS name, version AS version, 'Package (Python)' AS type, 'python_packages' AS source FROM python_packages UNION SELECT name AS name, version AS version, 'Browser plugin (Chrome)' AS type, 'chrome_extensions' AS source FROM chrome_extensions UNION SELECT name AS name, version AS version, 'Browser plugin (Firefox)' AS type, 'firefox_addons' AS source FROM firefox_addons UNION SELECT name As name, version AS version, 'Browser plugin (Safari)' AS type, 'safari_extensions' AS source FROM safari_extensions UNION SELECT name AS name, version AS version, 'Package (Homebrew)' AS type, 'homebrew_packages' AS source FROM homebrew_packages; + purpose: Informational + tags: inventory, built-in + contributors: zwass +--- +apiVersion: v1 +kind: query +spec: + name: Get installed Safari extensions + platform: darwin + description: Retrieves the list of installed Safari Extensions for all users in the target system. + query: SELECT safari_extensions.* FROM users join safari_extensions USING (uid); + purpose: Informational + tags: browser, built-in, inventory + contributors: zwass +--- +apiVersion: v1 +kind: query +spec: + name: Get installed Windows software + platform: windows + description: Get all software installed on a Windows computer, including programs, browser plugins, and installed packages. Note that this does not include other running processes in the processes table. + query: SELECT name AS name, version AS version, 'Program (Windows)' AS type, 'programs' AS source FROM programs UNION SELECT name AS name, version AS version, 'Package (Python)' AS type, 'python_packages' AS source FROM python_packages UNION SELECT name AS name, version AS version, 'Browser plugin (IE)' AS type, 'ie_extensions' AS source FROM ie_extensions UNION SELECT name AS name, version AS version, 'Browser plugin (Chrome)' AS type, 'chrome_extensions' AS source FROM chrome_extensions UNION SELECT name AS name, version AS version, 'Browser plugin (Firefox)' AS type, 'firefox_addons' AS source FROM firefox_addons UNION SELECT name AS name, version AS version, 'Package (Chocolatey)' AS type, 'chocolatey_packages' AS source FROM chocolatey_packages; + purpose: Informational + tags: inventory, built-in + contributors: zwass +--- +apiVersion: v1 +kind: query +spec: + name: Get laptops with failing batteries + platform: darwin + description: Lists all laptops with under-performing or failing batteries. + query: SELECT * FROM battery WHERE health != 'Good' AND condition NOT IN ('', 'Normal'); + purpose: Informational + tags: troubleshooting, hardware, inventory + contributors: zwass +--- +apiVersion: v1 +kind: query +spec: + name: Get current users with active shell/console on the system + platform: darwin, linux, windows + description: Get current users with active shell/console on the system and associated process + query: SELECT user,host,time, p.name, p.cmdline, p.cwd, p.root FROM logged_in_users liu, processes p WHERE liu.pid = p.pid and liu.type='user' and liu.user <> '' ORDER BY time; + purpose: Informational + tags: hunting, built-in + contributors: anelshaer +--- +apiVersion: v1 +kind: query +spec: + name: Get unencrypted SSH keys for local accounts + platform: darwin, linux, windows + description: Identify SSH keys created without a passphrase which can be used in Lateral Movement (MITRE. TA0008) + query: SELECT uid, username, description, path, encrypted FROM users CROSS JOIN user_ssh_keys using (uid) WHERE encrypted=0; + purpose: Informational + tags: inventory, compliance, ssh, built-in + remediation: First, make the user aware about the impact of SSH keys. Then rotate the unencrypted keys detected. + contributors: anelshaer +--- +apiVersion: v1 +kind: query +spec: + name: Get unencrypted SSH keys for domain-joined accounts + platform: darwin, linux, windows + description: Identify SSH keys created without a passphrase which can be used in Lateral Movement (MITRE. TA0008) + query: SELECT uid, username, description, path, encrypted FROM users CROSS JOIN user_ssh_keys using (uid) WHERE encrypted=0 and username in (SELECT distinct(username) FROM last); + purpose: Informational + tags: inventory, compliance, ssh, active directory + remediation: First, make the user aware about the impact of SSH keys. Then rotate the unencrypted keys detected. + contributors: anelshaer +--- +apiVersion: v1 +kind: query +spec: + name: Get dynamic linker hijacking on Linux (MITRE. T1574.006) + platform: linux + description: Detect any processes that run with LD_PRELOAD environment variable + query: SELECT env.pid, env.key, env.value, p.name,p.path, p.cmdline, p.cwd FROM process_envs env join processes p USING (pid) WHERE key='LD_PRELOAD'; + purpose: Informational + tags: hunting, ATTACK, t1574 + remediation: Identify the process/binary detected and confirm with the system's owner. + contributors: anelshaer +--- +apiVersion: v1 +kind: query +spec: + name: Get dynamic linker hijacking on macOS (MITRE. T1574.006) + platform: darwin + description: Detect any processes that run with DYLD_INSERT_LIBRARIES environment variable + query: SELECT env.pid, env.key, env.value, p.name,p.path, p.cmdline, p.cwd FROM process_envs env join processes p USING (pid) WHERE key='DYLD_INSERT_LIBRARIES'; + purpose: Informational + tags: hunting, ATTACK, t1574 + remediation: Identify the process/binary detected and confirm with the system's owner. + contributors: anelshaer +--- +apiVersion: v1 +kind: query +spec: + name: Get etc hosts entries + platform: darwin, linux + description: Line-parsed /etc/hosts + query: SELECT * FROM etc_hosts WHERE address not in ('127.0.0.1', '::1'); + purpose: informational + tags: hunting, inventory + contributors: anelshaer +--- +apiVersion: v1 +kind: query +spec: + name: Get network interfaces + platform: darwin, linux, windows + description: Network interfaces MAC address + query: SELECT a.interface, a.address, d.mac FROM interface_addresses a JOIN interface_details d USING (interface) WHERE address not in ('127.0.0.1', '::1'); + purpose: informational + tags: hunting, inventory + contributors: anelshaer +--- +apiVersion: v1 +kind: query +spec: + name: Get local user accounts + platform: darwin, linux, windows + description: Local user accounts (including domain accounts that have logged on locally (Windows)). + query: SELECT uid, gid, username, description, directory, shell FROM users; + purpose: informational + tags: hunting, inventory + contributors: anelshaer +--- +apiVersion: v1 +kind: query +spec: + name: Get active user accounts on servers + platform: linux + description: Domain Joined environments normally have root or other service only accounts and users are SSH-ing using their Domain Accounts. + query: SELECT * FROM shadow WHERE password_status='active' and username!='root'; + purpose: informational + tags: hunting, inventory, Active Directory + contributors: anelshaer +--- +apiVersion: v1 +kind: query +spec: + name: Get Nmap scanner + platform: darwin, linux, windows + description: Get Nmap scanner process, as well as its user, parent, and process details. + query: SELECT p.pid, name, p.path, cmdline, cwd, start_time, parent, + (SELECT name FROM processes WHERE pid=p.parent) AS parent_name, + (SELECT username FROM users WHERE uid=p.uid) AS username + FROM processes as p WHERE cmdline like 'nmap%'; + purpose: Informational + tags: hunting, ATTACK, t1046 + contributors: anelshaer +--- +apiVersion: v1 +kind: query +spec: + name: Get Docker contained processes on a system + platform: darwin, linux + description: Docker containers Processes, can be used on normal systems or a kubenode. + query: SELECT c.id, c.name, c.image, c.image_id, c.command, c.created, c.state, c.status, p.cmdline FROM docker_containers c CROSS JOIN docker_container_processes p using(id); + purpose: Informational + tags: built-in, containers, inventory + contributors: anelshaer +--- +apiVersion: v1 +kind: query +spec: + name: Get Windows print spooler remote code execution vulnerability + platform: windows + description: Detects devices that are potentially vulnerable to CVE-2021-1675 because the print spooler service is not disabled. + query: SELECT CASE cnt WHEN 2 THEN "TRUE" ELSE "FALSE" END "Vulnerable" FROM (SELECT name start_type, COUNT(name) AS cnt FROM services WHERE name = 'NTDS' or (name = 'Spooler' and start_type <> 'DISABLED')) WHERE cnt = 2; + purpose: Informational + tags: vulnerability + contributors: maravedi +--- +apiVersion: v1 +kind: query +spec: + name: Get local users and their privileges + platform: darwin, linux, windows + description: Collects the local user accounts and their respective user group. + query: SELECT uid, username, type, groupname FROM users u JOIN groups g ON g.gid = u.gid; + purpose: informational + tags: inventory + contributors: noahtalerman +--- +apiVersion: v1 +kind: query +spec: + name: Get processes that no longer exist on disk + platform: linux, darwin, windows + description: Lists all processes of which the binary which launched them no longer exists on disk. Attackers often delete files from disk after launching a process to mask presence. + query: SELECT name, path, pid FROM processes WHERE on_disk = 0; + purpose: Incident response + tags: hunting, built-in + contributors: alphabrevity +--- +apiVersion: v1 +kind: query +spec: + name: Get user files matching a specific hash + platform: darwin, linux + description: Looks for specific hash in the Users/ directories for files that are less than 50MB (osquery file size limitation.) + query: SELECT path, sha256 FROM hash WHERE path IN (SELECT path FROM file WHERE size < 50000000 AND path LIKE '/Users/%/Documents/%%') AND sha256 = '16d28cd1d78b823c4f961a6da78d67a8975d66cde68581798778ed1f98a56d75'; + purpose: Informational + tags: hunting, built-in + contributors: alphabrevity +--- +apiVersion: v1 +kind: query +spec: + name: Get local administrator accounts on macOS + platform: darwin + description: The query allows you to check macOS systems for local administrator accounts. + query: SELECT uid, username, type FROM users u JOIN groups g ON g.gid = u.gid; + purpose: Informational + tags: hunting, inventory + contributors: alphabrevity +--- +apiVersion: v1 +kind: query +spec: + name: Get all listening ports, by process + platform: linux, darwin, windows + description: List ports that are listening on all interfaces, along with the process to which they are attached. + query: SELECT lp.address, lp.pid, lp.port, lp.protocol, p.name, p.path, p.cmdline FROM listening_ports lp JOIN processes p ON lp.pid = p.pid WHERE lp.address = "0.0.0.0"; + purpose: Informational + tags: hunting, network + contributors: alphabrevity +--- +apiVersion: v1 +kind: query +spec: + name: Get whether TeamViewer is installed/running + platform: windows + description: Looks for the TeamViewer service running on machines. This is often used when attackers gain access to a machine, running TeamViewer to allow them to access a machine. + query: SELECT display_name,status,s.pid,p.path FROM services AS s JOIN processes AS p USING(pid) WHERE s.name LIKE "%teamviewer%"; + purpose: Informational + tags: hunting, inventory + contributors: alphabrevity +--- +apiVersion: v1 +kind: query +spec: + name: Get malicious Python backdoors + platform: darwin, linux, windows + description: Watches for the backdoored Python packages installed on the system. See (http://www.nbu.gov.sk/skcsirt-sa-20170909-pypi/index.html) + query: SELECT CASE cnt WHEN 0 THEN "NONE_INSTALLED" ELSE "INSTALLED" END AS "Malicious Python Packages", package_name, package_version FROM (SELECT COUNT(name) AS cnt, name AS package_name, version AS package_version, path AS package_path FROM python_packages WHERE package_name IN ('acquisition', 'apidev-coop', 'bzip', 'crypt', 'django-server', 'pwd', 'setup-tools', 'telnet', 'urlib3', 'urllib')); + purpose: Informational + tags: hunting, inventory, malware + contributors: alphabrevity +--- +apiVersion: v1 +kind: query +spec: + name: Check for artifacts of the Floxif trojan + platform: windows + description: Checks for artifacts from the Floxif trojan on Windows machines. + query: SELECT * FROM registry WHERE path LIKE 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Piriform\\Agomo%'; + purpose: Informational + tags: hunting, malware + contributors: micheal-o +--- +apiVersion: v1 +kind: query +spec: + name: Get Shimcache table + platform: windows + description: Returns forensic data showing evidence of likely file execution, in addition to the last modified timestamp of the file, order of execution, full file path order of execution, and the order in which files were executed. + query: select * from Shimcache + purpose: Informational + tags: hunting + contributors: puffyCid +--- +apiVersion: v1 +kind: query +spec: + name: Get running docker containers + platform: darwin, linux + description: Returns the running Docker containers + query: SELECT id, name, image, image_id, state, status FROM docker_containers WHERE state = "running"; + purpose: Informational + tags: containers, inventory + contributors: DominusKelvin +--- +apiVersion: v1 +kind: query +spec: + name: Get applications hogging memory + platform: darwin, linux, windows + description: Returns top 10 applications or processes hogging memory the most. + query: SELECT pid, name, ROUND((total_size * '10e-7'), 2) AS memory_used FROM processes ORDER BY total_size DESC LIMIT 10; + purpose: Informational + tags: troubleshooting + contributors: DominusKelvin +--- +apiVersion: v1 +kind: query +spec: + name: Get servers with root login in the last 24 hours + platform: darwin, linux, windows + description: Returns servers with root login in the last 24 hours and the time the users were logged in. + query: SELECT * FROM last WHERE username = "root" AND time > (( SELECT unix_time FROM time ) - 86400 ); + purpose: Informational + tags: hunting + contributors: DominusKelvin +--- +apiVersion: v1 +kind: query +spec: + name: Detect active processes with Log4j running + platform: darwin, linux + description: "Returns a list of active processes and the Jar paths which are using Log4j. Version numbers are usually within the Jar filename. Note: This query is resource intensive and has caused problems on systems with limited swap space. Test on some systems before running this widely." + query: | + WITH target_jars AS ( + SELECT DISTINCT path + FROM ( + WITH split(word, str) AS( + SELECT '', cmdline || ' ' + FROM processes + UNION ALL + SELECT substr(str, 0, instr(str, ' ')), substr(str, instr(str, ' ') + 1) + FROM split + WHERE str != '') + SELECT word AS path + FROM split + WHERE word LIKE '%.jar' + UNION ALL + SELECT path + FROM process_open_files + WHERE path LIKE '%.jar' + ) + ) + SELECT path, matches + FROM yara + WHERE path IN (SELECT path FROM target_jars) + AND count > 0 + AND sigrule IN ( + 'rule log4jJndiLookup { + strings: + $jndilookup = "JndiLookup" + condition: + $jndilookup + }', + 'rule log4jJavaClass { + strings: + $javaclass = "org/apache/logging/log4j" + condition: + $javaclass + }' + ); + purpose: Detection + tags: vulnerability + contributors: zwass,tgauda +--- +apiVersion: v1 +kind: query +spec: + name: Get applications that were opened within the last 24 hours + platform: darwin + description: Returns applications that were opened within the last 24 hours starting with the last opened application. + query: SELECT * FROM apps WHERE last_opened_time > (( SELECT unix_time FROM time ) - 86400 ) ORDER BY last_opened_time DESC; + purpose: Informational + tags: inventory + contributors: DominusKelvin +--- +apiVersion: v1 +kind: query +spec: + name: Get applications that are not in the Applications directory + platform: darwin + description: Returns applications that are not in the `/Applications` directory + query: SELECT * FROM apps WHERE path NOT LIKE '/Applications/%'; + purpose: Informational + tags: hunting, inventory + contributors: DominusKelvin +--- +apiVersion: v1 +kind: query +spec: + name: Get subscription-based applications that have not been opened for the last 30 days + platform: darwin + description: Returns applications that are subscription-based and have not been opened for the last 30 days. You can replace the list of applications with those specific to your use case. + query: SELECT * FROM apps WHERE path LIKE '/Applications/%' AND name IN ("Photoshop.app", "Adobe XD.app", "Sketch.app", "Illustrator.app") AND last_opened_time < (( SELECT unix_time FROM time ) - 2592000000000 ); + purpose: Informational + tags: inventory + contributors: DominusKelvin +--- +apiVersion: v1 +kind: query +spec: + name: Get operating system information + platform: darwin, windows, linux + description: Returns the operating system name and version on the device. + query: SELECT name, version FROM os_version; + purpose: Informational + tags: inventory, built-in + contributors: noahtalerman +--- +apiVersion: v1 +kind: query +spec: + name: Get built-in antivirus status on macOS + platform: darwin + query: SELECT path, value AS version FROM plist WHERE (key = 'CFBundleShortVersionString' AND path = '/Library/Apple/System/Library/CoreServices/MRT.app/Contents/Info.plist') OR (key = 'CFBundleShortVersionString' AND path = '/Library/Apple/System/Library/CoreServices/XProtect.bundle/Contents/Info.plist'); + description: Reads the version numbers from the Malware Removal Tool (MRT) and built-in antivirus (XProtect) plists + purpose: Informational + tags: compliance, malware, hardening, built-in + contributors: GuillaumeRoss +--- +apiVersion: v1 +kind: query +spec: + name: Get antivirus status from the Windows Security Center + platform: windows + query: SELECT antivirus, signatures_up_to_date from windows_security_center CROSS JOIN windows_security_products WHERE type = 'Antivirus'; + description: Selects the antivirus and signatures status from Windows Security Center. + purpose: Informational + tags: compliance, malware, hardening, built-in + contributors: GuillaumeRoss +--- +apiVersion: v1 +kind: query +spec: + name: Get antivirus (ClamAV/clamd) and updater (freshclam) process status + platform: linux + query: SELECT pid, state, cmdline, name FROM processes WHERE name='clamd' OR name='freshclam'; + description: Selects the clamd and freshclam processes to ensure AV and its updater are running + purpose: Informational + tags: compliance, malware, hardening, built-in + contributors: GuillaumeRoss +--- +apiVersion: v1 +kind: query +spec: + name: Discover TLS certificates + platform: linux, windows, darwin + description: Retrieves metadata about TLS certificates for servers listening on the local machine. Enables mTLS adoption analysis and cert expiration notifications. + query: SELECT * FROM curl_certificate WHERE hostname IN (SELECT DISTINCT 'localhost:'||port FROM listening_ports WHERE protocol=6 AND address!='127.0.0.1' AND address!='::1'); + purpose: Informational + tags: network, tls + contributors: nabilschear +--- +apiVersion: v1 +kind: query +spec: + name: Discover Python Packages from Running Python Interpreters + platform: linux, darwin + description: Attempt to discover Python environments (in cwd, path to the python binary, and process command line) from running python interpreters and collect Python packages from those environments. + query: SELECT * FROM python_packages WHERE directory IN (SELECT DISTINCT directory FROM (SELECT SUBSTR(path,0,INSTR(path,'/bin/'))||'/lib' AS directory FROM processes WHERE path LIKE '%/bin/%' AND path LIKE '%python%' UNION SELECT SUBSTR(cmdline,0,INSTR(cmdline,'/bin/'))||'/lib' AS directory FROM processes WHERE cmdline LIKE '%python%' AND cmdline LIKE '%/bin/%' AND path LIKE '%python%' UNION SELECT cwd||'/lib' AS directory FROM processes WHERE path LIKE '%python%')); + purpose: Informational + tags: compliance, hunting + contributors: nabilschear +--- +apiVersion: v1 +kind: query +spec: + name: Identify the default mail, http and ftp applications + platforms: macOS + platform: darwin + description: Lists the currently enabled applications configured to handle mailto, http and ftp schemes. + query: SELECT * FROM app_schemes WHERE (scheme='mailto' OR scheme='http' OR scheme='ftp') AND enabled='1'; + purpose: Informational + tags: compliance, hunting + contributors: brunerd +--- +apiVersion: v1 +kind: query +spec: + name: Identify Apple development secrets (macOS) + query: SELECT * FROM keychain_items WHERE label LIKE '%ABCDEFG%'; + description: "Identifies certificates associated with Apple development signing and notarization. Replace ABCDEFG with your company's identifier." + tags: compliance, inventory, built-in + platform: darwin + contributors: GuillaumeRoss +--- +apiVersion: v1 +kind: query +spec: + name: Geolocate via ipapi.co + platform: darwin, linux, windows + description: Geolocate a host using the [ipapi.co](https://ipapi.co) in an emergency. Requires the curl table. [Learn more](https://fleetdm.com/guides/locate-assets-with-osquery). + query: >- + SELECT JSON_EXTRACT(result, '$.ip') AS ip, + JSON_EXTRACT(result, '$.city') AS city, + JSON_EXTRACT(result, '$.region') AS region, + JSON_EXTRACT(result, '$.country') AS country, + JSON_EXTRACT(result, '$.latitude') AS latitude, + JSON_EXTRACT(result, '$.longitude') AS longitude + FROM curl + WHERE url = 'http://ipapi.co/json'; + purpose: inventory + tags: inventory + contributors: zwass +--- +apiVersion: v1 +kind: query +spec: + name: Get Crowdstrike Falcon network content filter status + platform: darwin + description: Get the status of the Crowdstrike Falcon network content filter (as in "System Settings" > "Network > "Filters"). + query: /* Load up the plist */ WITH extensions_plist AS (SELECT *, rowid FROM plist WHERE path = '/Library/Preferences/com.apple.networkextension.plist') /* Find the first "Enabled" key after the key indicating the crowdstrike app */ SELECT value AS enabled FROM extensions_plist WHERE subkey = 'Enabled' AND rowid > (SELECT rowid FROM extensions_plist WHERE value = 'com.crowdstrike.falcon.App') LIMIT 1; + purpose: Informational + tags: crowdstrike, plist, network, content filter + contributors: zwass +--- +apiVersion: v1 +kind: query +spec: + name: Get a list of Visual Studio Code extensions + platform: darwin, linux, windows + description: Get a list of installed VS Code extensions (requires osquery > 5.11.0). + query: | + SELECT u.username, vs.* FROM users u CROSS JOIN vscode_extensions vs USING (uid); + purpose: Informational + tags: inventory + contributors: lucasmrod,sharon-fdm,zwass +--- +apiVersion: v1 +kind: query +spec: + name: List osquery table names + platform: darwin, linux, windows + description: List all table names in the schema of the currently installed version of osquery + query: SELECT DISTINCT name FROM osquery_registry; + purpose: Informational + tags: fleet, osquery, table, schema + contributors: nonpunctual diff --git a/ee/server/service/hosts.go b/ee/server/service/hosts.go index 9ab923f9c631..6df42cf038ec 100644 --- a/ee/server/service/hosts.go +++ b/ee/server/service/hosts.go @@ -489,12 +489,6 @@ func (svc *Service) enqueueWipeHostRequest(ctx context.Context, host *fleet.Host return nil } -// TODO(mna): ideally we'd embed the scripts from the scripts/mdm/windows/.. -// and scripts/mdm/linux/.. directories where they currently exist, but this is -// not possible (not a Go package) and I don't know if those script locations -// are used elsewhere, so for now I just copied the contents under -// embedded_scripts directory. We'll have to make sure they are kept in sync, -// or better yet find a way to maintain a single copy. var ( //go:embed embedded_scripts/windows_lock.ps1 windowsLockScript []byte diff --git a/ee/server/service/software_installers.go b/ee/server/service/software_installers.go index e6823a473bad..02794196d037 100644 --- a/ee/server/service/software_installers.go +++ b/ee/server/service/software_installers.go @@ -1374,13 +1374,6 @@ func (svc *Service) addMetadataToSoftwarePayload(ctx context.Context, payload *f return "", ctxerr.Wrap(ctx, err, "extracting metadata from installer") } - if meta.Version == "" { - return "", &fleet.BadRequestError{ - Message: fmt.Sprintf("Couldn't add. Fleet couldn't read the version from %s.", payload.Filename), - InternalErr: ctxerr.New(ctx, "extracting version from installer metadata"), - } - } - if len(meta.PackageIDs) == 0 { return "", &fleet.BadRequestError{ Message: "Couldn't add. Unable to extract necessary metadata.", diff --git a/frontend/__mocks__/softwareMock.ts b/frontend/__mocks__/softwareMock.ts index 13a9a34b6f05..6497bd7d4559 100644 --- a/frontend/__mocks__/softwareMock.ts +++ b/frontend/__mocks__/softwareMock.ts @@ -290,6 +290,7 @@ const DEFAULT_FLEET_MAINTAINED_APP_DETAILS_MOCK: IFleetMaintainedAppDetails = { post_install_script: 'echo "Installed"', uninstall_script: "#!/bin/sh\n\n# Fleet extracts and saves package IDs\npkg_ids=$PACKAGE_ID", + url: "http://www.testurl1234abcd.com/testapp", }; export const createMockFleetMaintainedAppDetails = ( diff --git a/frontend/components/ActionsDropdown/ActionsDropdown.tsx b/frontend/components/ActionsDropdown/ActionsDropdown.tsx index a54b9df219b6..fc5fdca6ecbf 100644 --- a/frontend/components/ActionsDropdown/ActionsDropdown.tsx +++ b/frontend/components/ActionsDropdown/ActionsDropdown.tsx @@ -198,6 +198,7 @@ const ActionsDropdown = ({ option: (provided, state) => ({ ...provided, padding: "10px 8px", + borderRadius: "4px", fontSize: "14px", backgroundColor: getOptionBackgroundColor(state), whiteSpace: "nowrap", @@ -209,7 +210,7 @@ const ActionsDropdown = ({ "&:active": { backgroundColor: state.isDisabled ? "transparent" - : COLORS["ui-vibrant-blue-10"], + : COLORS["ui-vibrant-blue-25"], }, ...(state.isDisabled && { color: COLORS["ui-fleet-black-50"], diff --git a/frontend/components/ActivityItem/ActivityItem.tsx b/frontend/components/ActivityItem/ActivityItem.tsx new file mode 100644 index 000000000000..01451e703ea8 --- /dev/null +++ b/frontend/components/ActivityItem/ActivityItem.tsx @@ -0,0 +1,192 @@ +import React from "react"; +import ReactTooltip from "react-tooltip"; +import classnames from "classnames"; + +import { ActivityType, IActivity, IActivityDetails } from "interfaces/activity"; +import { + addGravatarUrlToResource, + internationalTimeFormat, +} from "utilities/helpers"; +import { DEFAULT_GRAVATAR_LINK } from "utilities/constants"; + +import Avatar from "components/Avatar"; + +import { COLORS } from "styles/var/colors"; +import { dateAgo } from "utilities/date_format"; +import Button from "components/buttons/Button"; +import Icon from "components/Icon"; +import { noop } from "lodash"; + +const baseClass = "activity-item"; + +export interface IShowActivityDetailsData { + type: string; + details?: IActivityDetails; +} + +/** + * A handler that will show the details of an activity. This is used to pass + * the details of an activity to the parent component to show the details of + * the activity. + */ +export type ShowActivityDetailsHandler = ({ + type, + details, +}: IShowActivityDetailsData) => void; + +interface IActivityItemProps { + activity: IActivity; + children: React.ReactNode; + /** + * Set this to `true` when rendering only this activity by itself. This will + * change the styles for the activity item for solo rendering. + * @default false */ + isSoloActivity?: boolean; + /** + * Set this to `true` to hide the show details button and prevent from rendering. + * Not all activities can show details, so this is a way to hide the button. + * @default false + */ + hideShowDetails?: boolean; + /** + * Set this to `true` to hide the close button and prevent from rendering + * @default false + */ + hideCancel?: boolean; + /** + * Set this to `true` to disable the cancel button. It will still render but + * will not be clickable. + * @default false + */ + disableCancel?: boolean; + className?: string; + onShowDetails?: ShowActivityDetailsHandler; + onCancel?: () => void; +} + +/** + * A wrapper that will render all the common elements of a host activity item. + * This includes the avatar, the created at timestamp, and a dash to separate + * the activity items. The `children` will be the specific details of the activity + * implemented in the component that uses this wrapper. + */ +const ActivityItem = ({ + activity, + children, + className, + isSoloActivity, + hideShowDetails = false, + hideCancel = false, + disableCancel = false, + onShowDetails = noop, + onCancel = noop, +}: IActivityItemProps) => { + const { actor_email } = activity; + const { gravatar_url } = actor_email + ? addGravatarUrlToResource({ email: actor_email }) + : { gravatar_url: DEFAULT_GRAVATAR_LINK }; + + // wrapped just in case the date string does not parse correctly + let activityCreatedAt: Date | null = null; + try { + activityCreatedAt = new Date(activity.created_at); + } catch (e) { + activityCreatedAt = null; + } + + const classNames = classnames(baseClass, className, { + [`${baseClass}__solo-activity`]: isSoloActivity, + [`${baseClass}__no-details`]: hideShowDetails, + }); + + const onShowActivityDetails = () => { + onShowDetails({ type: activity.type, details: activity.details }); + }; + + const onCancelActivity = (e: React.MouseEvent) => { + e.stopPropagation(); + onCancel(); + }; + + // TODO: remove this once we have a proper way of handling "Fleet-initiated" activities in + // the backend. For now, if all these fields are empty, then we assume it was + // Fleet-initiated. + let fleetInitiated = false; + if ( + !activity.actor_email && + !activity.actor_full_name && + (activity.type === ActivityType.InstalledSoftware || + activity.type === ActivityType.InstalledAppStoreApp || + activity.type === ActivityType.RanScript) + ) { + fleetInitiated = true; + } + + return ( +
+
+
+ +
+
+
+
+ + {children} + +
+ + {activityCreatedAt && dateAgo(activityCreatedAt)} + + {activityCreatedAt && ( + + {internationalTimeFormat(activityCreatedAt)} + + )} +
+
+ {!hideShowDetails && ( + + )} + {!hideCancel && ( + + )} +
+
+
+ ); +}; + +export default ActivityItem; diff --git a/frontend/components/ActivityItem/_styles.scss b/frontend/components/ActivityItem/_styles.scss new file mode 100644 index 000000000000..9ec63722c3aa --- /dev/null +++ b/frontend/components/ActivityItem/_styles.scss @@ -0,0 +1,170 @@ +.activity-item { + display: grid; // Grid system is used to create variable solid line lengths + grid-template-columns: 16px 16px 8px 1fr; + grid-template-rows: max-content; + + &__avatar-wrapper { + box-sizing: border-box; + display: grid; + grid-template-columns: 16px 16px; + grid-template-rows: 8px 32px 1fr; + grid-column-start: 1; + grid-column-end: 3; + + .avatar-wrapper { + grid-column-start: 1; + grid-column-end: 3; + grid-row-start: 2; + grid-row-end: 3; + } + } + + &__avatar-upper-dash { + border-right: 1px solid $ui-fleet-black-10; + grid-column-start: 1; + grid-column-end: 2; + grid-row-start: 1; + grid-row-end: 2; + } + + &__avatar-lower-dash { + border-right: 1px solid $ui-fleet-black-10; + grid-column-start: 1; + grid-column-end: 2; + grid-row-start: 3; + grid-row-end: 4; + } + + &__details-wrapper { + display: flex; + gap: $pad-medium; + justify-content: space-between; + align-items: center; + grid-column-start: 4; + grid-row-start: 1; + padding: $pad-small; + margin-bottom: $pad-large; + + .premium-icon-tip { + position: relative; + top: 4px; + padding-right: $pad-xsmall; + } + + .activity-details { + margin: 0; + line-height: 16px; + } + + &:hover { + border-radius: $border-radius-large; + background-color: $ui-off-white; + cursor: pointer; + + .activity-item__details-actions { + visibility: visible; + } + } + + .button { + height: 16px; + + &--icon svg { + padding: 0; + } + } + } + + &__details-actions { + visibility: hidden; + display: flex; + gap: $pad-medium; + } + + &__close-icon { + cursor: pointer; + &:hover { + svg { + path { + stroke: $core-vibrant-blue; + } + } + } + }; + + &__details-topline { + font-size: $x-small; + overflow-wrap: anywhere; + } + + &__details-content { + margin-right: $pad-xsmall; + } + + &__details-bottomline { + font-size: $xx-small; + color: $ui-fleet-black-50; + } + + &__show-query-icon { + margin-left: $pad-xsmall; + } + + &:first-child { + .activity-item__avatar-upper-dash { + border-right: none; + } + } + + &:last-child { + .activity-item__avatar-lower-dash { + border-right: none; + } + } + + /** + * Starting here are the styles for the activity item when it is the + * only activity that is being displayed (controlled by the `soloActivity prop`. + * We switch from grid to flexbox since we don't need the solid lines anymore. + * we also dont show to actions on hover + */ + &__solo-activity { + border: 1px solid $ui-fleet-black-10; + border-radius: $border-radius-large; + padding: $pad-medium; + display: flex; + gap: $pad-medium; + + .activity-item__avatar-wrapper { + display: block; + } + + .activity-item__avatar-lower-dash { + display: none; + } + + .activity-item__details-wrapper { + display: block; + padding: 0; + margin-bottom: 0; + + &:hover { + cursor: auto; + background-color: transparent; + } + } + + .activity-item__details-actions { + display: none; + } + } + + &__no-details { + .activity-item__details-wrapper { + &:hover { + cursor: auto; + background-color: transparent; + } + } + } +} diff --git a/frontend/pages/DashboardPage/cards/ActivityFeed/ActivityItem/index.ts b/frontend/components/ActivityItem/index.ts similarity index 100% rename from frontend/pages/DashboardPage/cards/ActivityFeed/ActivityItem/index.ts rename to frontend/components/ActivityItem/index.ts diff --git a/frontend/components/AddHostsModal/DownloadInstallers/_styles.scss b/frontend/components/AddHostsModal/DownloadInstallers/_styles.scss index 233a63eb1373..42fcb332769b 100644 --- a/frontend/components/AddHostsModal/DownloadInstallers/_styles.scss +++ b/frontend/components/AddHostsModal/DownloadInstallers/_styles.scss @@ -43,7 +43,7 @@ width: 247px; border: 1px solid #c5c7d1; - border-radius: 4px; + border-radius: $border-radius; span { display: flex; diff --git a/frontend/components/Avatar/Avatar.stories.tsx b/frontend/components/Avatar/Avatar.stories.tsx index 652e50b50f9f..e7d06f753060 100644 --- a/frontend/components/Avatar/Avatar.stories.tsx +++ b/frontend/components/Avatar/Avatar.stories.tsx @@ -30,3 +30,9 @@ export const Small: Story = { size: "small", }, }; + +export const UseFleetAvatar: Story = { + args: { + useFleetAvatar: true, + }, +}; diff --git a/frontend/components/Avatar/Avatar.tests.tsx b/frontend/components/Avatar/Avatar.tests.tsx new file mode 100644 index 000000000000..c28bee873bf4 --- /dev/null +++ b/frontend/components/Avatar/Avatar.tests.tsx @@ -0,0 +1,21 @@ +import React from "react"; +import { render, screen } from "@testing-library/react"; + +import Avatar from "./Avatar"; + +describe("Avatar - component", () => { + it("renders the user gravatar if provided", () => { + render( + + ); + + const avatar = screen.getByAltText("User avatar"); + expect(avatar).toBeVisible(); + expect(avatar).toHaveAttribute("src", "https://example.com/avatar.png"); + }); + + it("renders the fleet avatar if useFleetAvatar is `true`", () => { + render(); + expect(screen.getByTestId("fleet-avatar")).toBeVisible(); + }); +}); diff --git a/frontend/components/Avatar/Avatar.tsx b/frontend/components/Avatar/Avatar.tsx index 319696be7bdb..13344f690807 100644 --- a/frontend/components/Avatar/Avatar.tsx +++ b/frontend/components/Avatar/Avatar.tsx @@ -3,16 +3,91 @@ import classnames from "classnames"; import { DEFAULT_GRAVATAR_LINK } from "utilities/constants"; +interface IFleetAvatarProps { + className?: string; +} + +/** + * a simple component that can be used to display a the Fleet logo as an avatar + */ +const FleetAvatar = ({ className }: IFleetAvatarProps) => { + return ( + + + + + + + + + + + + + + + + ); +}; + interface IAvatarUserInterface { gravatar_url?: string; gravatar_url_dark?: string; } -export interface IAvatarInterface { +interface IAvatarProps { className?: string; size?: string; user: IAvatarUserInterface; hasWhiteBackground?: boolean; + /** + * Set this to `true` to use the fleet avatar instead of the users gravatar. + */ + useFleetAvatar?: boolean; } const baseClass = "avatar"; @@ -22,7 +97,8 @@ const Avatar = ({ size, user, hasWhiteBackground, -}: IAvatarInterface): JSX.Element => { + useFleetAvatar = false, +}: IAvatarProps) => { const [isLoading, setIsLoading] = useState(true); const [isError, setIsError] = useState(false); @@ -41,13 +117,19 @@ const Avatar = ({ return (
- User avatar + {useFleetAvatar ? ( + + ) : ( + User avatar + )}
); }; diff --git a/frontend/components/CustomLink/CustomLink.tsx b/frontend/components/CustomLink/CustomLink.tsx index 8a89ad002eba..bcd90b397315 100644 --- a/frontend/components/CustomLink/CustomLink.tsx +++ b/frontend/components/CustomLink/CustomLink.tsx @@ -12,7 +12,7 @@ interface ICustomLinkProps { /** Icon wraps on new line with last word */ multiline?: boolean; iconColor?: Colors; - color?: "core-fleet-blue" | "core-fleet-black"; + color?: "core-fleet-blue" | "core-fleet-black" | "core-fleet-white"; /** Restricts access via keyboard when CustomLink is part of disabled UI */ disableKeyboardNavigation?: boolean; } @@ -31,6 +31,7 @@ const CustomLink = ({ }: ICustomLinkProps): JSX.Element => { const customLinkClass = classnames(baseClass, className, { [`${baseClass}--black`]: color === "core-fleet-black", + [`${baseClass}--white`]: color === "core-fleet-white", }); const target = newTab ? "_blank" : ""; diff --git a/frontend/components/CustomLink/_styles.scss b/frontend/components/CustomLink/_styles.scss index 8f78a70c0314..6ae6e6246823 100644 --- a/frontend/components/CustomLink/_styles.scss +++ b/frontend/components/CustomLink/_styles.scss @@ -13,4 +13,12 @@ &--black { color: $core-fleet-black; } + + &--black { + color: $core-fleet-black; + } + + &--white { + color: $core-fleet-white; + } } diff --git a/frontend/components/DataSet/_styles.scss b/frontend/components/DataSet/_styles.scss index 9f08ff247833..72f09fa23a58 100644 --- a/frontend/components/DataSet/_styles.scss +++ b/frontend/components/DataSet/_styles.scss @@ -1,6 +1,7 @@ .data-set { font-size: $x-small; - min-width: max-content; + max-width: min-content; + overflow: hidden; // ff only @-moz-document url-prefix() { diff --git a/frontend/components/EnrollSecrets/EnrollSecretModal/_styles.scss b/frontend/components/EnrollSecrets/EnrollSecretModal/_styles.scss index 2d212950082d..251571984850 100644 --- a/frontend/components/EnrollSecrets/EnrollSecretModal/_styles.scss +++ b/frontend/components/EnrollSecrets/EnrollSecretModal/_styles.scss @@ -9,7 +9,7 @@ background-color: $ui-off-white; color: $core-fleet-blue; border: 1px solid $ui-fleet-black-10; - border-radius: 4px; + border-radius: $border-radius; padding: 7px $pad-medium; margin: $pad-large 0 0 44px; } diff --git a/frontend/components/EnrollSecrets/SecretEditorModal/_styles.scss b/frontend/components/EnrollSecrets/SecretEditorModal/_styles.scss index 1dd288204a74..f80b206153f5 100644 --- a/frontend/components/EnrollSecrets/SecretEditorModal/_styles.scss +++ b/frontend/components/EnrollSecrets/SecretEditorModal/_styles.scss @@ -14,7 +14,7 @@ background-color: $ui-off-white; color: $core-fleet-blue; border: 1px solid $ui-fleet-black-10; - border-radius: 4px; + border-radius: $border-radius; padding: 7px $pad-medium; margin: $pad-large 0 0 44px; } diff --git a/frontend/components/FlashMessage/FlashMessage.stories.tsx b/frontend/components/FlashMessage/FlashMessage.stories.tsx index 6f736143dc57..986cdf003cf2 100644 --- a/frontend/components/FlashMessage/FlashMessage.stories.tsx +++ b/frontend/components/FlashMessage/FlashMessage.stories.tsx @@ -1,14 +1,11 @@ import React from "react"; -import { Meta, Story } from "@storybook/react"; -import { noop } from "lodash"; +import { Meta, StoryObj } from "@storybook/react"; import FlashMessage from "."; -import { IFlashMessage } from "./FlashMessage"; - import "../../index.scss"; -export default { +const meta: Meta = { component: FlashMessage, title: "Components/FlashMessage", argTypes: { @@ -28,8 +25,10 @@ export default { isVisible: true, }, }, -} as Meta; +}; + +export default meta; -const Template: Story = (props) => ; +type Story = StoryObj; -export const Default = Template.bind({}); +export const Default: Story = {}; diff --git a/frontend/components/FleetAce/FleetAce.stories.tsx b/frontend/components/FleetAce/FleetAce.stories.tsx index a29bb5bf44b3..c68a5183ba7c 100644 --- a/frontend/components/FleetAce/FleetAce.stories.tsx +++ b/frontend/components/FleetAce/FleetAce.stories.tsx @@ -1,13 +1,12 @@ import React from "react"; -import { Meta, Story } from "@storybook/react"; +import { Meta, StoryObj } from "@storybook/react"; import { noop } from "lodash"; import FleetAce from "."; -import { IFleetAceProps } from "./FleetAce"; import "../../index.scss"; -export default { +const meta: Meta = { component: FleetAce, title: "Components/FleetAce", args: { @@ -26,8 +25,10 @@ export default { onChange: noop, handleSubmit: noop, }, -} as Meta; +}; -const Template: Story = (props) => ; +export default meta; -export const Default = Template.bind({}); +type Story = StoryObj; + +export const Default: Story = {}; diff --git a/frontend/components/InfoBanner/InfoBanner.stories.tsx b/frontend/components/InfoBanner/InfoBanner.stories.tsx index 8ab8a014d811..3fc16a109393 100644 --- a/frontend/components/InfoBanner/InfoBanner.stories.tsx +++ b/frontend/components/InfoBanner/InfoBanner.stories.tsx @@ -1,20 +1,21 @@ import React from "react"; -import { Meta, Story } from "@storybook/react"; +import { Meta, StoryObj } from "@storybook/react"; import InfoBanner from "."; -import { IInfoBannerProps } from "./InfoBanner"; import "../../index.scss"; -export default { +const meta: Meta = { component: InfoBanner, title: "Components/InfoBanner", -} as Meta; +}; -const Template: Story = (props) => ( - -
This is an Info Banner.
-
-); +export default meta; -export const Default = Template.bind({}); +type Story = StoryObj; + +export const Default: Story = { + args: { + children:
This is an Info Banner.
, + }, +}; diff --git a/frontend/components/InheritedBadge/_styles.scss b/frontend/components/InheritedBadge/_styles.scss index 5c6bdba17781..0a8dc9c12652 100644 --- a/frontend/components/InheritedBadge/_styles.scss +++ b/frontend/components/InheritedBadge/_styles.scss @@ -4,7 +4,7 @@ font-size: $xxx-small; color: $core-fleet-black; line-height: 15px; - border-radius: 4px; + border-radius: $border-radius; background: $ui-vibrant-blue-10; padding: 4px; } diff --git a/frontend/components/LiveQuery/TargetsInput/TargetsInput.tsx b/frontend/components/LiveQuery/TargetsInput/TargetsInput.tsx index 70c5106227c8..c38ba8d5e4c4 100644 --- a/frontend/components/LiveQuery/TargetsInput/TargetsInput.tsx +++ b/frontend/components/LiveQuery/TargetsInput/TargetsInput.tsx @@ -12,7 +12,6 @@ import TableContainer from "components/TableContainer"; import { ITargestInputHostTableConfig } from "./TargetsInputHostsTableConfig"; interface ITargetsInputProps { - tabIndex?: number; searchText: string; searchResults: IHost[]; isTargetsLoading: boolean; @@ -35,7 +34,6 @@ const baseClass = "targets-input"; const DEFAULT_LABEL = "Target specific hosts"; const TargetsInput = ({ - tabIndex, searchText, searchResults, isTargetsLoading, @@ -52,7 +50,7 @@ const TargetsInput = ({ }: ITargetsInputProps): JSX.Element => { const dropdownRef = useRef(null); const dropdownHosts = - searchResults && pullAllBy(searchResults, targetedHosts, "display_name"); + searchResults && pullAllBy(searchResults, targetedHosts, "id"); const [isActiveSearch, setIsActiveSearch] = useState(false); diff --git a/frontend/components/LiveQuery/_styles.scss b/frontend/components/LiveQuery/_styles.scss index 30d8922f4c64..e6e9ce05540b 100644 --- a/frontend/components/LiveQuery/_styles.scss +++ b/frontend/components/LiveQuery/_styles.scss @@ -45,6 +45,6 @@ &:focus-visible { outline: 2px solid $ui-vibrant-blue-25; outline-offset: 1px; - border-radius: 4px; + border-radius: $border-radius; } } diff --git a/frontend/components/MainContent/_styles.scss b/frontend/components/MainContent/_styles.scss index bbece996d765..470298d67979 100644 --- a/frontend/components/MainContent/_styles.scss +++ b/frontend/components/MainContent/_styles.scss @@ -18,3 +18,15 @@ z-index: 4; // Needed for settings page scroll } } + +@media (max-width: ($break-xs - 1)) { + .main-content { + padding: $pad-large; + } +} + +@media (max-width: ($break-mobile-md - 1)) { + .main-content { + padding: 20px; + } +} diff --git a/frontend/components/Modal/Modal.stories.tsx b/frontend/components/Modal/Modal.stories.tsx index bc20f3fbafa6..b7aae4116cb6 100644 --- a/frontend/components/Modal/Modal.stories.tsx +++ b/frontend/components/Modal/Modal.stories.tsx @@ -1,13 +1,12 @@ import React from "react"; -import { Meta, Story } from "@storybook/react"; +import { Meta, StoryObj } from "@storybook/react"; import { noop } from "lodash"; import Modal from "."; -import { IModalProps } from "./Modal"; import "../../index.scss"; -export default { +const meta: Meta = { component: Modal, title: "Components/Modal", args: { @@ -15,12 +14,21 @@ export default { className: "", onExit: noop, }, -} as Meta; +}; -const Template: Story = (props) => ( - -
This is a test description with lots of information.
-
-); +export default meta; -export const Default = Template.bind({}); +type Story = StoryObj; + +export const Default: Story = { + decorators: [ + (Story) => ( +
+ +
+ ), + ], + args: { + children:
This is a test description with lots of information.
, + }, +}; diff --git a/frontend/components/ModalFooter/ModalFooter.stories.tsx b/frontend/components/ModalFooter/ModalFooter.stories.tsx index 802f76f9f0d0..865269147d72 100644 --- a/frontend/components/ModalFooter/ModalFooter.stories.tsx +++ b/frontend/components/ModalFooter/ModalFooter.stories.tsx @@ -1,63 +1,66 @@ /* eslint-disable no-alert */ import React from "react"; -import { Meta, Story } from "@storybook/react"; +import { Meta, StoryObj } from "@storybook/react"; import Button from "components/buttons/Button"; import Icon from "components/Icon"; import ActionsDropdown from "components/ActionsDropdown"; import ModalFooter from "./ModalFooter"; -export default { +const meta: Meta = { title: "Components/ModalFooter", component: ModalFooter, -} as Meta; +}; + +export default meta; -const Template: Story = (args) => ( - } {...args} /> -); +type Story = StoryObj; -export const Default = Template.bind({}); -Default.args = { - primaryButtons: ( - <> - alert(`Selected action: ${value}`)} - placeholder="More actions" - isSearchable={false} - options={[ - { value: "action1", label: "Action 1" }, - { value: "action2", label: "Action 2" }, - ]} - menuPlacement="top" - /> - - - ), - secondaryButtons: ( - <> - - - - ), - isTopScrolling: false, +export const Default: Story = { + args: { + primaryButtons: ( + <> + alert(`Selected action: ${value}`)} + placeholder="More actions" + isSearchable={false} + options={[ + { value: "action1", label: "Action 1" }, + { value: "action2", label: "Action 2" }, + ]} + menuPlacement="top" + /> + + + ), + secondaryButtons: ( + <> + + + + ), + isTopScrolling: false, + }, }; -export const WithTopScrolling = Template.bind({}); -WithTopScrolling.args = { - ...Default.args, - isTopScrolling: true, +export const WithTopScrolling: Story = { + args: { + ...Default.args, + isTopScrolling: true, + }, }; -export const WithoutSecondaryButtons = Template.bind({}); -WithoutSecondaryButtons.args = { - primaryButtons: Default.args.primaryButtons, - secondaryButtons: undefined, - isTopScrolling: false, +export const WithoutSecondaryButtons: Story = { + args: { + primaryButtons: Default.args?.primaryButtons, + secondaryButtons: undefined, + isTopScrolling: false, + }, }; diff --git a/frontend/components/Pagination/Pagination.stories.tsx b/frontend/components/Pagination/Pagination.stories.tsx index ff19d2a5ee13..b5bd5ac57310 100644 --- a/frontend/components/Pagination/Pagination.stories.tsx +++ b/frontend/components/Pagination/Pagination.stories.tsx @@ -1,5 +1,5 @@ import React from "react"; -import { Meta, Story } from "@storybook/react"; +import { Meta, StoryFn } from "@storybook/react"; import { noop } from "lodash"; // @ts-ignore @@ -14,7 +14,7 @@ interface IPaginationProps { onPaginationChange: () => void; } -export default { +const meta: Meta = { component: Pagination, title: "Components/Pagination", args: { @@ -23,8 +23,12 @@ export default { resultsOnCurrentPage: 10, onPaginationChange: noop, }, -} as Meta; +}; -const Template: Story = (props) => ; +export default meta; + +const Template: StoryFn = (props) => ( + +); export const Default = Template.bind({}); diff --git a/frontend/components/TableContainer/DataTable/DefaultColumnFilter/_styles.scss b/frontend/components/TableContainer/DataTable/DefaultColumnFilter/_styles.scss index da8bd59501a8..818ad4d3079b 100644 --- a/frontend/components/TableContainer/DataTable/DefaultColumnFilter/_styles.scss +++ b/frontend/components/TableContainer/DataTable/DefaultColumnFilter/_styles.scss @@ -9,7 +9,7 @@ font-size: $x-small; background-color: transparent; border: 1px solid $ui-fleet-black-10; - border-radius: 4px; + border-radius: $border-radius; padding: 4px; padding-left: 32px; } diff --git a/frontend/components/TableContainer/DataTable/PlatformCell/PlatformCell.tests.tsx b/frontend/components/TableContainer/DataTable/PlatformCell/PlatformCell.tests.tsx index 5278418ce004..28033a84f3f8 100644 --- a/frontend/components/TableContainer/DataTable/PlatformCell/PlatformCell.tests.tsx +++ b/frontend/components/TableContainer/DataTable/PlatformCell/PlatformCell.tests.tsx @@ -1,8 +1,6 @@ import React from "react"; import { render, screen } from "@testing-library/react"; -import { DEFAULT_EMPTY_CELL_VALUE } from "utilities/constants"; - import { ScheduledQueryablePlatform } from "interfaces/platform"; import PlatformCell from "./PlatformCell"; diff --git a/frontend/components/TableContainer/DataTable/_styles.scss b/frontend/components/TableContainer/DataTable/_styles.scss index 05b8efbdd453..b3cdb9fa1fae 100644 --- a/frontend/components/TableContainer/DataTable/_styles.scss +++ b/frontend/components/TableContainer/DataTable/_styles.scss @@ -101,11 +101,12 @@ $shadow-transition-width: 10px; th { padding: $pad-medium $pad-large; white-space: nowrap; - border-right: 1px solid $ui-fleet-black-10; + border-left: 1px solid $ui-fleet-black-10; font-weight: $bold; &:first-child { border-top-left-radius: 6px; + border-left: none; } &.selection__header { @@ -114,10 +115,23 @@ $shadow-transition-width: 10px; } &:last-child { - border-right: none; border-top-right-radius: 6px; } + &.actions__header, + &.id__header, // Same as actions__header on some pages + { + border-left: none; + width: 99px; + } + + &.linkToFilteredHosts__header, + &.view-all-hosts__header // Same as linkToFilteredHosts__header on some pages + { + border-left: none; + max-width: 120px; + } + .column-header { span { display: flex; @@ -224,8 +238,19 @@ $shadow-transition-width: 10px; max-width: 500px; word-wrap: break-word; - &.linkToFilteredHosts__cell { + &.actions__cell, + &.id__cell // Same as actions__cell on some pages + { + display: flex; + justify-content: end; // Aligns actions dropdown to right of table + max-width: 99px; + } + + &.linkToFilteredHosts__cell, + &.view-all-hosts__cell // Same as linkToFilteredHosts__cell on some pages + { text-align: right; + max-width: 140px; } &.selection__cell { diff --git a/frontend/components/TeamsDropdown/TeamsDropdown.tsx b/frontend/components/TeamsDropdown/TeamsDropdown.tsx index bc59c6fb0c67..89168cf7f351 100644 --- a/frontend/components/TeamsDropdown/TeamsDropdown.tsx +++ b/frontend/components/TeamsDropdown/TeamsDropdown.tsx @@ -1,8 +1,10 @@ import React, { useMemo } from "react"; import Select, { - StylesConfig, - DropdownIndicatorProps, components, + DropdownIndicatorProps, + GroupBase, + OptionProps, + StylesConfig, } from "react-select-5"; import { COLORS } from "styles/var/colors"; @@ -13,7 +15,7 @@ import { IDropdownOption } from "interfaces/dropdownOption"; import { APP_CONTEXT_ALL_TEAMS_SUMMARY, ITeamSummary, - APP_CONTEX_NO_TEAM_SUMMARY, + APP_CONTEXT_NO_TEAM_SUMMARY, } from "interfaces/team"; import Icon from "components/Icon"; @@ -40,7 +42,7 @@ const generateDropdownOptions = ( const filtered = options.filter( (o) => !( - (o.label === APP_CONTEX_NO_TEAM_SUMMARY.name && !includeNoTeams) || + (o.label === APP_CONTEXT_NO_TEAM_SUMMARY.name && !includeNoTeams) || (o.label === APP_CONTEXT_ALL_TEAMS_SUMMARY.name && !includeAll) ) ); @@ -48,10 +50,14 @@ const generateDropdownOptions = ( return filtered; }; -const getOptionBackgroundColor = (state: any) => { - return state.isSelected || state.isFocused - ? COLORS["ui-vibrant-blue-10"] - : "transparent"; +const getOptionBackgroundColor = ( + state: OptionProps< + INumberDropdownOption, + false, + GroupBase + > +) => { + return state.isFocused ? COLORS["ui-vibrant-blue-10"] : "transparent"; }; interface ITeamsDropdownProps { @@ -112,21 +118,23 @@ const TeamsDropdown = ({ ); }; + // see https://react-select.com/styles#the-styles-prop + // `provided` here corresponds to `baseStyles` in the docs const customStyles: StylesConfig = { control: (provided, state) => ({ ...provided, display: "flex", flexDirection: "row", - width: "max-content", padding: "8px 0", backgroundColor: "initial", border: 0, + borderRadius: "4px", boxShadow: "none", cursor: "pointer", "&:hover": { boxShadow: "none", ".team-dropdown__single-value": { - color: COLORS["core-vibrant-blue-over"], + color: COLORS["core-fleet-blue"], }, ".team-dropdown__indicator path": { stroke: COLORS["core-vibrant-blue-over"], @@ -173,6 +181,8 @@ const TeamsDropdown = ({ paddingLeft: 0, paddingRight: "8px", margin: 0, + // omit grid-column-end for automatic width + gridArea: "1/1/2", }), dropdownIndicator: (provided) => ({ ...provided, @@ -210,7 +220,9 @@ const TeamsDropdown = ({ ...provided, padding: "10px 8px", fontSize: "14px", + borderRadius: "4px", backgroundColor: getOptionBackgroundColor(state), + fontWeight: state.isSelected ? "bold" : "normal", color: COLORS["core-fleet-black"], "&:hover": { backgroundColor: state.isDisabled @@ -220,7 +232,7 @@ const TeamsDropdown = ({ "&:active": { backgroundColor: state.isDisabled ? "transparent" - : COLORS["ui-vibrant-blue-10"], + : COLORS["ui-vibrant-blue-25"], }, ...(state.isDisabled && { color: COLORS["ui-fleet-black-50"], diff --git a/frontend/components/TooltipWrapper/TooltipWrapper.stories.tsx b/frontend/components/TooltipWrapper/TooltipWrapper.stories.tsx index 4cc307c41bcc..3187631d578f 100644 --- a/frontend/components/TooltipWrapper/TooltipWrapper.stories.tsx +++ b/frontend/components/TooltipWrapper/TooltipWrapper.stories.tsx @@ -1,21 +1,13 @@ import React from "react"; -import { Meta, Story } from "@storybook/react"; +import { Meta, StoryObj } from "@storybook/react"; import TooltipWrapper from "."; import "../../index.scss"; -interface ITooltipWrapperProps { - children: React.ReactNode; - tipContent: React.ReactNode; -} - -export default { +const meta: Meta = { component: TooltipWrapper, title: "Components/TooltipWrapper", - args: { - tipContent: "This is an example tooltip.", - }, argTypes: { position: { options: [ @@ -35,21 +27,22 @@ export default { control: "radio", }, }, -} as Meta; +}; -// using line breaks to create space for top position -const Template: Story = (props) => ( - <> -
-
-
-
- Example text -
-
-
-
- -); +export default meta; -export const Default = Template.bind({}); +type Story = StoryObj; + +export const Default: Story = { + args: { + tipContent: "This is an example tooltip.", + children: "Example text", + }, + decorators: [ + (Story) => ( +
+ +
+ ), + ], +}; diff --git a/frontend/components/buttons/Button/Button.stories.tsx b/frontend/components/buttons/Button/Button.stories.tsx index 9d096a6d990c..342adf9fd3da 100644 --- a/frontend/components/buttons/Button/Button.stories.tsx +++ b/frontend/components/buttons/Button/Button.stories.tsx @@ -1,14 +1,14 @@ -import React from "react"; -import { Meta, Story } from "@storybook/react"; +import { Meta, StoryObj } from "@storybook/react"; import { noop } from "lodash"; import Button from "."; -import { IButtonProps } from "./Button"; import "../../../index.scss"; -export default { - component: Button, +const meta: Meta = { + // TODO: change this after button is updated to a functional component. For + // some reason the typing is incorrect becuase Button is a class component. + component: Button as any, title: "Components/Button", argTypes: { variant: { @@ -47,14 +47,23 @@ export default { title: "", onClick: noop, }, -} as Meta; +}; -const Template: Story = (props) => ( - -); +export default meta; -export const Default = Template.bind({}); -Default.args = { variant: "brand", type: "button" }; +type Story = StoryObj; -export const Disabled = Template.bind({}); -Disabled.args = { ...Default.args, disabled: true }; +export const Default: Story = { + args: { + variant: "brand", + type: "button", + children: "Click Here", + }, +}; + +export const Disabled: Story = { + args: { + ...Default.args, + disabled: true, + }, +}; diff --git a/frontend/components/buttons/Button/_styles.scss b/frontend/components/buttons/Button/_styles.scss index db6a279e432a..dee4c412b242 100644 --- a/frontend/components/buttons/Button/_styles.scss +++ b/frontend/components/buttons/Button/_styles.scss @@ -92,6 +92,7 @@ $base-class: "button"; $core-vibrant-blue-down ); display: flex; + text-wrap: nowrap; } &--success { @@ -230,18 +231,18 @@ $base-class: "button"; width: 100%; height: 100%; position: absolute; - border: 1px solid #6a67fe; + border: 1px solid $core-vibrant-blue; border-radius: 6px; } } &:hover, &:focus { - color: $core-vibrant-blue-over; + color: $core-vibrant-blue; svg { path { - fill: $core-vibrant-blue-over; + fill: $core-vibrant-blue; } } diff --git a/frontend/components/buttons/DropdownButton/DropdownButton.stories.tsx b/frontend/components/buttons/DropdownButton/DropdownButton.stories.tsx index b6090be5f094..cc3f161a5d70 100644 --- a/frontend/components/buttons/DropdownButton/DropdownButton.stories.tsx +++ b/frontend/components/buttons/DropdownButton/DropdownButton.stories.tsx @@ -1,5 +1,5 @@ import React from "react"; -import { Meta, Story } from "@storybook/react"; +import { Meta, StoryObj } from "@storybook/react"; import { noop } from "lodash"; import { DEFAULT_GRAVATAR_LINK } from "utilities/constants"; @@ -9,23 +9,6 @@ import DropdownButton from "."; import "../../../index.scss"; -interface IOptions { - disabled: boolean; - label: string; - onClick: (evt: React.MouseEvent) => void; -} - -interface IDropdownButtonProps { - children: React.ReactChild; - className?: string; - disabled?: boolean; - options: IOptions[]; - size?: string; - tabIndex?: number; - type?: string; - variant?: string; -} - const options = [ { label: "My account", @@ -41,7 +24,7 @@ const options = [ }, ]; -export default { +const meta: Meta = { component: DropdownButton, title: "Components/DropdownButton", argTypes: { @@ -90,15 +73,23 @@ export default { tabIndex: 0, options, }, -} as Meta; +}; -const Template: Story = (props) => ( - - - -); +export default meta; -export const Default = Template.bind({}); +type Story = StoryObj; -export const Disabled = Template.bind({}); -Disabled.args = { ...Default.args, disabled: true }; +export const Default: Story = { + args: { + children: ( + + ), + }, +}; + +export const Disabled: Story = { + args: { + ...Default.args, + disabled: true, + }, +}; diff --git a/frontend/components/forms/ConfirmInviteForm/ConfirmInviteForm.jsx b/frontend/components/forms/ConfirmInviteForm/ConfirmInviteForm.jsx deleted file mode 100644 index a47ce2b53685..000000000000 --- a/frontend/components/forms/ConfirmInviteForm/ConfirmInviteForm.jsx +++ /dev/null @@ -1,70 +0,0 @@ -import React, { Component } from "react"; -import PropTypes from "prop-types"; - -import Form from "components/forms/Form"; -import formFieldInterface from "interfaces/form_field"; -import Button from "components/buttons/Button"; -import InputFieldWithIcon from "components/forms/fields/InputFieldWithIcon"; -import helpers from "./helpers"; - -const formFields = ["name", "password", "password_confirmation"]; -const { validate } = helpers; - -class ConfirmInviteForm extends Component { - static propTypes = { - baseError: PropTypes.string, - className: PropTypes.string, - fields: PropTypes.shape({ - name: formFieldInterface.isRequired, - password: formFieldInterface.isRequired, - password_confirmation: formFieldInterface.isRequired, - }).isRequired, - handleSubmit: PropTypes.func.isRequired, - }; - - render() { - const { baseError, className, fields, handleSubmit } = this.props; - - return ( -
- {baseError &&
{baseError}
} - - - - - - ); - } -} - -export default Form(ConfirmInviteForm, { - fields: formFields, - validate, -}); diff --git a/frontend/components/forms/ConfirmInviteForm/ConfirmInviteForm.tests.jsx b/frontend/components/forms/ConfirmInviteForm/ConfirmInviteForm.tests.tsx similarity index 76% rename from frontend/components/forms/ConfirmInviteForm/ConfirmInviteForm.tests.jsx rename to frontend/components/forms/ConfirmInviteForm/ConfirmInviteForm.tests.tsx index 31de1e9f8d67..292be23f1161 100644 --- a/frontend/components/forms/ConfirmInviteForm/ConfirmInviteForm.tests.jsx +++ b/frontend/components/forms/ConfirmInviteForm/ConfirmInviteForm.tests.tsx @@ -7,12 +7,14 @@ import ConfirmInviteForm from "components/forms/ConfirmInviteForm"; describe("ConfirmInviteForm - component", () => { const handleSubmitSpy = jest.fn(); - const inviteToken = "abc123"; - const formData = { invite_token: inviteToken }; + const defaultFormData = { name: "Test User" }; it("renders", () => { render( - + ); expect( screen.getByRole("textbox", { name: "Full name" }) @@ -26,7 +28,7 @@ describe("ConfirmInviteForm - component", () => { const baseError = "Unable to authenticate the current user"; render( ); @@ -34,22 +36,20 @@ describe("ConfirmInviteForm - component", () => { expect(screen.getByText(baseError)).toBeInTheDocument(); }); - it("calls the handleSubmit prop with the invite_token when valid", async () => { + it("calls the handleSubmit prop when valid", async () => { const { user } = renderWithSetup( - + ); - await user.type( - screen.getByRole("textbox", { name: "Full name" }), - "Gnar Dog" - ); await user.type(screen.getByLabelText("Password"), "p@ssw0rd"); await user.type(screen.getByLabelText("Confirm password"), "p@ssw0rd"); await user.click(screen.getByRole("button", { name: "Submit" })); expect(handleSubmitSpy).toHaveBeenCalledWith({ - ...formData, - name: "Gnar Dog", + ...defaultFormData, password: "p@ssw0rd", password_confirmation: "p@ssw0rd", }); @@ -58,7 +58,10 @@ describe("ConfirmInviteForm - component", () => { describe("name input", () => { it("validates the field must be present", async () => { const { user } = renderWithSetup( - + ); await user.click(screen.getByRole("button", { name: "Submit" })); @@ -72,7 +75,10 @@ describe("ConfirmInviteForm - component", () => { describe("password input", () => { it("validates the field must be present", async () => { const { user } = renderWithSetup( - + ); await user.click(screen.getByRole("button", { name: "Submit" })); @@ -86,7 +92,10 @@ describe("ConfirmInviteForm - component", () => { describe("password_confirmation input", () => { it("validates the password_confirmation matches the password", async () => { const { user } = renderWithSetup( - + ); await user.type(screen.getByLabelText("Password"), "p@ssw0rd"); @@ -104,7 +113,10 @@ describe("ConfirmInviteForm - component", () => { it("validates the field must be present", async () => { const { user } = renderWithSetup( - + ); await user.click(screen.getByRole("button", { name: "Submit" })); diff --git a/frontend/components/forms/ConfirmInviteForm/ConfirmInviteForm.tsx b/frontend/components/forms/ConfirmInviteForm/ConfirmInviteForm.tsx new file mode 100644 index 000000000000..d318a7f69a60 --- /dev/null +++ b/frontend/components/forms/ConfirmInviteForm/ConfirmInviteForm.tsx @@ -0,0 +1,149 @@ +import React, { useCallback, useState } from "react"; + +import validateEquality from "components/forms/validators/validate_equality"; + +import Button from "components/buttons/Button"; +// @ts-ignore +import InputField from "components/forms/fields/InputField"; +import { IFormField } from "interfaces/form_field"; + +const baseClass = "confirm-invite-page__form"; +export interface IConfirmInviteFormData { + name: string; + password: string; + password_confirmation: string; +} +interface IConfirmInviteFormProps { + defaultFormData?: Partial; + handleSubmit: (data: IConfirmInviteFormData) => void; + ancestorError?: string; +} +interface IConfirmInviteFormErrors { + name?: string | null; + password?: string | null; + password_confirmation?: string | null; +} + +const validate = (formData: IConfirmInviteFormData) => { + const errors: IConfirmInviteFormErrors = {}; + const { + name, + password, + password_confirmation: passwordConfirmation, + } = formData; + + if (!name) { + errors.name = "Full name must be present"; + } + + if ( + password && + passwordConfirmation && + !validateEquality(password, passwordConfirmation) + ) { + errors.password_confirmation = + "Password confirmation does not match password"; + } + + if (!password) { + errors.password = "Password must be present"; + } + + if (!passwordConfirmation) { + errors.password_confirmation = "Password confirmation must be present"; + } + + return errors; +}; +const ConfirmInviteForm = ({ + defaultFormData, + handleSubmit, + ancestorError, +}: IConfirmInviteFormProps) => { + const [formData, setFormData] = useState({ + name: defaultFormData?.name || "", + password: defaultFormData?.password || "", + password_confirmation: defaultFormData?.password || "", + }); + const [formErrors, setFormErrors] = useState({}); + + const { name, password, password_confirmation } = formData; + + const onInputChange = ({ name: n, value }: IFormField) => { + const newFormData = { ...formData, [n]: value }; + setFormData(newFormData); + const newErrs = validate(newFormData); + // only set errors that are updates of existing errors + // new errors are only set on submit + const errsToSet: Record = {}; + Object.keys(formErrors).forEach((k) => { + // @ts-ignore + if (newErrs[k]) { + // @ts-ignore + errsToSet[k] = newErrs[k]; + } + }); + setFormErrors(errsToSet); + }; + + const onSubmit = useCallback( + (evt: React.FormEvent) => { + evt.preventDefault(); + + const errs = validate(formData); + if (Object.keys(errs).length > 0) { + setFormErrors(errs); + return; + } + handleSubmit(formData); + }, + [formData, handleSubmit] + ); + + return ( +
+ {ancestorError &&
{ancestorError}
} + + + + + + ); +}; + +export default ConfirmInviteForm; diff --git a/frontend/components/forms/ConfirmInviteForm/helpers.jsx b/frontend/components/forms/ConfirmInviteForm/helpers.jsx new file mode 100644 index 000000000000..8ae978b6408e --- /dev/null +++ b/frontend/components/forms/ConfirmInviteForm/helpers.jsx @@ -0,0 +1,38 @@ +import { size } from "lodash"; +import validateEquality from "components/forms/validators/validate_equality"; + +const validate = (formData) => { + const errors = {}; + const { + name, + password, + password_confirmation: passwordConfirmation, + } = formData; + + if (!name) { + errors.name = "Full name must be present"; + } + + if ( + password && + passwordConfirmation && + !validateEquality(password, passwordConfirmation) + ) { + errors.password_confirmation = + "Password confirmation does not match password"; + } + + if (!password) { + errors.password = "Password must be present"; + } + + if (!passwordConfirmation) { + errors.password_confirmation = "Password confirmation must be present"; + } + + const valid = !size(errors); + + return { valid, errors }; +}; + +export default { validate }; diff --git a/frontend/components/forms/ConfirmInviteForm/index.js b/frontend/components/forms/ConfirmInviteForm/index.tsx similarity index 100% rename from frontend/components/forms/ConfirmInviteForm/index.js rename to frontend/components/forms/ConfirmInviteForm/index.tsx diff --git a/frontend/components/forms/fields/Checkbox/_styles.scss b/frontend/components/forms/fields/Checkbox/_styles.scss index 6d311ead479f..12343ff5e47c 100644 --- a/frontend/components/forms/fields/Checkbox/_styles.scss +++ b/frontend/components/forms/fields/Checkbox/_styles.scss @@ -36,7 +36,7 @@ svg { outline: 2px solid $ui-vibrant-blue-25; outline-offset: 1px; - border-radius: 4px; + border-radius: $border-radius; } } diff --git a/frontend/components/forms/fields/Dropdown/Dropdown.stories.tsx b/frontend/components/forms/fields/Dropdown/Dropdown.stories.tsx index 0da3ad4c3972..c2a448e09aa2 100644 --- a/frontend/components/forms/fields/Dropdown/Dropdown.stories.tsx +++ b/frontend/components/forms/fields/Dropdown/Dropdown.stories.tsx @@ -1,39 +1,18 @@ -import React from "react"; -import { Meta, Story } from "@storybook/react"; +import { Meta, StoryObj } from "@storybook/react"; import { noop } from "lodash"; -import { IDropdownOption } from "interfaces/dropdownOption"; // @ts-ignore import Dropdown from "."; import "../../../../index.scss"; -interface IDropdownProps { - className?: string; - clearable?: boolean; - searchable?: boolean; - disabled?: boolean; - error?: string; - label?: string | string[]; - labelClassName?: string; - multi?: boolean; - name?: string; - options: IDropdownOption[]; - placeholder?: string | string[]; - value?: string | string[] | number; - wrapperClassName?: string; - onChange: () => void; - onOpen: () => void; - onClose: () => void; -} - const authMethodOptions = [ { label: "Plain", value: "authmethod_plain" }, { label: "Cram MD5", value: "authmethod_cram_md5" }, { label: "Login", value: "authmethod_login" }, ]; -export default { +const meta: Meta = { component: Dropdown, title: "Components/FormFields/Dropdown", args: { @@ -54,8 +33,10 @@ export default { onOpen: noop, onClose: noop, }, -} as Meta; +}; + +export default meta; -const Template: Story = (props) => ; +type Story = StoryObj; -export const Default = Template.bind({}); +export const Default: Story = {}; diff --git a/frontend/components/forms/fields/Dropdown/_styles.scss b/frontend/components/forms/fields/Dropdown/_styles.scss index dc7a763f7c3e..e99a2479f92c 100644 --- a/frontend/components/forms/fields/Dropdown/_styles.scss +++ b/frontend/components/forms/fields/Dropdown/_styles.scss @@ -37,7 +37,7 @@ color: $core-vibrant-red; border: 1px solid $core-vibrant-red; box-sizing: border-box; - border-radius: 4px; + border-radius: $border-radius; } .Select-arrow { @@ -55,9 +55,7 @@ } &__help-text { - font-size: $xx-small; - white-space: normal; - color: $ui-fleet-black-50; + @include help-text; font-style: italic; } } @@ -239,6 +237,12 @@ margin: 0; padding: 10px; display: block; + border-radius: $border-radius; + + &.is-selected { + background-color: transparent; + font-weight: bold; + } &.is-focused { background-color: $ui-vibrant-blue-10; @@ -248,6 +252,10 @@ } } + &:active { + background-color: $core-vibrant-blue-down; + } + &:last-child { border-bottom-right-radius: 0; border-bottom-left-radius: 0; diff --git a/frontend/components/forms/fields/DropdownWrapper/DropdownWrapper.tsx b/frontend/components/forms/fields/DropdownWrapper/DropdownWrapper.tsx index 34e0f5513cd0..d7c7b804dffb 100644 --- a/frontend/components/forms/fields/DropdownWrapper/DropdownWrapper.tsx +++ b/frontend/components/forms/fields/DropdownWrapper/DropdownWrapper.tsx @@ -12,12 +12,14 @@ import classnames from "classnames"; import React from "react"; import Select, { - StylesConfig, + components, DropdownIndicatorProps, + GroupBase, OptionProps, - components, PropsValue, SingleValue, + StylesConfig, + ValueContainerProps, } from "react-select-5"; import { COLORS } from "styles/var/colors"; @@ -27,17 +29,18 @@ import FormField from "components/forms/FormField"; import DropdownOptionTooltipWrapper from "components/forms/fields/Dropdown/DropdownOptionTooltipWrapper"; import Icon from "components/Icon"; import { IconNames } from "components/icons"; +import { TooltipContent } from "interfaces/dropdownOption"; -const getOptionBackgroundColor = (state: any) => { - return state.isSelected || state.isFocused - ? COLORS["ui-vibrant-blue-10"] - : "transparent"; +const getOptionBackgroundColor = ( + state: OptionProps +) => { + return state.isFocused ? COLORS["ui-vibrant-blue-10"] : "transparent"; }; export interface CustomOptionType { - label: string; + label: React.ReactNode; value: string; - tooltipContent?: string; + tooltipContent?: TooltipContent; helpText?: string; isDisabled?: boolean; iconName?: IconNames; @@ -49,6 +52,7 @@ export interface IDropdownWrapper { onChange: (newValue: SingleValue) => void; name: string; className?: string; + wrapperClassname?: string; labelClassname?: string; error?: string; label?: JSX.Element | string; @@ -59,8 +63,12 @@ export interface IDropdownWrapper { placeholder?: string; /** E.g. scroll to view dropdown menu in a scrollable parent container */ onMenuOpen?: () => void; - /** Table filter dropdowns have filter icon and height: 40px */ - tableFilter?: boolean; + /** Table filter dropdowns have filter icon and height: 40px + * Button dropdowns have hover/active state, padding, height like actual buttons */ + variant?: "table-filter" | "button"; + /** This makes the menu fit all text without wrapping, + * aligning right to fit text on screen */ + nowrapMenu?: boolean; } const baseClass = "dropdown-wrapper"; @@ -72,6 +80,7 @@ const DropdownWrapper = ({ name, className, labelClassname, + wrapperClassname, error, label, helpText, @@ -80,10 +89,12 @@ const DropdownWrapper = ({ iconName, placeholder, onMenuOpen, - tableFilter = false, + variant, + nowrapMenu, }: IDropdownWrapper) => { const wrapperClassNames = classnames(baseClass, className, { - [`${baseClass}__table-filter`]: tableFilter, + [`${baseClass}__table-filter`]: variant === "table-filter", + [`${wrapperClassname}`]: !!wrapperClassname, }); const handleChange = (newValue: SingleValue) => { @@ -129,7 +140,11 @@ const DropdownWrapper = ({ }; const CustomDropdownIndicator = ( - props: DropdownIndicatorProps + props: DropdownIndicatorProps< + CustomOptionType, + false, + GroupBase + > ) => { const { isFocused, selectProps } = props; const color = @@ -151,8 +166,12 @@ const DropdownWrapper = ({ ); }; - const ValueContainer = ({ children, ...props }: any) => { - const iconToDisplay = iconName || (tableFilter ? "filter" : null); + const ValueContainer = ({ + children, + ...props + }: ValueContainerProps) => { + const iconToDisplay = + iconName || (variant === "table-filter" ? "filter" : null); return ( components.ValueContainer && ( @@ -167,68 +186,150 @@ const DropdownWrapper = ({ }; const customStyles: StylesConfig = { - container: (provided) => ({ - ...provided, - width: "100%", - height: "40px", - }), - control: (provided, state) => ({ - ...provided, - display: "flex", - flexDirection: "row", - width: "100%", - backgroundColor: COLORS["ui-off-white"], - paddingLeft: "8px", // TODO: Update to match styleguide of (16px) when updating rest of UI (8px) - paddingRight: "8px", - cursor: "pointer", - boxShadow: "none", - borderRadius: "4px", - borderColor: state.isFocused - ? COLORS["core-fleet-blue"] - : COLORS["ui-fleet-black-10"], - "&:hover": { - boxShadow: "none", - borderColor: COLORS["core-fleet-blue"], - ".dropdown-wrapper__single-value": { - color: COLORS["core-vibrant-blue-over"], - }, - ".dropdown-wrapper__indicator path": { - stroke: COLORS["core-vibrant-blue-over"], - }, - }, - // When tabbing - // Relies on --is-focused for styling as &:focus-visible cannot be applied - "&.dropdown-wrapper__control--is-focused": { - ".dropdown-wrapper__single-value": { - color: COLORS["core-vibrant-blue-over"], - }, - ".dropdown-wrapper__indicator path": { - stroke: COLORS["core-vibrant-blue-over"], - }, - }, - ...(state.isDisabled && { - ".dropdown-wrapper__single-value": { - color: COLORS["ui-fleet-black-50"], + container: (provided) => { + const buttonVariantContainer = { + borderRadius: "6px", + "&:active": { + backgroundColor: "rgba(25, 33, 71, 0.05)", }, - ".dropdown-wrapper__indicator path": { - stroke: COLORS["ui-fleet-black-50"], + height: "38px", + }; + + return { + ...provided, + width: "100%", + height: "40px", + ...(variant === "button" && buttonVariantContainer), + }; + }, + + control: (provided, state) => { + if (variant === "button") + return { + backgroundColor: "initial", + borderColor: "none", + display: "flex", + flexDirection: "row", + width: "max-content", + padding: PADDING["pad-small"], + border: 0, + borderRadius: "6px", + boxShadow: "none", + cursor: "pointer", + ".dropdown-wrapper__indicator path": { + stroke: COLORS["core-fleet-blue"], + }, + "&:hover": { + backgroundColor: "rgba(25, 33, 71, 0.05)", + boxShadow: "none", + ".dropdown-wrapper__placeholder": { + color: COLORS["core-vibrant-blue-over"], + }, + ".dropdown-wrapper__indicator path": { + stroke: COLORS["core-vibrant-blue-over"], + }, + }, + "&.react-select__control--is-focused": { + backgroundColor: "rgba(25, 33, 71, 0.05)", + }, + "&:active .dropdown-wrapper__indicator path": { + stroke: COLORS["core-vibrant-blue-down"], + }, + // TODO: Figure out a way to apply separate &:focus-visible styling + // Currently only relying on &:focus styling for tabbing through app + ...(state.menuIsOpen && { + ".dropdown-wrapper__indicator svg": { + transform: "rotate(180deg)", + transition: "transform 0.25s ease", + }, + }), + ...(variant === "button" && { height: "22px" }), + }; + + return { + ...provided, + display: "flex", + flexDirection: "row", + width: "100%", + backgroundColor: COLORS["ui-off-white"], + paddingLeft: "8px", // TODO: Update to match styleguide of (16px) when updating rest of UI (8px) + paddingRight: "8px", + cursor: "pointer", + boxShadow: "none", + borderRadius: "4px", + borderColor: state.isFocused + ? COLORS["core-fleet-blue"] + : COLORS["ui-fleet-black-10"], + "&:hover": { + boxShadow: "none", + borderColor: COLORS["core-fleet-blue"], + ".dropdown-wrapper__single-value": { + color: COLORS["core-vibrant-blue-over"], + }, + ".dropdown-wrapper__indicator path": { + stroke: COLORS["core-vibrant-blue-over"], + }, }, - }), - "&:active": { - ".dropdown-wrapper__single-value": { - color: COLORS["core-vibrant-blue-down"], + // When tabbing + // Relies on --is-focused for styling as &:focus-visible cannot be applied + "&.react-select__control--is-focused": { + ".dropdown-wrapper__single-value": { + color: COLORS["core-vibrant-blue-over"], + }, + ".dropdown-wrapper__indicator path": { + stroke: COLORS["core-vibrant-blue-over"], + }, }, - ".dropdown-wrapper__indicator path": { - stroke: COLORS["core-vibrant-blue-down"], + ".filter-icon path": { + fill: COLORS["core-vibrant-blue-over"], }, - }, - ...(state.menuIsOpen && { - ".dropdown-wrapper__indicator svg": { - transform: "rotate(180deg)", - transition: "transform 0.25s ease", + ...(state.isDisabled && { + ".dropdown-wrapper__single-value": { + color: COLORS["ui-fleet-black-50"], + }, + ".dropdown-wrapper__indicator path": { + stroke: COLORS["ui-fleet-black-50"], + }, + ".filter-icon path": { + fill: COLORS["ui-fleet-black-50"], + }, + }), + "&:active": { + ".dropdown-wrapper__single-value": { + color: COLORS["core-vibrant-blue-down"], + }, + ".dropdown-wrapper__indicator path": { + stroke: COLORS["core-vibrant-blue-down"], + }, + ".filter-icon path": { + fill: COLORS["core-vibrant-blue-down"], + }, }, - }), - }), + ...(state.menuIsOpen && { + ".dropdown-wrapper__indicator svg": { + transform: "rotate(180deg)", + transition: "transform 0.25s ease", + }, + }), + }; + }, + placeholder: (provided, state) => { + const buttonVariantPlaceholder = { + color: state.isFocused + ? COLORS["core-vibrant-blue-over"] + : COLORS["core-fleet-blue"], + fontSize: "14px", + fontWeight: "bold", + lineHeight: "normal", + paddingLeft: 0, + marginTop: variant === "button" ? "-1px" : "1px", // TODO: Figure out vertical centering to not need pixel fix + }; + + return { + ...provided, + ...(variant === "button" && buttonVariantPlaceholder), + }; + }, singleValue: (provided) => ({ ...provided, fontSize: "16px", @@ -250,38 +351,47 @@ const DropdownWrapper = ({ zIndex: 6, overflow: "hidden", border: 0, - marginTop: 0, + marginTop: variant === "button" ? "3px" : 0, + left: 0, maxHeight: "none", position: "absolute", - left: "0", animation: "fade-in 150ms ease-out", + ...(nowrapMenu && { + width: "fit-content", + left: "auto", + right: "0", + }), }), menuList: (provided) => ({ ...provided, padding: PADDING["pad-small"], maxHeight: "none", + ...(nowrapMenu && { width: "fit-content" }), }), valueContainer: (provided) => ({ ...provided, padding: 0, display: "flex", - gap: PADDING["pad-small"], + gap: PADDING[variant === "button" ? "pad-xsmall" : "pad-small"], }), option: (provided, state) => ({ ...provided, padding: "10px 8px", fontSize: "14px", + borderRadius: "4px", backgroundColor: getOptionBackgroundColor(state), + fontWeight: state.isSelected ? "bold" : "normal", color: COLORS["core-fleet-black"], "&:hover": { backgroundColor: state.isDisabled ? "transparent" : COLORS["ui-vibrant-blue-10"], + cursor: state.isDisabled ? "not-allowed" : "pointer", }, "&:active": { backgroundColor: state.isDisabled ? "transparent" - : COLORS["ui-vibrant-blue-10"], + : COLORS["ui-vibrant-blue-25"], }, ...(state.isDisabled && { color: COLORS["ui-fleet-black-50"], @@ -294,12 +404,17 @@ const DropdownWrapper = ({ flexDirection: "column", gap: "8px", width: "100%", + whiteSpace: nowrapMenu ? "nowrap" : "normal", }, ".dropdown-wrapper__help-text": { fontSize: "12px", - whiteSpace: "normal", - color: COLORS["ui-fleet-black-50"], + width: "100%", + whiteSpace: nowrapMenu ? "nowrap" : "normal", + color: state.isDisabled + ? COLORS["ui-fleet-black-50"] + : COLORS["ui-fleet-black-75"], fontStyle: "italic", + fontWeight: "normal", }, }), menuPortal: (base) => ({ ...base, zIndex: 999 }), // Not hidden beneath scrollable sections diff --git a/frontend/components/forms/fields/InputField/InputField.stories.tsx b/frontend/components/forms/fields/InputField/InputField.stories.tsx index f94e2f3ae916..79e6018364c1 100644 --- a/frontend/components/forms/fields/InputField/InputField.stories.tsx +++ b/frontend/components/forms/fields/InputField/InputField.stories.tsx @@ -1,5 +1,4 @@ -import React from "react"; -import { Meta, Story } from "@storybook/react"; +import { Meta, StoryObj } from "@storybook/react"; import { noop } from "lodash"; // @ts-ignore @@ -7,23 +6,7 @@ import InputField from "."; import "../../../../index.scss"; -interface IInputFieldProps { - autofocus?: boolean; - readOnly?: boolean; - disabled?: boolean; - error?: string; - inputClassName?: string; - inputWrapperClass?: string; - inputOptions?: Record; // other html input props - name?: string; - placeholder: string; - type?: string; - value: string; - onFocus?: () => void; - onChange?: (value: string) => void; -} - -export default { +const meta: Meta = { component: InputField, title: "Components/FormFields/Input", args: { @@ -33,7 +16,7 @@ export default { error: "", inputClassName: "", inputWrapperClass: "", - inputOptions: "", + inputOptions: {}, name: "", placeholder: "Type here...", type: "", @@ -41,8 +24,10 @@ export default { onFocus: noop, onChange: noop, }, -} as Meta; +}; + +export default meta; -const Template: Story = (props) => ; +type Story = StoryObj; -export const Default = Template.bind({}); +export const Default: Story = {}; diff --git a/frontend/components/forms/fields/InputField/_styles.scss b/frontend/components/forms/fields/InputField/_styles.scss index c70b7551756a..dc54398668f0 100644 --- a/frontend/components/forms/fields/InputField/_styles.scss +++ b/frontend/components/forms/fields/InputField/_styles.scss @@ -2,7 +2,7 @@ line-height: 1.5; background-color: $ui-light-grey; border: solid 1px $ui-fleet-black-10; - border-radius: 4px; + border-radius: $border-radius; font-size: $small; padding: 7px 12px; color: $core-fleet-blue; @@ -39,7 +39,7 @@ color: $core-vibrant-red; border: 1px solid $core-vibrant-red; box-sizing: border-box; - border-radius: 4px; + border-radius: $border-radius; &:focus { border-color: $ui-error; @@ -97,7 +97,6 @@ right: 12px; } - &__input-container.copy-enabled { &.copy-outside { display: flex; diff --git a/frontend/components/forms/fields/InputFieldWithIcon/InputFieldWithIcon.stories.tsx b/frontend/components/forms/fields/InputFieldWithIcon/InputFieldWithIcon.stories.tsx index 1fd893fb8bca..99126393157d 100644 --- a/frontend/components/forms/fields/InputFieldWithIcon/InputFieldWithIcon.stories.tsx +++ b/frontend/components/forms/fields/InputFieldWithIcon/InputFieldWithIcon.stories.tsx @@ -1,5 +1,4 @@ -import React from "react"; -import { Meta, Story } from "@storybook/react"; +import { Meta, StoryObj } from "@storybook/react"; import { noop } from "lodash"; // @ts-ignore @@ -7,23 +6,7 @@ import InputFieldWithIcon from "."; import "../../../../index.scss"; -interface IInputFieldWithIconProps { - autofocus?: boolean; - error?: string; - helpText?: string | string[]; - iconName?: string; - label?: string; - name?: string; - placeholder?: string; - tabIndex?: number; - type?: string; - className?: string; - disabled?: boolean; - iconPosition?: "start" | "end"; - onChange?: () => void; -} - -export default { +const meta: Meta = { component: InputFieldWithIcon, title: "Components/FormFields/InputWithIcon", argTypes: { @@ -132,10 +115,10 @@ export default { className: "", onChange: noop, }, -} as Meta; +}; + +export default meta; -const Template: Story = (props) => ( - -); +type Story = StoryObj; -export const Default = Template.bind({}); +export const Default: Story = {}; diff --git a/frontend/components/forms/fields/InputFieldWithIcon/_styles.scss b/frontend/components/forms/fields/InputFieldWithIcon/_styles.scss index 4ee9826bc662..1acb25adbb69 100644 --- a/frontend/components/forms/fields/InputFieldWithIcon/_styles.scss +++ b/frontend/components/forms/fields/InputFieldWithIcon/_styles.scss @@ -14,7 +14,7 @@ &--error { border: 1px solid $core-vibrant-red; box-sizing: border-box; - border-radius: 4px; + border-radius: $border-radius; } } @@ -73,7 +73,7 @@ color: $core-vibrant-red; border: 1px solid $core-vibrant-red; box-sizing: border-box; - border-radius: 4px; + border-radius: $border-radius; } } diff --git a/frontend/components/forms/fields/Radio/Radio.stories.tsx b/frontend/components/forms/fields/Radio/Radio.stories.tsx index fcf640ebccb3..bb98c50724a4 100644 --- a/frontend/components/forms/fields/Radio/Radio.stories.tsx +++ b/frontend/components/forms/fields/Radio/Radio.stories.tsx @@ -1,13 +1,11 @@ -import React from "react"; -import { Meta, Story } from "@storybook/react"; +import { Meta, StoryObj } from "@storybook/react"; import { noop } from "lodash"; import Radio from "."; -import { IRadioProps } from "./Radio"; import "../../../../index.scss"; -export default { +const meta: Meta = { component: Radio, title: "Components/FormFields/Radio", args: { @@ -20,8 +18,10 @@ export default { className: "", onChange: noop, }, -} as Meta; +}; -const Template: Story = (props) => ; +export default meta; -export const Default = Template.bind({}); +type Story = StoryObj; + +export const Default: Story = {}; diff --git a/frontend/components/forms/fields/Radio/_styles.scss b/frontend/components/forms/fields/Radio/_styles.scss index d40961c93aa9..9a5f6bacbb43 100644 --- a/frontend/components/forms/fields/Radio/_styles.scss +++ b/frontend/components/forms/fields/Radio/_styles.scss @@ -59,8 +59,7 @@ } &__help-text { - color: $ui-fleet-black-75; - font-size: $xx-small; + @include help-text; margin-top: $pad-xxsmall; margin-left: calc(20px + #{$pad-small}); } diff --git a/frontend/components/forms/fields/SelectTargetsDropdown/SelectTargetsDropdown.stories.tsx b/frontend/components/forms/fields/SelectTargetsDropdown/SelectTargetsDropdown.stories.tsx index 48475db91cb9..29690c8f3e4d 100644 --- a/frontend/components/forms/fields/SelectTargetsDropdown/SelectTargetsDropdown.stories.tsx +++ b/frontend/components/forms/fields/SelectTargetsDropdown/SelectTargetsDropdown.stories.tsx @@ -1,26 +1,12 @@ -import React from "react"; -import { Meta, Story } from "@storybook/react"; +import { Meta, StoryObj } from "@storybook/react"; import { noop } from "lodash"; -import { ITarget } from "interfaces/target"; // @ts-ignore import SelectedTargetsDropdown from "."; import "../../../../index.scss"; -interface ISelectedTargetsDropdownProps { - disabled?: boolean; - error?: string; - label?: string; - selectedTargets?: ITarget[]; - targetsCount?: number; - queryId?: number; - isPremiumTier?: boolean; - onSelect: () => void; - onFetchTargets?: () => void; -} - -export default { +const meta: Meta = { component: SelectedTargetsDropdown, title: "Components/SelectTargetsDropdown", args: { @@ -32,10 +18,10 @@ export default { onFetchTargets: noop, onSelect: noop, }, -} as Meta; +}; + +export default meta; -const Template: Story = (props) => ( - -); +type Story = StoryObj; -export const Default = Template.bind({}); +export const Default: Story = {}; diff --git a/frontend/components/forms/fields/Slider/Slider.stories.tsx b/frontend/components/forms/fields/Slider/Slider.stories.tsx index 678c6e6013ee..5ca3acf47f8c 100644 --- a/frontend/components/forms/fields/Slider/Slider.stories.tsx +++ b/frontend/components/forms/fields/Slider/Slider.stories.tsx @@ -1,19 +1,11 @@ -import React from "react"; -import { Meta, Story } from "@storybook/react"; +import { Meta, StoryObj } from "@storybook/react"; import { noop } from "lodash"; import Slider from "."; import "../../../../index.scss"; -interface ISliderProps { - value: boolean; - inactiveText: string; - activeText: string; - onChange: () => void; -} - -export default { +const meta: Meta = { component: Slider, title: "Components/FormFields/Slider", args: { @@ -22,8 +14,10 @@ export default { activeText: "On", onChange: noop, }, -} as Meta; +}; + +export default meta; -const Template: Story = (props) => ; +type Story = StoryObj; -export const Default = Template.bind({}); +export const Default: Story = {}; diff --git a/frontend/components/icons/InfoOutline.tsx b/frontend/components/icons/InfoOutline.tsx new file mode 100644 index 000000000000..abf744ac0979 --- /dev/null +++ b/frontend/components/icons/InfoOutline.tsx @@ -0,0 +1,32 @@ +import React from "react"; +import { COLORS, Colors } from "styles/var/colors"; +import { ICON_SIZES, IconSizes } from "styles/var/icon_sizes"; + +interface IInfoOutlineProps { + size?: IconSizes; + color?: Colors; +} + +const InfoOutline = ({ + size = "medium", + color = "ui-fleet-black-75", +}: IInfoOutlineProps) => { + return ( + + + + ); +}; + +export default InfoOutline; diff --git a/frontend/components/icons/User.tsx b/frontend/components/icons/User.tsx index d936603b5221..9f87a1d57ba8 100644 --- a/frontend/components/icons/User.tsx +++ b/frontend/components/icons/User.tsx @@ -13,14 +13,14 @@ const User = ({ size = "medium", color = "ui-fleet-black-75" }: IUserProps) => { diff --git a/frontend/components/icons/index.ts b/frontend/components/icons/index.ts index df221cd38f8e..27d3ceb18f2e 100644 --- a/frontend/components/icons/index.ts +++ b/frontend/components/icons/index.ts @@ -66,6 +66,7 @@ import InstallSelfService from "./InstallSelfService"; import Settings from "./Settings"; import AutomaticSelfService from "./AutomaticSelfService"; import User from "./User"; +import InfoOutline from "./InfoOutline"; // a mapping of the usable names of icons to the icon source. export const ICON_MAP = { @@ -93,6 +94,7 @@ export const ICON_MAP = { "missing-hosts": MissingHosts, lightbulb: Lightbulb, info: Info, + "info-outline": InfoOutline, more: More, plus: Plus, policy: Policy, diff --git a/frontend/components/queries/PackQueriesTable/_styles.scss b/frontend/components/queries/PackQueriesTable/_styles.scss index 23490011b8c1..f486aa532924 100644 --- a/frontend/components/queries/PackQueriesTable/_styles.scss +++ b/frontend/components/queries/PackQueriesTable/_styles.scss @@ -13,7 +13,6 @@ } .interval__header { width: 0; - border-right: none; } .platform_string__header { display: none; @@ -37,7 +36,6 @@ .performance__header { display: table-cell; width: $col-md; - border-right: none; } } @media (min-width: $break-lg) { diff --git a/frontend/components/side_panels/QuerySidePanel/_styles.scss b/frontend/components/side_panels/QuerySidePanel/_styles.scss index db2d7dcb10e7..9a01db0937cc 100644 --- a/frontend/components/side_panels/QuerySidePanel/_styles.scss +++ b/frontend/components/side_panels/QuerySidePanel/_styles.scss @@ -110,7 +110,7 @@ font-size: $x-small; font-weight: $bold; padding: 2px 4px; - border-radius: 4px; + border-radius: $border-radius; position: relative; top: -2px; min-width: 95px; diff --git a/frontend/components/top_nav/UserMenu/UserMenu.tsx b/frontend/components/top_nav/UserMenu/UserMenu.tsx index 4a07f1b48214..cfe5dfb0d2cf 100644 --- a/frontend/components/top_nav/UserMenu/UserMenu.tsx +++ b/frontend/components/top_nav/UserMenu/UserMenu.tsx @@ -1,11 +1,11 @@ import React, { useEffect, useState } from "react"; import { keyframes } from "@emotion/react"; import Select, { - StylesConfig, - DropdownIndicatorProps, - OptionProps, components, + DropdownIndicatorProps, GroupBase, + OptionProps, + StylesConfig, } from "react-select-5"; import { IUser } from "interfaces/user"; import { ITeam } from "interfaces/team"; @@ -38,7 +38,9 @@ const bounceDownAnimation = keyframes` } `; -const getOptionBackgroundColor = (state: any) => { +const getOptionBackgroundColor = ( + state: OptionProps> +) => { return state.isFocused ? COLORS["ui-vibrant-blue-10"] : "transparent"; }; @@ -225,14 +227,15 @@ const UserMenu = ({ ...provided, padding: "10px 8px", fontSize: "15px", + borderRadius: "4px", backgroundColor: getOptionBackgroundColor(state), - color: COLORS["tooltip-bg"], // TODO: Why the mismatch in names in colors.scss and colors.ts + color: COLORS["tooltip-bg"], whiteSpace: "nowrap", "&:hover": { backgroundColor: COLORS["ui-vibrant-blue-10"], }, "&:active": { - backgroundColor: COLORS["ui-vibrant-blue-10"], + backgroundColor: COLORS["ui-vibrant-blue-25"], }, "&:last-child, &:nth-last-of-type(2)": { borderTop: `1px solid ${COLORS["ui-fleet-black-10"]}`, diff --git a/frontend/context/app.tsx b/frontend/context/app.tsx index 6c195ec2a96b..0acc23fd37f6 100644 --- a/frontend/context/app.tsx +++ b/frontend/context/app.tsx @@ -5,7 +5,7 @@ import { IEnrollSecret } from "interfaces/enroll_secret"; import { APP_CONTEXT_ALL_TEAMS_SUMMARY, ITeamSummary, - APP_CONTEX_NO_TEAM_SUMMARY, + APP_CONTEXT_NO_TEAM_SUMMARY, APP_CONTEXT_NO_TEAM_ID, } from "interfaces/team"; import { IUser } from "interfaces/user"; @@ -324,12 +324,12 @@ const reducer = (state: InitialStateType, action: IAction) => { sortedTeams = sortedTeams.filter( (t) => t.name !== APP_CONTEXT_ALL_TEAMS_SUMMARY.name && - t.name !== APP_CONTEX_NO_TEAM_SUMMARY.name + t.name !== APP_CONTEXT_NO_TEAM_SUMMARY.name ); if (user && permissions.isOnGlobalTeam(user)) { sortedTeams.unshift( APP_CONTEXT_ALL_TEAMS_SUMMARY, - APP_CONTEX_NO_TEAM_SUMMARY + APP_CONTEXT_NO_TEAM_SUMMARY ); } diff --git a/frontend/docs/patterns.md b/frontend/docs/patterns.md index 0b9c3ee90054..f417de7482c8 100644 --- a/frontend/docs/patterns.md +++ b/frontend/docs/patterns.md @@ -137,22 +137,27 @@ We use functional components with React instead of class comonents. We do this as this allows us to use hooks to better share common logic between components. ### Passing props into components + We tend to use explicit assignment of prop values, instead of object spread syntax: -``` + +```tsx ``` ### Naming handlers + When defining component props for handlers, we prefer naming with a more general `onAction`. When naming the handler passed into that prop or used in the same component it's defined, we prefer either the same `onAction` or, if useful, a more specific `onMoreSpecifiedAction`. E.g.: ```tsx ``` + or + ```tsx { export default PackComposerPage; ``` - ## Forms +### Form submission + +When building a React-controlled form: +- Use the native HTML `form` element to wrap the form. +- Use a `Button` component with `type="submit"` for its submit button. +- Write a submit handler, e.g. `handleSubmit`, that accepts an `evt: +React.FormEvent` argument and, critically, calls `evt.preventDefault()` in its +body. This prevents the HTML `form`'s default submit behavior from interfering with our custom +handler's logic. +- Assign that handler to the `form`'s `onSubmit` property (*not* the submit button's `onClick`) + ### Data validation #### How to validate + Forms should make use of a pure `validate` function whose input(s) correspond to form data (may include new and possibly former form data) and whose output is an object of formFieldName:errorMessage key-value pairs (`Record`) e.g. -``` +```tsx const validate = (newFormData: IFormData) => { const errors = {}; ... return errors; } ``` + The output of `validate` should be used by the calling handler to set a `formErrors` state. #### When to validate + Form fields should *set only new errors* on blur and on save, and *set or remove* errors on change. This provides an "optimistic" user experience. The user is only told they have an error once they navigate away from a field or hit enter, actions which imply they are finished editing the field, while they are informed they have fixed an error as soon as possible, that is, as soon as they make the fixing change. e.g. -``` + +```tsx const onInputChange = ({ name, value }: IFormField) => { const newFormData = { ...formData, [name]: value }; setFormData(newFormData); @@ -240,15 +259,15 @@ const onInputChange = ({ name, value }: IFormField) => { , -``` +```tsx const onInputBlur = () => { setFormErrors(validateFormData(formData)); }; ``` -, and +, and -``` +```tsx const onFormSubmit = (evt: React.MouseEvent) => { evt.preventDefault(); @@ -268,7 +287,7 @@ const onFormSubmit = (evt: React.MouseEvent) => { [Hooks](https://reactjs.org/docs/hooks-intro.html) are used to track state and use other features of React. Hooks are only allowed in functional components, which are created like so: - + ```typescript import React, { useState, useEffect } from "React"; @@ -301,15 +320,18 @@ View currently working contexts in the [context directory](../context). ## Fleet API calls +### Making API calls + The [services](../services) directory stores all API calls and is to be used in two ways: + - A direct `async/await` assignment - Using `react-query` if requirements call for loading data right away or based on dependencies. Examples below: -**Direct assignment** +#### Direct assignment -```typescript +```tsx // page import ... import queriesAPI from "services/entities/queries"; @@ -331,12 +353,12 @@ const PageOrComponent = (props) => { }; ``` -**React Query** +#### React Query [react-query](https://react-query.tanstack.com/overview) is a data-fetching library that gives us the ability to fetch, cache, sync and update data with a myriad of options and properties. -```typescript +```tsx import ... import { useQuery, useMutation } from "react-query"; import queriesAPI from "services/entities/queries"; @@ -370,6 +392,35 @@ const PageOrComponent = (props) => { }; ``` +### Handling API errors + +We pull the logic for handling error message into a `getErrorMessage` handler that lives in a sibling +`helpers.tsx` or `helpers.ts` file. This allow us to encapsulate the code for getting and formatting +the API error message away from the component. This will keep put components cleaner and easier +to read. + +```tsx +/* In the component making a request */ + +try { + await softwareAPI.install() + // successful messgae +} catch (e) { + renderFlash("error", getErrorMessage(e)) +} + +/* in helpers.tsx */ + +// This function is used to abstract away the details of getting and formatting +// the error message we recieve from the API +export const getErrorMessage = (e: unknown) => { + ... + + // return a string or a JSX.Element + return "some error message" +} +``` + ## Page routing We use React Router directly to navigate between pages. For page components, @@ -377,7 +428,7 @@ React Router (v3) supplies a `router` prop that can be easily accessed. When needed, the `router` object contains a `push` function that redirects a user to whatever page desired. For example: -```typescript +```tsx // page import PATHS from "router/paths"; import { InjectedRouter } from "react-router/lib/Router"; @@ -403,19 +454,11 @@ const PageOrComponent = ({ Below are a few need-to-knows about what's available in Fleet's CSS: - - ### Modals 1) When creating a modal with a form inside, the action buttons (cancel, save, delete, etc.) should be wrapped in the `modal-cta-wrap` class to keep unified styles. -### Forms - -1) When creating a form, **not** in a modal, use the class `${baseClass}__button-wrap` for the - action buttons (cancel, save, delete, etc.) and proceed to style as needed. - - ## Icons and images ### Adding icons @@ -438,14 +481,11 @@ The icon should now be available to use with the `Icon` component from the given ``` - - ### File size The recommend line limit per page/component is 500 lines. This is only a recommendation. Larger files are to be split into multiple files if possible. - ## Testing At a bare minimum, we make every effort to test that components that should render data are doing so @@ -492,4 +532,4 @@ the flash message may register the `push` and immediately hide itself. router.push(newPath); // then flash renderFlash("error", "Something went wrong"); -``` \ No newline at end of file +``` diff --git a/frontend/interfaces/activity.ts b/frontend/interfaces/activity.ts index 71b1d01ccb60..e31355bc4d6d 100644 --- a/frontend/interfaces/activity.ts +++ b/frontend/interfaces/activity.ts @@ -97,18 +97,22 @@ export enum ActivityType { EnabledActivityAutomations = "enabled_activity_automations", EditedActivityAutomations = "edited_activity_automations", DisabledActivityAutomations = "disabled_activity_automations", + CanceledScript = "canceled_script", + CanceledSoftwareInstall = "canceled_software_install", } -// This is a subset of ActivityType that are shown only for the host past activities +/** This is a subset of ActivityType that are shown only for the host past activities */ export type IHostPastActivityType = | ActivityType.RanScript | ActivityType.LockedHost | ActivityType.UnlockedHost | ActivityType.InstalledSoftware | ActivityType.UninstalledSoftware - | ActivityType.InstalledAppStoreApp; + | ActivityType.InstalledAppStoreApp + | ActivityType.CanceledScript + | ActivityType.CanceledSoftwareInstall; -// This is a subset of ActivityType that are shown only for the host upcoming activities +/** This is a subset of ActivityType that are shown only for the host upcoming activities */ export type IHostUpcomingActivityType = | ActivityType.RanScript | ActivityType.InstalledSoftware @@ -132,6 +136,7 @@ export type IHostPastActivity = Omit & { }; export type IHostUpcomingActivity = Omit & { + uuid: string; type: IHostUpcomingActivityType; details: IActivityDetails; }; diff --git a/frontend/interfaces/software.ts b/frontend/interfaces/software.ts index 7912fd0668e9..fef7a01e3a1a 100644 --- a/frontend/interfaces/software.ts +++ b/frontend/interfaces/software.ts @@ -463,4 +463,5 @@ export interface IFleetMaintainedAppDetails { install_script: string; post_install_script: string; // TODO: is this needed? uninstall_script: string; + url: string; } diff --git a/frontend/interfaces/team.ts b/frontend/interfaces/team.ts index b0bf6ca6e5a9..9fe7c3d60d71 100644 --- a/frontend/interfaces/team.ts +++ b/frontend/interfaces/team.ts @@ -132,7 +132,7 @@ export const APP_CONTEXT_ALL_TEAMS_SUMMARY: ITeamSummary = { export const API_NO_TEAM_ID = 0; export const APP_CONTEXT_NO_TEAM_ID = 0; -export const APP_CONTEX_NO_TEAM_SUMMARY: ITeamSummary = { +export const APP_CONTEXT_NO_TEAM_SUMMARY: ITeamSummary = { id: APP_CONTEXT_NO_TEAM_ID, name: "No team", } as const; diff --git a/frontend/pages/ConfirmInvitePage/ConfirmInvitePage.tsx b/frontend/pages/ConfirmInvitePage/ConfirmInvitePage.tsx index 1aa1c153f65d..cc204c6a5904 100644 --- a/frontend/pages/ConfirmInvitePage/ConfirmInvitePage.tsx +++ b/frontend/pages/ConfirmInvitePage/ConfirmInvitePage.tsx @@ -1,4 +1,4 @@ -import React, { useContext, useState, useEffect } from "react"; +import React, { useCallback, useContext } from "react"; import { InjectedRouter } from "react-router"; import { Params } from "react-router/lib/Router"; @@ -7,63 +7,96 @@ import { NotificationContext } from "context/notification"; import { ICreateUserWithInvitationFormData } from "interfaces/user"; import paths from "router/paths"; import usersAPI from "services/entities/users"; -import formatErrorResponse from "utilities/format_error_response"; +import inviteAPI, { IValidateInviteResp } from "services/entities/invites"; import AuthenticationFormWrapper from "components/AuthenticationFormWrapper"; -// @ts-ignore +import Spinner from "components/Spinner"; +import { useQuery } from "react-query"; +import { IInvite } from "interfaces/invite"; +import StackedWhiteBoxes from "components/StackedWhiteBoxes"; import ConfirmInviteForm from "components/forms/ConfirmInviteForm"; +import { IConfirmInviteFormData } from "components/forms/ConfirmInviteForm/ConfirmInviteForm"; +import { getErrorReason } from "interfaces/errors"; +import { AxiosError } from "axios"; interface IConfirmInvitePageProps { router: InjectedRouter; // v3 - location: any; // no type in react-router v3 params: Params; } const baseClass = "confirm-invite-page"; -const ConfirmInvitePage = ({ - router, - location, - params, -}: IConfirmInvitePageProps) => { - const { email, name } = location.query; - const { invite_token } = params; - const inviteFormData = { email, invite_token, name }; +const ConfirmInvitePage = ({ router, params }: IConfirmInvitePageProps) => { const { currentUser } = useContext(AppContext); const { renderFlash } = useContext(NotificationContext); - const [userErrors, setUserErrors] = useState({}); - useEffect(() => { - const { DASHBOARD } = paths; + const { invite_token } = params; - if (currentUser) { - return router.push(DASHBOARD); + const { + data: validInvite, + error: validateInviteError, + isLoading: isVerifyingInvite, + } = useQuery( + "invite", + () => inviteAPI.verify(invite_token), + { + select: (resp: IValidateInviteResp) => resp.invite, + retry: (failureCount, error) => failureCount < 4 && error.status !== 404, } - }, [currentUser]); + ); - const onSubmit = async (formData: ICreateUserWithInvitationFormData) => { - const { create } = usersAPI; - const { LOGIN } = paths; + const onSubmit = useCallback( + async (formData: IConfirmInviteFormData) => { + const dataForAPI: ICreateUserWithInvitationFormData = { + email: validInvite?.email || "", + invite_token, + name: formData.name, + password: formData.password, + password_confirmation: formData.password_confirmation, + }; - setUserErrors({}); + try { + await usersAPI.create(dataForAPI); + router.push(paths.LOGIN); + renderFlash( + "success", + "Registration successful! For security purposes, please log in." + ); + } catch (error) { + const reason = getErrorReason(error); + console.error(reason); + renderFlash("error", reason); + } + }, + [invite_token, renderFlash, router, validInvite?.email] + ); - try { - await create(formData); + if (currentUser) { + router.push(paths.DASHBOARD); + // return for router typechecking + return <>; + } - router.push(LOGIN); - renderFlash( - "success", - "Registration successful! For security purposes, please log in." - ); - } catch (error) { - console.error(error); - const errorsObject = formatErrorResponse(error); - setUserErrors(errorsObject); + const renderContent = () => { + if (isVerifyingInvite) { + return ; } - }; - return ( - + // error is how API communicates an invalid invite + if (validateInviteError) { + return ( + + <> +

+ That invite is invalid. +

+

Please confirm your invite link.

+ +
+ ); + } + // valid - return form pre-filled with data from api response + return (

Welcome to Fleet

@@ -73,13 +106,18 @@ const ConfirmInvitePage = ({

-
+ ); + }; + + return ( + {renderContent()} ); }; diff --git a/frontend/pages/DashboardPage/DashboardPage.tsx b/frontend/pages/DashboardPage/DashboardPage.tsx index 51f846941fc2..deaafef323e7 100644 --- a/frontend/pages/DashboardPage/DashboardPage.tsx +++ b/frontend/pages/DashboardPage/DashboardPage.tsx @@ -54,8 +54,9 @@ import { ITableQueryData } from "components/TableContainer/TableContainer"; import TeamsDropdown from "components/TeamsDropdown"; import Spinner from "components/Spinner"; import CustomLink from "components/CustomLink"; -// @ts-ignore -import Dropdown from "components/forms/fields/Dropdown"; +import { SingleValue } from "react-select-5"; +import DropdownWrapper from "components/forms/fields/DropdownWrapper"; +import { CustomOptionType } from "components/forms/fields/DropdownWrapper/DropdownWrapper"; import MainContent from "components/MainContent"; import LastUpdatedText from "components/LastUpdatedText"; @@ -184,7 +185,7 @@ const DashboardPage = ({ router, location }: IDashboardProps): JSX.Element => { isGlobalAdmin || isGlobalMaintainer || isTeamAdmin || isTeamMaintainer; const canEnrollGlobalHosts = isGlobalAdmin || isGlobalMaintainer; const canEditActivityFeedAutomations = - (isGlobalAdmin || isGlobalMaintainer) && teamIdForApi === API_ALL_TEAMS_ID; + isGlobalAdmin && teamIdForApi === API_ALL_TEAMS_ID; const { data: config, refetch: refetchConfig } = useQuery< IConfig, @@ -883,14 +884,14 @@ const DashboardPage = ({ router, location }: IDashboardProps): JSX.Element => {
Platform:  - { + onChange={(option: SingleValue) => { const selectedPlatformOption = PLATFORM_DROPDOWN_OPTIONS.find( - (platform) => platform.value === value + (platform) => platform.value === option?.value ); router.push( (selectedPlatformOption?.path || paths.DASHBOARD) diff --git a/frontend/pages/DashboardPage/_styles.scss b/frontend/pages/DashboardPage/_styles.scss index cc84a830f556..7867e4450e48 100644 --- a/frontend/pages/DashboardPage/_styles.scss +++ b/frontend/pages/DashboardPage/_styles.scss @@ -60,16 +60,8 @@ } } - &__platform_dropdown { + &__platform-filter { width: 138px; - - .Select-menu-outer { - max-height: none; - - .Select-menu { - max-height: none; - } - } } &__section { diff --git a/frontend/pages/DashboardPage/cards/ActivityFeed/ActivityFeed.tsx b/frontend/pages/DashboardPage/cards/ActivityFeed/ActivityFeed.tsx index e4f63298b813..3755aced248d 100644 --- a/frontend/pages/DashboardPage/cards/ActivityFeed/ActivityFeed.tsx +++ b/frontend/pages/DashboardPage/cards/ActivityFeed/ActivityFeed.tsx @@ -19,8 +19,9 @@ import FleetIcon from "components/icons/FleetIcon"; import { AppInstallDetailsModal } from "components/ActivityDetails/InstallDetails/AppInstallDetails"; import { SoftwareInstallDetailsModal } from "components/ActivityDetails/InstallDetails/SoftwareInstallDetails/SoftwareInstallDetails"; import SoftwareUninstallDetailsModal from "components/ActivityDetails/InstallDetails/SoftwareUninstallDetailsModal/SoftwareUninstallDetailsModal"; +import { IShowActivityDetailsData } from "components/ActivityItem/ActivityItem"; -import ActivityItem from "./ActivityItem"; +import GlobalActivityItem from "./GlobalActivityItem"; import ActivityAutomationDetailsModal from "./components/ActivityAutomationDetailsModal"; import RunScriptDetailsModal from "./components/RunScriptDetailsModal/RunScriptDetailsModal"; import SoftwareDetailsModal from "./components/SoftwareDetailsModal"; @@ -108,20 +109,17 @@ const ActivityFeed = ({ setPageIndex(pageIndex + 1); }; - const handleDetailsClick = ( - activityType: ActivityType, - details: IActivityDetails - ) => { - switch (activityType) { + const handleDetailsClick = ({ type, details }: IShowActivityDetailsData) => { + switch (type) { case ActivityType.LiveQuery: - queryShown.current = details.query_sql ?? ""; - queryImpact.current = details.stats + queryShown.current = details?.query_sql ?? ""; + queryImpact.current = details?.stats ? getPerformanceImpactDescription(details.stats) : undefined; setShowShowQueryModal(true); break; case ActivityType.RanScript: - scriptExecutionId.current = details.script_execution_id ?? ""; + scriptExecutionId.current = details?.script_execution_id ?? ""; setShowScriptDetailsModal(true); break; case ActivityType.InstalledSoftware: @@ -184,7 +182,7 @@ const ActivityFeed = ({ )}
{activities?.map((activity) => ( - { it("renders avatar, actor name, timestamp", async () => { @@ -17,7 +17,7 @@ describe("Activity Feed", () => { created_at: currentDate.toISOString(), }); - render(); + render(); // waiting for the activity data to render await screen.findByText("Test User"); @@ -31,7 +31,7 @@ describe("Activity Feed", () => { const activity = createMockActivity({ type: ActivityType.CreatedPack, }); - render(); + render(); expect(screen.getByText("created pack.")).toBeInTheDocument(); }); @@ -41,7 +41,7 @@ describe("Activity Feed", () => { type: ActivityType.CreatedPack, details: { pack_name: "Test pack" }, }); - render(); + render(); expect(screen.getByText("created pack .")).toBeInTheDocument(); expect(screen.getByText("Test pack")).toBeInTheDocument(); @@ -49,7 +49,7 @@ describe("Activity Feed", () => { it("renders a live_query type activity", () => { const activity = createMockActivity({ type: ActivityType.LiveQuery }); - render(); + render(); expect(screen.getByText("ran a live query .")).toBeInTheDocument(); }); @@ -61,7 +61,7 @@ describe("Activity Feed", () => { targets_count: 10, }, }); - render(); + render(); expect( screen.getByText("ran a live query on 10 hosts.") @@ -76,11 +76,10 @@ describe("Activity Feed", () => { query_sql: "SELECT * FROM users", }, }); - render(); + render(); expect(screen.getByText(/ran the/)).toBeInTheDocument(); expect(screen.getByText("Test Query")).toBeInTheDocument(); - expect(screen.getByText("Show query")).toBeInTheDocument(); }); it("renders a live_query type activity for a saved live query with targets and performance impact", () => { const activity = createMockActivity({ @@ -97,14 +96,13 @@ describe("Activity Feed", () => { }, }); - render(); + render(); expect(screen.getByText(/ran the/)).toBeInTheDocument(); expect(screen.getByText("Test Query")).toBeInTheDocument(); expect( screen.getByText(/with excessive performance impact on 10 hosts\./) ).toBeInTheDocument(); - expect(screen.getByText("Show query")).toBeInTheDocument(); }); it("renders a live_query type activity for a saved live query with targets and no performance impact", () => { @@ -122,19 +120,18 @@ describe("Activity Feed", () => { }, }); - render(); + render(); expect(screen.getByText(/ran the/)).toBeInTheDocument(); expect(screen.getByText("Test Query")).toBeInTheDocument(); expect(screen.queryByText(/Undetermined/)).toBeNull(); - expect(screen.getByText("Show query")).toBeInTheDocument(); }); it("renders an applied_spec_pack type activity", () => { const activity = createMockActivity({ type: ActivityType.AppliedSpecPack, }); - render(); + render(); expect( screen.getByText("edited a pack using fleetctl.") @@ -145,7 +142,7 @@ describe("Activity Feed", () => { const activity = createMockActivity({ type: ActivityType.AppliedSpecPolicy, }); - render(); + render(); expect( screen.getByText("edited policies using fleetctl.") @@ -156,7 +153,7 @@ describe("Activity Feed", () => { const activity = createMockActivity({ type: ActivityType.AppliedSpecSavedQuery, }); - render(); + render(); expect( screen.getByText("edited a query using fleetctl.") @@ -168,7 +165,7 @@ describe("Activity Feed", () => { type: ActivityType.AppliedSpecSavedQuery, details: { specs: [createMockQuery(), createMockQuery()] }, }); - render(); + render(); expect( screen.getByText("edited queries using fleetctl.") @@ -180,7 +177,7 @@ describe("Activity Feed", () => { type: ActivityType.AppliedSpecTeam, details: { teams: [createMockTeamSummary()] }, }); - render(); + render(); expect( screen.getByText("edited the team using fleetctl.") @@ -195,7 +192,7 @@ describe("Activity Feed", () => { teams: [createMockTeamSummary(), createMockTeamSummary()], }, }); - render(); + render(); expect( screen.getByText("edited multiple teams using fleetctl.") @@ -206,7 +203,7 @@ describe("Activity Feed", () => { const activity = createMockActivity({ type: ActivityType.UserAddedBySSO, }); - render(); + render(); expect(screen.getByText("was added to Fleet by SSO.")).toBeInTheDocument(); }); @@ -216,7 +213,7 @@ describe("Activity Feed", () => { type: ActivityType.EditedAgentOptions, details: { team_name: "Test Team 1" }, }); - render(); + render(); expect( screen.getByText("edited agent options on team.") @@ -229,7 +226,7 @@ describe("Activity Feed", () => { type: ActivityType.EditedAgentOptions, details: { global: true }, }); - render(); + render(); expect(screen.getByText("edited agent options.")).toBeInTheDocument(); }); @@ -239,7 +236,7 @@ describe("Activity Feed", () => { type: ActivityType.UserLoggedIn, details: { public_ip: "192.168.0.1" }, }); - render(); + render(); expect( screen.getByText("successfully logged in from public IP 192.168.0.1.") @@ -250,7 +247,7 @@ describe("Activity Feed", () => { type: ActivityType.UserLoggedIn, details: {}, }); - render(); + render(); expect(screen.getByText("successfully logged in.")).toBeInTheDocument(); }); @@ -260,7 +257,7 @@ describe("Activity Feed", () => { type: ActivityType.UserFailedLogin, details: { email: "foo@example.com", public_ip: "192.168.0.1" }, }); - render(); + render(); expect( screen.getByText(" failed to log in from public IP 192.168.0.1.", { @@ -281,7 +278,7 @@ describe("Activity Feed", () => { type: ActivityType.UserCreated, details: { user_email: "newuser@example.com" }, }); - render(); + render(); expect( screen.getByText("created a user", { exact: false }) @@ -298,7 +295,7 @@ describe("Activity Feed", () => { user_id: 3, }, }); - render(); + render(); // If actor_id is the same as user_id: // " activated their account." @@ -312,7 +309,7 @@ describe("Activity Feed", () => { type: ActivityType.UserDeleted, details: { user_email: "newuser@example.com" }, }); - render(); + render(); expect( screen.getByText("deleted a user", { exact: false }) @@ -329,7 +326,7 @@ describe("Activity Feed", () => { type: ActivityType.UserChangedGlobalRole, details: { user_email: "newuser@example.com", role: "maintainer" }, }); - render(); + render(); expect(screen.getByText("changed", { exact: false })).toBeInTheDocument(); expect(screen.getByText("newuser@example.com")).toBeInTheDocument(); @@ -344,7 +341,7 @@ describe("Activity Feed", () => { type: ActivityType.UserChangedGlobalRole, details: { user_email: "newuser@example.com", role: "maintainer" }, }); - render(); + render(); expect(screen.getByText("changed", { exact: false })).toBeInTheDocument(); expect(screen.getByText("newuser@example.com")).toBeInTheDocument(); @@ -363,7 +360,7 @@ describe("Activity Feed", () => { role: "observer", }, }); - render(); + render(); // If actor_id is the same as user_id: // " was assigned the for all teams." @@ -384,7 +381,7 @@ describe("Activity Feed", () => { role: "maintainer", }, }); - render(); + render(); // If actor_id is different from user_id on premium: // " changed to for all teams." @@ -407,7 +404,7 @@ describe("Activity Feed", () => { role: "maintainer", }, }); - render(); + render(); // If actor_id is different from user_id on free: // " changed to ." @@ -433,7 +430,7 @@ describe("Activity Feed", () => { team_name: "Test Team", }, }); - render(); + render(); expect(screen.getByText("changed", { exact: false })).toBeInTheDocument(); expect(screen.getByText("newuser@example.com")).toBeInTheDocument(); @@ -453,7 +450,7 @@ describe("Activity Feed", () => { team_name: "Test Team", }, }); - render(); + render(); // If actor_id is the same as user_id: // " was assigned the role for the team." @@ -481,7 +478,7 @@ describe("Activity Feed", () => { team_name: "Test Team", }, }); - render(); + render(); // If actor_id is different from user_id: // " changed to for the team." @@ -506,7 +503,7 @@ describe("Activity Feed", () => { team_name: "Test Team", }, }); - render(); + render(); expect(screen.getByText("removed", { exact: false })).toBeInTheDocument(); expect(screen.getByText("newuser@example.com")).toBeInTheDocument(); @@ -518,7 +515,7 @@ describe("Activity Feed", () => { type: ActivityType.UserDeletedGlobalRole, details: { user_email: "newuser@example.com", role: "maintainer" }, }); - render(); + render(); expect(screen.getByText("removed", { exact: false })).toBeInTheDocument(); expect(screen.getByText("newuser@example.com")).toBeInTheDocument(); @@ -533,7 +530,7 @@ describe("Activity Feed", () => { type: ActivityType.UserDeletedGlobalRole, details: { user_email: "newuser@example.com", role: "maintainer" }, }); - render(); + render(); expect(screen.getByText("removed", { exact: false })).toBeInTheDocument(); expect(screen.getByText("newuser@example.com")).toBeInTheDocument(); @@ -547,7 +544,7 @@ describe("Activity Feed", () => { type: ActivityType.EnabledDiskEncryption, details: { team_name: "Alphas" }, }); - render(); + render(); expect( screen.getByText("enforced disk encryption for hosts assigned to the", { @@ -566,7 +563,7 @@ describe("Activity Feed", () => { type: ActivityType.EnabledMacDiskEncryption, details: { team_name: "Alphas" }, }); - render(); + render(); expect( screen.getByText("enforced disk encryption for hosts assigned to the", { @@ -584,7 +581,7 @@ describe("Activity Feed", () => { type: ActivityType.DisabledMacDiskEncryption, details: { team_name: "Alphas" }, }); - render(); + render(); expect( screen.getByText( @@ -606,7 +603,7 @@ describe("Activity Feed", () => { type: ActivityType.DisabledDiskEncryption, details: { team_name: "Alphas" }, }); - render(); + render(); expect( screen.getByText( @@ -627,7 +624,7 @@ describe("Activity Feed", () => { type: ActivityType.EnabledDiskEncryption, details: {}, }); - render(); + render(); expect( screen.getByText("enforced disk encryption for hosts with no team.") @@ -641,7 +638,7 @@ describe("Activity Feed", () => { type: ActivityType.EnabledMacDiskEncryption, details: {}, }); - render(); + render(); expect( screen.getByText("enforced disk encryption for hosts with no team.") @@ -654,7 +651,7 @@ describe("Activity Feed", () => { type: ActivityType.DisabledDiskEncryption, details: {}, }); - render(); + render(); expect( screen.getByText( @@ -673,7 +670,7 @@ describe("Activity Feed", () => { type: ActivityType.DisabledMacDiskEncryption, details: {}, }); - render(); + render(); expect( screen.getByText( @@ -691,7 +688,7 @@ describe("Activity Feed", () => { type: ActivityType.ChangedMacOSSetupAssistant, details: { name: "dep-profile.json" }, }); - render(); + render(); expect( screen.getByText((content, node) => { @@ -708,7 +705,7 @@ describe("Activity Feed", () => { type: ActivityType.ChangedMacOSSetupAssistant, details: { name: "dep-profile.json", team_name: "Workstations" }, }); - render(); + render(); expect( screen.getByText((content, node) => { @@ -725,7 +722,7 @@ describe("Activity Feed", () => { type: ActivityType.DeletedMacOSSetupAssistant, details: { name: "dep-profile.json" }, }); - render(); + render(); expect( screen.getByText((content, node) => { @@ -742,7 +739,7 @@ describe("Activity Feed", () => { type: ActivityType.DeletedMacOSSetupAssistant, details: { name: "dep-profile.json", team_name: "Workstations" }, }); - render(); + render(); expect( screen.getByText((content, node) => { @@ -759,7 +756,7 @@ describe("Activity Feed", () => { type: ActivityType.AddedBootstrapPackage, details: { bootstrap_package_name: "foo.pkg", team_name: "Alphas" }, }); - render(); + render(); expect( screen.getByText("added a bootstrap package (", { exact: false }) @@ -781,7 +778,7 @@ describe("Activity Feed", () => { type: ActivityType.DeletedBootstrapPackage, details: { bootstrap_package_name: "foo.pkg", team_name: "Alphas" }, }); - render(); + render(); expect( screen.getByText("deleted a bootstrap package (", { exact: false }) @@ -803,7 +800,7 @@ describe("Activity Feed", () => { type: ActivityType.AddedBootstrapPackage, details: { bootstrap_package_name: "foo.pkg" }, }); - render(); + render(); expect( screen.getByText("added a bootstrap package (", { exact: false }) @@ -822,7 +819,7 @@ describe("Activity Feed", () => { type: ActivityType.DeletedBootstrapPackage, details: { bootstrap_package_name: "foo.pkg" }, }); - render(); + render(); expect( screen.getByText("deleted a bootstrap package (", { exact: false }) @@ -841,7 +838,7 @@ describe("Activity Feed", () => { type: ActivityType.EnabledMacOSSetupEndUserAuth, details: { team_name: "Alphas" }, }); - render(); + render(); expect( screen.getByText( @@ -858,7 +855,7 @@ describe("Activity Feed", () => { const activity = createMockActivity({ type: ActivityType.EnabledMacOSSetupEndUserAuth, }); - render(); + render(); expect( screen.getByText( @@ -873,7 +870,7 @@ describe("Activity Feed", () => { type: ActivityType.DisabledMacOSSetupEndUserAuth, details: { team_name: "Alphas" }, }); - render(); + render(); expect( screen.getByText( @@ -890,7 +887,7 @@ describe("Activity Feed", () => { const activity = createMockActivity({ type: ActivityType.DisabledMacOSSetupEndUserAuth, }); - render(); + render(); expect( screen.getByText( @@ -908,7 +905,7 @@ describe("Activity Feed", () => { host_display_names: ["foo"], }, }); - render(); + render(); expect( screen.getByText("transferred host", { exact: false }) @@ -926,7 +923,7 @@ describe("Activity Feed", () => { team_name: "Alphas", }, }); - render(); + render(); expect( screen.getByText("transferred host", { exact: false }) @@ -943,7 +940,7 @@ describe("Activity Feed", () => { host_display_names: ["foo", "bar", "baz"], }, }); - render(); + render(); expect( screen.getByText("transferred 3 hosts", { exact: false }) @@ -963,7 +960,7 @@ describe("Activity Feed", () => { team_name: "Alphas", }, }); - render(); + render(); expect( screen.getByText("transferred 3 hosts", { exact: false }) @@ -981,7 +978,7 @@ describe("Activity Feed", () => { host_serial: "ABCD", }, }); - render(); + render(); expect( screen.getByText((content, node) => { @@ -1002,7 +999,7 @@ describe("Activity Feed", () => { mdm_platform: "apple", }, }); - render(); + render(); expect( screen.getByText((content, node) => { @@ -1022,11 +1019,10 @@ describe("Activity Feed", () => { host_display_name: "ABCD", }, }); - render(); + render(); expect( screen.getByText((content, node) => { - console.log(node?.innerHTML); return ( node?.innerHTML === "Test User Mobile device management (MDM) was turned on for ABCD (manual)." @@ -1040,7 +1036,7 @@ describe("Activity Feed", () => { type: ActivityType.AddedScript, details: { script_name: "foo.sh", team_name: "Alphas" }, }); - render(); + render(); expect( screen.getByText("added script ", { exact: false }) @@ -1062,7 +1058,7 @@ describe("Activity Feed", () => { type: ActivityType.EditedScript, details: { team_name: "Alphas" }, }); - render(); + render(); expect( screen.getByText("edited scripts", { exact: false }) @@ -1085,7 +1081,7 @@ describe("Activity Feed", () => { type: ActivityType.DeletedScript, details: { script_name: "foo.sh", team_name: "Alphas" }, }); - render(); + render(); expect( screen.getByText("deleted script ", { exact: false }) @@ -1107,7 +1103,7 @@ describe("Activity Feed", () => { type: ActivityType.AddedScript, details: { script_name: "foo.sh" }, }); - render(); + render(); expect( screen.getByText("added script ", { exact: false }) @@ -1123,7 +1119,7 @@ describe("Activity Feed", () => { type: ActivityType.EditedScript, details: {}, }); - render(); + render(); expect( screen.getByText("edited scripts", { exact: false }) @@ -1138,7 +1134,7 @@ describe("Activity Feed", () => { type: ActivityType.DeletedScript, details: { script_name: "foo.sh" }, }); - render(); + render(); expect( screen.getByText("deleted script ", { exact: false }) @@ -1158,7 +1154,7 @@ describe("Activity Feed", () => { team_name: "Alphas", }, }); - render(); + render(); expect(screen.getByText("added", { exact: false })).toBeInTheDocument(); expect( @@ -1184,7 +1180,7 @@ describe("Activity Feed", () => { team_name: "Alphas", }, }); - render(); + render(); expect(screen.getByText("edited", { exact: false })).toBeInTheDocument(); expect( @@ -1207,7 +1203,7 @@ describe("Activity Feed", () => { team_name: "Alphas", }, }); - render(); + render(); expect(screen.getByText("deleted", { exact: false })).toBeInTheDocument(); expect( @@ -1229,7 +1225,7 @@ describe("Activity Feed", () => { type: ActivityType.AddedSoftware, details: { software_title: "Foo bar", software_package: "foobar.pkg" }, }); - render(); + render(); expect(screen.getByText("added", { exact: false })).toBeInTheDocument(); expect( @@ -1248,7 +1244,7 @@ describe("Activity Feed", () => { software_package: "foobar.pkg", }, }); - render(); + render(); expect(screen.getByText("edited", { exact: false })).toBeInTheDocument(); expect( @@ -1261,7 +1257,7 @@ describe("Activity Feed", () => { type: ActivityType.DeletedSoftware, details: { software_title: "Foo bar", software_package: "foobar.pkg" }, }); - render(); + render(); expect(screen.getByText("deleted", { exact: false })).toBeInTheDocument(); expect( @@ -1279,7 +1275,7 @@ describe("Activity Feed", () => { query_ids: [1, 2, 3], }, }); - render(); + render(); expect( screen.getByText("deleted multiple queries", { exact: false }) @@ -1293,7 +1289,7 @@ describe("Activity Feed", () => { host_display_name: "Foo Host", }, }); - render(); + render(); expect(screen.getByText("wiped", { exact: false })).toBeInTheDocument(); expect(screen.getByText("Foo Host", { exact: false })).toBeInTheDocument(); @@ -1310,7 +1306,7 @@ describe("Activity Feed", () => { }, }); - render(); + render(); expect(screen.getByText("Test Admin")).toBeInTheDocument(); }); @@ -1325,7 +1321,7 @@ describe("Activity Feed", () => { }, }); - render(); + render(); expect(screen.getByText("An end user")).toBeInTheDocument(); }); @@ -1340,7 +1336,7 @@ describe("Activity Feed", () => { }, }); - render(); + render(); expect(screen.getByText("Test Admin")).toBeInTheDocument(); }); @@ -1355,7 +1351,7 @@ describe("Activity Feed", () => { }, }); - render(); + render(); expect(screen.getByText("An end user")).toBeInTheDocument(); }); @@ -1363,7 +1359,7 @@ describe("Activity Feed", () => { const activity = createMockActivity({ type: ActivityType.AddedNdesScepProxy, }); - render(); + render(); expect(screen.getByText(/Test User/)).toBeInTheDocument(); expect( @@ -1377,7 +1373,7 @@ describe("Activity Feed", () => { const activity = createMockActivity({ type: ActivityType.EditedNdesScepProxy, }); - render(); + render(); expect(screen.getByText(/Test User/)).toBeInTheDocument(); expect( @@ -1391,7 +1387,7 @@ describe("Activity Feed", () => { const activity = createMockActivity({ type: ActivityType.DeletedNdesScepProxy, }); - render(); + render(); expect(screen.getByText(/Test User/)).toBeInTheDocument(); expect( @@ -1400,40 +1396,4 @@ describe("Activity Feed", () => { ) ).toBeInTheDocument(); }); - - it("renders setup experience installed software correctly", () => { - const activity = createMockActivity({ - type: ActivityType.InstalledSoftware, - actor_full_name: "", - actor_email: "", - actor_id: undefined, - }); - render(); - - expect(screen.getByText(/Fleet/)).toBeInTheDocument(); - }); - - it("renders setup experience ran script correctly", () => { - const activity = createMockActivity({ - type: ActivityType.RanScript, - actor_full_name: "", - actor_email: "", - actor_id: undefined, - }); - render(); - - expect(screen.getByText(/Fleet/)).toBeInTheDocument(); - }); - - it("renders setup experience installed VPP app correctly", () => { - const activity = createMockActivity({ - type: ActivityType.RanScript, - actor_full_name: "", - actor_email: "", - actor_id: undefined, - }); - render(); - - expect(screen.getByText(/Fleet/)).toBeInTheDocument(); - }); }); diff --git a/frontend/pages/DashboardPage/cards/ActivityFeed/ActivityItem/ActivityItem.tsx b/frontend/pages/DashboardPage/cards/ActivityFeed/GlobalActivityItem/GlobalActivityItem.tsx similarity index 77% rename from frontend/pages/DashboardPage/cards/ActivityFeed/ActivityItem/ActivityItem.tsx rename to frontend/pages/DashboardPage/cards/ActivityFeed/GlobalActivityItem/GlobalActivityItem.tsx index ef84fd1af08c..6d6004b1c464 100644 --- a/frontend/pages/DashboardPage/cards/ActivityFeed/ActivityItem/ActivityItem.tsx +++ b/frontend/pages/DashboardPage/cards/ActivityFeed/GlobalActivityItem/GlobalActivityItem.tsx @@ -1,29 +1,21 @@ import React from "react"; import { find, lowerCase, noop, trimEnd } from "lodash"; -import { formatDistanceToNowStrict } from "date-fns"; -import { ActivityType, IActivity, IActivityDetails } from "interfaces/activity"; +import { ActivityType, IActivity } from "interfaces/activity"; import { getInstallStatusPredicate } from "interfaces/software"; import { AppleDisplayPlatform, PLATFORM_DISPLAY_NAMES, } from "interfaces/platform"; - import { - addGravatarUrlToResource, formatScriptNameForActivityItem, getPerformanceImpactDescription, - internationalTimeFormat, } from "utilities/helpers"; -import { DEFAULT_GRAVATAR_LINK } from "utilities/constants"; -import Avatar from "components/Avatar"; -import Button from "components/buttons/Button"; -import Icon from "components/Icon"; -import ReactTooltip from "react-tooltip"; -import PremiumFeatureIconWithTooltip from "components/PremiumFeatureIconWithTooltip"; -import { COLORS } from "styles/var/colors"; -const baseClass = "activity-item"; +import ActivityItem from "components/ActivityItem"; +import { ShowActivityDetailsHandler } from "components/ActivityItem/ActivityItem"; + +const baseClass = "global-activity-item"; const PREMIUM_ACTIVITIES = new Set([ "created_team", @@ -41,6 +33,18 @@ const PREMIUM_ACTIVITIES = new Set([ "disabled_windows_mdm_migration", ]); +const ACTIVITIES_WITH_DETAILS = new Set([ + ActivityType.RanScript, + ActivityType.AddedSoftware, + ActivityType.EditedSoftware, + ActivityType.DeletedSoftware, + ActivityType.InstalledSoftware, + ActivityType.UninstalledSoftware, + ActivityType.EnabledActivityAutomations, + ActivityType.EditedActivityAutomations, + ActivityType.LiveQuery, +]); + const getProfileMessageSuffix = ( isPremiumTier: boolean, platform: "apple" | "windows", @@ -96,16 +100,9 @@ const getMacOSSetupAssistantMessage = ( }; const TAGGED_TEMPLATES = { - liveQueryActivityTemplate: ( - activity: IActivity, - onDetailsClick?: (type: ActivityType, details: IActivityDetails) => void - ) => { - const { - targets_count: count, - query_name: queryName, - query_sql: querySql, - stats, - } = activity.details || {}; + liveQueryActivityTemplate: (activity: IActivity) => { + const { targets_count: count, query_name: queryName, stats } = + activity.details || {}; const impactDescription = stats ? getPerformanceImpactDescription(stats) @@ -135,23 +132,6 @@ const TAGGED_TEMPLATES = { ran {queryNameCopy} {impactCopy} {hostCountCopy}. - {querySql && ( - <> - - - )} ); }, @@ -683,32 +663,13 @@ const TAGGED_TEMPLATES = { ); }, - // TODO: Combine ranScript template with host details page templates - // frontend/pages/hosts/details/cards/Activity/PastActivity/PastActivity.tsx and - // frontend/pages/hosts/details/cards/Activity/UpcomingActivity/UpcomingActivity.tsx - ranScript: ( - activity: IActivity, - onDetailsClick?: (type: ActivityType, details: IActivityDetails) => void - ) => { - const { script_name, host_display_name, script_execution_id } = - activity.details || {}; + ranScript: (activity: IActivity) => { + const { script_name, host_display_name } = activity.details || {}; return ( <> {" "} ran {formatScriptNameForActivityItem(script_name)} on{" "} - {host_display_name}.{" "} - + {host_display_name}. ); }, @@ -892,18 +853,7 @@ const TAGGED_TEMPLATES = { ); }, - addedSoftware: ( - activity: IActivity, - onDetailsClick?: (type: ActivityType, details: IActivityDetails) => void - ) => { - const { - software_title, - software_package, - self_service, - labels_include_any, - labels_exclude_any, - } = activity.details || {}; - + addedSoftware: (activity: IActivity) => { return ( <> {" "} @@ -914,38 +864,11 @@ const TAGGED_TEMPLATES = { ) : ( "no team." - )}{" "} - + )} ); }, - editedSoftware: ( - activity: IActivity, - onDetailsClick?: (type: ActivityType, details: IActivityDetails) => void - ) => { - const { - software_title, - software_package, - self_service, - labels_include_any, - labels_exclude_any, - } = activity.details || {}; - + editedSoftware: (activity: IActivity) => { return ( <> {" "} @@ -956,38 +879,11 @@ const TAGGED_TEMPLATES = { ) : ( "no team." - )}{" "} - + )} ); }, - deletedSoftware: ( - activity: IActivity, - onDetailsClick?: (type: ActivityType, details: IActivityDetails) => void - ) => { - const { - software_title, - software_package, - self_service, - labels_include_any, - labels_exclude_any, - } = activity.details || {}; - + deletedSoftware: (activity: IActivity) => { return ( <> {" "} @@ -998,30 +894,11 @@ const TAGGED_TEMPLATES = { ) : ( "no team." - )}{" "} - + )} ); }, - installedSoftware: ( - activity: IActivity, - onDetailsClick?: (type: ActivityType, details: IActivityDetails) => void - ) => { + installedSoftware: (activity: IActivity) => { const { details } = activity; if (!details) { return TAGGED_TEMPLATES.defaultActivityTemplate(activity); @@ -1042,22 +919,11 @@ const TAGGED_TEMPLATES = { {" "} {getInstallStatusPredicate(status)} {title} {showSoftwarePackage && ` (${details.software_package})`} on{" "} - {hostName}.{" "} - + {hostName}. ); }, - uninstalledSoftware: ( - activity: IActivity, - onDetailsClick?: (type: ActivityType, details: IActivityDetails) => void - ) => { + uninstalledSoftware: (activity: IActivity) => { const { details } = activity; if (!details) { return TAGGED_TEMPLATES.defaultActivityTemplate(activity); @@ -1076,15 +942,7 @@ const TAGGED_TEMPLATES = { {" "} {getInstallStatusPredicate(status)} software {title} {showSoftwarePackage && ` (${details.software_package})`} from{" "} - {hostName}.{" "} - + {hostName}. ); }, @@ -1160,73 +1018,21 @@ const TAGGED_TEMPLATES = { ); }, - enabledActivityAutomations: ( - activity: IActivity, - onDetailsClick?: (type: ActivityType, details: IActivityDetails) => void - ) => { - const { webhook_url } = activity.details || {}; - return ( - <> - {" "} - enabled activity automations.{" "} - - - ); + enabledActivityAutomations: () => { + return <> enabled activity automations.; }, - editedActivityAutomations: ( - activity: IActivity, - onDetailsClick?: (type: ActivityType, details: IActivityDetails) => void - ) => { - const { webhook_url } = activity.details || {}; - return ( - <> - {" "} - edited activity automations.{" "} - - - ); + editedActivityAutomations: () => { + return <> edited activity automations.; }, disabledActivityAutomations: () => { return <> disabled activity automations.; }, }; -const getDetail = ( - activity: IActivity, - isPremiumTier: boolean, - onDetailsClick?: ( - activityType: ActivityType, - details: IActivityDetails - ) => void -) => { +const getDetail = (activity: IActivity, isPremiumTier: boolean) => { switch (activity.type) { case ActivityType.LiveQuery: { - return TAGGED_TEMPLATES.liveQueryActivityTemplate( - activity, - onDetailsClick - ); + return TAGGED_TEMPLATES.liveQueryActivityTemplate(activity); } case ActivityType.AppliedSpecPack: { return TAGGED_TEMPLATES.editPackCtlActivityTemplate(); @@ -1364,7 +1170,7 @@ const getDetail = ( return TAGGED_TEMPLATES.disabledWindowsMdmMigration(); } case ActivityType.RanScript: { - return TAGGED_TEMPLATES.ranScript(activity, onDetailsClick); + return TAGGED_TEMPLATES.ranScript(activity); } case ActivityType.AddedScript: { return TAGGED_TEMPLATES.addedScript(activity); @@ -1409,19 +1215,19 @@ const getDetail = ( return TAGGED_TEMPLATES.resentConfigProfile(activity); } case ActivityType.AddedSoftware: { - return TAGGED_TEMPLATES.addedSoftware(activity, onDetailsClick); + return TAGGED_TEMPLATES.addedSoftware(activity); } case ActivityType.EditedSoftware: { - return TAGGED_TEMPLATES.editedSoftware(activity, onDetailsClick); + return TAGGED_TEMPLATES.editedSoftware(activity); } case ActivityType.DeletedSoftware: { - return TAGGED_TEMPLATES.deletedSoftware(activity, onDetailsClick); + return TAGGED_TEMPLATES.deletedSoftware(activity); } case ActivityType.InstalledSoftware: { - return TAGGED_TEMPLATES.installedSoftware(activity, onDetailsClick); + return TAGGED_TEMPLATES.installedSoftware(activity); } case ActivityType.UninstalledSoftware: { - return TAGGED_TEMPLATES.uninstalledSoftware(activity, onDetailsClick); + return TAGGED_TEMPLATES.uninstalledSoftware(activity); } case ActivityType.AddedAppStoreApp: { return TAGGED_TEMPLATES.addedAppStoreApp(activity); @@ -1430,7 +1236,7 @@ const getDetail = ( return TAGGED_TEMPLATES.deletedAppStoreApp(activity); } case ActivityType.InstalledAppStoreApp: { - return TAGGED_TEMPLATES.installedSoftware(activity, onDetailsClick); + return TAGGED_TEMPLATES.installedSoftware(activity); } case ActivityType.EnabledVpp: { return TAGGED_TEMPLATES.enabledVpp(activity); @@ -1439,16 +1245,10 @@ const getDetail = ( return TAGGED_TEMPLATES.disabledVpp(activity); } case ActivityType.EnabledActivityAutomations: { - return TAGGED_TEMPLATES.enabledActivityAutomations( - activity, - onDetailsClick - ); + return TAGGED_TEMPLATES.enabledActivityAutomations(); } case ActivityType.EditedActivityAutomations: { - return TAGGED_TEMPLATES.editedActivityAutomations( - activity, - onDetailsClick - ); + return TAGGED_TEMPLATES.editedActivityAutomations(); } case ActivityType.DisabledActivityAutomations: { return TAGGED_TEMPLATES.disabledActivityAutomations(); @@ -1463,28 +1263,20 @@ const getDetail = ( interface IActivityItemProps { activity: IActivity; isPremiumTier: boolean; - isSandboxMode?: boolean; /** A handler for handling clicking on the details of an activity. Not all * activites have more details so this is optional. An example of additonal * details is showing the query for a live query action. */ - onDetailsClick?: ( - activityType: ActivityType, - details: IActivityDetails - ) => void; + onDetailsClick?: ShowActivityDetailsHandler; } -const ActivityItem = ({ +const GlobalActivityItem = ({ activity, isPremiumTier, - isSandboxMode = false, onDetailsClick = noop, }: IActivityItemProps) => { - const { actor_email } = activity; - const { gravatar_url } = actor_email - ? addGravatarUrlToResource({ email: actor_email }) - : { gravatar_url: DEFAULT_GRAVATAR_LINK }; + const hasDetails = ACTIVITIES_WITH_DETAILS.has(activity.type); // Add the "Fleet" name to the activity if needed. // TODO: remove/refactor this once we have "fleet-initiated" activities. @@ -1498,10 +1290,6 @@ const ActivityItem = ({ activity.actor_full_name = "Fleet"; } - const activityCreatedAt = new Date(activity.created_at); - const indicatePremiumFeature = - isSandboxMode && PREMIUM_ACTIVITIES.has(activity.type); - const renderActivityPrefix = () => { const DEFAULT_ACTOR_DISPLAY = {activity.actor_full_name} ; @@ -1530,45 +1318,17 @@ const ActivityItem = ({ }; return ( -
- -
-
- {indicatePremiumFeature && } - - {renderActivityPrefix()} - {getDetail(activity, isPremiumTier, onDetailsClick)} - -
- - {formatDistanceToNowStrict(activityCreatedAt, { - addSuffix: true, - })} - - - {internationalTimeFormat(activityCreatedAt)} - -
-
-
-
+ + {renderActivityPrefix()} + {getDetail(activity, isPremiumTier)} + ); }; -export default ActivityItem; +export default GlobalActivityItem; diff --git a/frontend/pages/DashboardPage/cards/ActivityFeed/GlobalActivityItem/index.ts b/frontend/pages/DashboardPage/cards/ActivityFeed/GlobalActivityItem/index.ts new file mode 100644 index 000000000000..5c079f685e65 --- /dev/null +++ b/frontend/pages/DashboardPage/cards/ActivityFeed/GlobalActivityItem/index.ts @@ -0,0 +1 @@ +export { default } from "./GlobalActivityItem"; diff --git a/frontend/pages/ManageControlsPage/OSSettings/cards/DiskEncryption/components/DiskEncryptionTable/_styles.scss b/frontend/pages/ManageControlsPage/OSSettings/cards/DiskEncryption/components/DiskEncryptionTable/_styles.scss index 49d1557d6b4c..34ccea3af189 100644 --- a/frontend/pages/ManageControlsPage/OSSettings/cards/DiskEncryption/components/DiskEncryptionTable/_styles.scss +++ b/frontend/pages/ManageControlsPage/OSSettings/cards/DiskEncryption/components/DiskEncryptionTable/_styles.scss @@ -5,10 +5,6 @@ min-width: auto; } - .data-table-block th:nth-last-child(2) { - border-right: none; - } - .linkToFilteredHosts__header { width: auto; max-width: 120px; diff --git a/frontend/pages/ManageControlsPage/OSUpdates/components/OSVersionTable/_styles.scss b/frontend/pages/ManageControlsPage/OSUpdates/components/OSVersionTable/_styles.scss index 89b97eddda27..1e5eceb61ca4 100644 --- a/frontend/pages/ManageControlsPage/OSUpdates/components/OSVersionTable/_styles.scss +++ b/frontend/pages/ManageControlsPage/OSUpdates/components/OSVersionTable/_styles.scss @@ -15,8 +15,4 @@ opacity: 1; } } - - .data-table-block th:nth-last-child(2) { - border-right: none; - } } diff --git a/frontend/pages/ManageControlsPage/SetupExperience/cards/InstallSoftware/components/AddInstallSoftware/AddInstallSoftware.tsx b/frontend/pages/ManageControlsPage/SetupExperience/cards/InstallSoftware/components/AddInstallSoftware/AddInstallSoftware.tsx index d1e9ce12d044..86891c2d7338 100644 --- a/frontend/pages/ManageControlsPage/SetupExperience/cards/InstallSoftware/components/AddInstallSoftware/AddInstallSoftware.tsx +++ b/frontend/pages/ManageControlsPage/SetupExperience/cards/InstallSoftware/components/AddInstallSoftware/AddInstallSoftware.tsx @@ -53,7 +53,7 @@ const AddInstallSoftware = ({ ) : ( <> {installDuringSetupCount} software will be{" "} - + installed during setup . diff --git a/frontend/pages/SoftwarePage/SoftwareAddPage/SoftwareCustomPackage/helpers.tsx b/frontend/pages/SoftwarePage/SoftwareAddPage/SoftwareCustomPackage/helpers.tsx index 06e3c2e23fdc..07132b984732 100644 --- a/frontend/pages/SoftwarePage/SoftwareAddPage/SoftwareCustomPackage/helpers.tsx +++ b/frontend/pages/SoftwarePage/SoftwareAddPage/SoftwareCustomPackage/helpers.tsx @@ -19,18 +19,6 @@ export const getErrorMessage = (err: unknown) => { if (isTimeout) { return "Couldn't upload. Request timeout. Please make sure your server and load balancer timeout is long enough."; - } else if (reason.includes("Fleet couldn't read the version from")) { - return ( - <> - {reason}{" "} - - - ); } else if (reason.includes("Secret variable")) { return generateSecretErrMsg(err); } else if (reason.includes("Unable to extract necessary metadata")) { @@ -44,18 +32,6 @@ export const getErrorMessage = (err: unknown) => { /> ); - } else if (reason.includes("Fleet couldn't read the version from")) { - return ( - <> - {reason}{" "} - - - ); } return reason || DEFAULT_ERROR_MESSAGE; diff --git a/frontend/pages/SoftwarePage/SoftwareAddPage/SoftwareFleetMaintained/FleetMaintainedAppDetailsPage/AddFleetAppSoftwareModal/AddFleetAppSoftwareModal.tsx b/frontend/pages/SoftwarePage/SoftwareAddPage/SoftwareFleetMaintained/FleetMaintainedAppDetailsPage/AddFleetAppSoftwareModal/AddFleetAppSoftwareModal.tsx index 6608c05daa23..9a4e3cd4be1e 100644 --- a/frontend/pages/SoftwarePage/SoftwareAddPage/SoftwareFleetMaintained/FleetMaintainedAppDetailsPage/AddFleetAppSoftwareModal/AddFleetAppSoftwareModal.tsx +++ b/frontend/pages/SoftwarePage/SoftwareAddPage/SoftwareFleetMaintained/FleetMaintainedAppDetailsPage/AddFleetAppSoftwareModal/AddFleetAppSoftwareModal.tsx @@ -1,7 +1,8 @@ +import React from "react"; +import { noop } from "lodash"; + import Modal from "components/Modal"; import Spinner from "components/Spinner"; -import { noop } from "lodash"; -import React from "react"; const baseClass = "add-fleet-app-software-modal"; diff --git a/frontend/pages/SoftwarePage/SoftwareAddPage/SoftwareFleetMaintained/FleetMaintainedAppDetailsPage/FleetAppDetailsModal/FleetAppDetailsModal.tests.tsx b/frontend/pages/SoftwarePage/SoftwareAddPage/SoftwareFleetMaintained/FleetMaintainedAppDetailsPage/FleetAppDetailsModal/FleetAppDetailsModal.tests.tsx new file mode 100644 index 000000000000..3e9d93e0eecd --- /dev/null +++ b/frontend/pages/SoftwarePage/SoftwareAddPage/SoftwareFleetMaintained/FleetMaintainedAppDetailsPage/FleetAppDetailsModal/FleetAppDetailsModal.tests.tsx @@ -0,0 +1,51 @@ +import React from "react"; +import { screen } from "@testing-library/react"; +import { noop } from "lodash"; +import { createCustomRenderer } from "test/test-utils"; + +import FleetAppDetailsModal from "./FleetAppDetailsModal"; + +describe("FleetAppDetailsModal", () => { + const defaultProps = { + name: "Test App", + platform: "macOS", + version: "1.0.0", + url: "https://example.com/app", + onCancel: noop, + }; + + it("renders modal with correct title", () => { + const render = createCustomRenderer(); + + render(); + + const modalTitle = screen.getByText("Software details"); + expect(modalTitle).toBeInTheDocument(); + }); + + it("displays correct app details", () => { + const render = createCustomRenderer(); + + render(); + + expect(screen.getByText("Name")).toBeInTheDocument(); + expect(screen.getByText("Test App")).toBeInTheDocument(); + expect(screen.getByText("Platform")).toBeInTheDocument(); + expect(screen.getByText("macOS")).toBeInTheDocument(); + expect(screen.getByText("Version")).toBeInTheDocument(); + expect(screen.getByText("1.0.0")).toBeInTheDocument(); + expect(screen.getByText("URL")).toBeInTheDocument(); + expect( + screen.getAllByText("https://example.com/app").length + ).toBeGreaterThan(0); // Tooltip renders text twice causing use of toBeInTheDocument to fail + }); + + it("does not render URL field when url prop is not provided", () => { + const render = createCustomRenderer(); + const propsWithoutUrl = { ...defaultProps, url: undefined }; + + render(); + + expect(screen.queryByText("URL")).not.toBeInTheDocument(); + }); +}); diff --git a/frontend/pages/SoftwarePage/SoftwareAddPage/SoftwareFleetMaintained/FleetMaintainedAppDetailsPage/FleetAppDetailsModal/FleetAppDetailsModal.tsx b/frontend/pages/SoftwarePage/SoftwareAddPage/SoftwareFleetMaintained/FleetMaintainedAppDetailsPage/FleetAppDetailsModal/FleetAppDetailsModal.tsx new file mode 100644 index 000000000000..5584dd295ef5 --- /dev/null +++ b/frontend/pages/SoftwarePage/SoftwareAddPage/SoftwareFleetMaintained/FleetMaintainedAppDetailsPage/FleetAppDetailsModal/FleetAppDetailsModal.tsx @@ -0,0 +1,57 @@ +import React from "react"; + +import Modal from "components/Modal"; +import DataSet from "components/DataSet"; +import TooltipWrapper from "components/TooltipWrapper"; +import TooltipTruncatedText from "components/TooltipTruncatedText"; +import Button from "components/buttons/Button"; + +const baseClass = "fleet-app-details-modal"; + +interface IFleetAppDetailsModalProps { + name: string; + platform: string; + version: string; + url?: string; + onCancel: () => void; +} + +const TOOLTIP_MESSAGE = + "Fleet downloads the package from the URL and stores it. Hosts download it from Fleet before install."; + +const FleetAppDetailsModal = ({ + name, + platform, + version, + url, + onCancel, +}: IFleetAppDetailsModalProps) => { + return ( + + <> +
+ + + + {url && ( + + URL + + } + value={} + /> + )} +
+
+ +
+ +
+ ); +}; + +export default FleetAppDetailsModal; diff --git a/frontend/pages/SoftwarePage/SoftwareAddPage/SoftwareFleetMaintained/FleetMaintainedAppDetailsPage/FleetAppDetailsModal/_styles.scss b/frontend/pages/SoftwarePage/SoftwareAddPage/SoftwareFleetMaintained/FleetMaintainedAppDetailsPage/FleetAppDetailsModal/_styles.scss new file mode 100644 index 000000000000..8d56e2bdef8b --- /dev/null +++ b/frontend/pages/SoftwarePage/SoftwareAddPage/SoftwareFleetMaintained/FleetMaintainedAppDetailsPage/FleetAppDetailsModal/_styles.scss @@ -0,0 +1,12 @@ +.fleet-app-details-modal { + &__modal-content { + display: flex; + column-gap: $pad-xxlarge; + row-gap: $pad-xlarge; + flex-wrap: wrap; + } + + .react-tooltip { + min-width: 120px; + } +} diff --git a/frontend/pages/SoftwarePage/SoftwareAddPage/SoftwareFleetMaintained/FleetMaintainedAppDetailsPage/FleetAppDetailsModal/index.ts b/frontend/pages/SoftwarePage/SoftwareAddPage/SoftwareFleetMaintained/FleetMaintainedAppDetailsPage/FleetAppDetailsModal/index.ts new file mode 100644 index 000000000000..6edaf09f4b39 --- /dev/null +++ b/frontend/pages/SoftwarePage/SoftwareAddPage/SoftwareFleetMaintained/FleetMaintainedAppDetailsPage/FleetAppDetailsModal/index.ts @@ -0,0 +1 @@ +export { default } from "./FleetAppDetailsModal"; diff --git a/frontend/pages/SoftwarePage/SoftwareAddPage/SoftwareFleetMaintained/FleetMaintainedAppDetailsPage/FleetMaintainedAppDetailsPage.tsx b/frontend/pages/SoftwarePage/SoftwareAddPage/SoftwareFleetMaintained/FleetMaintainedAppDetailsPage/FleetMaintainedAppDetailsPage.tsx index 6fadcc1ce0d5..5e22a2271846 100644 --- a/frontend/pages/SoftwarePage/SoftwareAddPage/SoftwareFleetMaintained/FleetMaintainedAppDetailsPage/FleetMaintainedAppDetailsPage.tsx +++ b/frontend/pages/SoftwarePage/SoftwareAddPage/SoftwareFleetMaintained/FleetMaintainedAppDetailsPage/FleetMaintainedAppDetailsPage.tsx @@ -1,4 +1,5 @@ import React, { useContext, useState } from "react"; +import { AxiosResponse } from "axios"; import { Location } from "history"; import { useQuery } from "react-query"; import { InjectedRouter } from "react-router"; @@ -25,12 +26,14 @@ import SidePanelContent from "components/SidePanelContent"; import QuerySidePanel from "components/side_panels/QuerySidePanel"; import PremiumFeatureMessage from "components/PremiumFeatureMessage"; import Card from "components/Card"; - import SoftwareIcon from "pages/SoftwarePage/components/icons/SoftwareIcon"; - +import Button from "components/buttons/Button"; +import Icon from "components/Icon"; import FleetAppDetailsForm from "./FleetAppDetailsForm"; import { IFleetMaintainedAppFormData } from "./FleetAppDetailsForm/FleetAppDetailsForm"; + import AddFleetAppSoftwareModal from "./AddFleetAppSoftwareModal"; +import FleetAppDetailsModal from "./FleetAppDetailsModal"; import { getErrorMessage, @@ -39,37 +42,57 @@ import { getFleetAppPolicyQuery, } from "./helpers"; +const DEFAULT_ERROR_MESSAGE = "Couldn't add. Please try again."; +const REQUEST_TIMEOUT_ERROR_MESSAGE = + "Couldn't upload. Request timeout. Please make sure your server and load balancer timeout is long enough."; +const AUTOMATIC_POLICY_ERROR_MESSAGE = + "Couldn't add automatic install policy. Software is successfully added. To retry, delete software and add it again."; + const baseClass = "fleet-maintained-app-details-page"; -interface ISoftwareSummaryProps { +interface IFleetAppSummaryProps { name: string; platform: string; version: string; + onClickShowAppDetails: (event: MouseEvent) => void; } const FleetAppSummary = ({ name, platform, version, -}: ISoftwareSummaryProps) => { + onClickShowAppDetails, +}: IFleetAppSummaryProps) => { return ( - -
-
{name}
-
-
- {PLATFORM_DISPLAY_NAMES[platform as Platform]} -
- • -
- {version} +
+ +
+
{name}
+
+
+ {PLATFORM_DISPLAY_NAMES[platform as Platform]} +
+ • +
+ {version} +
+
+ +
); }; @@ -116,6 +139,7 @@ const FleetMaintainedAppDetailsPage = ({ showAddFleetAppSoftwareModal, setShowAddFleetAppSoftwareModal, ] = useState(false); + const [showAppDetailsModal, setShowAppDetailsModal] = useState(false); const { data: fleetApp, @@ -152,6 +176,10 @@ const FleetMaintainedAppDetailsPage = ({ setSelectedOsqueryTable(tableName); }; + const onClickShowAppDetails = () => { + setShowAppDetailsModal(true); + }; + const backToAddSoftwareUrl = `${ PATHS.SOFTWARE_ADD_FLEET_MAINTAINED }?${buildQueryStringFromParams({ team_id: teamId })}`; @@ -196,7 +224,22 @@ const FleetMaintainedAppDetailsPage = ({ } catch (error) { // quick exit if there was an error adding the software. Skip the policy // creation. - renderFlash("error", getErrorMessage(error)); + + const ae = (typeof error === "object" ? error : {}) as AxiosResponse; + + const errorMessage = getErrorMessage(ae); + + if ( + ae.status === 408 || + errorMessage.includes("json decoder error") // 400 bad request when really slow + ) { + renderFlash("error", REQUEST_TIMEOUT_ERROR_MESSAGE); + } else if (errorMessage) { + renderFlash("error", errorMessage); + } else { + renderFlash("error", DEFAULT_ERROR_MESSAGE); + } + setShowAddFleetAppSoftwareModal(false); return; } @@ -221,11 +264,9 @@ const FleetMaintainedAppDetailsPage = ({ { persistOnPageChange: true } ); } catch (e) { - renderFlash( - "error", - "Couldn't add automatic install policy. Software is successfully added. To retry, delete software and add it again.", - { persistOnPageChange: true } - ); + renderFlash("error", AUTOMATIC_POLICY_ERROR_MESSAGE, { + persistOnPageChange: true, + }); } // for automatic install we redirect on both a successful and error policy @@ -268,6 +309,7 @@ const FleetMaintainedAppDetailsPage = ({ name={fleetApp.name} platform={fleetApp.platform} version={fleetApp.version} + onClickShowAppDetails={onClickShowAppDetails} /> )} {showAddFleetAppSoftwareModal && } + {showAppDetailsModal && fleetApp && ( + setShowAppDetailsModal(false)} + /> + )} ); }; diff --git a/frontend/pages/SoftwarePage/SoftwareAddPage/SoftwareFleetMaintained/FleetMaintainedAppDetailsPage/_styles.scss b/frontend/pages/SoftwarePage/SoftwareAddPage/SoftwareFleetMaintained/FleetMaintainedAppDetailsPage/_styles.scss index dcd77d2b7c6e..606a83e11fb7 100644 --- a/frontend/pages/SoftwarePage/SoftwareAddPage/SoftwareFleetMaintained/FleetMaintainedAppDetailsPage/_styles.scss +++ b/frontend/pages/SoftwarePage/SoftwareAddPage/SoftwareFleetMaintained/FleetMaintainedAppDetailsPage/_styles.scss @@ -18,6 +18,11 @@ } &__fleet-app-summary { + display: flex; + justify-content: space-between; + } + + &__fleet-app-summary--left { display: flex; gap: $pad-medium; } diff --git a/frontend/pages/SoftwarePage/SoftwareOS/SoftwareOSTable/SoftwareOSTable.tsx b/frontend/pages/SoftwarePage/SoftwareOS/SoftwareOSTable/SoftwareOSTable.tsx index 1c6184b66b8d..16f886c0e0cb 100644 --- a/frontend/pages/SoftwarePage/SoftwareOS/SoftwareOSTable/SoftwareOSTable.tsx +++ b/frontend/pages/SoftwarePage/SoftwareOS/SoftwareOSTable/SoftwareOSTable.tsx @@ -240,7 +240,7 @@ const SoftwareOSTable = ({ className={`${baseClass}__platform-dropdown`} options={PLATFORM_FILTER_OPTIONS} onChange={handlePlatformFilterDropdownChange} - tableFilter + variant="table-filter" /> ); }; diff --git a/frontend/pages/SoftwarePage/SoftwareTitleDetailsPage/EditSoftwareModal/helpers.tsx b/frontend/pages/SoftwarePage/SoftwareTitleDetailsPage/EditSoftwareModal/helpers.tsx index df399a8c5c34..f002842e9275 100644 --- a/frontend/pages/SoftwarePage/SoftwareTitleDetailsPage/EditSoftwareModal/helpers.tsx +++ b/frontend/pages/SoftwarePage/SoftwareTitleDetailsPage/EditSoftwareModal/helpers.tsx @@ -19,17 +19,6 @@ export const getErrorMessage = (err: unknown, software: ISoftwarePackage) => { if (isTimeout) { return "Couldn't upload. Request timeout. Please make sure your server and load balancer timeout is long enough."; - } else if (reason.includes("Fleet couldn't read the version from")) { - return ( - <> - Couldn't edit {software.name}. {reason}. - - - ); } else if (reason.includes("selected package is")) { return ( <> diff --git a/frontend/pages/SoftwarePage/SoftwareTitleDetailsPage/SoftwarePackageCard/SoftwarePackageCard.tsx b/frontend/pages/SoftwarePage/SoftwareTitleDetailsPage/SoftwarePackageCard/SoftwarePackageCard.tsx index 01c1614b93ca..603f87a33665 100644 --- a/frontend/pages/SoftwarePage/SoftwareTitleDetailsPage/SoftwarePackageCard/SoftwarePackageCard.tsx +++ b/frontend/pages/SoftwarePage/SoftwareTitleDetailsPage/SoftwarePackageCard/SoftwarePackageCard.tsx @@ -30,6 +30,8 @@ import Tag from "components/Tag"; import SoftwareIcon from "pages/SoftwarePage/components/icons/SoftwareIcon"; import endpoints from "utilities/endpoints"; import URL_PREFIX from "router/url_prefix"; +import { LEARN_MORE_ABOUT_BASE_LINK } from "utilities/constants"; +import CustomLink from "components/CustomLink"; import DeleteSoftwareModal from "../DeleteSoftwareModal"; import EditSoftwareModal from "../EditSoftwareModal"; @@ -228,7 +230,7 @@ const SoftwareActionsDropdown = ({ interface ISoftwareInstallerCardProps { name: string; - version: string; + version: string | null; uploadedAt: string; // TODO: optional? status: { installed: number; @@ -315,12 +317,33 @@ const SoftwareInstallerCard = ({ ); }; + const versionInfo = version ? ( + {version} + ) : ( + + Fleet couldn't read the version from ${name}.{" "} + + + } + > + Version (unknown) + + ); + const renderDetails = () => { return !uploadedAt ? ( - Version {version} + versionInfo ) : ( <> - Version {version} • + {versionInfo} •{" "} { version: (isSoftwarePackage(packageData) ? packageData.version - : packageData.latest_version) || DEFAULT_EMPTY_CELL_VALUE, + : packageData.latest_version) || null, uploadedAt: isSoftwarePackage(packageData) ? packageData.uploaded_at : "", status: isSoftwarePackage(packageData) ? aggregateInstallStatusCounts(packageData.status) diff --git a/frontend/pages/SoftwarePage/SoftwareTitles/SoftwareTable/SoftwareTable.tsx b/frontend/pages/SoftwarePage/SoftwareTitles/SoftwareTable/SoftwareTable.tsx index 2826e2292ab9..18de74580ce1 100644 --- a/frontend/pages/SoftwarePage/SoftwareTitles/SoftwareTable/SoftwareTable.tsx +++ b/frontend/pages/SoftwarePage/SoftwareTitles/SoftwareTable/SoftwareTable.tsx @@ -307,7 +307,7 @@ const SoftwareTable = ({ newValue.value as ISoftwareDropdownFilterVal ) } - tableFilter + variant="table-filter" />
); diff --git a/frontend/pages/SoftwarePage/SoftwareVulnerabilities/SoftwareVulnerabilitiesTable/SoftwareVulnerabilitiesTable.tsx b/frontend/pages/SoftwarePage/SoftwareVulnerabilities/SoftwareVulnerabilitiesTable/SoftwareVulnerabilitiesTable.tsx index 790ded5f2d37..6abe3833e839 100644 --- a/frontend/pages/SoftwarePage/SoftwareVulnerabilities/SoftwareVulnerabilitiesTable/SoftwareVulnerabilitiesTable.tsx +++ b/frontend/pages/SoftwarePage/SoftwareVulnerabilities/SoftwareVulnerabilitiesTable/SoftwareVulnerabilitiesTable.tsx @@ -245,7 +245,7 @@ const SoftwareVulnerabilitiesTable = ({ onChange={(newValue: SingleValue) => newValue && handleExploitedVulnFilterDropdownChange(newValue.value) } - tableFilter + variant="table-filter" /> ); }; diff --git a/frontend/pages/SoftwarePage/_styles.scss b/frontend/pages/SoftwarePage/_styles.scss index 5154d532e4fa..fdbe0bea5d16 100644 --- a/frontend/pages/SoftwarePage/_styles.scss +++ b/frontend/pages/SoftwarePage/_styles.scss @@ -9,10 +9,6 @@ } } - &__manage-automations { - padding: $pad-small $pad-medium; - } - &__header { display: flex; align-items: center; diff --git a/frontend/pages/SoftwarePage/components/SoftwareFiltersModal/SoftwareFiltersModal.tsx b/frontend/pages/SoftwarePage/components/SoftwareFiltersModal/SoftwareFiltersModal.tsx index d98a82024026..d8821f406016 100644 --- a/frontend/pages/SoftwarePage/components/SoftwareFiltersModal/SoftwareFiltersModal.tsx +++ b/frontend/pages/SoftwarePage/components/SoftwareFiltersModal/SoftwareFiltersModal.tsx @@ -1,7 +1,8 @@ import React, { useState } from "react"; -// @ts-ignore -import Dropdown from "components/forms/fields/Dropdown"; +import { SingleValue } from "react-select-5"; +import DropdownWrapper from "components/forms/fields/DropdownWrapper"; +import { CustomOptionType } from "components/forms/fields/DropdownWrapper/DropdownWrapper"; import Modal from "components/Modal"; import Button from "components/buttons/Button"; import Slider from "components/forms/fields/Slider"; @@ -39,9 +40,11 @@ const SoftwareFiltersModal = ({ ); const [hasKnownExploit, setHasKnownExploit] = useState(vulnFilters.exploit); - const onChangeSeverity = (value: string) => { + const onChangeSeverity = ( + selectedSeverity: SingleValue + ) => { const selectedOption = SEVERITY_DROPDOWN_OPTIONS.find( - (option) => option.value === value + (option) => option.value === selectedSeverity?.value ); if (selectedOption) { setSeverity(selectedOption); @@ -60,7 +63,13 @@ const SoftwareFiltersModal = ({ const renderSeverityLabel = () => { return ( + The worst case impact across different environments +
+ (CVSS version 3.x base score). + + } clickable={false} > Severity @@ -80,14 +89,15 @@ const SoftwareFiltersModal = ({ activeText="Vulnerable software" /> {isPremiumTier && ( - )} {isPremiumTier && ( diff --git a/frontend/pages/admin/IntegrationsPage/cards/Integrations/_styles.scss b/frontend/pages/admin/IntegrationsPage/cards/Integrations/_styles.scss index 84251e7c9700..b7db6ed12e71 100644 --- a/frontend/pages/admin/IntegrationsPage/cards/Integrations/_styles.scss +++ b/frontend/pages/admin/IntegrationsPage/cards/Integrations/_styles.scss @@ -83,8 +83,6 @@ border-radius: $pad-xsmall; border: px-to-rem(1) solid $ui-fleet-black-10; margin: 0; - max-width: none; - width: 100%; h3 { margin-bottom: px-to-rem(10); } diff --git a/frontend/pages/admin/IntegrationsPage/cards/Integrations/components/AddIntegrationModal/AddIntegrationModal.tsx b/frontend/pages/admin/IntegrationsPage/cards/Integrations/components/AddIntegrationModal/AddIntegrationModal.tsx index ef3a693220b1..6edc879c5798 100644 --- a/frontend/pages/admin/IntegrationsPage/cards/Integrations/components/AddIntegrationModal/AddIntegrationModal.tsx +++ b/frontend/pages/admin/IntegrationsPage/cards/Integrations/components/AddIntegrationModal/AddIntegrationModal.tsx @@ -1,8 +1,9 @@ import React, { useState, useEffect } from "react"; import Modal from "components/Modal"; -// @ts-ignore -import Dropdown from "components/forms/fields/Dropdown"; +import { SingleValue } from "react-select-5"; +import DropdownWrapper from "components/forms/fields/DropdownWrapper"; +import { CustomOptionType } from "components/forms/fields/DropdownWrapper/DropdownWrapper"; import CustomLink from "components/CustomLink"; import { IIntegration, IZendeskJiraIntegrations } from "interfaces/integration"; import IntegrationForm from "../IntegrationForm"; @@ -38,8 +39,10 @@ const AddIntegrationModal = ({ ); const [destination, setDestination] = useState("jira"); - const onDestinationChange = (value: string) => { - setDestination(value); + const onDestinationChange = ( + selectedDestination: SingleValue + ) => { + setDestination(selectedDestination?.value || "jira"); }; useEffect(() => { @@ -51,14 +54,14 @@ const AddIntegrationModal = ({
{!testingConnection && ( <> - { const availableTeams = [ APP_CONTEXT_ALL_TEAMS_SUMMARY, - APP_CONTEX_NO_TEAM_SUMMARY, + APP_CONTEXT_NO_TEAM_SUMMARY, { name: "Team 1", id: 1 }, { name: "Team 2", id: 2 }, ]; diff --git a/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/VppPage/components/DeleteVppModal/DeleteVppModal.tsx b/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/VppPage/components/DeleteVppModal/DeleteVppModal.tsx index 8f361498618e..7c2700d11cab 100644 --- a/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/VppPage/components/DeleteVppModal/DeleteVppModal.tsx +++ b/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/VppPage/components/DeleteVppModal/DeleteVppModal.tsx @@ -49,7 +49,8 @@ const DeleteVppModal = ({ <>

Apps purchased for the {orgName} location won't appear in - Fleet. Apps won't be uninstalled from hosts. + Fleet, and policies that trigger automatic install of these apps will + be deleted. Apps won't be uninstalled from hosts.

If you want to enable VPP integration again, you'll have to diff --git a/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/VppPage/components/EditTeamsVppModal/EditTeamsVppModal.tsx b/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/VppPage/components/EditTeamsVppModal/EditTeamsVppModal.tsx index 27e2d1a4252e..6953f233a3c8 100644 --- a/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/VppPage/components/EditTeamsVppModal/EditTeamsVppModal.tsx +++ b/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/VppPage/components/EditTeamsVppModal/EditTeamsVppModal.tsx @@ -203,8 +203,9 @@ const EditTeamsVppModal = ({ Edit teams for {currentToken.org_name}.

- If you remove a team, the App Store apps will be removed from that - team. They won't be uninstalled from hosts. + If you delete a team, App Store apps will be deleted from that team, + and policies that trigger automatic install of these apps will be + deleted. Installed apps won't be uninstalled from hosts.

{ return (

- Set your organization information and configure SSO and SMTP + Set your organization information and configure SSO and SMTP.

{ if (!metadata) { if (!metadataUrl) { - errors.metadata_url = "Metadata or Metadata URL must be present"; - errors.metadata = "Metadata or Metadata URL must be present"; + errors.metadata_url = + "Metadata URL is required (if metadata is not present)"; + errors.metadata = + "Metadata is required (if metadata URL is not present)"; } else if ( !validUrl({ url: metadataUrl, protocols: ["http", "https"] }) ) { diff --git a/frontend/pages/admin/TeamManagementPage/TeamDetailsWrapper/AgentOptionsPage/AgentOptionsPage.tsx b/frontend/pages/admin/TeamManagementPage/TeamDetailsWrapper/AgentOptionsPage/AgentOptionsPage.tsx index da4469416ee3..4fb32891ce5d 100644 --- a/frontend/pages/admin/TeamManagementPage/TeamDetailsWrapper/AgentOptionsPage/AgentOptionsPage.tsx +++ b/frontend/pages/admin/TeamManagementPage/TeamDetailsWrapper/AgentOptionsPage/AgentOptionsPage.tsx @@ -68,6 +68,7 @@ const AgentOptionsPage = ({ setTeamName(data.name); }, onError: (error) => handlePageError(error), + refetchOnWindowFocus: false, } ); diff --git a/frontend/pages/admin/TeamManagementPage/TeamDetailsWrapper/UsersPage/_styles.scss b/frontend/pages/admin/TeamManagementPage/TeamDetailsWrapper/UsersPage/_styles.scss index 4b4b620b5996..c8678711e446 100644 --- a/frontend/pages/admin/TeamManagementPage/TeamDetailsWrapper/UsersPage/_styles.scss +++ b/frontend/pages/admin/TeamManagementPage/TeamDetailsWrapper/UsersPage/_styles.scss @@ -18,18 +18,11 @@ .role__header { width: $col-md; - border-right: none; } .actions__header { width: auto; } - - @media (min-width: $break-lg) { - .role__header { - border-right: 1px solid $ui-fleet-black-10; - } - } } tbody { diff --git a/frontend/pages/admin/UserManagementPage/_styles.scss b/frontend/pages/admin/UserManagementPage/_styles.scss index 163dfa6e25ca..cacb4109e1cc 100644 --- a/frontend/pages/admin/UserManagementPage/_styles.scss +++ b/frontend/pages/admin/UserManagementPage/_styles.scss @@ -6,11 +6,110 @@ padding-bottom: $pad-medium; } - &__sandbox-demo-message { - margin-top: 3.5rem; - } - &__api-only-user { @include grey-badge; } + + thead { + // need specificity to override datatable css + th { + &.actions__header { + padding-left: 0; + } + &.status__header, + &.role__header { + width: 86px; // set to prevent expanding + } + } + } + + tbody { + // need specificity to override datatable css + td.name__cell, + td.role__cell, + td.teams__cell, + td.status__cell, + td.email__cell { + max-width: $col-sm; + white-space: nowrap; + } + + td.status__cell, + td.role__cell { + white-space: nowrap; // Prevent No access from wrapping + } + + td.actions__cell { + padding-left: 0; + } + } + + @media (min-width: ($break-lg)) { + .name__header, + .name__cell { + max-width: $col-md; + } + } + + @media (max-width: ($break-sm - 1)) { + .email__header, + .email__cell { + display: none; + width: 0; + } + } + + @media (max-width: ($break-xs - 1)) { + .status__header, + .status__cell { + display: none; + width: 0; + } + } + + @media (max-width: ($break-mobile-md - 1)) { + .teams__header, + .teams__cell { + display: none; + width: 0; + } + + // Splits header to 2 lines with user count on the first line + .table-container__header { + align-items: end; + &-left { + flex-direction: column; + width: initial; + align-items: start; + } + + .table-container__search { + width: 100%; + } + } + } + + @media (max-width: ($break-mobile-sm - 1)) { + .role__header, + .role__cell { + display: none; + width: 0; + } + + // Splits header to 3 lines; user count, wide add user button, wide search + .table-container__header { + flex-direction: column; + align-items: start; + width: 100%; + + &-left { + width: 100%; + + .controls, + .button { + width: 100%; + } + } + } + } } diff --git a/frontend/pages/admin/UserManagementPage/components/UsersTable/UsersTableConfig.tsx b/frontend/pages/admin/UserManagementPage/components/UsersTable/UsersTableConfig.tsx index 482b0b491a04..6736927fb68f 100644 --- a/frontend/pages/admin/UserManagementPage/components/UsersTable/UsersTableConfig.tsx +++ b/frontend/pages/admin/UserManagementPage/components/UsersTable/UsersTableConfig.tsx @@ -207,6 +207,7 @@ const generateTableHeaders = ( actionSelectHandler(value, cellProps.row.original) } placeholder="Actions" + menuAlign="right" /> ), }, diff --git a/frontend/pages/hosts/ManageHostsPage/ManageHostsPage.tsx b/frontend/pages/hosts/ManageHostsPage/ManageHostsPage.tsx index 135ecb22716d..52588e799d4f 100644 --- a/frontend/pages/hosts/ManageHostsPage/ManageHostsPage.tsx +++ b/frontend/pages/hosts/ManageHostsPage/ManageHostsPage.tsx @@ -1468,7 +1468,7 @@ const ManageHostsPage = ({ className={`${baseClass}__status-filter`} options={hostSelectStatuses} onChange={handleStatusDropdownChange} - tableFilter + variant="table-filter" />
-
+
{renderHeader()}
{!isSandboxMode && canEnrollHosts && !hasErrors && ( diff --git a/frontend/pages/hosts/ManageHostsPage/_styles.scss b/frontend/pages/hosts/ManageHostsPage/_styles.scss index 4d4ab361fa0a..979066f7cbaa 100644 --- a/frontend/pages/hosts/ManageHostsPage/_styles.scss +++ b/frontend/pages/hosts/ManageHostsPage/_styles.scss @@ -1,12 +1,12 @@ .manage-hosts { - .header-wrap { + &__header-wrap { @include normalize-team-header; margin-bottom: $pad-medium; .button-wrap { display: flex; justify-content: flex-end; - min-width: 266px; + white-space: nowrap; } } @@ -17,7 +17,6 @@ &__header { display: flex; align-items: center; - min-width: 125px; .form-field { margin-bottom: 0; diff --git a/frontend/pages/hosts/ManageHostsPage/components/LabelFilterSelect/_styles.scss b/frontend/pages/hosts/ManageHostsPage/components/LabelFilterSelect/_styles.scss index bad6bbc229f0..c5099d5570cd 100644 --- a/frontend/pages/hosts/ManageHostsPage/components/LabelFilterSelect/_styles.scss +++ b/frontend/pages/hosts/ManageHostsPage/components/LabelFilterSelect/_styles.scss @@ -103,18 +103,28 @@ .label-filter-select__option { padding: 10px 1rem; + border-radius: $border-radius; &:hover { cursor: pointer; } - &--is-selected, - &:active { - background-color: $ui-vibrant-blue-25; + &--is-selected { + background-color: transparent; + + .option-label { + span { + font-weight: $bold; + } + } } &--is-focused { background-color: $ui-vibrant-blue-10; + + &:active { + background-color: $ui-vibrant-blue-25; + } } &--is-disabled { diff --git a/frontend/pages/hosts/details/HostDetailsPage/HostDetailsPage.tsx b/frontend/pages/hosts/details/HostDetailsPage/HostDetailsPage.tsx index 47e3184f590d..d96b3f5e60f6 100644 --- a/frontend/pages/hosts/details/HostDetailsPage/HostDetailsPage.tsx +++ b/frontend/pages/hosts/details/HostDetailsPage/HostDetailsPage.tsx @@ -31,6 +31,7 @@ import { IHostPolicy } from "interfaces/policy"; import { IQueryStats } from "interfaces/query_stats"; import { IHostSoftware } from "interfaces/software"; import { ITeam } from "interfaces/team"; +import { IHostUpcomingActivity } from "interfaces/activity"; import { normalizeEmptyValues, wrapFleetHelper } from "utilities/helpers"; import permissions from "utilities/permissions"; @@ -57,6 +58,7 @@ import { IPackageInstallDetails, } from "components/ActivityDetails/InstallDetails/SoftwareInstallDetails/SoftwareInstallDetails"; import SoftwareUninstallDetailsModal from "components/ActivityDetails/InstallDetails/SoftwareUninstallDetailsModal"; +import { IShowActivityDetailsData } from "components/ActivityItem/ActivityItem"; import HostSummaryCard from "../cards/HostSummary"; import AboutCard from "../cards/About"; @@ -81,7 +83,6 @@ import BootstrapPackageModal from "./modals/BootstrapPackageModal"; import ScriptModalGroup from "./modals/ScriptModalGroup"; import SelectQueryModal from "./modals/SelectQueryModal"; import HostDetailsBanners from "./components/HostDetailsBanners"; -import { IShowActivityDetailsData } from "../cards/Activity/Activity"; import LockModal from "./modals/LockModal"; import UnlockModal from "./modals/UnlockModal"; import { @@ -92,6 +93,7 @@ import WipeModal from "./modals/WipeModal"; import SoftwareDetailsModal from "../cards/Software/SoftwareDetailsModal"; import { parseHostSoftwareQueryParams } from "../cards/Software/HostSoftware"; import { getErrorMessage } from "./helpers"; +import CancelActivityModal from "./modals/CancelActivityModal"; const baseClass = "host-details"; @@ -194,6 +196,10 @@ const HostDetailsPage = ({ selectedSoftwareDetails, setSelectedSoftwareDetails, ] = useState(null); + const [ + selectedCancelActivity, + setSelectedCancelActivity, + ] = useState(null); // activity states const [activeActivityTab, setActiveActivityTab] = useState< @@ -695,6 +701,10 @@ const HostDetailsPage = ({ } }; + const onCancelActivity = (activity: IHostUpcomingActivity) => { + setSelectedCancelActivity(activity); + }; + const renderActionDropdown = () => { if (!host) { return null; @@ -872,6 +882,7 @@ const HostDetailsPage = ({ onNextPage={() => setActivityPage(activityPage + 1)} onPreviousPage={() => setActivityPage(activityPage - 1)} onShowDetails={onShowActivityDetails} + onCancel={onCancelActivity} /> {!isIosOrIpadosHost && ( setSelectedSoftwareDetails(null)} /> )} + {selectedCancelActivity && ( + setSelectedCancelActivity(null)} + /> + )} ); diff --git a/frontend/pages/hosts/details/HostDetailsPage/modals/CancelActivityModal/CancelActivityModal.tsx b/frontend/pages/hosts/details/HostDetailsPage/modals/CancelActivityModal/CancelActivityModal.tsx new file mode 100644 index 000000000000..cc8a6871aaff --- /dev/null +++ b/frontend/pages/hosts/details/HostDetailsPage/modals/CancelActivityModal/CancelActivityModal.tsx @@ -0,0 +1,66 @@ +import React, { useContext } from "react"; +import { noop } from "lodash"; + +import { IHostUpcomingActivity } from "interfaces/activity"; +import activitiesAPI from "services/entities/activities"; +import { NotificationContext } from "context/notification"; + +import Modal from "components/Modal"; +import Button from "components/buttons/Button"; + +import { upcomingActivityComponentMap } from "pages/hosts/details/cards/Activity/ActivityConfig"; + +import { getErrorMessage } from "./helpers"; + +const baseClass = "cancel-activity-modal"; + +interface ICancelActivityModalProps { + hostId: number; + activity: IHostUpcomingActivity; + onCancel: () => void; +} + +const CancelActivityModal = ({ + hostId, + activity, + onCancel, +}: ICancelActivityModalProps) => { + const { renderFlash } = useContext(NotificationContext); + + const ActivityItemComponent = upcomingActivityComponentMap[activity.type]; + + const onCancelActivity = async () => { + try { + await activitiesAPI.cancelHostActivity(hostId, activity.uuid); + renderFlash("success", "Activity successfully canceled."); + } catch (error) { + // TODO: hook up error message when API is updated + renderFlash("error", getErrorMessage(error)); + } + onCancel(); + }; + + return ( + + <> + +
+ + +
+ +
+ ); +}; + +export default CancelActivityModal; diff --git a/frontend/pages/hosts/details/HostDetailsPage/modals/CancelActivityModal/helpers.ts b/frontend/pages/hosts/details/HostDetailsPage/modals/CancelActivityModal/helpers.ts new file mode 100644 index 000000000000..09f2d1b39d34 --- /dev/null +++ b/frontend/pages/hosts/details/HostDetailsPage/modals/CancelActivityModal/helpers.ts @@ -0,0 +1,7 @@ +import { getErrorReason } from "interfaces/errors"; + +// eslint-disable-next-line import/prefer-default-export +export const getErrorMessage = (err: unknown) => { + const reason = getErrorReason(err); + return reason; +}; diff --git a/frontend/pages/hosts/details/HostDetailsPage/modals/CancelActivityModal/index.ts b/frontend/pages/hosts/details/HostDetailsPage/modals/CancelActivityModal/index.ts new file mode 100644 index 000000000000..d2492d112102 --- /dev/null +++ b/frontend/pages/hosts/details/HostDetailsPage/modals/CancelActivityModal/index.ts @@ -0,0 +1 @@ +export { default } from "./CancelActivityModal"; diff --git a/frontend/pages/hosts/details/OSSettingsModal/OSSettingsTable/OSSettingsTableConfig.tsx b/frontend/pages/hosts/details/OSSettingsModal/OSSettingsTable/OSSettingsTableConfig.tsx index 0d9b4017c87f..34d24563ef01 100644 --- a/frontend/pages/hosts/details/OSSettingsModal/OSSettingsTable/OSSettingsTableConfig.tsx +++ b/frontend/pages/hosts/details/OSSettingsModal/OSSettingsTable/OSSettingsTableConfig.tsx @@ -12,7 +12,6 @@ import { isLinuxDiskEncryptionStatus, isWindowsDiskEncryptionStatus, } from "interfaces/mdm"; -import { isDiskEncryptionSupportedLinuxPlatform } from "interfaces/platform"; import TooltipTruncatedTextCell from "components/TableContainer/DataTable/TooltipTruncatedTextCell"; import OSSettingStatusCell from "./OSSettingStatusCell"; @@ -83,14 +82,23 @@ const generateTableConfig = ( Header: "Error", disableSortBy: true, accessor: "detail", - Cell: (cellProps: ITableStringCellProps) => ( - - ), + Cell: (cellProps: ITableStringCellProps) => { + const { name, platform, status } = cellProps.row.original; + const isFailedWindowsDiskEncryption = + platform === "windows" && + name === "Disk Encryption" && + status === "failed"; + return ( + + ); + }, }, ]; }; @@ -159,7 +167,7 @@ const makeDarwinRows = ({ profiles, macos_settings }: IHostMdmData) => { // it would be better to match on the identifier but it is not // currently available in the API response if (p.name === FLEET_FILEVAULT_PROFILE_DISPLAY_NAME) { - return { ...p, status: "action_required" || p.status }; + return { ...p, status: "action_required" }; } return p; }); diff --git a/frontend/pages/hosts/details/cards/Activity/Activity.tsx b/frontend/pages/hosts/details/cards/Activity/Activity.tsx index 507ceaa335bc..58646d7661f3 100644 --- a/frontend/pages/hosts/details/cards/Activity/Activity.tsx +++ b/frontend/pages/hosts/details/cards/Activity/Activity.tsx @@ -1,7 +1,7 @@ import React from "react"; import { Tab, TabList, TabPanel, Tabs } from "react-tabs"; -import { IActivityDetails } from "interfaces/activity"; +import { IHostUpcomingActivity } from "interfaces/activity"; import { IHostPastActivitiesResponse, IHostUpcomingActivitiesResponse, @@ -11,34 +11,17 @@ import Card from "components/Card"; import TabsWrapper from "components/TabsWrapper"; import Spinner from "components/Spinner"; import TooltipWrapper from "components/TooltipWrapper"; +import { ShowActivityDetailsHandler } from "components/ActivityItem/ActivityItem"; import PastActivityFeed from "./PastActivityFeed"; import UpcomingActivityFeed from "./UpcomingActivityFeed"; const baseClass = "activity-card"; -export interface IShowActivityDetailsData { - type: string; - details?: IActivityDetails; -} - -export type ShowActivityDetailsHandler = ( - data: IShowActivityDetailsData -) => void; - const UpcomingTooltip = () => { return ( - Currently, only scripts run before other scripts and -
- software is installed before other software. -
-
- Failure of one activity won't cancel other activities. - - } + tipContent="Failure of one activity won't cancel other activities." className={`${baseClass}__upcoming-tooltip`} > Activities run as listed @@ -56,6 +39,7 @@ interface IActivityProps { onNextPage: () => void; onPreviousPage: () => void; onShowDetails: ShowActivityDetailsHandler; + onCancel: (activity: IHostUpcomingActivity) => void; } const Activity = ({ @@ -68,6 +52,7 @@ const Activity = ({ onNextPage, onPreviousPage, onShowDetails, + onCancel, }: IActivityProps) => { return ( void; } export const pastActivityComponentMap: Record< @@ -38,6 +49,8 @@ export const pastActivityComponentMap: Record< [ActivityType.InstalledSoftware]: InstalledSoftwareActivityItem, [ActivityType.UninstalledSoftware]: InstalledSoftwareActivityItem, [ActivityType.InstalledAppStoreApp]: InstalledSoftwareActivityItem, + [ActivityType.CanceledScript]: CanceledScriptActivityItem, + [ActivityType.CanceledSoftwareInstall]: CanceledSoftwareInstallActivityItem, }; export const upcomingActivityComponentMap: Record< diff --git a/frontend/pages/hosts/details/cards/Activity/ActivityItems/CanceledScriptActivityItem/CanceledScriptActivityItem.tsx b/frontend/pages/hosts/details/cards/Activity/ActivityItems/CanceledScriptActivityItem/CanceledScriptActivityItem.tsx new file mode 100644 index 000000000000..dea1419c9121 --- /dev/null +++ b/frontend/pages/hosts/details/cards/Activity/ActivityItems/CanceledScriptActivityItem/CanceledScriptActivityItem.tsx @@ -0,0 +1,25 @@ +import React from "react"; + +import { formatScriptNameForActivityItem } from "utilities/helpers"; + +import ActivityItem from "components/ActivityItem"; + +import { IHostActivityItemComponentProps } from "../../ActivityConfig"; + +const baseClass = "canceled-script-activity-item"; + +const CanceledScriptActivityItem = ({ + activity, +}: IHostActivityItemComponentProps) => { + return ( + + <> + {activity.actor_full_name} canceled{" "} + {formatScriptNameForActivityItem(activity.details?.script_name)}{" "} + script on this host. + + + ); +}; + +export default CanceledScriptActivityItem; diff --git a/frontend/pages/hosts/details/cards/Activity/ActivityItems/CanceledScriptActivityItem/index.ts b/frontend/pages/hosts/details/cards/Activity/ActivityItems/CanceledScriptActivityItem/index.ts new file mode 100644 index 000000000000..b0d5e965b396 --- /dev/null +++ b/frontend/pages/hosts/details/cards/Activity/ActivityItems/CanceledScriptActivityItem/index.ts @@ -0,0 +1 @@ +export { default } from "./CanceledScriptActivityItem"; diff --git a/frontend/pages/hosts/details/cards/Activity/ActivityItems/CanceledSoftwareInstallActivityItem/CanceledSoftwareInstallActivityItem.tsx b/frontend/pages/hosts/details/cards/Activity/ActivityItems/CanceledSoftwareInstallActivityItem/CanceledSoftwareInstallActivityItem.tsx new file mode 100644 index 000000000000..1bb132a6eee8 --- /dev/null +++ b/frontend/pages/hosts/details/cards/Activity/ActivityItems/CanceledSoftwareInstallActivityItem/CanceledSoftwareInstallActivityItem.tsx @@ -0,0 +1,21 @@ +import React from "react"; + +import ActivityItem from "components/ActivityItem"; +import { IHostActivityItemComponentProps } from "../../ActivityConfig"; + +const baseClass = "canceled-software-install-activity-item"; + +const CanceledSoftwareInstallActivityItem = ({ + activity, +}: IHostActivityItemComponentProps) => { + return ( + + <> + {activity.actor_full_name} canceled{" "} + {activity.details?.software_title} install on this host. + + + ); +}; + +export default CanceledSoftwareInstallActivityItem; diff --git a/frontend/pages/hosts/details/cards/Activity/ActivityItems/CanceledSoftwareInstallActivityItem/index.ts b/frontend/pages/hosts/details/cards/Activity/ActivityItems/CanceledSoftwareInstallActivityItem/index.ts new file mode 100644 index 000000000000..d769467c5aa5 --- /dev/null +++ b/frontend/pages/hosts/details/cards/Activity/ActivityItems/CanceledSoftwareInstallActivityItem/index.ts @@ -0,0 +1 @@ +export { default } from "./CanceledSoftwareInstallActivityItem"; diff --git a/frontend/pages/hosts/details/cards/Activity/ActivityItems/InstalledSoftwareActivityItem/InstalledSoftwareActivityItem.tsx b/frontend/pages/hosts/details/cards/Activity/ActivityItems/InstalledSoftwareActivityItem/InstalledSoftwareActivityItem.tsx index c3c6384944be..16cd34a441dc 100644 --- a/frontend/pages/hosts/details/cards/Activity/ActivityItems/InstalledSoftwareActivityItem/InstalledSoftwareActivityItem.tsx +++ b/frontend/pages/hosts/details/cards/Activity/ActivityItems/InstalledSoftwareActivityItem/InstalledSoftwareActivityItem.tsx @@ -2,15 +2,16 @@ import React from "react"; import { getInstallStatusPredicate } from "interfaces/software"; +import ActivityItem from "components/ActivityItem"; + import { IHostActivityItemComponentPropsWithShowDetails } from "../../ActivityConfig"; -import HostActivityItem from "../../HostActivityItem"; -import ShowDetailsButton from "../../ShowDetailsButton"; const baseClass = "installed-software-activity-item"; const InstalledSoftwareActivityItem = ({ activity, onShowDetails, + hideCancel, }: IHostActivityItemComponentPropsWithShowDetails) => { const { actor_full_name: actorName, details } = activity; const { self_service, software_title: title } = details; @@ -18,17 +19,21 @@ const InstalledSoftwareActivityItem = ({ details.status === "failed" ? "failed_uninstall" : details.status; const actorDisplayName = self_service ? ( - An end user + End user ) : ( {actorName} ); return ( - + <>{actorDisplayName} {getInstallStatusPredicate(status)} {title}{" "} - on this host.{" "} - - + on this host {self_service && "(self-service)"}.{" "} + ); }; diff --git a/frontend/pages/hosts/details/cards/Activity/ActivityItems/LockedHostActivityItem/LockedHostActivityItem.tsx b/frontend/pages/hosts/details/cards/Activity/ActivityItems/LockedHostActivityItem/LockedHostActivityItem.tsx index 09bc6a7c8902..10004775a627 100644 --- a/frontend/pages/hosts/details/cards/Activity/ActivityItems/LockedHostActivityItem/LockedHostActivityItem.tsx +++ b/frontend/pages/hosts/details/cards/Activity/ActivityItems/LockedHostActivityItem/LockedHostActivityItem.tsx @@ -1,7 +1,8 @@ import React from "react"; +import ActivityItem from "components/ActivityItem"; + import { IHostActivityItemComponentProps } from "../../ActivityConfig"; -import HostActivityItem from "../../HostActivityItem"; const baseClass = "locked-host-activity-item"; @@ -9,9 +10,9 @@ const LockedHostActivityItem = ({ activity, }: IHostActivityItemComponentProps) => { return ( - + {activity.actor_full_name} locked this host. - + ); }; diff --git a/frontend/pages/hosts/details/cards/Activity/ActivityItems/RanScriptActivityItem/RanScriptActivityItem.tsx b/frontend/pages/hosts/details/cards/Activity/ActivityItems/RanScriptActivityItem/RanScriptActivityItem.tsx index e0f26d0a8a64..19b8b97bd602 100644 --- a/frontend/pages/hosts/details/cards/Activity/ActivityItems/RanScriptActivityItem/RanScriptActivityItem.tsx +++ b/frontend/pages/hosts/details/cards/Activity/ActivityItems/RanScriptActivityItem/RanScriptActivityItem.tsx @@ -2,9 +2,8 @@ import React from "react"; import { formatScriptNameForActivityItem } from "utilities/helpers"; -import HostActivityItem from "../../HostActivityItem"; +import ActivityItem from "components/ActivityItem"; import { IHostActivityItemComponentPropsWithShowDetails } from "../../ActivityConfig"; -import ShowDetailsButton from "../../ShowDetailsButton"; const baseClass = "ran-script-activity-item"; @@ -12,20 +11,29 @@ const RanScriptActivityItem = ({ tab, activity, onShowDetails, + onCancel, + isSoloActivity, + hideCancel, }: IHostActivityItemComponentPropsWithShowDetails) => { const ranScriptPrefix = tab === "past" ? "ran" : "told Fleet to run"; return ( - + {activity.actor_full_name} <> {" "} {ranScriptPrefix}{" "} {formatScriptNameForActivityItem(activity.details?.script_name)} on this host.{" "} - - + ); }; diff --git a/frontend/pages/hosts/details/cards/Activity/ActivityItems/UnlockedHostActivityItem/UnlockedHostActivityItem.tsx b/frontend/pages/hosts/details/cards/Activity/ActivityItems/UnlockedHostActivityItem/UnlockedHostActivityItem.tsx index 6fa7cd0550fe..c30126543b0a 100644 --- a/frontend/pages/hosts/details/cards/Activity/ActivityItems/UnlockedHostActivityItem/UnlockedHostActivityItem.tsx +++ b/frontend/pages/hosts/details/cards/Activity/ActivityItems/UnlockedHostActivityItem/UnlockedHostActivityItem.tsx @@ -1,7 +1,7 @@ import React from "react"; +import ActivityItem from "components/ActivityItem"; import { IHostActivityItemComponentProps } from "../../ActivityConfig"; -import HostActivityItem from "../../HostActivityItem"; const baseClass = "unlocked-host-activity-item"; @@ -13,9 +13,9 @@ const UnlockedHostActivityItem = ({ desc = "viewed the six-digit unlock PIN for this host."; } return ( - + {activity.actor_full_name} {desc} - + ); }; diff --git a/frontend/pages/hosts/details/cards/Activity/HostActivityItem/HostActivityItem.tsx b/frontend/pages/hosts/details/cards/Activity/HostActivityItem/HostActivityItem.tsx deleted file mode 100644 index 44cc1267c0c2..000000000000 --- a/frontend/pages/hosts/details/cards/Activity/HostActivityItem/HostActivityItem.tsx +++ /dev/null @@ -1,94 +0,0 @@ -import React from "react"; -import ReactTooltip from "react-tooltip"; -import { formatDistanceToNowStrict } from "date-fns"; -import classnames from "classnames"; - -import { IActivity } from "interfaces/activity"; -import { - addGravatarUrlToResource, - internationalTimeFormat, -} from "utilities/helpers"; -import { DEFAULT_GRAVATAR_LINK } from "utilities/constants"; - -import Avatar from "components/Avatar"; - -import { COLORS } from "styles/var/colors"; - -const baseClass = "host-activity-item"; - -interface IHostActivityItemProps { - activity: IActivity; - children: React.ReactNode; - className?: string; -} - -/** - * A wrapper that will render all the common elements of a host activity item. - * This includes the avatar, the created at timestamp, and a dash to separate - * the activity items. The `children` will be the specific details of the activity - * implemented in the component that uses this wrapper. - */ -const HostActivityItem = ({ - activity, - children, - className, -}: IHostActivityItemProps) => { - const { actor_email } = activity; - const { gravatar_url } = actor_email - ? addGravatarUrlToResource({ email: actor_email }) - : { gravatar_url: DEFAULT_GRAVATAR_LINK }; - - // wrapped just in case the date string does not parse correctly - let activityCreatedAt: Date | null = null; - try { - activityCreatedAt = new Date(activity.created_at); - } catch (e) { - activityCreatedAt = null; - } - - const classNames = classnames(baseClass, className); - - return ( -
- -
-
- - {children} - -
- - {activityCreatedAt && - formatDistanceToNowStrict(activityCreatedAt, { - addSuffix: true, - })} - - {activityCreatedAt && ( - - {internationalTimeFormat(activityCreatedAt)} - - )} -
-
-
-
- ); -}; - -export default HostActivityItem; diff --git a/frontend/pages/hosts/details/cards/Activity/HostActivityItem/_styles.scss b/frontend/pages/hosts/details/cards/Activity/HostActivityItem/_styles.scss deleted file mode 100644 index 187a8e145598..000000000000 --- a/frontend/pages/hosts/details/cards/Activity/HostActivityItem/_styles.scss +++ /dev/null @@ -1,65 +0,0 @@ -.host-activity-item { - display: grid; // Grid system is used to create variable dashed line lengths - grid-template-columns: 16px 16px 1fr; - grid-template-rows: 32px max-content; - - .avatar-wrapper { - grid-column-start: 1; - width: 32px; - height: 32px; - } - - &__dash { - border-right: 1px dashed $ui-fleet-black-25; - grid-column-start: 1; - grid-row-start: 2; - grid-row-end: 3; - } - - &__details-wrapper { - grid-column-start: 3; - grid-row-start: 1; - grid-row-end: 3; - padding-left: $pad-large; - padding-bottom: $pad-large; - - .premium-icon-tip { - position: relative; - top: 4px; - padding-right: $pad-xsmall; - } - - .activity-details { - margin: 0; - line-height: 16px; - } - } - - &__details-topline { - font-size: $x-small; - overflow-wrap: anywhere; - } - - &__details-content { - margin-right: $pad-xsmall; - } - - &__details-bottomline { - font-size: $xx-small; - color: $ui-fleet-black-50; - } - - &__show-query-icon { - margin-left: $pad-xsmall; - } - - &:last-child { - .host-activity-item__dash { - border-right: none; - } - - .host-activity-item__details-wrapper { - padding-bottom: $pad-xxlarge; - } - } -} diff --git a/frontend/pages/hosts/details/cards/Activity/HostActivityItem/index.ts b/frontend/pages/hosts/details/cards/Activity/HostActivityItem/index.ts deleted file mode 100644 index b711dde7738c..000000000000 --- a/frontend/pages/hosts/details/cards/Activity/HostActivityItem/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default } from "./HostActivityItem"; diff --git a/frontend/pages/hosts/details/cards/Activity/PastActivityFeed/PastActivityFeed.tsx b/frontend/pages/hosts/details/cards/Activity/PastActivityFeed/PastActivityFeed.tsx index 89b038eb9581..cb88c0d35a1a 100644 --- a/frontend/pages/hosts/details/cards/Activity/PastActivityFeed/PastActivityFeed.tsx +++ b/frontend/pages/hosts/details/cards/Activity/PastActivityFeed/PastActivityFeed.tsx @@ -7,9 +7,9 @@ import { IHostPastActivitiesResponse } from "services/entities/activities"; import FleetIcon from "components/icons/FleetIcon"; import Button from "components/buttons/Button"; import DataError from "components/DataError"; +import { ShowActivityDetailsHandler } from "components/ActivityItem/ActivityItem"; import EmptyFeed from "../EmptyFeed/EmptyFeed"; -import { ShowActivityDetailsHandler } from "../Activity"; import { pastActivityComponentMap } from "../ActivityConfig"; @@ -18,7 +18,7 @@ const baseClass = "past-activity-feed"; interface IPastActivityFeedProps { activities?: IHostPastActivitiesResponse; isError?: boolean; - onDetailsClick: ShowActivityDetailsHandler; + onShowDetails: ShowActivityDetailsHandler; onNextPage: () => void; onPreviousPage: () => void; } @@ -26,7 +26,7 @@ interface IPastActivityFeedProps { const PastActivityFeed = ({ activities, isError = false, - onDetailsClick, + onShowDetails, onNextPage, onPreviousPage, }: IPastActivityFeedProps) => { @@ -55,7 +55,8 @@ const PastActivityFeed = ({
{activitiesList.map((activity: IHostPastActivity) => { // TODO: remove this once we have a proper way of handling "Fleet-initiated" activities in - // the backend. For now, if all these fields are empty, then we assume it was Fleet-initiated. + // the backend. For now, if all these fields are empty, then we assume it was + // Fleet-initiated. if ( !activity.actor_email && !activity.actor_full_name && @@ -71,7 +72,8 @@ const PastActivityFeed = ({ key={activity.id} tab="past" activity={activity} - onShowDetails={onDetailsClick} + hideCancel + onShowDetails={onShowDetails} /> ); })} diff --git a/frontend/pages/hosts/details/cards/Activity/ShowDetailsButton/ShowDetailsButton.tsx b/frontend/pages/hosts/details/cards/Activity/ShowDetailsButton/ShowDetailsButton.tsx deleted file mode 100644 index 9a80b891b4e3..000000000000 --- a/frontend/pages/hosts/details/cards/Activity/ShowDetailsButton/ShowDetailsButton.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import React from "react"; - -import { IActivity } from "interfaces/activity"; - -import Icon from "components/Icon"; -import Button from "components/buttons/Button"; - -import { ShowActivityDetailsHandler } from "../Activity"; - -const baseClass = "show-details-button"; - -interface IShowDetailsButtonProps { - activity: IActivity; - onShowDetails: ShowActivityDetailsHandler; -} - -const ShowDetailsButton = ({ - activity, - onShowDetails, -}: IShowDetailsButtonProps) => { - return ( - - ); -}; - -export default ShowDetailsButton; diff --git a/frontend/pages/hosts/details/cards/Activity/ShowDetailsButton/_styles.scss b/frontend/pages/hosts/details/cards/Activity/ShowDetailsButton/_styles.scss deleted file mode 100644 index c1f3a99a3211..000000000000 --- a/frontend/pages/hosts/details/cards/Activity/ShowDetailsButton/_styles.scss +++ /dev/null @@ -1,5 +0,0 @@ -.show-details-button { - &__show-details-icon { - margin-left: $pad-xsmall; - } -} diff --git a/frontend/pages/hosts/details/cards/Activity/ShowDetailsButton/index.ts b/frontend/pages/hosts/details/cards/Activity/ShowDetailsButton/index.ts deleted file mode 100644 index 533c76edddb3..000000000000 --- a/frontend/pages/hosts/details/cards/Activity/ShowDetailsButton/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default } from "./ShowDetailsButton"; diff --git a/frontend/pages/hosts/details/cards/Activity/UpcomingActivityFeed/UpcomingActivityFeed.tsx b/frontend/pages/hosts/details/cards/Activity/UpcomingActivityFeed/UpcomingActivityFeed.tsx index 320cd632ec02..686e0da5dc4c 100644 --- a/frontend/pages/hosts/details/cards/Activity/UpcomingActivityFeed/UpcomingActivityFeed.tsx +++ b/frontend/pages/hosts/details/cards/Activity/UpcomingActivityFeed/UpcomingActivityFeed.tsx @@ -7,9 +7,9 @@ import { IHostUpcomingActivitiesResponse } from "services/entities/activities"; import FleetIcon from "components/icons/FleetIcon"; import DataError from "components/DataError"; import Button from "components/buttons/Button"; +import { ShowActivityDetailsHandler } from "components/ActivityItem/ActivityItem"; import EmptyFeed from "../EmptyFeed/EmptyFeed"; -import { ShowActivityDetailsHandler } from "../Activity"; import { upcomingActivityComponentMap } from "../ActivityConfig"; const baseClass = "upcoming-activity-feed"; @@ -17,7 +17,8 @@ const baseClass = "upcoming-activity-feed"; interface IUpcomingActivityFeedProps { activities?: IHostUpcomingActivitiesResponse; isError?: boolean; - onDetailsClick: ShowActivityDetailsHandler; + onShowDetails: ShowActivityDetailsHandler; + onCancel: (activity: IHostUpcomingActivity) => void; onNextPage: () => void; onPreviousPage: () => void; } @@ -25,7 +26,8 @@ interface IUpcomingActivityFeedProps { const UpcomingActivityFeed = ({ activities, isError = false, - onDetailsClick, + onShowDetails, + onCancel, onNextPage, onPreviousPage, }: IUpcomingActivityFeedProps) => { @@ -51,7 +53,7 @@ const UpcomingActivityFeed = ({ return (
-
+
{activitiesList.map((activity: IHostUpcomingActivity) => { // TODO: remove this once we have a proper way of handling "Fleet-initiated" activities in // the backend. For now, if all these fields are empty, then we assume it was @@ -72,7 +74,9 @@ const UpcomingActivityFeed = ({ key={activity.id} tab="upcoming" activity={activity} - onShowDetails={onDetailsClick} + onShowDetails={onShowDetails} + hideCancel // TODO: remove this when canceling is implemented in API + onCancel={() => onCancel(activity)} /> ); })} diff --git a/frontend/pages/hosts/details/cards/Policies/_styles.scss b/frontend/pages/hosts/details/cards/Policies/_styles.scss index 55810f078203..0236f3a7aa32 100644 --- a/frontend/pages/hosts/details/cards/Policies/_styles.scss +++ b/frontend/pages/hosts/details/cards/Policies/_styles.scss @@ -13,7 +13,6 @@ } .response__header { width: 0; - border-right: none; } .linkToFilteredHosts__header { width: 140px; diff --git a/frontend/pages/hosts/details/cards/Software/HostSoftware.tsx b/frontend/pages/hosts/details/cards/Software/HostSoftware.tsx index 37c52f296c60..97cb13618c6f 100644 --- a/frontend/pages/hosts/details/cards/Software/HostSoftware.tsx +++ b/frontend/pages/hosts/details/cards/Software/HostSoftware.tsx @@ -306,19 +306,7 @@ const HostSoftware = ({ isLoading={ isMyDevicePage ? deviceSoftwareFetching : hostSoftwareFetching } - // this could be cleaner, however, we are going to revert this commit anyway once vulns are - // supported for iPad/iPhone, by the end of next sprint - data={ - vulnFilterAndNotSupported - ? ({ - count: 0, - meta: { - has_next_results: false, - has_previous_results: false, - }, - } as IGetHostSoftwareResponse) - : data - } // eshould be mpty for iPad/iPhone since API call is disabled, but to be sure to trigger empty state + data={data} platform={platform} router={router} tableConfig={tableConfig} diff --git a/frontend/pages/hosts/details/cards/Software/HostSoftwareTable/HostSoftwareTable.tsx b/frontend/pages/hosts/details/cards/Software/HostSoftwareTable/HostSoftwareTable.tsx index e94ce8e30fb1..f9b91667c635 100644 --- a/frontend/pages/hosts/details/cards/Software/HostSoftwareTable/HostSoftwareTable.tsx +++ b/frontend/pages/hosts/details/cards/Software/HostSoftwareTable/HostSoftwareTable.tsx @@ -132,7 +132,7 @@ const HostSoftwareTable = ({ className={`${baseClass}__software-filter`} options={DROPDOWN_OPTIONS} onChange={handleFilterDropdownChange} - tableFilter + variant="table-filter" /> ); }, [handleFilterDropdownChange, hostSoftwareFilter]); diff --git a/frontend/pages/hosts/details/helpers.ts b/frontend/pages/hosts/details/helpers.ts index 5c78a68bc9ad..1be9f4656146 100644 --- a/frontend/pages/hosts/details/helpers.ts +++ b/frontend/pages/hosts/details/helpers.ts @@ -15,22 +15,31 @@ const convertWinDiskEncryptionStatusToSettingStatus = ( : diskEncryptionStatus; }; +const generateWindowsDiskEncryptionMessage = ( + status: WindowsDiskEncryptionStatus, + detail: string +) => { + if (status === "failed") { + detail += ". Fleet will retry automatically."; + } + return detail; +}; + /** * Manually generates a setting for the windows disk encryption status. We need * this as we don't have a windows disk encryption profile in the `profiles` * attribute coming back from the GET /hosts/:id API response. */ -// eslint-disable-next-line import/prefer-default-export export const generateWinDiskEncryptionSetting = ( diskEncryptionStatus: WindowsDiskEncryptionStatus, detail: string ): IHostMdmProfile => { return { - profile_uuid: "0", // This s the only type of profile that can have this value + profile_uuid: "0", // This is the only type of profile that can have this value platform: "windows", name: "Disk Encryption", status: convertWinDiskEncryptionStatusToSettingStatus(diskEncryptionStatus), - detail, + detail: generateWindowsDiskEncryptionMessage(diskEncryptionStatus, detail), operation_type: null, }; }; @@ -46,7 +55,7 @@ export const generateLinuxDiskEncryptionSetting = ( detail: string ): IHostMdmProfile => { return { - profile_uuid: "0", // This s the only type of profile that can have this value + profile_uuid: "0", // This is the only type of profile that can have this value platform: "linux", name: "Disk Encryption", status: diskEncryptionStatus, diff --git a/frontend/pages/labels/components/ManualLabelForm/ManualLabelForm.tsx b/frontend/pages/labels/components/ManualLabelForm/ManualLabelForm.tsx index c4f52af7b634..e8d75b98c675 100644 --- a/frontend/pages/labels/components/ManualLabelForm/ManualLabelForm.tsx +++ b/frontend/pages/labels/components/ManualLabelForm/ManualLabelForm.tsx @@ -71,7 +71,7 @@ const ManualLabelForm = ({ }, [debounceSearch, searchQuery]); const { - data: hostTargets, + data: searchResults, isLoading: isLoadingSearchResults, isError: isErrorSearchResults, } = useQuery( @@ -139,7 +139,7 @@ const ManualLabelForm = ({ selectedHostsTableConifg={selectedHostsTableConfig} isTargetsLoading={isLoadingSearchResults || isDebouncing} hasFetchError={isErrorSearchResults} - searchResults={hostTargets ?? []} + searchResults={searchResults ?? []} targetedHosts={targetedHosts} setSearchText={onChangeSearchQuery} handleRowSelect={onHostSelect} diff --git a/frontend/pages/policies/ManagePoliciesPage/ManagePoliciesPage.tsx b/frontend/pages/policies/ManagePoliciesPage/ManagePoliciesPage.tsx index 6d24c9abbb10..f5812b6169db 100644 --- a/frontend/pages/policies/ManagePoliciesPage/ManagePoliciesPage.tsx +++ b/frontend/pages/policies/ManagePoliciesPage/ManagePoliciesPage.tsx @@ -4,7 +4,6 @@ import { useQuery } from "react-query"; import { InjectedRouter } from "react-router/lib/Router"; import PATHS from "router/paths"; import { isEqual } from "lodash"; -import { formatDistanceToNowStrict } from "date-fns"; import { getNextLocationPath, wait } from "utilities/helpers"; @@ -23,7 +22,7 @@ import { IPolicy, } from "interfaces/policy"; import { API_ALL_TEAMS_ID, API_NO_TEAM_ID, ITeamConfig } from "interfaces/team"; -import { IDropdownOption, TooltipContent } from "interfaces/dropdownOption"; +import { TooltipContent } from "interfaces/dropdownOption"; import configAPI from "services/entities/config"; import globalPoliciesAPI, { @@ -39,8 +38,10 @@ import teamsAPI, { ILoadTeamResponse } from "services/entities/teams"; import { ITableQueryData } from "components/TableContainer/TableContainer"; import TableCount from "components/TableContainer/TableCount"; import Button from "components/buttons/Button"; -// @ts-ignore -import Dropdown from "components/forms/fields/Dropdown"; + +import { SingleValue } from "react-select-5"; +import DropdownWrapper from "components/forms/fields/DropdownWrapper"; +import { CustomOptionType } from "components/forms/fields/DropdownWrapper/DropdownWrapper"; import Spinner from "components/Spinner"; import TeamsDropdown from "components/TeamsDropdown"; import TableDataError from "components/DataError"; @@ -490,8 +491,8 @@ const ManagePolicyPage = ({ setShowCalendarEventsModal(!showCalendarEventsModal); }; - const onSelectAutomationOption = (option: string) => { - switch (option) { + const onSelectAutomationOption = (option: SingleValue) => { + switch (option?.value) { case "calendar_events": toggleCalendarEventsModal(); break; @@ -940,25 +941,25 @@ const ManagePolicyPage = ({ ); } - const options: IDropdownOption[] = [ + const options: CustomOptionType[] = [ { label: "Calendar events", value: "calendar_events", - disabled: !!disabledCalendarTooltipContent, + isDisabled: !!disabledCalendarTooltipContent, helpText: "Automatically reserve time to resolve failing policies.", tooltipContent: disabledCalendarTooltipContent, }, { label: "Install software", value: "install_software", - disabled: !!disabledInstallTooltipContent, + isDisabled: !!disabledInstallTooltipContent, helpText: "Install software to resolve failing policies.", tooltipContent: disabledInstallTooltipContent, }, { label: "Run script", value: "run_script", - disabled: !!disabledRunScriptTooltipContent, + isDisabled: !!disabledRunScriptTooltipContent, helpText: "Run script to resolve failing policies.", tooltipContent: disabledRunScriptTooltipContent, }, @@ -969,7 +970,7 @@ const ManagePolicyPage = ({ options.push({ label: "Other workflows", value: "other_workflows", - disabled: false, + isDisabled: false, helpText: "Create tickets or fire webhooks for failing policies.", }); } @@ -1020,12 +1021,14 @@ const ManagePolicyPage = ({
{showAutomationsDropdown && (
-
)} diff --git a/frontend/pages/policies/ManagePoliciesPage/_styles.scss b/frontend/pages/policies/ManagePoliciesPage/_styles.scss index 632e60e819be..f625507b192d 100644 --- a/frontend/pages/policies/ManagePoliciesPage/_styles.scss +++ b/frontend/pages/policies/ManagePoliciesPage/_styles.scss @@ -27,6 +27,10 @@ left: -186px; width: 360px; } + .Select-input { + padding: 8px; + } + .Select-control { margin-top: 0; gap: 6px; @@ -235,6 +239,7 @@ border: 1px solid $ui-fleet-black-10; // negate ul padding padding-left: 0; + margin: 0; .policy-row { display: flex; diff --git a/frontend/pages/policies/ManagePoliciesPage/components/CalendarEventsModal/CalendarEventsModal.tsx b/frontend/pages/policies/ManagePoliciesPage/components/CalendarEventsModal/CalendarEventsModal.tsx index c17d68222a8d..92ffe7ecd2fa 100644 --- a/frontend/pages/policies/ManagePoliciesPage/components/CalendarEventsModal/CalendarEventsModal.tsx +++ b/frontend/pages/policies/ManagePoliciesPage/components/CalendarEventsModal/CalendarEventsModal.tsx @@ -190,48 +190,50 @@ const CalendarEventsModal = ({ return (
Policies:
-
    - {formData.policies.map((policy) => { - const { isChecked, name, id } = policy; - return ( -
  • - { - onPolicyEnabledChange({ name, value: !isChecked }); - }} - disabled={!formData.enabled} - > - - - -
  • - ); - })} -
- - A calendar event will be created for end users if one of their hosts - fail any of these policies.{" "} - - +
+
    + {formData.policies.map((policy) => { + const { isChecked, name, id } = policy; + return ( +
  • + { + onPolicyEnabledChange({ name, value: !isChecked }); + }} + disabled={!formData.enabled} + > + + + +
  • + ); + })} +
+

+ A calendar event will be created for end users if one of their hosts + fail any of these policies.{" "} + +

+
); }; @@ -302,7 +304,6 @@ const CalendarEventsModal = ({ onClick={() => { setShowExamplePayload(!showExamplePayload); }} - // disabled={!formData.enabled} /> - ); - } - if (searchQuery) { - delete emptyPolicies.graphicName; - delete emptyPolicies.primaryButton; - emptyPolicies.header = "No matching policies"; - emptyPolicies.info = "No policies match the current filters."; - } - - return emptyPolicies; + const emptyState: IEmptyTableProps = { + graphicName: "empty-policies", + header: "You don't have any policies", + info: + "Add policies to detect device health issues and trigger automations.", }; + if ( + currentTeam?.id === null || + currentTeam?.id === APP_CONTEXT_ALL_TEAMS_ID + ) { + emptyState.header += " that apply to all teams"; + } else { + emptyState.header += " that apply to this team"; + } + + if (canAddOrDeletePolicy) { + emptyState.primaryButton = ( + + ); + } else { + emptyState.info = ""; + } + + if (searchQuery) { + delete emptyState.graphicName; + delete emptyState.primaryButton; + emptyState.header = "No matching policies"; + emptyState.info = "No policies match the current filters."; + } + const searchable = !(policiesList?.length === 0 && searchQuery === ""); const hasPermissionAndPoliciesToDelete = @@ -120,11 +129,11 @@ const PoliciesTable = ({ }} emptyComponent={() => EmptyTable({ - graphicName: emptyState().graphicName, - header: emptyState().header, - info: emptyState().info, - additionalInfo: emptyState().additionalInfo, - primaryButton: emptyState().primaryButton, + graphicName: emptyState.graphicName, + header: emptyState.header, + info: emptyState.info, + additionalInfo: emptyState.additionalInfo, + primaryButton: emptyState.primaryButton, }) } renderCount={renderPoliciesCount} diff --git a/frontend/pages/policies/ManagePoliciesPage/components/PolicyRunScriptModal/PolicyRunScriptModal.tsx b/frontend/pages/policies/ManagePoliciesPage/components/PolicyRunScriptModal/PolicyRunScriptModal.tsx index f9f3e66ad160..947a30bff9e3 100644 --- a/frontend/pages/policies/ManagePoliciesPage/components/PolicyRunScriptModal/PolicyRunScriptModal.tsx +++ b/frontend/pages/policies/ManagePoliciesPage/components/PolicyRunScriptModal/PolicyRunScriptModal.tsx @@ -204,26 +204,28 @@ const PolicyRunScriptModal = ({
Policies:
-
    - {formData.map((policyData) => - renderPolicyRunScriptOption(policyData) - )} -
- - If{" "} - - compatible - {" "} - with the host, the selected script will run when hosts fail the - policy. The script will not run on hosts with scripts disabled, or - on hosts with too many pending scripts. Host counts will reset when - new scripts are selected.{" "} - - +
+
    + {formData.map((policyData) => + renderPolicyRunScriptOption(policyData) + )} +
+

+ If{" "} + + compatible + {" "} + with the host, the selected script will run when hosts fail the + policy. The script will not run on hosts with scripts disabled, or + on hosts with too many pending scripts. Host counts will reset + when new scripts are selected.{" "} + +

+

Is <%- thisApp.name %> up to date?

-

Run this query in Fleet to find old versions of 1Password across all your computers:

+

Run this query in Fleet to find old versions of <%- thisApp.name %> across all your computers:

SELECT 1 FROM apps WHERE bundle_identifier = '<%= thisApp.bundleIdentifier %>' AND bundle_short_version <= '<%- thisApp.version %>';
diff --git a/website/views/pages/homepage.ejs b/website/views/pages/homepage.ejs index 8ac7f8dffeca..f67759948868 100644 --- a/website/views/pages/homepage.ejs +++ b/website/views/pages/homepage.ejs @@ -7,7 +7,7 @@ <%/* Hero text */%>

<%- partial('../partials/primary-tagline.partial.ejs') %>

-

Replace the sprawl with <%= primaryBuyingSituation === 'vm'? 'secure, open-source reporting that works the way you want' : primaryBuyingSituation === 'eo-security'? 'open-source endpoint orchestration for every platform' : 'lightning fast device management that lets employees see what\'s going on' %>.

+

<%= /* Replace cross-platform hacks with */ primaryBuyingSituation === 'vm'? 'Secure, open-source reporting that works the way you want' : primaryBuyingSituation === 'eo-security'? 'Open-source telemetry that works the way you want' : 'Lightning fast device management that lets employees see what\'s going on' %>.

Learn how Talk to an engineer @@ -84,7 +84,7 @@ In the cloud or on-prem

Fleet uses the same open-source code base regardless of where itā€™s installed. You can deploy and configure it to fit your needs.

diff --git a/website/views/pages/osquery-table-details.ejs b/website/views/pages/osquery-table-details.ejs index 5536bce81435..34b3b7242440 100644 --- a/website/views/pages/osquery-table-details.ejs +++ b/website/views/pages/osquery-table-details.ejs @@ -62,7 +62,7 @@
diff --git a/website/views/pages/policy-details.ejs b/website/views/pages/policy-details.ejs new file mode 100644 index 000000000000..2d3551d22ad1 --- /dev/null +++ b/website/views/pages/policy-details.ejs @@ -0,0 +1,97 @@ +
+
+
+
+
+
+ Policies/ +
+
+ <%- policy.name %> +
+
+
+
+
+
+ + search + +
+
+ +
+
+
+
+
+
+
+

<%- policy.name %>

+ +

<%- policy.description %>

+
+

Control

+
+

Create or edit a configuration profile with the following information:

+
+
+
<%= policy.configuration_profile %>
+
+
+ +
+

Create or edit the following script and configure it to run when the check fails:

+
+
+
<%= policy.script %>
+
+
+
+
+

Check

+

Use the policy below to verify

+
+
+
<%- policy.query %>
+
+
+
+
+
+
+

Platform

+
+ macOS + Windows + Linux + ChromeOS +
+
+
+

Share

+
+ Share this article on Hacker News + Share this article on LinkedIn + Share this article on Twitter +
+
+ +
+
+
+
+
+
+<%- /* Expose server-rendered data as window.SAILS_LOCALS :: */ exposeLocalsToBrowser() %> diff --git a/website/views/pages/policy-library.ejs b/website/views/pages/policy-library.ejs new file mode 100644 index 000000000000..958c6b6fc37d --- /dev/null +++ b/website/views/pages/policy-library.ejs @@ -0,0 +1,127 @@ +
+ +
+
+
+
+

Policies

+

A collection of policies, OS settings, and scripts for macOS, Windows, and Linux.

+

Contributions welcome over on GitHub.

+
+
+
+
+
+ + search + +
+
+ +
+
+
+
+
+
+
+

+ macOS + Apple +

+
+
+

+ Linux + Linux +

+
+
+

+ Windows + Windows +

+
+
+
+
+ <% // macOS policies (server-side-rendered) + for(let policy of macOsPolicies) { + %> +
+
+
+

<%- policy.name %>

+ <% if(policy.tags.includes('premium')) {%>
PREMIUM
<% } %> + <% if(policy.requiresMdm) {%>
mdm-required
<% } %> +
+

<%- policy.description %>

+
Read more
+
+ +
+ <% } %> +
+
+ <% // Linux policies (server-side-rendered) + for(let policy of linuxPolicies) { + %> +
+
+
+

<%- policy.name %>

+ <% if(policy.tags.includes('premium')) {%>
PREMIUM
<% } %> + <% if(policy.requiresMdm) {%>
mdm-required
<% } %> +
+

<%- policy.description %>

+
Read more
+
+ +
+ <% } %> +
+
+ <% // Windows policies (server-side-rendered) + for(let policy of windowsPolicies) { + %> +
+
+
+

<%- policy.name %>

+ <% if(policy.tags.includes('premium')) {%>
PREMIUM
<% } %> + <% if(policy.requiresMdm) {%>
mdm-required
<% } %> +
+

<%- policy.description %>

+
Read more
+
+ +
+ <% } %> +
+
+
+
+
+ + +<%- /* Expose server-rendered data as window.SAILS_LOCALS :: */ exposeLocalsToBrowser() %> diff --git a/website/views/pages/query-detail.ejs b/website/views/pages/query-detail.ejs index 2c058b87c989..40f7a2e1a9d4 100644 --- a/website/views/pages/query-detail.ejs +++ b/website/views/pages/query-detail.ejs @@ -4,7 +4,7 @@
<%- query.name %> @@ -27,36 +27,17 @@
-
-
-

<%- query.name %>

-
+
+
+

<%- query.name %>

+ -

<%- query.description %>

-
-

Control

-
-

Create or edit a configuration profile with the following information:

-
-
-
<%= query.configuration_profile %>
-
-
- -
-

Create or edit the following script and configure it to run when the check fails:

-
-
-
<%= query.script %>
-
-
-
-
-

Check

-

Use the policy below to verify

+

<%- query.description %>

+
+

To learn more about queries, check this guide

<%- query.query %>
@@ -65,7 +46,7 @@
-
+

Platform

macOS @@ -83,10 +64,8 @@
diff --git a/website/views/pages/query-library.ejs b/website/views/pages/query-library.ejs index cc89abb213e1..e1c2c3c6a985 100644 --- a/website/views/pages/query-library.ejs +++ b/website/views/pages/query-library.ejs @@ -4,9 +4,8 @@
-

Built-in checks

-

Fleet's controls and policies library includes a growing collection of policies, OS settings, and scripts for macOS, Windows, and Linux.

-

Contributions welcome over on GitHub.

+

Queries

+

A collection of optional queries you can run anytime. Contributions welcome over on GitHub.

@@ -48,72 +47,45 @@
<% // macOS policies (server-side-rendered) - for(let policy of macOsPolicies) { + for(let query of macOsQueries) { %>
-

<%- policy.name %>

- <% if(policy.tags.includes('premium')) {%>
PREMIUM
<% } %> - <% if(policy.requiresMdm) {%>
mdm-required
<% } %> -
-

<%- policy.description %>

-
Read more
-
-
- +

<%- query.description %>

+
Read more
<% } %>
<% // Linux policies (server-side-rendered) - for(let policy of linuxPolicies) { + for(let query of linuxQueries) { %>
-

<%- policy.name %>

- <% if(policy.tags.includes('premium')) {%>
PREMIUM
<% } %> - <% if(policy.requiresMdm) {%>
mdm-required
<% } %> -
-

<%- policy.description %>

-
Read more
-
-
- +

<%- query.description %>

+
Read more
<% } %>
<% // Windows policies (server-side-rendered) - for(let policy of windowsPolicies) { + for(let query of windowsQueries) { %>
-

<%- policy.name %>

- <% if(policy.tags.includes('premium')) {%>
PREMIUM
<% } %> - <% if(policy.requiresMdm) {%>
mdm-required
<% } %> -
-

<%- policy.description %>

-
Read more
-
-
- +

<%- query.description %>

+
Read more
<% } %> diff --git a/website/views/pages/start.ejs b/website/views/pages/start.ejs index e359edf557f3..4e305e8134e5 100644 --- a/website/views/pages/start.ejs +++ b/website/views/pages/start.ejs @@ -706,7 +706,7 @@

Managed cloud for growing deployments

-

Unfortunately, managed cloud hosting is not yet available for growing deployments of less than 700 hosts.

+

Hosting for customers under 300 devices is supported by one of our partners.

-

Fleet can't guarantee that your personal data isn't being tracked by other common cybersecurity tools like Veriato, CrowdStrike, SentinelOne, and Sophos.

+

Fleet can't guarantee that other personal data isn't being captured by user activity monitoring or cybersecurity tools like Veriato, CrowdStrike, etc.

diff --git a/website/views/pages/vital-details.ejs b/website/views/pages/vital-details.ejs new file mode 100644 index 000000000000..0cda750fa7d8 --- /dev/null +++ b/website/views/pages/vital-details.ejs @@ -0,0 +1,145 @@ +
+
+
+
+
+

Vitals

+

Fleetā€™s built-in queries for collecting and storing important device information.

+
+
+
+
+
+ + search + +
+
+ +
+
+
+
+
+
+
+

+ macOS + Apple +

+
+
+

+ Linux + Linux +

+
+
+

+ Windows + Windows +

+
+
+

+ Chrome + ChromeOS +

+
+
+
+
+ +
+ <% // Linux policies (server-side-rendered) + for(let vital of linuxVitals) { + %> + <%- vital.name %> + <% } %> +
+
+ <% // Windows policies (server-side-rendered) + for(let vital of windowsVitals) { + %> + <%- vital.name %> + <% } %> +
+
+ <% // Windows policies (server-side-rendered) + for(let vital of chromeVitals) { + %> + <%- vital.name %> + <% } %> +
+
+
+
+

<%- thisVital.name %>

+
click to open the table of contents
+
+
+
+

<%- thisVital.name %>

+

<%- thisVital.description %>

+
+
+
+
<%- thisVital.query %>
+
+
+ <% if(thisVital.discovery) {%> +
+ An icon indicating that this section has important information +
+

This query uses the <%- thisVital.discovery %> data table. Learn more

+
+
+ <% } %> + +
+
+
+
+ +

Vitals

+
+ <% // macOS policies (server-side-rendered) + for(let vital of macOsVitals) { + %> + <%- vital.name %> + <% } %> +
+
+ <% // Linux policies (server-side-rendered) + for(let vital of linuxVitals) { + %> + <%- vital.name %> + <% } %> +
+
+ <% // Windows policies (server-side-rendered) + for(let vital of windowsVitals) { + %> + <%- vital.name %> + <% } %> +
+
+ <% // Windows policies (server-side-rendered) + for(let vital of chromeVitals) { + %> + <%- vital.name %> + <% } %> +
+
+
+<%- /* Expose server-rendered data as window.SAILS_LOCALS :: */ exposeLocalsToBrowser() %> diff --git a/website/views/partials/primary-tagline.partial.ejs b/website/views/partials/primary-tagline.partial.ejs index bb04b6a2dc1f..2e549fb75485 100644 --- a/website/views/partials/primary-tagline.partial.ejs +++ b/website/views/partials/primary-tagline.partial.ejs @@ -1,7 +1,6 @@ <%= - typeof primaryBuyingSituation === 'undefined' ? 'Open device management for everyone' // Default (no buying situation) - : primaryBuyingSituation === 'vm' ? 'Focus on vulnerabilities, not vendors' // vm - : primaryBuyingSituation === 'eo-security' ? 'Easily get security data'// eo-security - : primaryBuyingSituation === 'eo-it' ? 'Untangle your endpoints' : // eo-it - 'Open device management for everyone'// mdm + (typeof primaryBuyingSituation !== 'undefined' && primaryBuyingSituation === 'vm') ? 'Focus on vulnerabilities, not vendors' // vm + : (typeof primaryBuyingSituation !== 'undefined' && primaryBuyingSituation === 'eo-security') ? 'Easily get security data'// eo-security + : (typeof primaryBuyingSituation !== 'undefined' && primaryBuyingSituation === 'eo-it') ? 'One system for every platform' : // eo-it + 'One system for every OS'// mdm or default (no buying situation) %> diff --git a/yarn.lock b/yarn.lock index b77bdb73d0cf..1f6649cca654 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,13 +23,6 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@aw-web-design/x-default-browser@1.4.126": - version "1.4.126" - resolved "https://registry.yarnpkg.com/@aw-web-design/x-default-browser/-/x-default-browser-1.4.126.tgz#43e4bd8f0314ed907a8718d7e862a203af79bc16" - integrity sha512-Xk1sIhyNC/esHGGVjL/niHLowM0csl/kFO5uawBy4IrWwy0o1G8LGt3jP6nmWGz+USxeeqbihAmp/oVZju6wug== - dependencies: - default-browser-id "3.0.0" - "@babel/cli@7.17.6": version "7.17.6" resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.17.6.tgz#169e5935f1795f0b62ded5a2accafeedfe5c5363" @@ -76,6 +69,15 @@ "@babel/highlight" "^7.22.13" chalk "^2.4.2" +"@babel/code-frame@^7.25.9", "@babel/code-frame@^7.26.0", "@babel/code-frame@^7.26.2": + version "7.26.2" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85" + integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== + dependencies: + "@babel/helper-validator-identifier" "^7.25.9" + js-tokens "^4.0.0" + picocolors "^1.0.0" + "@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.5", "@babel/compat-data@^7.21.5": version "7.21.7" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.7.tgz#61caffb60776e49a57ba61a88f02bedd8714f6bc" @@ -86,11 +88,16 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.4.tgz#95c86de137bf0317f3a570e1b6e996b427299747" integrity sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw== -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9", "@babel/compat-data@^7.23.2": +"@babel/compat-data@^7.22.9": version "7.23.2" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.2.tgz#6a12ced93455827037bfb5ed8492820d60fc32cc" integrity sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ== +"@babel/compat-data@^7.26.5": + version "7.26.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.5.tgz#df93ac37f4417854130e21d72c66ff3d4b897fc7" + integrity sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg== + "@babel/core@7.18.10": version "7.18.10" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.10.tgz#39ad504991d77f1f3da91be0b8b949a5bc466fb8" @@ -133,28 +140,28 @@ json5 "^2.2.1" semver "^6.3.0" -"@babel/core@^7.13.16", "@babel/core@^7.7.5": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.5.tgz#92f753e8b9f96e15d4b398dbe2f25d1408c9c426" - integrity sha512-9M398B/QH5DlfCOTKDZT1ozXr0x8uBEeFd+dJraGUZGiaNpGCDVGCc14hZexsMblw3XxltJ+6kSvogp9J+5a9g== +"@babel/core@^7.18.9", "@babel/core@^7.23.9", "@babel/core@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.0.tgz#d78b6023cc8f3114ccf049eb219613f74a747b40" + integrity sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.21.4" - "@babel/generator" "^7.21.5" - "@babel/helper-compilation-targets" "^7.21.5" - "@babel/helper-module-transforms" "^7.21.5" - "@babel/helpers" "^7.21.5" - "@babel/parser" "^7.21.5" - "@babel/template" "^7.20.7" - "@babel/traverse" "^7.21.5" - "@babel/types" "^7.21.5" - convert-source-map "^1.7.0" + "@babel/code-frame" "^7.26.0" + "@babel/generator" "^7.26.0" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-module-transforms" "^7.26.0" + "@babel/helpers" "^7.26.0" + "@babel/parser" "^7.26.0" + "@babel/template" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.26.0" + convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" - json5 "^2.2.2" - semver "^6.3.0" + json5 "^2.2.3" + semver "^6.3.1" -"@babel/core@^7.22.0", "@babel/core@^7.22.5", "@babel/core@^7.22.9": +"@babel/core@^7.22.5": version "7.23.2" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.2.tgz#ed10df0d580fff67c5f3ee70fd22e2e4c90a9f94" integrity sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ== @@ -175,15 +182,26 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.12.11", "@babel/generator@^7.21.5": +"@babel/core@^7.7.5": version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.5.tgz#c0c0e5449504c7b7de8236d99338c3e2a340745f" - integrity sha512-SrKK/sRv8GesIW1bDagf9cCG38IOMYZusoe1dfg0D8aiUe3Amvoj1QtjTPAWcfrZFvIwlleLb0gxzQidL9w14w== + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.5.tgz#92f753e8b9f96e15d4b398dbe2f25d1408c9c426" + integrity sha512-9M398B/QH5DlfCOTKDZT1ozXr0x8uBEeFd+dJraGUZGiaNpGCDVGCc14hZexsMblw3XxltJ+6kSvogp9J+5a9g== dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.21.4" + "@babel/generator" "^7.21.5" + "@babel/helper-compilation-targets" "^7.21.5" + "@babel/helper-module-transforms" "^7.21.5" + "@babel/helpers" "^7.21.5" + "@babel/parser" "^7.21.5" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.5" "@babel/types" "^7.21.5" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" - jsesc "^2.5.1" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.2" + semver "^6.3.0" "@babel/generator@^7.18.10", "@babel/generator@^7.19.3", "@babel/generator@^7.7.2": version "7.19.5" @@ -194,7 +212,17 @@ "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" -"@babel/generator@^7.22.5", "@babel/generator@^7.22.9", "@babel/generator@^7.23.0": +"@babel/generator@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.5.tgz#c0c0e5449504c7b7de8236d99338c3e2a340745f" + integrity sha512-SrKK/sRv8GesIW1bDagf9cCG38IOMYZusoe1dfg0D8aiUe3Amvoj1QtjTPAWcfrZFvIwlleLb0gxzQidL9w14w== + dependencies: + "@babel/types" "^7.21.5" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + +"@babel/generator@^7.22.5", "@babel/generator@^7.23.0": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.0.tgz#df5c386e2218be505b34837acbcb874d7a983420" integrity sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g== @@ -204,6 +232,17 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" +"@babel/generator@^7.26.0", "@babel/generator@^7.26.5": + version "7.26.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.5.tgz#e44d4ab3176bbcaf78a5725da5f1dc28802a9458" + integrity sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw== + dependencies: + "@babel/parser" "^7.26.5" + "@babel/types" "^7.26.5" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^3.0.2" + "@babel/helper-annotate-as-pure@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz" @@ -218,13 +257,6 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-annotate-as-pure@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" - integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== - dependencies: - "@babel/types" "^7.22.5" - "@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.21.5.tgz#817f73b6c59726ab39f6ba18c234268a519e5abb" @@ -232,13 +264,6 @@ dependencies: "@babel/types" "^7.21.5" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.5": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" - integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== - dependencies: - "@babel/types" "^7.22.15" - "@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.21.5": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.5.tgz#631e6cc784c7b660417421349aac304c94115366" @@ -260,7 +285,7 @@ browserslist "^4.21.3" semver "^6.3.0" -"@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.5", "@babel/helper-compilation-targets@^7.22.6": +"@babel/helper-compilation-targets@^7.22.15": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52" integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== @@ -271,6 +296,17 @@ lru-cache "^5.1.1" semver "^6.3.1" +"@babel/helper-compilation-targets@^7.25.9": + version "7.26.5" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz#75d92bb8d8d51301c0d49e52a65c9a7fe94514d8" + integrity sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA== + dependencies: + "@babel/compat-data" "^7.26.5" + "@babel/helper-validator-option" "^7.25.9" + browserslist "^4.24.0" + lru-cache "^5.1.1" + semver "^6.3.1" + "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.1": version "7.17.6" resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz" @@ -299,21 +335,6 @@ "@babel/helper-split-export-declaration" "^7.18.6" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.22.11", "@babel/helper-create-class-features-plugin@^7.22.5": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz#97a61b385e57fe458496fad19f8e63b63c867de4" - integrity sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" - "@babel/helper-member-expression-to-functions" "^7.22.15" - "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - semver "^6.3.1" - "@babel/helper-create-regexp-features-plugin@^7.16.7": version "7.17.0" resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz" @@ -331,15 +352,6 @@ regexpu-core "^5.3.1" semver "^6.3.0" -"@babel/helper-create-regexp-features-plugin@^7.22.5": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" - integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - regexpu-core "^5.3.1" - semver "^6.3.1" - "@babel/helper-define-polyfill-provider@^0.3.3": version "0.3.3" resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a" @@ -352,17 +364,6 @@ resolve "^1.14.2" semver "^6.1.2" -"@babel/helper-define-polyfill-provider@^0.4.3": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz#a71c10f7146d809f4a256c373f462d9bba8cf6ba" - integrity sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug== - dependencies: - "@babel/helper-compilation-targets" "^7.22.6" - "@babel/helper-plugin-utils" "^7.22.5" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - "@babel/helper-environment-visitor@^7.16.7", "@babel/helper-environment-visitor@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" @@ -373,7 +374,7 @@ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.21.5.tgz#c769afefd41d171836f7cb63e295bedf689d48ba" integrity sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ== -"@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.22.5": +"@babel/helper-environment-visitor@^7.22.20": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== @@ -394,7 +395,7 @@ "@babel/template" "^7.20.7" "@babel/types" "^7.21.0" -"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": +"@babel/helper-function-name@^7.23.0": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== @@ -430,13 +431,6 @@ dependencies: "@babel/types" "^7.21.5" -"@babel/helper-member-expression-to-functions@^7.22.15": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366" - integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== - dependencies: - "@babel/types" "^7.23.0" - "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.18.6": version "7.18.6" resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz" @@ -451,13 +445,21 @@ dependencies: "@babel/types" "^7.21.4" -"@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.22.5": +"@babel/helper-module-imports@^7.22.15": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== dependencies: "@babel/types" "^7.22.15" +"@babel/helper-module-imports@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715" + integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw== + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + "@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.20.11", "@babel/helper-module-transforms@^7.21.5": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.21.5.tgz#d937c82e9af68d31ab49039136a222b17ac0b420" @@ -486,7 +488,7 @@ "@babel/traverse" "^7.19.0" "@babel/types" "^7.19.0" -"@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.23.0": +"@babel/helper-module-transforms@^7.23.0": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz#3ec246457f6c842c0aee62a01f60739906f7047e" integrity sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw== @@ -497,6 +499,15 @@ "@babel/helper-split-export-declaration" "^7.22.6" "@babel/helper-validator-identifier" "^7.22.20" +"@babel/helper-module-transforms@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae" + integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw== + dependencies: + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/helper-optimise-call-expression@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz" @@ -511,13 +522,6 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-optimise-call-expression@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" - integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== - dependencies: - "@babel/types" "^7.22.5" - "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.19.0" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz#4796bb14961521f0f8715990bee2fb6e51ce21bf" @@ -528,11 +532,6 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz#345f2377d05a720a4e5ecfa39cbf4474a4daed56" integrity sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg== -"@babel/helper-plugin-utils@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" - integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== - "@babel/helper-remap-async-to-generator@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" @@ -543,15 +542,6 @@ "@babel/helper-wrap-function" "^7.18.9" "@babel/types" "^7.18.9" -"@babel/helper-remap-async-to-generator@^7.22.20", "@babel/helper-remap-async-to-generator@^7.22.5": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" - integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-wrap-function" "^7.22.20" - "@babel/helper-replace-supers@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz" @@ -575,15 +565,6 @@ "@babel/traverse" "^7.21.5" "@babel/types" "^7.21.5" -"@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793" - integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-member-expression-to-functions" "^7.22.15" - "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-simple-access@^7.18.6": version "7.19.4" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz#be553f4951ac6352df2567f7daa19a0ee15668e7" @@ -619,13 +600,6 @@ dependencies: "@babel/types" "^7.20.0" -"@babel/helper-skip-transparent-expression-wrappers@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" - integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== - dependencies: - "@babel/types" "^7.22.5" - "@babel/helper-split-export-declaration@^7.16.7", "@babel/helper-split-export-declaration@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" @@ -655,6 +629,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== +"@babel/helper-string-parser@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" + integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== + "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": version "7.19.1" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" @@ -665,6 +644,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== +"@babel/helper-validator-identifier@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" + integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== + "@babel/helper-validator-option@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" @@ -680,6 +664,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040" integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA== +"@babel/helper-validator-option@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72" + integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw== + "@babel/helper-wrap-function@^7.16.7": version "7.16.8" resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz" @@ -700,15 +689,6 @@ "@babel/traverse" "^7.20.5" "@babel/types" "^7.20.5" -"@babel/helper-wrap-function@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569" - integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== - dependencies: - "@babel/helper-function-name" "^7.22.5" - "@babel/template" "^7.22.15" - "@babel/types" "^7.22.19" - "@babel/helpers@^7.18.9", "@babel/helpers@^7.19.0": version "7.19.4" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.19.4.tgz#42154945f87b8148df7203a25c31ba9a73be46c5" @@ -736,6 +716,14 @@ "@babel/traverse" "^7.23.2" "@babel/types" "^7.23.0" +"@babel/helpers@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.26.0.tgz#30e621f1eba5aa45fe6f4868d2e9154d884119a4" + integrity sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw== + dependencies: + "@babel/template" "^7.25.9" + "@babel/types" "^7.26.0" + "@babel/highlight@^7.10.4", "@babel/highlight@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" @@ -759,16 +747,23 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.4.tgz#03c4339d2b8971eb3beca5252bafd9b9f79db3dc" integrity sha512-qpVT7gtuOLjWeDTKLkJ6sryqLliBaFpAtGeqw5cs5giLldvh+Ch0plqnUMKoVAUS6ZEueQQiZV+p5pxtPitEsA== -"@babel/parser@^7.13.16", "@babel/parser@^7.20.7", "@babel/parser@^7.21.5": +"@babel/parser@^7.20.7", "@babel/parser@^7.21.5": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.5.tgz#821bb520118fd25b982eaf8d37421cf5c64a312b" integrity sha512-J+IxH2IsxV4HbnTrSWgMAQj0UEo61hDA4Ny8h8PCX0MLXiibqHbqIOVneqdocemSBc22VpBKxt4J6FQzy9HarQ== -"@babel/parser@^7.22.15", "@babel/parser@^7.22.7", "@babel/parser@^7.23.0": +"@babel/parser@^7.22.15", "@babel/parser@^7.23.0": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== +"@babel/parser@^7.23.9", "@babel/parser@^7.25.9", "@babel/parser@^7.26.0", "@babel/parser@^7.26.5": + version "7.26.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.5.tgz#6fec9aebddef25ca57a935c86dbb915ae2da3e1f" + integrity sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw== + dependencies: + "@babel/types" "^7.26.5" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" @@ -776,13 +771,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz#02dc8a03f613ed5fdc29fb2f728397c78146c962" - integrity sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.20.7": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz#d9c85589258539a22a901033853101a6198d4ef1" @@ -792,15 +780,6 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" "@babel/plugin-proposal-optional-chaining" "^7.20.7" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz#2aeb91d337d4e1a1e7ce85b76a37f5301781200f" - integrity sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.22.15" - "@babel/plugin-proposal-async-generator-functions@^7.20.7": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz#bfb7276d2d573cb67ba379984a2334e262ba5326" @@ -819,7 +798,7 @@ "@babel/helper-create-class-features-plugin" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.18.6": +"@babel/plugin-proposal-class-properties@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== @@ -944,7 +923,7 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": +"@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== @@ -996,7 +975,7 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.20.7", "@babel/plugin-proposal-optional-chaining@^7.21.0": +"@babel/plugin-proposal-optional-chaining@^7.20.7", "@babel/plugin-proposal-optional-chaining@^7.21.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea" integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== @@ -1021,11 +1000,6 @@ "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": - version "7.21.0-placeholder-for-preset-env.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" - integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== - "@babel/plugin-proposal-private-property-in-object@^7.21.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0.tgz#19496bd9883dd83c23c7d7fc45dcd9ad02dfa1dc" @@ -1123,20 +1097,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-flow@^7.18.6": - version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.21.4.tgz#3e37fca4f06d93567c1cd9b75156422e90a67107" - integrity sha512-l9xd3N+XG4fZRxEP3vXdK6RW7vN1Uf5dxzRC/09wV86wqZ/YYQooBIGNsiRdfNR3/q2/5pPzV4B54J/9ctX5jw== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - -"@babel/plugin-syntax-flow@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.22.5.tgz#163b820b9e7696ce134df3ee716d9c0c98035859" - integrity sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-function-bind@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/plugin-syntax-function-bind/-/plugin-syntax-function-bind-7.16.7.tgz" @@ -1158,20 +1118,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.19.0" -"@babel/plugin-syntax-import-assertions@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz#07d252e2aa0bc6125567f742cd58619cb14dce98" - integrity sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-syntax-import-attributes@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz#ab840248d834410b829f569f5262b9e517555ecb" - integrity sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-import-meta@7.10.4", "@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" @@ -1200,13 +1146,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-syntax-jsx@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz#a6b68e84fb76e759fc3b93e901876ffabbe1d918" - integrity sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" @@ -1291,14 +1230,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" - integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-transform-arrow-functions@^7.21.5": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.21.5.tgz#9bb42a53de447936a57ba256fbf537fc312b6929" @@ -1306,23 +1237,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.21.5" -"@babel/plugin-transform-arrow-functions@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz#e5ba566d0c58a5b2ba2a8b795450641950b71958" - integrity sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-async-generator-functions@^7.23.2": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.2.tgz#054afe290d64c6f576f371ccc321772c8ea87ebb" - integrity sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.20" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-transform-async-to-generator@^7.20.7": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz#dfee18623c8cb31deb796aa3ca84dda9cea94354" @@ -1332,15 +1246,6 @@ "@babel/helper-plugin-utils" "^7.20.2" "@babel/helper-remap-async-to-generator" "^7.18.9" -"@babel/plugin-transform-async-to-generator@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz#c7a85f44e46f8952f6d27fe57c2ed3cc084c3775" - integrity sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ== - dependencies: - "@babel/helper-module-imports" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.5" - "@babel/plugin-transform-block-scoped-functions@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8" @@ -1348,13 +1253,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-block-scoped-functions@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz#27978075bfaeb9fa586d3cb63a3d30c1de580024" - integrity sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-transform-block-scoping@^7.21.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz#e737b91037e5186ee16b76e7ae093358a5634f02" @@ -1362,30 +1260,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-transform-block-scoping@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz#8744d02c6c264d82e1a4bc5d2d501fd8aff6f022" - integrity sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-class-properties@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz#97a56e31ad8c9dc06a0b3710ce7803d5a48cca77" - integrity sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-class-static-block@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz#dc8cc6e498f55692ac6b4b89e56d87cec766c974" - integrity sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.11" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-transform-classes@^7.21.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz#f469d0b07a4c5a7dbb21afad9e27e57b47031665" @@ -1401,21 +1275,6 @@ "@babel/helper-split-export-declaration" "^7.18.6" globals "^11.1.0" -"@babel/plugin-transform-classes@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz#aaf4753aee262a232bbc95451b4bdf9599c65a0b" - integrity sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" - "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.9" - "@babel/helper-split-export-declaration" "^7.22.6" - globals "^11.1.0" - "@babel/plugin-transform-computed-properties@^7.21.5": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.21.5.tgz#3a2d8bb771cd2ef1cd736435f6552fe502e11b44" @@ -1424,14 +1283,6 @@ "@babel/helper-plugin-utils" "^7.21.5" "@babel/template" "^7.20.7" -"@babel/plugin-transform-computed-properties@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz#cd1e994bf9f316bd1c2dafcd02063ec261bb3869" - integrity sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/template" "^7.22.5" - "@babel/plugin-transform-destructuring@^7.21.3": version "7.21.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz#73b46d0fd11cd6ef57dea8a381b1215f4959d401" @@ -1439,13 +1290,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-transform-destructuring@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz#6447aa686be48b32eaf65a73e0e2c0bd010a266c" - integrity sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-transform-dotall-regex@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8" @@ -1454,14 +1298,6 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-dotall-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz#dbb4f0e45766eb544e193fb00e65a1dd3b2a4165" - integrity sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.16.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz" @@ -1477,21 +1313,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-duplicate-keys@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz#b6e6428d9416f5f0bba19c70d1e6e7e0b88ab285" - integrity sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-dynamic-import@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz#2c7722d2a5c01839eaf31518c6ff96d408e447aa" - integrity sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-transform-exponentiation-operator@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd" @@ -1500,38 +1321,6 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-exponentiation-operator@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz#402432ad544a1f9a480da865fda26be653e48f6a" - integrity sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-export-namespace-from@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz#b3c84c8f19880b6c7440108f8929caf6056db26c" - integrity sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-transform-flow-strip-types@^7.21.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.21.0.tgz#6aeca0adcb81dc627c8986e770bfaa4d9812aff5" - integrity sha512-FlFA2Mj87a6sDkW4gfGrQQqwY/dLlBAyJa2dJEZ+FHXUVHBflO2wyKvg+OOEzXfrKYIa4HWl0mgmbCzt0cMb7w== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-flow" "^7.18.6" - -"@babel/plugin-transform-flow-strip-types@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.22.5.tgz#0bb17110c7bf5b35a60754b2f00c58302381dee2" - integrity sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-flow" "^7.22.5" - "@babel/plugin-transform-for-of@^7.21.5": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.5.tgz#e890032b535f5a2e237a18535f56a9fdaa7b83fc" @@ -1539,13 +1328,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.21.5" -"@babel/plugin-transform-for-of@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz#f64b4ccc3a4f131a996388fae7680b472b306b29" - integrity sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-transform-function-name@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0" @@ -1555,23 +1337,6 @@ "@babel/helper-function-name" "^7.18.9" "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-function-name@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz#935189af68b01898e0d6d99658db6b164205c143" - integrity sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg== - dependencies: - "@babel/helper-compilation-targets" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-json-strings@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz#689a34e1eed1928a40954e37f74509f48af67835" - integrity sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-transform-literals@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" @@ -1579,21 +1344,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-literals@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz#e9341f4b5a167952576e23db8d435849b1dd7920" - integrity sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-logical-assignment-operators@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz#24c522a61688bde045b7d9bc3c2597a4d948fc9c" - integrity sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-transform-member-expression-literals@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" @@ -1601,13 +1351,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-member-expression-literals@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz#4fcc9050eded981a468347dd374539ed3e058def" - integrity sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-transform-modules-amd@^7.20.11": version "7.20.11" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz#3daccca8e4cc309f03c3a0c4b41dc4b26f55214a" @@ -1616,15 +1359,7 @@ "@babel/helper-module-transforms" "^7.20.11" "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-transform-modules-amd@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz#05b2bc43373faa6d30ca89214731f76f966f3b88" - integrity sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw== - dependencies: - "@babel/helper-module-transforms" "^7.23.0" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.21.5": +"@babel/plugin-transform-modules-commonjs@^7.21.5": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.5.tgz#d69fb947eed51af91de82e4708f676864e5e47bc" integrity sha512-OVryBEgKUbtqMoB7eG2rs6UFexJi6Zj6FDXx+esBLPTCxCNxAY9o+8Di7IsUGJ+AVhp5ncK0fxWUBd0/1gPhrQ== @@ -1633,15 +1368,6 @@ "@babel/helper-plugin-utils" "^7.21.5" "@babel/helper-simple-access" "^7.21.5" -"@babel/plugin-transform-modules-commonjs@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz#b3dba4757133b2762c00f4f94590cf6d52602481" - integrity sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ== - dependencies: - "@babel/helper-module-transforms" "^7.23.0" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-simple-access" "^7.22.5" - "@babel/plugin-transform-modules-systemjs@^7.20.11": version "7.20.11" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz#467ec6bba6b6a50634eea61c9c232654d8a4696e" @@ -1652,16 +1378,6 @@ "@babel/helper-plugin-utils" "^7.20.2" "@babel/helper-validator-identifier" "^7.19.1" -"@babel/plugin-transform-modules-systemjs@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz#77591e126f3ff4132a40595a6cccd00a6b60d160" - integrity sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg== - dependencies: - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-module-transforms" "^7.23.0" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-identifier" "^7.22.20" - "@babel/plugin-transform-modules-umd@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz#81d3832d6034b75b54e62821ba58f28ed0aab4b9" @@ -1670,14 +1386,6 @@ "@babel/helper-module-transforms" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-modules-umd@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz#4694ae40a87b1745e3775b6a7fe96400315d4f98" - integrity sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ== - dependencies: - "@babel/helper-module-transforms" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-transform-named-capturing-groups-regex@^7.20.5": version "7.20.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz#626298dd62ea51d452c3be58b285d23195ba69a8" @@ -1686,14 +1394,6 @@ "@babel/helper-create-regexp-features-plugin" "^7.20.5" "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" - integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-transform-new-target@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz#d128f376ae200477f37c4ddfcc722a8a1b3246a8" @@ -1701,72 +1401,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-new-target@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz#1b248acea54ce44ea06dfd37247ba089fcf9758d" - integrity sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw== +"@babel/plugin-transform-object-super@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" + integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-nullish-coalescing-operator@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz#debef6c8ba795f5ac67cd861a81b744c5d38d9fc" - integrity sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-transform-numeric-separator@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz#498d77dc45a6c6db74bb829c02a01c1d719cbfbd" - integrity sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-transform-object-rest-spread@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz#21a95db166be59b91cde48775310c0df6e1da56f" - integrity sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q== - dependencies: - "@babel/compat-data" "^7.22.9" - "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.22.15" - -"@babel/plugin-transform-object-super@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" - integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-replace-supers" "^7.18.6" - -"@babel/plugin-transform-object-super@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz#794a8d2fcb5d0835af722173c1a9d704f44e218c" - integrity sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.5" - -"@babel/plugin-transform-optional-catch-binding@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz#461cc4f578a127bb055527b3e77404cad38c08e0" - integrity sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-transform-optional-chaining@^7.22.15", "@babel/plugin-transform-optional-chaining@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz#73ff5fc1cf98f542f09f29c0631647d8ad0be158" - integrity sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-replace-supers" "^7.18.6" "@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.21.3": version "7.21.3" @@ -1775,31 +1416,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-transform-parameters@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz#719ca82a01d177af358df64a514d64c2e3edb114" - integrity sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-private-methods@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz#21c8af791f76674420a147ae62e9935d790f8722" - integrity sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-private-property-in-object@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz#ad45c4fc440e9cb84c718ed0906d96cf40f9a4e1" - integrity sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.22.11" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-transform-property-literals@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3" @@ -1807,13 +1423,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-property-literals@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz#b5ddabd73a4f7f26cd0e20f5db48290b88732766" - integrity sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-transform-react-display-name@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz#8b1125f919ef36ebdfff061d664e266c666b9415" @@ -1821,13 +1430,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-react-display-name@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz#3c4326f9fce31c7968d6cb9debcaf32d9e279a2b" - integrity sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-transform-react-jsx-development@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz#dbe5c972811e49c7405b630e4d0d2e1380c0ddc5" @@ -1835,13 +1437,6 @@ dependencies: "@babel/plugin-transform-react-jsx" "^7.18.6" -"@babel/plugin-transform-react-jsx-development@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz#e716b6edbef972a92165cd69d92f1255f7e73e87" - integrity sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A== - dependencies: - "@babel/plugin-transform-react-jsx" "^7.22.5" - "@babel/plugin-transform-react-jsx@^7.18.6": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.21.5.tgz#bd98f3b429688243e4fa131fe1cbb2ef31ce6f38" @@ -1853,17 +1448,6 @@ "@babel/plugin-syntax-jsx" "^7.21.4" "@babel/types" "^7.21.5" -"@babel/plugin-transform-react-jsx@^7.22.15", "@babel/plugin-transform-react-jsx@^7.22.5": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.15.tgz#7e6266d88705d7c49f11c98db8b9464531289cd6" - integrity sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-jsx" "^7.22.5" - "@babel/types" "^7.22.15" - "@babel/plugin-transform-react-pure-annotations@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz#561af267f19f3e5d59291f9950fd7b9663d0d844" @@ -1872,14 +1456,6 @@ "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-react-pure-annotations@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz#1f58363eef6626d6fa517b95ac66fe94685e32c0" - integrity sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-transform-regenerator@^7.21.5": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.21.5.tgz#576c62f9923f94bcb1c855adc53561fd7913724e" @@ -1888,14 +1464,6 @@ "@babel/helper-plugin-utils" "^7.21.5" regenerator-transform "^0.15.1" -"@babel/plugin-transform-regenerator@^7.22.10": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz#8ceef3bd7375c4db7652878b0241b2be5d0c3cca" - integrity sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - regenerator-transform "^0.15.2" - "@babel/plugin-transform-reserved-words@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz#b1abd8ebf8edaa5f7fe6bbb8d2133d23b6a6f76a" @@ -1903,13 +1471,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-reserved-words@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz#832cd35b81c287c4bcd09ce03e22199641f964fb" - integrity sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-transform-shorthand-properties@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9" @@ -1917,13 +1478,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-shorthand-properties@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz#6e277654be82b5559fc4b9f58088507c24f0c624" - integrity sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-transform-spread@^7.20.7": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz#c2d83e0b99d3bf83e07b11995ee24bf7ca09401e" @@ -1932,14 +1486,6 @@ "@babel/helper-plugin-utils" "^7.20.2" "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" -"@babel/plugin-transform-spread@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz#6487fd29f229c95e284ba6c98d65eafb893fea6b" - integrity sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-transform-sticky-regex@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz#c6706eb2b1524028e317720339583ad0f444adcc" @@ -1947,13 +1493,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-sticky-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz#295aba1595bfc8197abd02eae5fc288c0deb26aa" - integrity sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-transform-template-literals@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e" @@ -1961,13 +1500,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-template-literals@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz#8f38cf291e5f7a8e60e9f733193f0bcc10909bff" - integrity sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-transform-typeof-symbol@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0" @@ -1975,13 +1507,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-typeof-symbol@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz#5e2ba478da4b603af8673ff7c54f75a97b716b34" - integrity sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-transform-typescript@^7.21.3": version "7.21.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.3.tgz#316c5be579856ea890a57ebc5116c5d064658f2b" @@ -1999,21 +1524,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.21.5" -"@babel/plugin-transform-unicode-escapes@^7.22.10": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz#c723f380f40a2b2f57a62df24c9005834c8616d9" - integrity sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-unicode-property-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz#098898f74d5c1e86660dc112057b2d11227f1c81" - integrity sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-transform-unicode-regex@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca" @@ -2022,22 +1532,6 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-unicode-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz#ce7e7bb3ef208c4ff67e02a22816656256d7a183" - integrity sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-unicode-sets-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz#77788060e511b708ffc7d42fdfbc5b37c3004e91" - integrity sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/preset-env@7.21.5": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.21.5.tgz#db2089d99efd2297716f018aeead815ac3decffb" @@ -2120,119 +1614,6 @@ core-js-compat "^3.25.1" semver "^6.3.0" -"@babel/preset-env@^7.22.9": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.2.tgz#1f22be0ff0e121113260337dbc3e58fafce8d059" - integrity sha512-BW3gsuDD+rvHL2VO2SjAUNTBe5YrjsTiDyqamPDWY723na3/yPQ65X5oQkFVJZ0o50/2d+svm1rkPoJeR1KxVQ== - dependencies: - "@babel/compat-data" "^7.23.2" - "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.15" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.22.15" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.22.15" - "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.22.5" - "@babel/plugin-syntax-import-attributes" "^7.22.5" - "@babel/plugin-syntax-import-meta" "^7.10.4" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.22.5" - "@babel/plugin-transform-async-generator-functions" "^7.23.2" - "@babel/plugin-transform-async-to-generator" "^7.22.5" - "@babel/plugin-transform-block-scoped-functions" "^7.22.5" - "@babel/plugin-transform-block-scoping" "^7.23.0" - "@babel/plugin-transform-class-properties" "^7.22.5" - "@babel/plugin-transform-class-static-block" "^7.22.11" - "@babel/plugin-transform-classes" "^7.22.15" - "@babel/plugin-transform-computed-properties" "^7.22.5" - "@babel/plugin-transform-destructuring" "^7.23.0" - "@babel/plugin-transform-dotall-regex" "^7.22.5" - "@babel/plugin-transform-duplicate-keys" "^7.22.5" - "@babel/plugin-transform-dynamic-import" "^7.22.11" - "@babel/plugin-transform-exponentiation-operator" "^7.22.5" - "@babel/plugin-transform-export-namespace-from" "^7.22.11" - "@babel/plugin-transform-for-of" "^7.22.15" - "@babel/plugin-transform-function-name" "^7.22.5" - "@babel/plugin-transform-json-strings" "^7.22.11" - "@babel/plugin-transform-literals" "^7.22.5" - "@babel/plugin-transform-logical-assignment-operators" "^7.22.11" - "@babel/plugin-transform-member-expression-literals" "^7.22.5" - "@babel/plugin-transform-modules-amd" "^7.23.0" - "@babel/plugin-transform-modules-commonjs" "^7.23.0" - "@babel/plugin-transform-modules-systemjs" "^7.23.0" - "@babel/plugin-transform-modules-umd" "^7.22.5" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" - "@babel/plugin-transform-new-target" "^7.22.5" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.11" - "@babel/plugin-transform-numeric-separator" "^7.22.11" - "@babel/plugin-transform-object-rest-spread" "^7.22.15" - "@babel/plugin-transform-object-super" "^7.22.5" - "@babel/plugin-transform-optional-catch-binding" "^7.22.11" - "@babel/plugin-transform-optional-chaining" "^7.23.0" - "@babel/plugin-transform-parameters" "^7.22.15" - "@babel/plugin-transform-private-methods" "^7.22.5" - "@babel/plugin-transform-private-property-in-object" "^7.22.11" - "@babel/plugin-transform-property-literals" "^7.22.5" - "@babel/plugin-transform-regenerator" "^7.22.10" - "@babel/plugin-transform-reserved-words" "^7.22.5" - "@babel/plugin-transform-shorthand-properties" "^7.22.5" - "@babel/plugin-transform-spread" "^7.22.5" - "@babel/plugin-transform-sticky-regex" "^7.22.5" - "@babel/plugin-transform-template-literals" "^7.22.5" - "@babel/plugin-transform-typeof-symbol" "^7.22.5" - "@babel/plugin-transform-unicode-escapes" "^7.22.10" - "@babel/plugin-transform-unicode-property-regex" "^7.22.5" - "@babel/plugin-transform-unicode-regex" "^7.22.5" - "@babel/plugin-transform-unicode-sets-regex" "^7.22.5" - "@babel/preset-modules" "0.1.6-no-external-plugins" - "@babel/types" "^7.23.0" - babel-plugin-polyfill-corejs2 "^0.4.6" - babel-plugin-polyfill-corejs3 "^0.8.5" - babel-plugin-polyfill-regenerator "^0.5.3" - core-js-compat "^3.31.0" - semver "^6.3.1" - -"@babel/preset-flow@^7.13.13": - version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.21.4.tgz#a5de2a1cafa61f0e0b3af9b30ff0295d38d3608f" - integrity sha512-F24cSq4DIBmhq4OzK3dE63NHagb27OPE3eWR+HLekt4Z3Y5MzIIUGF3LlLgV0gN8vzbDViSY7HnrReNVCJXTeA== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-validator-option" "^7.21.0" - "@babel/plugin-transform-flow-strip-types" "^7.21.0" - -"@babel/preset-flow@^7.22.5": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.22.15.tgz#30318deb9b3ebd9f5738e96da03a531e0cd3165d" - integrity sha512-dB5aIMqpkgbTfN5vDdTRPzjqtWiZcRESNR88QYnoPR+bmdYoluOzMX9tQerTv0XzSgZYctPfO1oc0N5zdog1ew== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.15" - "@babel/plugin-transform-flow-strip-types" "^7.22.5" - -"@babel/preset-modules@0.1.6-no-external-plugins": - version "0.1.6-no-external-plugins" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" - integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - "@babel/preset-modules@^0.1.5": version "0.1.5" resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz" @@ -2256,19 +1637,7 @@ "@babel/plugin-transform-react-jsx-development" "^7.18.6" "@babel/plugin-transform-react-pure-annotations" "^7.18.6" -"@babel/preset-react@^7.22.5": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.22.15.tgz#9a776892b648e13cc8ca2edf5ed1264eea6b6afc" - integrity sha512-Csy1IJ2uEh/PecCBXXoZGAZBeCATTuePzCSB7dLYWS0vOEj6CNpjxIhW4duWwZodBNueH7QO14WbGn8YyeuN9w== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.15" - "@babel/plugin-transform-react-display-name" "^7.22.5" - "@babel/plugin-transform-react-jsx" "^7.22.15" - "@babel/plugin-transform-react-jsx-development" "^7.22.5" - "@babel/plugin-transform-react-pure-annotations" "^7.22.5" - -"@babel/preset-typescript@7.21.5", "@babel/preset-typescript@^7.13.0": +"@babel/preset-typescript@7.21.5": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.21.5.tgz#68292c884b0e26070b4d66b202072d391358395f" integrity sha512-iqe3sETat5EOrORXiQ6rWfoOg2y68Cs75B9wNxdPW4kixJxh7aXQE1KPdWLDniC24T/6dSnguF33W9j/ZZQcmA== @@ -2279,17 +1648,6 @@ "@babel/plugin-transform-modules-commonjs" "^7.21.5" "@babel/plugin-transform-typescript" "^7.21.3" -"@babel/register@^7.13.16": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.21.0.tgz#c97bf56c2472e063774f31d344c592ebdcefa132" - integrity sha512-9nKsPmYDi5DidAqJaQooxIhsLJiNMkGr8ypQ8Uic7cIox7UCDsM7HuUGxdGT7mSDTYbqzIdsOWzfBton/YJrMw== - dependencies: - clone-deep "^4.0.1" - find-cache-dir "^2.0.0" - make-dir "^2.1.0" - pirates "^4.0.5" - source-map-support "^0.5.16" - "@babel/regjsgen@^0.8.0": version "0.8.0" resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" @@ -2302,14 +1660,7 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@^7.13.10": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885" - integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg== - dependencies: - regenerator-runtime "^0.14.0" - -"@babel/runtime@^7.17.8", "@babel/runtime@^7.7.6": +"@babel/runtime@^7.17.8": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.5.tgz#8492dddda9644ae3bda3b45eabe87382caee7200" integrity sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q== @@ -2350,7 +1701,16 @@ "@babel/parser" "^7.22.15" "@babel/types" "^7.22.15" -"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.6", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.10", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.3", "@babel/traverse@^7.19.4", "@babel/traverse@^7.20.5", "@babel/traverse@^7.21.5", "@babel/traverse@^7.22.8", "@babel/traverse@^7.23.2", "@babel/traverse@^7.7.2": +"@babel/template@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.9.tgz#ecb62d81a8a6f5dc5fe8abfc3901fc52ddf15016" + integrity sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg== + dependencies: + "@babel/code-frame" "^7.25.9" + "@babel/parser" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/traverse@^7.0.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.10", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.3", "@babel/traverse@^7.19.4", "@babel/traverse@^7.20.5", "@babel/traverse@^7.21.5", "@babel/traverse@^7.23.2", "@babel/traverse@^7.7.2": version "7.23.2" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8" integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== @@ -2366,6 +1726,19 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.18.9", "@babel/traverse@^7.25.9": + version "7.26.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.26.5.tgz#6d0be3e772ff786456c1a37538208286f6e79021" + integrity sha512-rkOSPOw+AXbgtwUga3U4u8RpoK9FEFWBNAlTpcnkLFjL5CT+oyHNuUUC/xx6XefEJ16r38r8Bc/lfp6rYuHeJQ== + dependencies: + "@babel/code-frame" "^7.26.2" + "@babel/generator" "^7.26.5" + "@babel/parser" "^7.26.5" + "@babel/template" "^7.25.9" + "@babel/types" "^7.26.5" + debug "^4.3.1" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.19.0", "@babel/types@^7.19.3", "@babel/types@^7.19.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.19.4" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.4.tgz#0dd5c91c573a202d600490a35b33246fed8a41c7" @@ -2375,7 +1748,7 @@ "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" -"@babel/types@^7.18.9", "@babel/types@^7.2.0", "@babel/types@^7.20.0", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.4", "@babel/types@^7.21.5": +"@babel/types@^7.18.9", "@babel/types@^7.20.0", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.4", "@babel/types@^7.21.5": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.5.tgz#18dfbd47c39d3904d5db3d3dc2cc80bedb60e5b6" integrity sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q== @@ -2384,7 +1757,7 @@ "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" -"@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0": +"@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb" integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg== @@ -2393,10 +1766,13 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" -"@base2/pretty-print-object@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz" - integrity sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA== +"@babel/types@^7.25.9", "@babel/types@^7.26.0", "@babel/types@^7.26.5": + version "7.26.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.5.tgz#7a1e1c01d28e26d1fe7f8ec9567b3b92b9d07747" + integrity sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg== + dependencies: + "@babel/helper-string-parser" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" "@bcoe/v8-coverage@^0.2.3": version "0.2.3" @@ -2425,11 +1801,6 @@ "@types/tough-cookie" "^4.0.5" tough-cookie "^4.1.4" -"@colors/colors@1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" - integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== - "@cspotcode/source-map-consumer@0.8.0": version "0.8.0" resolved "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz" @@ -2442,7 +1813,7 @@ dependencies: "@cspotcode/source-map-consumer" "0.8.0" -"@discoveryjs/json-ext@^0.5.0", "@discoveryjs/json-ext@^0.5.3": +"@discoveryjs/json-ext@^0.5.0": version "0.5.7" resolved "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== @@ -2520,11 +1891,6 @@ resolved "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz" integrity sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw== -"@emotion/use-insertion-effect-with-fallbacks@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz#ffadaec35dbb7885bd54de3fa267ab2f860294df" - integrity sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A== - "@emotion/utils@^1.2.0": version "1.2.0" resolved "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz" @@ -2535,115 +1901,130 @@ resolved "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz" integrity sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg== -"@esbuild/android-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622" - integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ== - -"@esbuild/android-arm@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682" - integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw== - -"@esbuild/android-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2" - integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg== - -"@esbuild/darwin-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1" - integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA== - -"@esbuild/darwin-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d" - integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ== - -"@esbuild/freebsd-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54" - integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw== - -"@esbuild/freebsd-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e" - integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ== - -"@esbuild/linux-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0" - integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA== - -"@esbuild/linux-arm@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0" - integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg== - -"@esbuild/linux-ia32@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7" - integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA== - -"@esbuild/linux-loong64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d" - integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg== - -"@esbuild/linux-mips64el@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231" - integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ== - -"@esbuild/linux-ppc64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb" - integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA== - -"@esbuild/linux-riscv64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6" - integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A== - -"@esbuild/linux-s390x@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071" - integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ== - -"@esbuild/linux-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz#c7690b3417af318a9b6f96df3031a8865176d338" - integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w== - -"@esbuild/netbsd-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1" - integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A== - -"@esbuild/openbsd-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae" - integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg== - -"@esbuild/sunos-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d" - integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ== - -"@esbuild/win32-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9" - integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg== - -"@esbuild/win32-ia32@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102" - integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g== - -"@esbuild/win32-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d" - integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== +"@esbuild/aix-ppc64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz#38848d3e25afe842a7943643cbcd387cc6e13461" + integrity sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA== + +"@esbuild/android-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz#f592957ae8b5643129fa889c79e69cd8669bb894" + integrity sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg== + +"@esbuild/android-arm@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.24.2.tgz#72d8a2063aa630308af486a7e5cbcd1e134335b3" + integrity sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q== + +"@esbuild/android-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.24.2.tgz#9a7713504d5f04792f33be9c197a882b2d88febb" + integrity sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw== + +"@esbuild/darwin-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz#02ae04ad8ebffd6e2ea096181b3366816b2b5936" + integrity sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA== + +"@esbuild/darwin-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz#9ec312bc29c60e1b6cecadc82bd504d8adaa19e9" + integrity sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA== + +"@esbuild/freebsd-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz#5e82f44cb4906d6aebf24497d6a068cfc152fa00" + integrity sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg== + +"@esbuild/freebsd-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz#3fb1ce92f276168b75074b4e51aa0d8141ecce7f" + integrity sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q== + +"@esbuild/linux-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz#856b632d79eb80aec0864381efd29de8fd0b1f43" + integrity sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg== + +"@esbuild/linux-arm@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz#c846b4694dc5a75d1444f52257ccc5659021b736" + integrity sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA== + +"@esbuild/linux-ia32@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz#f8a16615a78826ccbb6566fab9a9606cfd4a37d5" + integrity sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw== + +"@esbuild/linux-loong64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz#1c451538c765bf14913512c76ed8a351e18b09fc" + integrity sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ== + +"@esbuild/linux-mips64el@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz#0846edeefbc3d8d50645c51869cc64401d9239cb" + integrity sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw== + +"@esbuild/linux-ppc64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz#8e3fc54505671d193337a36dfd4c1a23b8a41412" + integrity sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw== + +"@esbuild/linux-riscv64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz#6a1e92096d5e68f7bb10a0d64bb5b6d1daf9a694" + integrity sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q== + +"@esbuild/linux-s390x@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz#ab18e56e66f7a3c49cb97d337cd0a6fea28a8577" + integrity sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw== + +"@esbuild/linux-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz#8140c9b40da634d380b0b29c837a0b4267aff38f" + integrity sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q== + +"@esbuild/netbsd-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz#65f19161432bafb3981f5f20a7ff45abb2e708e6" + integrity sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw== + +"@esbuild/netbsd-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz#7a3a97d77abfd11765a72f1c6f9b18f5396bcc40" + integrity sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw== + +"@esbuild/openbsd-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz#58b00238dd8f123bfff68d3acc53a6ee369af89f" + integrity sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A== + +"@esbuild/openbsd-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz#0ac843fda0feb85a93e288842936c21a00a8a205" + integrity sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA== + +"@esbuild/sunos-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz#8b7aa895e07828d36c422a4404cc2ecf27fb15c6" + integrity sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig== + +"@esbuild/win32-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz#c023afb647cabf0c3ed13f0eddfc4f1d61c66a85" + integrity sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ== + +"@esbuild/win32-ia32@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz#96c356132d2dda990098c8b8b951209c3cd743c2" + integrity sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA== + +"@esbuild/win32-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz#34aa0b52d0fbb1a654b596acfa595f0c7b77a77b" + integrity sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg== "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" @@ -2672,11 +2053,6 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" -"@fal-works/esbuild-plugin-global-externals@^2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@fal-works/esbuild-plugin-global-externals/-/esbuild-plugin-global-externals-2.1.2.tgz#c05ed35ad82df8e6ac616c68b92c2282bd083ba4" - integrity sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ== - "@figspec/components@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@figspec/components/-/components-1.0.1.tgz#47d7e24999974b18c6daa810299624d4370fc7da" @@ -2699,7 +2075,7 @@ dependencies: "@floating-ui/utils" "^0.1.3" -"@floating-ui/dom@^1.0.0", "@floating-ui/dom@^1.5.1": +"@floating-ui/dom@^1.0.0": version "1.5.3" resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.5.3.tgz#54e50efcb432c06c23cd33de2b575102005436fa" integrity sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA== @@ -2707,24 +2083,17 @@ "@floating-ui/core" "^1.4.2" "@floating-ui/utils" "^0.1.3" -"@floating-ui/react-dom@^2.0.0": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.0.2.tgz#fab244d64db08e6bed7be4b5fcce65315ef44d20" - integrity sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ== - dependencies: - "@floating-ui/dom" "^1.5.1" - "@floating-ui/utils@^0.1.3": version "0.1.6" resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.1.6.tgz#22958c042e10b67463997bd6ea7115fe28cbcaf9" integrity sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A== -"@hapi/hoek@^9.0.0": +"@hapi/hoek@^9.0.0", "@hapi/hoek@^9.3.0": version "9.3.0" resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== -"@hapi/topo@^5.0.0": +"@hapi/topo@^5.1.0": version "5.1.0" resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== @@ -2778,18 +2147,6 @@ resolved "https://registry.yarnpkg.com/@inquirer/type/-/type-3.0.0.tgz#1762ebe667ec1d838012b20bf0cf90b841ba68bc" integrity sha512-YYykfbw/lefC7yKj7nanzQXILM7r3suIvyFlCcMskc99axmsSewXWkAfXKwMbgxL76iAFVmRwmYdwNZNc8gjog== -"@isaacs/cliui@^8.0.2": - version "8.0.2" - resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" - integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== - dependencies: - string-width "^5.1.2" - string-width-cjs "npm:string-width@^4.2.0" - strip-ansi "^7.0.1" - strip-ansi-cjs "npm:strip-ansi@^6.0.1" - wrap-ansi "^8.1.0" - wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" - "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" @@ -2806,18 +2163,6 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@jest/console@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.1.3.tgz#2030606ec03a18c31803b8a36382762e447655df" - integrity sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw== - dependencies: - "@jest/types" "^28.1.3" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^28.1.3" - jest-util "^28.1.3" - slash "^3.0.0" - "@jest/console@^29.2.0": version "29.2.0" resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.2.0.tgz#e906bdbfc83baf79590f05b515dad900b3b71fed" @@ -2842,41 +2187,6 @@ jest-util "^29.7.0" slash "^3.0.0" -"@jest/core@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-28.1.3.tgz#0ebf2bd39840f1233cd5f2d1e6fc8b71bd5a1ac7" - integrity sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA== - dependencies: - "@jest/console" "^28.1.3" - "@jest/reporters" "^28.1.3" - "@jest/test-result" "^28.1.3" - "@jest/transform" "^28.1.3" - "@jest/types" "^28.1.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - ci-info "^3.2.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-changed-files "^28.1.3" - jest-config "^28.1.3" - jest-haste-map "^28.1.3" - jest-message-util "^28.1.3" - jest-regex-util "^28.0.2" - jest-resolve "^28.1.3" - jest-resolve-dependencies "^28.1.3" - jest-runner "^28.1.3" - jest-runtime "^28.1.3" - jest-snapshot "^28.1.3" - jest-util "^28.1.3" - jest-validate "^28.1.3" - jest-watcher "^28.1.3" - micromatch "^4.0.4" - pretty-format "^28.1.3" - rimraf "^3.0.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - "@jest/core@^29.2.0": version "29.2.0" resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.2.0.tgz#beed57c552be65d4e4ab2f4161d0abe8ea6bf3a8" @@ -2911,6 +2221,40 @@ slash "^3.0.0" strip-ansi "^6.0.0" +"@jest/core@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" + integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== + 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" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + ci-info "^3.2.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^29.7.0" + jest-config "^29.7.0" + 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.4" + pretty-format "^29.7.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + "@jest/create-cache-key-function@^27.4.2": version "27.5.1" resolved "https://registry.yarnpkg.com/@jest/create-cache-key-function/-/create-cache-key-function-27.5.1.tgz#7448fae15602ea95c828f5eceed35c202a820b31" @@ -2918,16 +2262,6 @@ dependencies: "@jest/types" "^27.5.1" -"@jest/environment@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-28.1.3.tgz#abed43a6b040a4c24fdcb69eab1f97589b2d663e" - integrity sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA== - dependencies: - "@jest/fake-timers" "^28.1.3" - "@jest/types" "^28.1.3" - "@types/node" "*" - jest-mock "^28.1.3" - "@jest/environment@^29.2.0": version "29.2.0" resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.2.0.tgz#7e5604e4ead098572056a962a970f3d79379fbd8" @@ -2938,12 +2272,15 @@ "@types/node" "*" jest-mock "^29.2.0" -"@jest/expect-utils@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-28.1.3.tgz#58561ce5db7cd253a7edddbc051fb39dda50f525" - integrity sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA== +"@jest/environment@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" + integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== dependencies: - jest-get-type "^28.0.2" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" "@jest/expect-utils@^29.2.0": version "29.2.0" @@ -2959,14 +2296,6 @@ dependencies: jest-get-type "^29.6.3" -"@jest/expect@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-28.1.3.tgz#9ac57e1d4491baca550f6bdbd232487177ad6a72" - integrity sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw== - dependencies: - expect "^28.1.3" - jest-snapshot "^28.1.3" - "@jest/expect@^29.2.0": version "29.2.0" resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.2.0.tgz#25316d2ae930e7bb9df96cce7521053d377c4c0d" @@ -2975,17 +2304,13 @@ expect "^29.2.0" jest-snapshot "^29.2.0" -"@jest/fake-timers@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-28.1.3.tgz#230255b3ad0a3d4978f1d06f70685baea91c640e" - integrity sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw== +"@jest/expect@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" + integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== dependencies: - "@jest/types" "^28.1.3" - "@sinonjs/fake-timers" "^9.1.2" - "@types/node" "*" - jest-message-util "^28.1.3" - jest-mock "^28.1.3" - jest-util "^28.1.3" + expect "^29.7.0" + jest-snapshot "^29.7.0" "@jest/fake-timers@^29.2.0": version "29.2.0" @@ -2999,14 +2324,17 @@ jest-mock "^29.2.0" jest-util "^29.2.0" -"@jest/globals@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-28.1.3.tgz#a601d78ddc5fdef542728309894895b4a42dc333" - integrity sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA== +"@jest/fake-timers@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" + integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== dependencies: - "@jest/environment" "^28.1.3" - "@jest/expect" "^28.1.3" - "@jest/types" "^28.1.3" + "@jest/types" "^29.6.3" + "@sinonjs/fake-timers" "^10.0.2" + "@types/node" "*" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-util "^29.7.0" "@jest/globals@^29.2.0": version "29.2.0" @@ -3018,17 +2346,27 @@ "@jest/types" "^29.2.0" jest-mock "^29.2.0" -"@jest/reporters@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-28.1.3.tgz#9adf6d265edafc5fc4a434cfb31e2df5a67a369a" - integrity sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg== +"@jest/globals@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" + integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/types" "^29.6.3" + jest-mock "^29.7.0" + +"@jest/reporters@^29.2.0": + version "29.2.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.2.0.tgz#24cac16d997ec91a9c615db2621805ee485689e0" + integrity sha512-BXoAJatxTZ18U0cwD7C8qBo8V6vef8AXYRBZdhqE5DF9CmpqmhMfw9c7OUvYqMTnBBK9A0NgXGO4Lc9EJzdHvw== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^28.1.3" - "@jest/test-result" "^28.1.3" - "@jest/transform" "^28.1.3" - "@jest/types" "^28.1.3" - "@jridgewell/trace-mapping" "^0.3.13" + "@jest/console" "^29.2.0" + "@jest/test-result" "^29.2.0" + "@jest/transform" "^29.2.0" + "@jest/types" "^29.2.0" + "@jridgewell/trace-mapping" "^0.3.15" "@types/node" "*" chalk "^4.0.0" collect-v8-coverage "^1.0.0" @@ -3040,26 +2378,25 @@ istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.1.3" - jest-message-util "^28.1.3" - jest-util "^28.1.3" - jest-worker "^28.1.3" + jest-message-util "^29.2.0" + jest-util "^29.2.0" + jest-worker "^29.2.0" slash "^3.0.0" string-length "^4.0.1" strip-ansi "^6.0.0" - terminal-link "^2.0.0" v8-to-istanbul "^9.0.1" -"@jest/reporters@^29.2.0": - version "29.2.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.2.0.tgz#24cac16d997ec91a9c615db2621805ee485689e0" - integrity sha512-BXoAJatxTZ18U0cwD7C8qBo8V6vef8AXYRBZdhqE5DF9CmpqmhMfw9c7OUvYqMTnBBK9A0NgXGO4Lc9EJzdHvw== +"@jest/reporters@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" + integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^29.2.0" - "@jest/test-result" "^29.2.0" - "@jest/transform" "^29.2.0" - "@jest/types" "^29.2.0" - "@jridgewell/trace-mapping" "^0.3.15" + "@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.18" "@types/node" "*" chalk "^4.0.0" collect-v8-coverage "^1.0.0" @@ -3067,25 +2404,18 @@ glob "^7.1.3" graceful-fs "^4.2.9" istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^5.1.0" + istanbul-lib-instrument "^6.0.0" istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.1.3" - jest-message-util "^29.2.0" - jest-util "^29.2.0" - jest-worker "^29.2.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + jest-worker "^29.7.0" slash "^3.0.0" string-length "^4.0.1" strip-ansi "^6.0.0" v8-to-istanbul "^9.0.1" -"@jest/schemas@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.1.3.tgz#ad8b86a66f11f33619e3d7e1dcddd7f2d40ff905" - integrity sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg== - dependencies: - "@sinclair/typebox" "^0.24.1" - "@jest/schemas@^29.0.0": version "29.0.0" resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.0.0.tgz#5f47f5994dd4ef067fb7b4188ceac45f77fe952a" @@ -3093,13 +2423,6 @@ dependencies: "@sinclair/typebox" "^0.24.1" -"@jest/schemas@^29.4.3": - version "29.4.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.4.3.tgz#39cf1b8469afc40b6f5a2baaa146e332c4151788" - integrity sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg== - dependencies: - "@sinclair/typebox" "^0.25.16" - "@jest/schemas@^29.6.3": version "29.6.3" resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" @@ -3107,15 +2430,6 @@ dependencies: "@sinclair/typebox" "^0.27.8" -"@jest/source-map@^28.1.2": - version "28.1.2" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-28.1.2.tgz#7fe832b172b497d6663cdff6c13b0a920e139e24" - integrity sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww== - dependencies: - "@jridgewell/trace-mapping" "^0.3.13" - callsites "^3.0.0" - graceful-fs "^4.2.9" - "@jest/source-map@^29.2.0": version "29.2.0" resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.2.0.tgz#ab3420c46d42508dcc3dc1c6deee0b613c235744" @@ -3125,15 +2439,14 @@ callsites "^3.0.0" graceful-fs "^4.2.9" -"@jest/test-result@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-28.1.3.tgz#5eae945fd9f4b8fcfce74d239e6f725b6bf076c5" - integrity sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg== +"@jest/source-map@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" + integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== dependencies: - "@jest/console" "^28.1.3" - "@jest/types" "^28.1.3" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" + "@jridgewell/trace-mapping" "^0.3.18" + callsites "^3.0.0" + graceful-fs "^4.2.9" "@jest/test-result@^29.2.0": version "29.2.0" @@ -3155,16 +2468,6 @@ "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz#9d0c283d906ac599c74bde464bc0d7e6a82886c3" - integrity sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw== - dependencies: - "@jest/test-result" "^28.1.3" - graceful-fs "^4.2.9" - jest-haste-map "^28.1.3" - slash "^3.0.0" - "@jest/test-sequencer@^29.2.0": version "29.2.0" resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.2.0.tgz#acd875533f7ad01cb22da59ff4047de18e9d64da" @@ -3175,26 +2478,15 @@ jest-haste-map "^29.2.0" slash "^3.0.0" -"@jest/transform@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-28.1.3.tgz#59d8098e50ab07950e0f2fc0fc7ec462371281b0" - integrity sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA== +"@jest/test-sequencer@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" + integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== dependencies: - "@babel/core" "^7.11.6" - "@jest/types" "^28.1.3" - "@jridgewell/trace-mapping" "^0.3.13" - babel-plugin-istanbul "^6.1.1" - chalk "^4.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" + "@jest/test-result" "^29.7.0" graceful-fs "^4.2.9" - jest-haste-map "^28.1.3" - jest-regex-util "^28.0.2" - jest-util "^28.1.3" - micromatch "^4.0.4" - pirates "^4.0.4" + jest-haste-map "^29.7.0" slash "^3.0.0" - write-file-atomic "^4.0.1" "@jest/transform@^29.2.0": version "29.2.0" @@ -3217,22 +2509,22 @@ slash "^3.0.0" write-file-atomic "^4.0.1" -"@jest/transform@^29.3.1": - version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.5.0.tgz#cf9c872d0965f0cbd32f1458aa44a2b1988b00f9" - integrity sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw== +"@jest/transform@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" + integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== dependencies: "@babel/core" "^7.11.6" - "@jest/types" "^29.5.0" - "@jridgewell/trace-mapping" "^0.3.15" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" babel-plugin-istanbul "^6.1.1" chalk "^4.0.0" convert-source-map "^2.0.0" fast-json-stable-stringify "^2.1.0" graceful-fs "^4.2.9" - jest-haste-map "^29.5.0" - jest-regex-util "^29.4.3" - jest-util "^29.5.0" + jest-haste-map "^29.7.0" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" micromatch "^4.0.4" pirates "^4.0.4" slash "^3.0.0" @@ -3249,18 +2541,6 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" -"@jest/types@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b" - integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ== - dependencies: - "@jest/schemas" "^28.1.3" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - chalk "^4.0.0" - "@jest/types@^29.2.0": version "29.2.0" resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.2.0.tgz#c0d1ef8bc1e4f4b358e7877e34157371e7881b0b" @@ -3273,18 +2553,6 @@ "@types/yargs" "^17.0.8" chalk "^4.0.0" -"@jest/types@^29.5.0": - version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.5.0.tgz#f59ef9b031ced83047c67032700d8c807d6e1593" - integrity sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog== - dependencies: - "@jest/schemas" "^29.4.3" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - chalk "^4.0.0" - "@jest/types@^29.6.3": version "29.6.3" resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" @@ -3356,7 +2624,7 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== -"@jridgewell/sourcemap-codec@^1.4.10": +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.5.0": version "1.5.0" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== @@ -3374,14 +2642,6 @@ "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" -"@jridgewell/trace-mapping@^0.3.13": - version "0.3.20" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" - integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - "@jridgewell/trace-mapping@^0.3.17": version "0.3.18" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" @@ -3390,7 +2650,7 @@ "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" -"@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.9": +"@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.9": version "0.3.25" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== @@ -3398,11 +2658,6 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" -"@juggle/resize-observer@^3.3.1": - version "3.4.0" - resolved "https://registry.yarnpkg.com/@juggle/resize-observer/-/resize-observer-3.4.0.tgz#08d6c5e20cf7e4cc02fd181c4b0c225cd31dbb60" - integrity sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA== - "@lit-labs/react@^1.0.2": version "1.1.1" resolved "https://registry.yarnpkg.com/@lit-labs/react/-/react-1.1.1.tgz#88a4320d357dcdfd7c7e276f809e3453a124cbbc" @@ -3420,13 +2675,12 @@ dependencies: "@lit-labs/ssr-dom-shim" "^1.0.0" -"@mdx-js/react@^2.1.5": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-2.3.0.tgz#4208bd6d70f0d0831def28ef28c26149b03180b3" - integrity sha512-zQH//gdOmuu7nt2oJR29vFhDv88oGPmVw6BggmrHeMI+xgEkp1B2dX9/bMBSYtK0dyLX/aOmesKS09g222K1/g== +"@mdx-js/react@^3.0.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-3.1.0.tgz#c4522e335b3897b9a845db1dbdd2f966ae8fb0ed" + integrity sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ== dependencies: "@types/mdx" "^2.0.0" - "@types/react" ">=16" "@mswjs/interceptors@^0.36.5": version "0.36.6" @@ -3440,15 +2694,6 @@ outvariant "^1.4.3" strict-event-emitter "^0.5.1" -"@ndelangen/get-tarball@^3.0.7": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@ndelangen/get-tarball/-/get-tarball-3.0.7.tgz#87c7aef2df4ff4fbdbab6ac9ed32cee142c4b1a3" - integrity sha512-NqGfTZIZpRFef1GoVaShSSRwDC3vde3ThtTeqFdcYd6ipKqnfEVhjK2hUeHjCQUcptyZr2TONqcloFXM+5QBrQ== - dependencies: - gunzip-maybe "^1.4.2" - pump "^3.0.0" - tar-fs "^2.1.1" - "@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3": version "2.1.8-no-fsevents.3" resolved "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz" @@ -3582,320 +2827,10 @@ "@parcel/watcher-win32-ia32" "2.5.0" "@parcel/watcher-win32-x64" "2.5.0" -"@pkgjs/parseargs@^0.11.0": - version "0.11.0" - resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" - integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== - -"@pmmmwh/react-refresh-webpack-plugin@^0.5.5": - version "0.5.10" - resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.10.tgz#2eba163b8e7dbabb4ce3609ab5e32ab63dda3ef8" - integrity sha512-j0Ya0hCFZPd4x40qLzbhGsh9TMtdb+CJQiso+WxLOPNasohq9cc5SNUcwsZaRH6++Xh91Xkm/xHCkuIiIu0LUA== - dependencies: - ansi-html-community "^0.0.8" - common-path-prefix "^3.0.0" - core-js-pure "^3.23.3" - error-stack-parser "^2.0.6" - find-up "^5.0.0" - html-entities "^2.1.0" - loader-utils "^2.0.4" - schema-utils "^3.0.0" - source-map "^0.7.3" - -"@radix-ui/number@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@radix-ui/number/-/number-1.0.1.tgz#644161a3557f46ed38a042acf4a770e826021674" - integrity sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/primitive@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@radix-ui/primitive/-/primitive-1.0.1.tgz#e46f9958b35d10e9f6dc71c497305c22e3e55dbd" - integrity sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-arrow@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@radix-ui/react-arrow/-/react-arrow-1.0.3.tgz#c24f7968996ed934d57fe6cde5d6ec7266e1d25d" - integrity sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-primitive" "1.0.3" - -"@radix-ui/react-collection@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@radix-ui/react-collection/-/react-collection-1.0.3.tgz#9595a66e09026187524a36c6e7e9c7d286469159" - integrity sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-compose-refs" "1.0.1" - "@radix-ui/react-context" "1.0.1" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-slot" "1.0.2" - -"@radix-ui/react-compose-refs@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz#7ed868b66946aa6030e580b1ffca386dd4d21989" - integrity sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-context@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.0.1.tgz#fe46e67c96b240de59187dcb7a1a50ce3e2ec00c" - integrity sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-direction@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-direction/-/react-direction-1.0.1.tgz#9cb61bf2ccf568f3421422d182637b7f47596c9b" - integrity sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-dismissable-layer@1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.4.tgz#883a48f5f938fa679427aa17fcba70c5494c6978" - integrity sha512-7UpBa/RKMoHJYjie1gkF1DlK8l1fdU/VKDpoS3rCCo8YBJR294GwcEHyxHw72yvphJ7ld0AXEcSLAzY2F/WyCg== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/primitive" "1.0.1" - "@radix-ui/react-compose-refs" "1.0.1" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-use-callback-ref" "1.0.1" - "@radix-ui/react-use-escape-keydown" "1.0.3" - -"@radix-ui/react-focus-guards@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz#1ea7e32092216b946397866199d892f71f7f98ad" - integrity sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-focus-scope@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.3.tgz#9c2e8d4ed1189a1d419ee61edd5c1828726472f9" - integrity sha512-upXdPfqI4islj2CslyfUBNlaJCPybbqRHAi1KER7Isel9Q2AtSJ0zRBZv8mWQiFXD2nyAJ4BhC3yXgZ6kMBSrQ== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-compose-refs" "1.0.1" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-use-callback-ref" "1.0.1" - -"@radix-ui/react-id@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-id/-/react-id-1.0.1.tgz#73cdc181f650e4df24f0b6a5b7aa426b912c88c0" - integrity sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-use-layout-effect" "1.0.1" - -"@radix-ui/react-popper@1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@radix-ui/react-popper/-/react-popper-1.1.2.tgz#4c0b96fcd188dc1f334e02dba2d538973ad842e9" - integrity sha512-1CnGGfFi/bbqtJZZ0P/NQY20xdG3E0LALJaLUEoKwPLwl6PPPfbeiCqMVQnhoFRAxjJj4RpBRJzDmUgsex2tSg== - dependencies: - "@babel/runtime" "^7.13.10" - "@floating-ui/react-dom" "^2.0.0" - "@radix-ui/react-arrow" "1.0.3" - "@radix-ui/react-compose-refs" "1.0.1" - "@radix-ui/react-context" "1.0.1" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-use-callback-ref" "1.0.1" - "@radix-ui/react-use-layout-effect" "1.0.1" - "@radix-ui/react-use-rect" "1.0.1" - "@radix-ui/react-use-size" "1.0.1" - "@radix-ui/rect" "1.0.1" - -"@radix-ui/react-portal@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.0.3.tgz#ffb961244c8ed1b46f039e6c215a6c4d9989bda1" - integrity sha512-xLYZeHrWoPmA5mEKEfZZevoVRK/Q43GfzRXkWV6qawIWWK8t6ifIiLQdd7rmQ4Vk1bmI21XhqF9BN3jWf+phpA== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-primitive" "1.0.3" - -"@radix-ui/react-primitive@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz#d49ea0f3f0b2fe3ab1cb5667eb03e8b843b914d0" - integrity sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-slot" "1.0.2" - -"@radix-ui/react-roving-focus@1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.4.tgz#e90c4a6a5f6ac09d3b8c1f5b5e81aab2f0db1974" - integrity sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/primitive" "1.0.1" - "@radix-ui/react-collection" "1.0.3" - "@radix-ui/react-compose-refs" "1.0.1" - "@radix-ui/react-context" "1.0.1" - "@radix-ui/react-direction" "1.0.1" - "@radix-ui/react-id" "1.0.1" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-use-callback-ref" "1.0.1" - "@radix-ui/react-use-controllable-state" "1.0.1" - -"@radix-ui/react-select@^1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@radix-ui/react-select/-/react-select-1.2.2.tgz#caa981fa0d672cf3c1b2a5240135524e69b32181" - integrity sha512-zI7McXr8fNaSrUY9mZe4x/HC0jTLY9fWNhO1oLWYMQGDXuV4UCivIGTxwioSzO0ZCYX9iSLyWmAh/1TOmX3Cnw== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/number" "1.0.1" - "@radix-ui/primitive" "1.0.1" - "@radix-ui/react-collection" "1.0.3" - "@radix-ui/react-compose-refs" "1.0.1" - "@radix-ui/react-context" "1.0.1" - "@radix-ui/react-direction" "1.0.1" - "@radix-ui/react-dismissable-layer" "1.0.4" - "@radix-ui/react-focus-guards" "1.0.1" - "@radix-ui/react-focus-scope" "1.0.3" - "@radix-ui/react-id" "1.0.1" - "@radix-ui/react-popper" "1.1.2" - "@radix-ui/react-portal" "1.0.3" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-slot" "1.0.2" - "@radix-ui/react-use-callback-ref" "1.0.1" - "@radix-ui/react-use-controllable-state" "1.0.1" - "@radix-ui/react-use-layout-effect" "1.0.1" - "@radix-ui/react-use-previous" "1.0.1" - "@radix-ui/react-visually-hidden" "1.0.3" - aria-hidden "^1.1.1" - react-remove-scroll "2.5.5" - -"@radix-ui/react-separator@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@radix-ui/react-separator/-/react-separator-1.0.3.tgz#be5a931a543d5726336b112f465f58585c04c8aa" - integrity sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-primitive" "1.0.3" - -"@radix-ui/react-slot@1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.0.2.tgz#a9ff4423eade67f501ffb32ec22064bc9d3099ab" - integrity sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-compose-refs" "1.0.1" - -"@radix-ui/react-toggle-group@1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@radix-ui/react-toggle-group/-/react-toggle-group-1.0.4.tgz#f5b5c8c477831b013bec3580c55e20a68179d6ec" - integrity sha512-Uaj/M/cMyiyT9Bx6fOZO0SAG4Cls0GptBWiBmBxofmDbNVnYYoyRWj/2M/6VCi/7qcXFWnHhRUfdfZFvvkuu8A== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/primitive" "1.0.1" - "@radix-ui/react-context" "1.0.1" - "@radix-ui/react-direction" "1.0.1" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-roving-focus" "1.0.4" - "@radix-ui/react-toggle" "1.0.3" - "@radix-ui/react-use-controllable-state" "1.0.1" - -"@radix-ui/react-toggle@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@radix-ui/react-toggle/-/react-toggle-1.0.3.tgz#aecb2945630d1dc5c512997556c57aba894e539e" - integrity sha512-Pkqg3+Bc98ftZGsl60CLANXQBBQ4W3mTFS9EJvNxKMZ7magklKV69/id1mlAlOFDDfHvlCms0fx8fA4CMKDJHg== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/primitive" "1.0.1" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-use-controllable-state" "1.0.1" - -"@radix-ui/react-toolbar@^1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@radix-ui/react-toolbar/-/react-toolbar-1.0.4.tgz#3211a105567fa016e89921b5b514877f833de559" - integrity sha512-tBgmM/O7a07xbaEkYJWYTXkIdU/1pW4/KZORR43toC/4XWyBCURK0ei9kMUdp+gTPPKBgYLxXmRSH1EVcIDp8Q== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/primitive" "1.0.1" - "@radix-ui/react-context" "1.0.1" - "@radix-ui/react-direction" "1.0.1" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-roving-focus" "1.0.4" - "@radix-ui/react-separator" "1.0.3" - "@radix-ui/react-toggle-group" "1.0.4" - -"@radix-ui/react-use-callback-ref@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz#f4bb1f27f2023c984e6534317ebc411fc181107a" - integrity sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-use-controllable-state@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz#ecd2ced34e6330caf89a82854aa2f77e07440286" - integrity sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-use-callback-ref" "1.0.1" - -"@radix-ui/react-use-escape-keydown@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz#217b840c250541609c66f67ed7bab2b733620755" - integrity sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-use-callback-ref" "1.0.1" - -"@radix-ui/react-use-layout-effect@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz#be8c7bc809b0c8934acf6657b577daf948a75399" - integrity sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-use-previous@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-previous/-/react-use-previous-1.0.1.tgz#b595c087b07317a4f143696c6a01de43b0d0ec66" - integrity sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-use-rect@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-rect/-/react-use-rect-1.0.1.tgz#fde50b3bb9fd08f4a1cd204572e5943c244fcec2" - integrity sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/rect" "1.0.1" - -"@radix-ui/react-use-size@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-size/-/react-use-size-1.0.1.tgz#1c5f5fea940a7d7ade77694bb98116fb49f870b2" - integrity sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-use-layout-effect" "1.0.1" - -"@radix-ui/react-visually-hidden@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.0.3.tgz#51aed9dd0fe5abcad7dee2a234ad36106a6984ac" - integrity sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-primitive" "1.0.3" - -"@radix-ui/rect@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@radix-ui/rect/-/rect-1.0.1.tgz#bf8e7d947671996da2e30f4904ece343bc4a883f" - integrity sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ== - dependencies: - "@babel/runtime" "^7.13.10" - -"@sideway/address@^4.1.3": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" - integrity sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw== +"@sideway/address@^4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.5.tgz#4bc149a0076623ced99ca8208ba780d65a99b9d5" + integrity sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q== dependencies: "@hapi/hoek" "^9.0.0" @@ -3914,11 +2849,6 @@ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.46.tgz#57501b58023776dbbae9e25619146286440be34c" integrity sha512-ng4ut1z2MCBhK/NwDVwIQp3pAUOCs/KNaW3cBxdFB2xTDrOuo1xuNmpr/9HHFhxqIvHrs1NTH3KJg6q+JSy1Kw== -"@sinclair/typebox@^0.25.16": - version "0.25.24" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718" - integrity sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ== - "@sinclair/typebox@^0.27.8": version "0.27.8" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" @@ -3931,6 +2861,20 @@ dependencies: type-detect "4.0.8" +"@sinonjs/commons@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" + integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^10.0.2": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" + integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== + dependencies: + "@sinonjs/commons" "^3.0.0" + "@sinonjs/fake-timers@^9.1.2": version "9.1.2" resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz#4eaab737fab77332ab132d396a3c0d364bd0ea8c" @@ -3938,541 +2882,216 @@ dependencies: "@sinonjs/commons" "^1.7.0" -"@storybook/addon-a11y@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/addon-a11y/-/addon-a11y-7.5.2.tgz#88876b99d49adda60f9c547e03cdb7d1b2df0571" - integrity sha512-HTYESaRr208b/AVguudRIy7rwRMk2bOkBr2P46ozK+8Y9mWXnKxw5O8qYS2kLuEuHfu1S+ktWp7SWjRvz8vHXA== +"@storybook/addon-a11y@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/addon-a11y/-/addon-a11y-8.4.7.tgz#0073090d8d4e0748249317a292ac27dc2c2b9ef2" + integrity sha512-GpUvXp6n25U1ZSv+hmDC+05BEqxWdlWjQTb/GaboRXZQeMBlze6zckpVb66spjmmtQAIISo0eZxX1+mGcVR7lA== dependencies: - "@storybook/addon-highlight" "7.5.2" - "@storybook/channels" "7.5.2" - "@storybook/client-logger" "7.5.2" - "@storybook/components" "7.5.2" - "@storybook/core-events" "7.5.2" - "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.5.2" - "@storybook/preview-api" "7.5.2" - "@storybook/theming" "7.5.2" - "@storybook/types" "7.5.2" + "@storybook/addon-highlight" "8.4.7" axe-core "^4.2.0" - lodash "^4.17.21" - react-resize-detector "^7.1.2" -"@storybook/addon-actions@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-7.5.2.tgz#8b692a4c4d62115ed3b93f9fd2aeecdc0a02e3f5" - integrity sha512-jKF3rrMEu42TgZ5AEszADpVdASDu1S4Ozp1Ymf4akHLkaMOv+yzzD7LV6YGjJz8S2IryndZqE47e6stF0T99uA== +"@storybook/addon-actions@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-8.4.7.tgz#210c6bb5a7e17c3664c300b4b69b6243ec34b9cd" + integrity sha512-mjtD5JxcPuW74T6h7nqMxWTvDneFtokg88p6kQ5OnC1M259iAXb//yiSZgu/quunMHPCXSiqn4FNOSgASTSbsA== dependencies: - "@storybook/client-logger" "7.5.2" - "@storybook/components" "7.5.2" - "@storybook/core-events" "7.5.2" "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.5.2" - "@storybook/preview-api" "7.5.2" - "@storybook/theming" "7.5.2" - "@storybook/types" "7.5.2" + "@types/uuid" "^9.0.1" dequal "^2.0.2" - lodash "^4.17.21" polished "^4.2.2" - prop-types "^15.7.2" - react-inspector "^6.0.0" - telejson "^7.2.0" - ts-dedent "^2.0.0" uuid "^9.0.0" -"@storybook/addon-backgrounds@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/addon-backgrounds/-/addon-backgrounds-7.5.2.tgz#3c732acb58f4bfd7cbc9eba233f3f1e92b2aad0d" - integrity sha512-CII8c+db8sVciWjFY0ProZi5E2d+cOc+XlVHCAVaUYp2Bp/1MV7en8etfLK7DEoH6kBVz1+t3TaPU+xjUTR8Ig== +"@storybook/addon-backgrounds@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/addon-backgrounds/-/addon-backgrounds-8.4.7.tgz#56856bdafc5a2ba18cc19422320883c9e8f66c1c" + integrity sha512-I4/aErqtFiazcoWyKafOAm3bLpxTj6eQuH/woSbk1Yx+EzN+Dbrgx1Updy8//bsNtKkcrXETITreqHC+a57DHQ== dependencies: - "@storybook/client-logger" "7.5.2" - "@storybook/components" "7.5.2" - "@storybook/core-events" "7.5.2" "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.5.2" - "@storybook/preview-api" "7.5.2" - "@storybook/theming" "7.5.2" - "@storybook/types" "7.5.2" memoizerific "^1.11.3" ts-dedent "^2.0.0" -"@storybook/addon-controls@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/addon-controls/-/addon-controls-7.5.2.tgz#02c35855151cac989df7dee3b76a9eb0b09d7d1d" - integrity sha512-f04VcBSfm3yMT1hvaFEwCRbdwiXQbddfEwhwjEVsqd+CA0s600W4L7B8tT4daXMsU6NsZyibev910IKTnDw6xQ== - dependencies: - "@storybook/blocks" "7.5.2" - "@storybook/client-logger" "7.5.2" - "@storybook/components" "7.5.2" - "@storybook/core-common" "7.5.2" - "@storybook/core-events" "7.5.2" - "@storybook/manager-api" "7.5.2" - "@storybook/node-logger" "7.5.2" - "@storybook/preview-api" "7.5.2" - "@storybook/theming" "7.5.2" - "@storybook/types" "7.5.2" - lodash "^4.17.21" +"@storybook/addon-controls@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/addon-controls/-/addon-controls-8.4.7.tgz#0c2ace0c7056248577f08f90471f29e861b485be" + integrity sha512-377uo5IsJgXLnQLJixa47+11V+7Wn9KcDEw+96aGCBCfLbWNH8S08tJHHnSu+jXg9zoqCAC23MetntVp6LetHA== + dependencies: + "@storybook/global" "^5.0.0" + dequal "^2.0.2" ts-dedent "^2.0.0" -"@storybook/addon-designs@7.0.5": - version "7.0.5" - resolved "https://registry.yarnpkg.com/@storybook/addon-designs/-/addon-designs-7.0.5.tgz#a3b19dc7b92bdd89f03bd462c59238e28528cec3" - integrity sha512-yB1YwkVhnTI28mS+00avAf7vPAppZi2pdXQF91725g+RoiM7llY87q+c1z2/YiQNQYNm2QXpYcrcYiLQzyr0NQ== +"@storybook/addon-designs@8.0.4": + version "8.0.4" + resolved "https://registry.yarnpkg.com/@storybook/addon-designs/-/addon-designs-8.0.4.tgz#354de98ea99e5feed5f77cfca52766dd246243af" + integrity sha512-BrEWks1BRnZis2e8OoE1LhFS+x2d094Tzpbb3jQBve2IfDv/X006RSuy1WyplNxskdYdBESCH45MlRn4lhP5ew== dependencies: "@figspec/react" "^1.0.0" -"@storybook/addon-docs@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/addon-docs/-/addon-docs-7.5.2.tgz#58a55912751167dfcf998ae5207d0c300e17991d" - integrity sha512-KxX4XuxK6YcI2mUosFkAlueMon/nby6mp3GRHenuK+nobY0ecfILqSTbsOeO1wqPxALBoq7fLnrgYhdDlandgQ== - dependencies: - "@jest/transform" "^29.3.1" - "@mdx-js/react" "^2.1.5" - "@storybook/blocks" "7.5.2" - "@storybook/client-logger" "7.5.2" - "@storybook/components" "7.5.2" - "@storybook/csf-plugin" "7.5.2" - "@storybook/csf-tools" "7.5.2" - "@storybook/global" "^5.0.0" - "@storybook/mdx2-csf" "^1.0.0" - "@storybook/node-logger" "7.5.2" - "@storybook/postinstall" "7.5.2" - "@storybook/preview-api" "7.5.2" - "@storybook/react-dom-shim" "7.5.2" - "@storybook/theming" "7.5.2" - "@storybook/types" "7.5.2" - fs-extra "^11.1.0" - remark-external-links "^8.0.0" - remark-slug "^6.0.0" +"@storybook/addon-docs@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/addon-docs/-/addon-docs-8.4.7.tgz#556515da1049f97023427301e11ecb52d0b9dbe7" + integrity sha512-NwWaiTDT5puCBSUOVuf6ME7Zsbwz7Y79WF5tMZBx/sLQ60vpmJVQsap6NSjvK1Ravhc21EsIXqemAcBjAWu80w== + dependencies: + "@mdx-js/react" "^3.0.0" + "@storybook/blocks" "8.4.7" + "@storybook/csf-plugin" "8.4.7" + "@storybook/react-dom-shim" "8.4.7" + react "^16.8.0 || ^17.0.0 || ^18.0.0" + react-dom "^16.8.0 || ^17.0.0 || ^18.0.0" ts-dedent "^2.0.0" -"@storybook/addon-essentials@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/addon-essentials/-/addon-essentials-7.5.2.tgz#bccf8ba98e2541e421d68b9d8abd0d8c54dcba13" - integrity sha512-bN7Q+8J3xVgNoBKCwtyX1O5jXuuJavYdAPiPQGrt6YegUi3gVfr5n/+/mNlu6Fd5AThFcVFei6gS9aiYmU/h8g== - dependencies: - "@storybook/addon-actions" "7.5.2" - "@storybook/addon-backgrounds" "7.5.2" - "@storybook/addon-controls" "7.5.2" - "@storybook/addon-docs" "7.5.2" - "@storybook/addon-highlight" "7.5.2" - "@storybook/addon-measure" "7.5.2" - "@storybook/addon-outline" "7.5.2" - "@storybook/addon-toolbars" "7.5.2" - "@storybook/addon-viewport" "7.5.2" - "@storybook/core-common" "7.5.2" - "@storybook/manager-api" "7.5.2" - "@storybook/node-logger" "7.5.2" - "@storybook/preview-api" "7.5.2" +"@storybook/addon-essentials@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/addon-essentials/-/addon-essentials-8.4.7.tgz#381c74230d1b1a209d5fdc017d241c016b98affe" + integrity sha512-+BtZHCBrYtQKILtejKxh0CDRGIgTl9PumfBOKRaihYb4FX1IjSAxoV/oo/IfEjlkF5f87vouShWsRa8EUauFDw== + dependencies: + "@storybook/addon-actions" "8.4.7" + "@storybook/addon-backgrounds" "8.4.7" + "@storybook/addon-controls" "8.4.7" + "@storybook/addon-docs" "8.4.7" + "@storybook/addon-highlight" "8.4.7" + "@storybook/addon-measure" "8.4.7" + "@storybook/addon-outline" "8.4.7" + "@storybook/addon-toolbars" "8.4.7" + "@storybook/addon-viewport" "8.4.7" ts-dedent "^2.0.0" -"@storybook/addon-highlight@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/addon-highlight/-/addon-highlight-7.5.2.tgz#b50af59399e7aa063693b457f1358eb92cc608f9" - integrity sha512-0vek42fHh7Aeinvkwge0ZTq5VfNsuMSejUv0wHa3zQWgUmlaRlGY8zDw7nG6LiIz6rnTBDTznsfyWenAySSHXg== +"@storybook/addon-highlight@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/addon-highlight/-/addon-highlight-8.4.7.tgz#06b9752977e38884007e9446f9a2b0c04c873229" + integrity sha512-whQIDBd3PfVwcUCrRXvCUHWClXe9mQ7XkTPCdPo4B/tZ6Z9c6zD8JUHT76ddyHivixFLowMnA8PxMU6kCMAiNw== dependencies: - "@storybook/core-events" "7.5.2" "@storybook/global" "^5.0.0" - "@storybook/preview-api" "7.5.2" -"@storybook/addon-links@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-7.5.2.tgz#4b1747f70ca284faafe69aed8db15504079a8bbe" - integrity sha512-IhUYNOJQYJd8Cnb93l8egnGCGhHV0VHo6HmZT9YjBVuUtetGQbW8Eoh0pQwuklUrJ3jLPwMoKFhN1irQXJjZwQ== +"@storybook/addon-links@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-8.4.7.tgz#c38b2b63c3b0308adacff4b0758464a0657154c4" + integrity sha512-L/1h4dMeMKF+MM0DanN24v5p3faNYbbtOApMgg7SlcBT/tgo3+cAjkgmNpYA8XtKnDezm+T2mTDhB8mmIRZpIQ== dependencies: - "@storybook/client-logger" "7.5.2" - "@storybook/core-events" "7.5.2" - "@storybook/csf" "^0.1.0" + "@storybook/csf" "^0.1.11" "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.5.2" - "@storybook/preview-api" "7.5.2" - "@storybook/router" "7.5.2" - "@storybook/types" "7.5.2" - prop-types "^15.7.2" ts-dedent "^2.0.0" -"@storybook/addon-mdx-gfm@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/addon-mdx-gfm/-/addon-mdx-gfm-7.5.2.tgz#147c79a927131cee2f03d621ace5dac8fd18cc65" - integrity sha512-Sq8+7rdpRsYKlDwvO68t3H+tW3u/vWEGPvzQ9ZBd6rVuKoNj0+hqgsrDfux/DZMEJSclKM21a49hJ+zS9MLT+Q== +"@storybook/addon-mdx-gfm@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/addon-mdx-gfm/-/addon-mdx-gfm-8.4.7.tgz#6c382ab67a82aad8be1f8539e1a5b74038dcb910" + integrity sha512-RLenpDmY0HZLqh8T6ZamSeUaLkFFJGMivIs5T3IhAo+BecYA1gWzD+T5er/k8AH8HyYJUtxt/IMCx5UrGnUr7g== dependencies: - "@storybook/node-logger" "7.5.2" - remark-gfm "^3.0.1" + remark-gfm "^4.0.0" ts-dedent "^2.0.0" -"@storybook/addon-measure@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/addon-measure/-/addon-measure-7.5.2.tgz#7908589225bcab26a27e636d02fce0edb4c2621f" - integrity sha512-fkvORLaYVC/yNMFzHRHmzlvniY7sWtpFxaRW+e4++hGXYV4VQjOBlXzdMxQhAg1DCVWD6QV8xnUQPBGrsEklog== +"@storybook/addon-measure@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/addon-measure/-/addon-measure-8.4.7.tgz#9d556ba34b57c13ad8d00bd953b27ec405a64d23" + integrity sha512-QfvqYWDSI5F68mKvafEmZic3SMiK7zZM8VA0kTXx55hF/+vx61Mm0HccApUT96xCXIgmwQwDvn9gS4TkX81Dmw== dependencies: - "@storybook/client-logger" "7.5.2" - "@storybook/components" "7.5.2" - "@storybook/core-events" "7.5.2" "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.5.2" - "@storybook/preview-api" "7.5.2" - "@storybook/types" "7.5.2" tiny-invariant "^1.3.1" -"@storybook/addon-outline@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/addon-outline/-/addon-outline-7.5.2.tgz#43e8411d2c3f6fd837841aa883749d123ec4fc5c" - integrity sha512-BgDnVzE9xCN1xwuCebK6+apNCtVcw1ToW8N6R3vNgXgNPE1euT3jxkDH7K4RJR24Flu6BotWjX3dqv8k+8xGKw== +"@storybook/addon-outline@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/addon-outline/-/addon-outline-8.4.7.tgz#8a35fe519dd639bb287a370da2222e6ffdce4020" + integrity sha512-6LYRqUZxSodmAIl8icr585Oi8pmzbZ90aloZJIpve+dBAzo7ydYrSQxxoQEVltXbKf3VeVcrs64ouAYqjisMYA== dependencies: - "@storybook/client-logger" "7.5.2" - "@storybook/components" "7.5.2" - "@storybook/core-events" "7.5.2" "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.5.2" - "@storybook/preview-api" "7.5.2" - "@storybook/types" "7.5.2" ts-dedent "^2.0.0" -"@storybook/addon-toolbars@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/addon-toolbars/-/addon-toolbars-7.5.2.tgz#7abf28ea23f409fcb891cc8fb53fad96fbb31d2a" - integrity sha512-BXzb5NOpILFOM7EOBxcF2Qj/q6BicWZ1AvAddORWGmqSa/MxMIa4X52oKXFUTHKBkrTO1X0XqHmoF88qm3TUFg== - dependencies: - "@storybook/client-logger" "7.5.2" - "@storybook/components" "7.5.2" - "@storybook/manager-api" "7.5.2" - "@storybook/preview-api" "7.5.2" - "@storybook/theming" "7.5.2" - -"@storybook/addon-viewport@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/addon-viewport/-/addon-viewport-7.5.2.tgz#f85136ec35445a9c310c73ec248173a1ef401f79" - integrity sha512-qN5X9vgp0v+WGXyFBHQ/CqjdtmnCoHhUjqXmBxEGBziJz/tZwWwtTGWeUUZpuTjCGiZutLrizOFl5MqQAI+ipg== - dependencies: - "@storybook/client-logger" "7.5.2" - "@storybook/components" "7.5.2" - "@storybook/core-events" "7.5.2" - "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.5.2" - "@storybook/preview-api" "7.5.2" - "@storybook/theming" "7.5.2" - memoizerific "^1.11.3" - prop-types "^15.7.2" +"@storybook/addon-toolbars@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/addon-toolbars/-/addon-toolbars-8.4.7.tgz#b898d4deaf6f5a58f3b70bd8d136cd4ec2844b79" + integrity sha512-OSfdv5UZs+NdGB+nZmbafGUWimiweJ/56gShlw8Neo/4jOJl1R3rnRqqY7MYx8E4GwoX+i3GF5C3iWFNQqlDcw== -"@storybook/blocks@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/blocks/-/blocks-7.5.2.tgz#625105555911ebb1415a3e5f4aeedf38e608a340" - integrity sha512-Tf6XE/YcnWQVBJRcJWJzhkahjSymv6QZuxMAiKFD8v48QRJ8kTxz1tBN9676Ux+l1WwtVWxwvd/0kRKKxE70wQ== - dependencies: - "@storybook/channels" "7.5.2" - "@storybook/client-logger" "7.5.2" - "@storybook/components" "7.5.2" - "@storybook/core-events" "7.5.2" - "@storybook/csf" "^0.1.0" - "@storybook/docs-tools" "7.5.2" - "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.5.2" - "@storybook/preview-api" "7.5.2" - "@storybook/theming" "7.5.2" - "@storybook/types" "7.5.2" - "@types/lodash" "^4.14.167" - color-convert "^2.0.1" - dequal "^2.0.2" - lodash "^4.17.21" - markdown-to-jsx "^7.1.8" +"@storybook/addon-viewport@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/addon-viewport/-/addon-viewport-8.4.7.tgz#e65c53608f52149c06347b395487960605fc4805" + integrity sha512-hvczh/jjuXXcOogih09a663sRDDSATXwbE866al1DXgbDFraYD/LxX/QDb38W9hdjU9+Qhx8VFIcNWoMQns5HQ== + dependencies: memoizerific "^1.11.3" - polished "^4.2.2" - react-colorful "^5.1.2" - telejson "^7.2.0" - tocbot "^4.20.1" - ts-dedent "^2.0.0" - util-deprecate "^1.0.2" -"@storybook/builder-manager@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/builder-manager/-/builder-manager-7.5.2.tgz#326fb75298b0bd534e2adfc28cfe860cc5db1759" - integrity sha512-s4gOudrft/E4lQ19YNrzL2VJwMEpdY6z319fTlc16J1F6XZSytw6CIZPs3x9yX5CKf4/leWnN5etODaOx7NajQ== - dependencies: - "@fal-works/esbuild-plugin-global-externals" "^2.1.2" - "@storybook/core-common" "7.5.2" - "@storybook/manager" "7.5.2" - "@storybook/node-logger" "7.5.2" - "@types/ejs" "^3.1.1" - "@types/find-cache-dir" "^3.2.1" - "@yarnpkg/esbuild-plugin-pnp" "^3.0.0-rc.10" - browser-assert "^1.2.1" - ejs "^3.1.8" - esbuild "^0.18.0" - esbuild-plugin-alias "^0.2.1" - express "^4.17.3" - find-cache-dir "^3.0.0" - fs-extra "^11.1.0" - process "^0.11.10" - util "^0.12.4" +"@storybook/addon-webpack5-compiler-babel@3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@storybook/addon-webpack5-compiler-babel/-/addon-webpack5-compiler-babel-3.0.5.tgz#730378d44dcc6756005ac59d1e864238852f525e" + integrity sha512-9dlc5PrehEFUHqkgj8x+aKtOY9XH9Zk6WBbtpgY/JCQ7waJ2VvhyDnrgJeXfek+WYlSkJElnta6SlqP+XRG0PQ== + dependencies: + "@babel/core" "^7.26.0" + babel-loader "^9.2.1" -"@storybook/builder-webpack5@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/builder-webpack5/-/builder-webpack5-7.5.2.tgz#db3370e3ec53b7275630518e0e1ac67c75b0d3c9" - integrity sha512-eGMbwyw65z1Fmsq6U/rXPjywBCDwtI5ZvV9zendxxeAVNLpzTFioxlRNYsYZqcLEfE6GoNYjIOkn4S9UV0N+VA== - dependencies: - "@babel/core" "^7.22.0" - "@storybook/channels" "7.5.2" - "@storybook/client-logger" "7.5.2" - "@storybook/core-common" "7.5.2" - "@storybook/core-events" "7.5.2" - "@storybook/core-webpack" "7.5.2" - "@storybook/node-logger" "7.5.2" - "@storybook/preview" "7.5.2" - "@storybook/preview-api" "7.5.2" - "@swc/core" "^1.3.82" - "@types/node" "^18.0.0" +"@storybook/blocks@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/blocks/-/blocks-8.4.7.tgz#ee17f59dd52d11c97c39b0f6b03957085a80ad95" + integrity sha512-+QH7+JwXXXIyP3fRCxz/7E2VZepAanXJM7G8nbR3wWsqWgrRp4Wra6MvybxAYCxU7aNfJX5c+RW84SNikFpcIA== + dependencies: + "@storybook/csf" "^0.1.11" + "@storybook/icons" "^1.2.12" + ts-dedent "^2.0.0" + +"@storybook/builder-webpack5@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/builder-webpack5/-/builder-webpack5-8.4.7.tgz#5bc15568716bbf4f45a88fc389e25fa2ce50a8c2" + integrity sha512-O8LpsQ+4g2x5kh7rI9+jEUdX8k1a5egBQU1lbudmHchqsV0IKiVqBD9LL5Gj3wpit4vB8coSW4ZWTFBw8FQb4Q== + dependencies: + "@storybook/core-webpack" "8.4.7" + "@types/node" "^22.0.0" "@types/semver" "^7.3.4" - babel-loader "^9.0.0" - babel-plugin-named-exports-order "^0.0.2" browser-assert "^1.2.1" case-sensitive-paths-webpack-plugin "^2.4.0" + cjs-module-lexer "^1.2.3" constants-browserify "^1.0.0" css-loader "^6.7.1" - express "^4.17.3" + es-module-lexer "^1.5.0" fork-ts-checker-webpack-plugin "^8.0.0" - fs-extra "^11.1.0" html-webpack-plugin "^5.5.0" + magic-string "^0.30.5" path-browserify "^1.0.1" process "^0.11.10" semver "^7.3.7" style-loader "^3.3.1" - swc-loader "^0.2.3" terser-webpack-plugin "^5.3.1" ts-dedent "^2.0.0" url "^0.11.0" util "^0.12.4" util-deprecate "^1.0.2" webpack "5" - webpack-dev-middleware "^6.1.1" + webpack-dev-middleware "^6.1.2" webpack-hot-middleware "^2.25.1" - webpack-virtual-modules "^0.5.0" + webpack-virtual-modules "^0.6.0" -"@storybook/channels@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-7.5.2.tgz#f5ea597a799e13b7307fe79067faede5e13e6619" - integrity sha512-3SgqWq9NS0XX1QxK3riuaOLrReHWwVhI63u6q1ryDD3SttpmAezZETibOAtzDuk2FKgsyHTmAlmcGQf4ZxhOJA== - dependencies: - "@storybook/client-logger" "7.5.2" - "@storybook/core-events" "7.5.2" - "@storybook/global" "^5.0.0" - qs "^6.10.0" - telejson "^7.2.0" - tiny-invariant "^1.3.1" +"@storybook/components@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/components/-/components-8.4.7.tgz#09eeffa07aa672ad3966ca1764a43003731b1d30" + integrity sha512-uyJIcoyeMWKAvjrG9tJBUCKxr2WZk+PomgrgrUwejkIfXMO76i6jw9BwLa0NZjYdlthDv30r9FfbYZyeNPmF0g== -"@storybook/cli@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/cli/-/cli-7.5.2.tgz#f5ef6edfecd048856b4fc9d89e4dfacc610562e5" - integrity sha512-8JPvA/K66zBmRFpRRwsD0JLqZUODRrGmNuAWx+Bj1K8wqbg68MYnOflbkSIxIVxrfhd39OrffV0h8CwKNL9gAg== +"@storybook/core-webpack@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/core-webpack/-/core-webpack-8.4.7.tgz#660d1cbd03a91fee27b65e6acc2f9269ed1fbfc8" + integrity sha512-Tj+CjQLpFyBJxhhMms+vbPT3+gTRAiQlrhY3L1IEVwBa3wtRMS0qjozH26d1hK4G6mUIEdwu13L54HMU/w33Sg== dependencies: - "@babel/core" "^7.22.9" - "@babel/preset-env" "^7.22.9" - "@babel/types" "^7.22.5" - "@ndelangen/get-tarball" "^3.0.7" - "@storybook/codemod" "7.5.2" - "@storybook/core-common" "7.5.2" - "@storybook/core-events" "7.5.2" - "@storybook/core-server" "7.5.2" - "@storybook/csf-tools" "7.5.2" - "@storybook/node-logger" "7.5.2" - "@storybook/telemetry" "7.5.2" - "@storybook/types" "7.5.2" - "@types/semver" "^7.3.4" - "@yarnpkg/fslib" "2.10.3" - "@yarnpkg/libzip" "2.3.0" - chalk "^4.1.0" - commander "^6.2.1" - cross-spawn "^7.0.3" - detect-indent "^6.1.0" - envinfo "^7.7.3" - execa "^5.0.0" - express "^4.17.3" - find-up "^5.0.0" - fs-extra "^11.1.0" - get-npm-tarball-url "^2.0.3" - get-port "^5.1.1" - giget "^1.0.0" - globby "^11.0.2" - jscodeshift "^0.14.0" - leven "^3.1.0" - ora "^5.4.1" - prettier "^2.8.0" - prompts "^2.4.0" - puppeteer-core "^2.1.1" - read-pkg-up "^7.0.1" - semver "^7.3.7" - simple-update-notifier "^2.0.0" - strip-json-comments "^3.0.1" - tempy "^1.0.1" + "@types/node" "^22.0.0" ts-dedent "^2.0.0" - util-deprecate "^1.0.2" -"@storybook/client-logger@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-7.5.2.tgz#ffe6fd3cb336fc7dac6670412c4c8bf70e89c1d1" - integrity sha512-7YgLItlmiYDzWYexTaRNuHhtFarh9krsI+8l7Yjn9ryoHSTJUcTWx+yPJm1II+PQR8v/x5UgsxzultjgEurfRQ== +"@storybook/core@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/core/-/core-8.4.7.tgz#af9cbb3f26f0b6c98c679a134ce776c202570d66" + integrity sha512-7Z8Z0A+1YnhrrSXoKKwFFI4gnsLbWzr8fnDCU6+6HlDukFYh8GHRcZ9zKfqmy6U3hw2h8H5DrHsxWfyaYUUOoA== dependencies: - "@storybook/global" "^5.0.0" - -"@storybook/codemod@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/codemod/-/codemod-7.5.2.tgz#d59942fb6d86cdf1c482ddc7a8450d58bfbbbca2" - integrity sha512-PxZg0w4OlmFB4dBzB+sCgwmHNke0n1N8vNooxtcuusrLKlbUfmssYRnQn6yRSJw0WfkUYgI10CWxGaamaOFekA== - dependencies: - "@babel/core" "^7.22.9" - "@babel/preset-env" "^7.22.9" - "@babel/types" "^7.22.5" - "@storybook/csf" "^0.1.0" - "@storybook/csf-tools" "7.5.2" - "@storybook/node-logger" "7.5.2" - "@storybook/types" "7.5.2" - "@types/cross-spawn" "^6.0.2" - cross-spawn "^7.0.3" - globby "^11.0.2" - jscodeshift "^0.14.0" - lodash "^4.17.21" - prettier "^2.8.0" - recast "^0.23.1" - -"@storybook/components@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/components/-/components-7.5.2.tgz#5409236b5b1b5d0189707cd76ea99220e3673884" - integrity sha512-OP+o6AoxoQDbqjk/jdQ1arlc1T8601eCL+rS1dJY9EtAFq7Z0LEFtafhEW/Lx8FotfVGjfCNptH9ODhHU6e5Jw== - dependencies: - "@radix-ui/react-select" "^1.2.2" - "@radix-ui/react-toolbar" "^1.0.4" - "@storybook/client-logger" "7.5.2" - "@storybook/csf" "^0.1.0" - "@storybook/global" "^5.0.0" - "@storybook/theming" "7.5.2" - "@storybook/types" "7.5.2" - memoizerific "^1.11.3" - use-resize-observer "^9.1.0" - util-deprecate "^1.0.2" - -"@storybook/core-client@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/core-client/-/core-client-7.5.2.tgz#52f4b680273fdf1d3afe98a5adbbdee882ca7c44" - integrity sha512-mMDSBxc7esMCu0FOkama9XYHzIHYGhBj8roX+XaTaLDYXaw/UajcCuzcO7fFBHNn3Vdqh2ufIxlI7359v3IqPw== - dependencies: - "@storybook/client-logger" "7.5.2" - "@storybook/preview-api" "7.5.2" - -"@storybook/core-common@7.5.2", "@storybook/core-common@^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/core-common/-/core-common-7.5.2.tgz#7fef2bdb0c9d83ead2a9b5e1f479edb3106c6098" - integrity sha512-js7fIH4wHS08dBuIVsr3JnwMtKn5O1Izc/Zor4t6PntLWkGGX4X/GxbOkasGX5SkCT1qUtB9RpdPd1sUkLhIgw== - dependencies: - "@storybook/core-events" "7.5.2" - "@storybook/node-logger" "7.5.2" - "@storybook/types" "7.5.2" - "@types/find-cache-dir" "^3.2.1" - "@types/node" "^18.0.0" - "@types/node-fetch" "^2.6.4" - "@types/pretty-hrtime" "^1.0.0" - chalk "^4.1.0" - esbuild "^0.18.0" - esbuild-register "^3.5.0" - file-system-cache "2.3.0" - find-cache-dir "^3.0.0" - find-up "^5.0.0" - fs-extra "^11.1.0" - glob "^10.0.0" - handlebars "^4.7.7" - lazy-universal-dotenv "^4.0.0" - node-fetch "^2.0.0" - picomatch "^2.3.0" - pkg-dir "^5.0.0" - pretty-hrtime "^1.0.3" - resolve-from "^5.0.0" - ts-dedent "^2.0.0" - -"@storybook/core-events@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-7.5.2.tgz#e5185e39fdcb7ab93510f6174798d5f242e1041b" - integrity sha512-DV8bFEFVKDEvaH87KYPXDE0YEV+Y9yjFv2xxmC9pF8l+MWCtVW72RBLhB+gU5NM1bkHrRDNb0lOJfVGKlhxOog== - dependencies: - ts-dedent "^2.0.0" - -"@storybook/core-server@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/core-server/-/core-server-7.5.2.tgz#c87e49f7109d82d389a927127ed673e3eaade4b2" - integrity sha512-4oXpy1L/NyHiz/OXNUFnSeMLA/+lTgQAlVx86pRbEBDj6snt1/NSx2+yZyFtZ/XTnJ22BPpM8IIrgm95ZlQKmA== - dependencies: - "@aw-web-design/x-default-browser" "1.4.126" - "@discoveryjs/json-ext" "^0.5.3" - "@storybook/builder-manager" "7.5.2" - "@storybook/channels" "7.5.2" - "@storybook/core-common" "7.5.2" - "@storybook/core-events" "7.5.2" - "@storybook/csf" "^0.1.0" - "@storybook/csf-tools" "7.5.2" - "@storybook/docs-mdx" "^0.1.0" - "@storybook/global" "^5.0.0" - "@storybook/manager" "7.5.2" - "@storybook/node-logger" "7.5.2" - "@storybook/preview-api" "7.5.2" - "@storybook/telemetry" "7.5.2" - "@storybook/types" "7.5.2" - "@types/detect-port" "^1.3.0" - "@types/node" "^18.0.0" - "@types/pretty-hrtime" "^1.0.0" - "@types/semver" "^7.3.4" + "@storybook/csf" "^0.1.11" better-opn "^3.0.2" - chalk "^4.1.0" - cli-table3 "^0.6.1" - compression "^1.7.4" - detect-port "^1.3.0" - express "^4.17.3" - fs-extra "^11.1.0" - globby "^11.0.2" - ip "^2.0.0" - lodash "^4.17.21" - open "^8.4.0" - pretty-hrtime "^1.0.3" - prompts "^2.4.0" - read-pkg-up "^7.0.1" - semver "^7.3.7" - telejson "^7.2.0" - tiny-invariant "^1.3.1" - ts-dedent "^2.0.0" - util "^0.12.4" - util-deprecate "^1.0.2" - watchpack "^2.2.0" + browser-assert "^1.2.1" + esbuild "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0" + esbuild-register "^3.5.0" + jsdoc-type-pratt-parser "^4.0.0" + process "^0.11.10" + recast "^0.23.5" + semver "^7.6.2" + util "^0.12.5" ws "^8.2.3" -"@storybook/core-webpack@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/core-webpack/-/core-webpack-7.5.2.tgz#817f193e572ef053afe4337f86cfea647e47a704" - integrity sha512-2Z6EkiiDIbwHY6w9ye8hbm7GicJbUYsFOFFx/96uKKxHB4DPcKK3A3bAT5eNBVQlN+7DMolFuJAZA7pz87KUhA== +"@storybook/csf-plugin@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/csf-plugin/-/csf-plugin-8.4.7.tgz#0117c872b05bf033eec089ab0224e0fab01da810" + integrity sha512-Fgogplu4HImgC+AYDcdGm1rmL6OR1rVdNX1Be9C/NEXwOCpbbBwi0BxTf/2ZxHRk9fCeaPEcOdP5S8QHfltc1g== dependencies: - "@storybook/core-common" "7.5.2" - "@storybook/node-logger" "7.5.2" - "@storybook/types" "7.5.2" - "@types/node" "^18.0.0" - ts-dedent "^2.0.0" - -"@storybook/csf-plugin@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/csf-plugin/-/csf-plugin-7.5.2.tgz#fe4b78d7e913e4666c924f98d48cb7e8f8d9030b" - integrity sha512-ndjn1ia2rQLO1r1z6mXv6nipLzJMwWJp31h16lQUXIBQEOiGKjGGvObiuKaad3nNHxWHpGra4zUg7R+54Yw0Hw== - dependencies: - "@storybook/csf-tools" "7.5.2" unplugin "^1.3.1" -"@storybook/csf-tools@7.5.2", "@storybook/csf-tools@^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/csf-tools/-/csf-tools-7.5.2.tgz#204532b78740f5a3af399f304dbcb8b4ca856957" - integrity sha512-yXaEDREc2wvkjYkQqDMatJw23f0fEFhMIf/zBNF7YljeYw0j8jAg/7XI5WJJSN2KTxD/feD/yD+6eaLUXvrneQ== - dependencies: - "@babel/generator" "^7.22.9" - "@babel/parser" "^7.22.7" - "@babel/traverse" "^7.22.8" - "@babel/types" "^7.22.5" - "@storybook/csf" "^0.1.0" - "@storybook/types" "7.5.2" - fs-extra "^11.1.0" - recast "^0.23.1" - ts-dedent "^2.0.0" - "@storybook/csf@^0.0.1": version "0.0.1" resolved "https://registry.yarnpkg.com/@storybook/csf/-/csf-0.0.1.tgz#95901507dc02f0bc6f9ac8ee1983e2fc5bb98ce6" @@ -4480,129 +3099,50 @@ dependencies: lodash "^4.17.15" -"@storybook/csf@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@storybook/csf/-/csf-0.1.0.tgz#62315bf9704f3aa4e0d4d909b9033833774ddfbe" - integrity sha512-uk+jMXCZ8t38jSTHk2o5btI+aV2Ksbvl6DoOv3r6VaCM1KZqeuMwtwywIQdflkA8/6q/dKT8z8L+g8hC4GC3VQ== - dependencies: - type-fest "^2.19.0" - -"@storybook/csf@^0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@storybook/csf/-/csf-0.1.1.tgz#abccc8c3e49aed0a6a7e87beb0d1c262b1921c06" - integrity sha512-4hE3AlNVxR60Wc5KSC68ASYzUobjPqtSKyhV6G+ge0FIXU55N5nTY7dXGRZHQGDBPq+XqchMkIdlkHPRs8nTHg== +"@storybook/csf@^0.1.11": + version "0.1.13" + resolved "https://registry.yarnpkg.com/@storybook/csf/-/csf-0.1.13.tgz#c8a9bea2ae518a3d9700546748fa30a8b07f7f80" + integrity sha512-7xOOwCLGB3ebM87eemep89MYRFTko+D8qE7EdAAq74lgdqRR5cOUtYWJLjO2dLtP94nqoOdHJo6MdLLKzg412Q== dependencies: type-fest "^2.19.0" -"@storybook/docs-mdx@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@storybook/docs-mdx/-/docs-mdx-0.1.0.tgz#33ba0e39d1461caf048b57db354b2cc410705316" - integrity sha512-JDaBR9lwVY4eSH5W8EGHrhODjygPd6QImRbwjAuJNEnY0Vw4ie3bPkeGfnacB3OBW6u/agqPv2aRlR46JcAQLg== - -"@storybook/docs-tools@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/docs-tools/-/docs-tools-7.5.2.tgz#ae59ac6b061c5471ed70f461f61d4d24c8fd8c51" - integrity sha512-mBiZFhzMA2ub7wX0ho3UqKqKXO+xUi/rqb4KV4PihLKlhThEdzKyYrIZO4W90NOmlp1yUJJcjG8D8SUPuHQoTw== - dependencies: - "@storybook/core-common" "7.5.2" - "@storybook/preview-api" "7.5.2" - "@storybook/types" "7.5.2" - "@types/doctrine" "^0.0.3" - doctrine "^3.0.0" - lodash "^4.17.21" - "@storybook/global@^5.0.0": version "5.0.0" resolved "https://registry.yarnpkg.com/@storybook/global/-/global-5.0.0.tgz#b793d34b94f572c1d7d9e0f44fac4e0dbc9572ed" integrity sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ== -"@storybook/manager-api@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/manager-api/-/manager-api-7.5.2.tgz#bb22c4d92fa8e31223a09e6ea089b03eda7db45e" - integrity sha512-WX8GjBkITRQzhQ08WEAVjdDW8QqqIQhWOpFzXUYCxCNzt1eSALI31QQ+M1/MYymw+TOkotC/SMcn/puIAm4rdA== - dependencies: - "@storybook/channels" "7.5.2" - "@storybook/client-logger" "7.5.2" - "@storybook/core-events" "7.5.2" - "@storybook/csf" "^0.1.0" - "@storybook/global" "^5.0.0" - "@storybook/router" "7.5.2" - "@storybook/theming" "7.5.2" - "@storybook/types" "7.5.2" - dequal "^2.0.2" - lodash "^4.17.21" - memoizerific "^1.11.3" - semver "^7.3.7" - store2 "^2.14.2" - telejson "^7.2.0" - ts-dedent "^2.0.0" +"@storybook/icons@^1.2.12": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@storybook/icons/-/icons-1.3.0.tgz#a5c1460fb15a7260e0b638ab86163f7347a0061e" + integrity sha512-Nz/UzeYQdUZUhacrPyfkiiysSjydyjgg/p0P9HxB4p/WaJUUjMAcaoaLgy3EXx61zZJ3iD36WPuDkZs5QYrA0A== -"@storybook/manager@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/manager/-/manager-7.5.2.tgz#9ca25f9e57058c55bd517c3e13770ad772d6fd8f" - integrity sha512-5l1z9SpCFQBcHjC5mbfWQ8mPTYFxD8GQ9mNZ6PPrj47yu9TyCRYSQj7A8ZXJiIY1ZEg4a2BCW7fPUYG+lX6Drw== +"@storybook/manager-api@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/manager-api/-/manager-api-8.4.7.tgz#4e13debf645c9300d7d6d49195e720d0c7ecd261" + integrity sha512-ELqemTviCxAsZ5tqUz39sDmQkvhVAvAgiplYy9Uf15kO0SP2+HKsCMzlrm2ue2FfkUNyqbDayCPPCB0Cdn/mpQ== -"@storybook/mdx2-csf@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@storybook/mdx2-csf/-/mdx2-csf-1.0.0.tgz#ce4b2e44c9082bf382db835eef611b0097b7d771" - integrity sha512-dBAnEL4HfxxJmv7LdEYUoZlQbWj9APZNIbOaq0tgF8XkxiIbzqvgB0jhL/9UOrysSDbQWBiCRTu2wOVxedGfmw== - -"@storybook/node-logger@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-7.5.2.tgz#4ed36afac7b784eebaf11f4ebf657744b42a7458" - integrity sha512-VIBuwPJOylu8vJofk1VfmqxlhXgbBgV0pCTo/UzdQAbc3w5y+qNRemf8goWxYEY+L9p6oUXqm/i9+bNGyX7/Mw== - -"@storybook/postinstall@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/postinstall/-/postinstall-7.5.2.tgz#0a4924f7b2919e698626c3dfa3ee6c8e948beb42" - integrity sha512-fKgyV1fAgckDoxQkUGJl5uzjzGC5esC/nITiCjccZFrqxt9mgmz4VAUkMeseD5tfWQ5oFA0Xdgtrrcl39+chnw== - -"@storybook/preset-react-webpack@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/preset-react-webpack/-/preset-react-webpack-7.5.2.tgz#0fcb80358c4c4c0499a14ccb2d63c4f15d09303c" - integrity sha512-d0RY45ixWDArW4OSoGYrbm0oZbE6Z3kOi6Z64ed4E1ERQfEizq1EAgW/n7QqDMBKfPMNdNncDyGRiiSIdgyuBg== - dependencies: - "@babel/preset-flow" "^7.22.5" - "@babel/preset-react" "^7.22.5" - "@pmmmwh/react-refresh-webpack-plugin" "^0.5.5" - "@storybook/core-webpack" "7.5.2" - "@storybook/docs-tools" "7.5.2" - "@storybook/node-logger" "7.5.2" - "@storybook/react" "7.5.2" +"@storybook/preset-react-webpack@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/preset-react-webpack/-/preset-react-webpack-8.4.7.tgz#7b303f464228035a919ea18a3cd6193f6776c2bc" + integrity sha512-geTSBKyrBagVihil5MF7LkVFynbfHhCinvnbCZZqXW7M1vgcxvatunUENB+iV8eWg/0EJ+8O7scZL+BAxQ/2qg== + dependencies: + "@storybook/core-webpack" "8.4.7" + "@storybook/react" "8.4.7" "@storybook/react-docgen-typescript-plugin" "1.0.6--canary.9.0c3f3b7.0" - "@types/node" "^18.0.0" + "@types/node" "^22.0.0" "@types/semver" "^7.3.4" - babel-plugin-add-react-displayname "^0.0.5" - babel-plugin-react-docgen "^4.2.1" - fs-extra "^11.1.0" - react-refresh "^0.11.0" + find-up "^5.0.0" + magic-string "^0.30.5" + react-docgen "^7.0.0" + resolve "^1.22.8" semver "^7.3.7" + tsconfig-paths "^4.2.0" webpack "5" -"@storybook/preview-api@7.5.2", "@storybook/preview-api@^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/preview-api/-/preview-api-7.5.2.tgz#72512c11369975904894c6f50036f10d3c329e59" - integrity sha512-rpmHR/09UBSnorDBTcE7JgHUQjZLO146NCI+vbI7Pqfb4QX/8lhwkFr4cuHRAR16mv6DAJbDVoPETO0Z/CH9aw== - dependencies: - "@storybook/channels" "7.5.2" - "@storybook/client-logger" "7.5.2" - "@storybook/core-events" "7.5.2" - "@storybook/csf" "^0.1.0" - "@storybook/global" "^5.0.0" - "@storybook/types" "7.5.2" - "@types/qs" "^6.9.5" - dequal "^2.0.2" - lodash "^4.17.21" - memoizerific "^1.11.3" - qs "^6.10.0" - synchronous-promise "^2.0.15" - ts-dedent "^2.0.0" - util-deprecate "^1.0.2" - -"@storybook/preview@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/preview/-/preview-7.5.2.tgz#85c35c0931bb6f096f1fc6ed2e2b25eb55f8a0d0" - integrity sha512-dA5VpHp0D9nh9/wOzWP8At1wtz/SiaMBbwaiEOFTFUGcPerrkroEWadIlSSB7vgQJ9yWiD4l3KDaS8ANzHWtPQ== +"@storybook/preview-api@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/preview-api/-/preview-api-8.4.7.tgz#85e01a97f4182b974581765d725f6c7a7d190013" + integrity sha512-0QVQwHw+OyZGHAJEXo6Knx+6/4er7n2rTDE5RYJ9F2E2Lg42E19pfdLlq2Jhoods2Xrclo3wj6GWR//Ahi39Eg== "@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0": version "1.0.6--canary.9.0c3f3b7.0" @@ -4617,197 +3157,136 @@ react-docgen-typescript "^2.2.2" tslib "^2.0.0" -"@storybook/react-dom-shim@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/react-dom-shim/-/react-dom-shim-7.5.2.tgz#0f937849d2e208d40e7086bd4e872670184f328d" - integrity sha512-x7h3TTLRLs8mrsCBKXbvjBRFms73XrNlm0Lo5Tu/Tf//+pwOFq+2sGBkqbRkYd54jNHhpqNF7+UUdzA93ESnbQ== - -"@storybook/react-webpack5@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/react-webpack5/-/react-webpack5-7.5.2.tgz#946e106686dba2204f0b9d220efb955810f08809" - integrity sha512-whnuFdY1UtHGLvIEXTRuHZd+m/Ra3bUnLdvTQJRcJpt/Fmn+Bf78WqI6NN7IHFTMTrEEhfaBnkFL20XF4ECyCQ== - dependencies: - "@storybook/builder-webpack5" "7.5.2" - "@storybook/preset-react-webpack" "7.5.2" - "@storybook/react" "7.5.2" - "@types/node" "^18.0.0" - -"@storybook/react@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/react/-/react-7.5.2.tgz#42afff95f8ff65d404282336a018c1fb59a5f2fa" - integrity sha512-7X8GtqvRjWmVS112ifChJMxfD15rMVg5m3t6apZqi0uui1S/DImAveHwz8M4FhsElW6MIHs5xK0uJhR9rVQgTA== - dependencies: - "@storybook/client-logger" "7.5.2" - "@storybook/core-client" "7.5.2" - "@storybook/docs-tools" "7.5.2" - "@storybook/global" "^5.0.0" - "@storybook/preview-api" "7.5.2" - "@storybook/react-dom-shim" "7.5.2" - "@storybook/types" "7.5.2" - "@types/escodegen" "^0.0.6" - "@types/estree" "^0.0.51" - "@types/node" "^18.0.0" - acorn "^7.4.1" - acorn-jsx "^5.3.1" - acorn-walk "^7.2.0" - escodegen "^2.1.0" - html-tags "^3.1.0" - lodash "^4.17.21" - prop-types "^15.7.2" - react-element-to-jsx-string "^15.0.0" - ts-dedent "^2.0.0" - type-fest "~2.19" - util-deprecate "^1.0.2" +"@storybook/react-dom-shim@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/react-dom-shim/-/react-dom-shim-8.4.7.tgz#f0dd5bbf2fc185def72d9d08a11c8de22f152c2a" + integrity sha512-6bkG2jvKTmWrmVzCgwpTxwIugd7Lu+2btsLAqhQSzDyIj2/uhMNp8xIMr/NBDtLgq3nomt9gefNa9xxLwk/OMg== -"@storybook/router@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/router/-/router-7.5.2.tgz#d01d52f541b2fe817873660ba1e6cce5e4ab93f3" - integrity sha512-jlh48TVUlqvGkU8MnkVp9SrCHomWGtQGx1WMK94NMyOPVPTLWzM6LjIybgmHz0MTe4lpzmbiIOfSlU3pPX054w== +"@storybook/react-webpack5@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/react-webpack5/-/react-webpack5-8.4.7.tgz#b0c48caffd658912bd10f4f9960edb229e990b4b" + integrity sha512-T9GLqlsP4It4El7cC8rSkBPRWvORAsTDULeWlO36RST2TrYnmBOUytsi22mk7cAAAVhhD6rTrs1YdqWRMpfa1w== dependencies: - "@storybook/client-logger" "7.5.2" - memoizerific "^1.11.3" - qs "^6.10.0" + "@storybook/builder-webpack5" "8.4.7" + "@storybook/preset-react-webpack" "8.4.7" + "@storybook/react" "8.4.7" + "@types/node" "^22.0.0" -"@storybook/telemetry@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/telemetry/-/telemetry-7.5.2.tgz#b64b833b161ef890d91222f332045119a10f21b3" - integrity sha512-tUgrcIx1vTMhTySp11JbBnWLsaMUNlil5yuOWEJy5i71E4Xy/2hYUtLfxzgXWd/0W7eTl4p2tjUk9uS8AP+S0Q== +"@storybook/react@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/react/-/react-8.4.7.tgz#e2cf62b3c1d8e4bfe5eff82ced07ec473d4e4fd1" + integrity sha512-nQ0/7i2DkaCb7dy0NaT95llRVNYWQiPIVuhNfjr1mVhEP7XD090p0g7eqUmsx8vfdHh2BzWEo6CoBFRd3+EXxw== dependencies: - "@storybook/client-logger" "7.5.2" - "@storybook/core-common" "7.5.2" - "@storybook/csf-tools" "7.5.2" - chalk "^4.1.0" - detect-package-manager "^2.0.1" - fetch-retry "^5.0.2" - fs-extra "^11.1.0" - read-pkg-up "^7.0.1" + "@storybook/components" "8.4.7" + "@storybook/global" "^5.0.0" + "@storybook/manager-api" "8.4.7" + "@storybook/preview-api" "8.4.7" + "@storybook/react-dom-shim" "8.4.7" + "@storybook/theming" "8.4.7" -"@storybook/test-runner@0.13.0": - version "0.13.0" - resolved "https://registry.yarnpkg.com/@storybook/test-runner/-/test-runner-0.13.0.tgz#e22ecfa4842deb7c5248185d77ab7d78b77beab9" - integrity sha512-QIbfgia/iBy7PeUIwCYtPcyeZCHd21ebaPoMNIsRfwUW+VC12J4iG8cGDfOE7MGbMVz1Uu0elAEBB8NGP/YBtQ== +"@storybook/test-runner@0.21.0": + version "0.21.0" + resolved "https://registry.yarnpkg.com/@storybook/test-runner/-/test-runner-0.21.0.tgz#31e7a6878e15a3f4d5555c57a135dd4d13fce9c4" + integrity sha512-aG2QvKXSIjMN1CA9PJK/esnidZWgt1gAkfo9Kqf8+NqBSsmP/2GyL5vxu1lkRFO/4qCv5JenNZ5Uj6ie4b2oag== dependencies: "@babel/core" "^7.22.5" "@babel/generator" "^7.22.5" "@babel/template" "^7.22.5" "@babel/types" "^7.22.5" - "@storybook/core-common" "^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0" - "@storybook/csf" "^0.1.1" - "@storybook/csf-tools" "^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0" - "@storybook/preview-api" "^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0" - "@swc/core" "^1.3.18" + "@jest/types" "^29.6.3" + "@storybook/csf" "^0.1.11" + "@swc/core" "^1.5.22" "@swc/jest" "^0.2.23" - can-bind-to-host "^1.1.1" - commander "^9.0.0" expect-playwright "^0.8.0" - glob "^10.2.2" - jest "^28.0.0" - jest-circus "^28.0.0" - jest-environment-node "^28.0.0" - jest-junit "^14.0.0" - jest-playwright-preset "^2.0.0" - jest-runner "^28.0.0" + jest "^29.6.4" + jest-circus "^29.6.4" + jest-environment-node "^29.6.4" + jest-junit "^16.0.0" + jest-playwright-preset "^4.0.0" + jest-runner "^29.6.4" jest-serializer-html "^7.1.0" jest-watch-typeahead "^2.0.0" - node-fetch "^2" + nyc "^15.1.0" playwright "^1.14.0" - read-pkg-up "^7.0.1" - tempy "^1.0.1" - ts-dedent "^2.0.0" - -"@storybook/theming@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-7.5.2.tgz#0608912cf0b8817d9c53d7e3c378e6a99c147444" - integrity sha512-DZBTcYErSYvmTYsGz7lKtiIcBe8flBw5Ojp52r3O4GcRYG4AbuUwwVvehz+O1cWaS+UW3HavrcgapERH7ZHd1A== - dependencies: - "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" - "@storybook/client-logger" "7.5.2" - "@storybook/global" "^5.0.0" - memoizerific "^1.11.3" -"@storybook/types@7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@storybook/types/-/types-7.5.2.tgz#38f2e4a4cb0bb402b840d9e7f7762c0d113dc63b" - integrity sha512-RDKHo6WUES+4nt7uZMfankjxdpYX2EI2GpJ2n2RPcnhzmb/ub1huNTjbzDEYMqY24SppljZeIN57m3Ar6L6f9A== - dependencies: - "@storybook/channels" "7.5.2" - "@types/babel__core" "^7.0.0" - "@types/express" "^4.7.0" - file-system-cache "2.3.0" - -"@swc/core-darwin-arm64@1.3.95": - version "1.3.95" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.95.tgz#e6b6363fc0a22ee3cd9a63130d2042d5027aae2c" - integrity sha512-VAuBAP3MNetO/yBIBzvorUXq7lUBwhfpJxYViSxyluMwtoQDhE/XWN598TWMwMl1ZuImb56d7eUsuFdjgY7pJw== - -"@swc/core-darwin-x64@1.3.95": - version "1.3.95" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.3.95.tgz#7911a03f4e0f9359710d3d6ad1dba7b5569efe5d" - integrity sha512-20vF2rvUsN98zGLZc+dsEdHvLoCuiYq/1B+TDeE4oolgTFDmI1jKO+m44PzWjYtKGU9QR95sZ6r/uec0QC5O4Q== - -"@swc/core-linux-arm-gnueabihf@1.3.95": - version "1.3.95" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.95.tgz#95a2c9fc6849df9f1944957669c82c559d65b24f" - integrity sha512-oEudEM8PST1MRNGs+zu0cx5i9uP8TsLE4/L9HHrS07Ck0RJ3DCj3O2fU832nmLe2QxnAGPwBpSO9FntLfOiWEQ== - -"@swc/core-linux-arm64-gnu@1.3.95": - version "1.3.95" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.95.tgz#1914d42041469582e3cc56619890edbcc54e83d6" - integrity sha512-pIhFI+cuC1aYg+0NAPxwT/VRb32f2ia8oGxUjQR6aJg65gLkUYQzdwuUmpMtFR2WVf7WVFYxUnjo4UyMuyh3ng== - -"@swc/core-linux-arm64-musl@1.3.95": - version "1.3.95" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.95.tgz#8d73822a5807575a572d6a2d6cb64587a9f19ce6" - integrity sha512-ZpbTr+QZDT4OPJfjPAmScqdKKaT+wGurvMU5AhxLaf85DuL8HwUwwlL0n1oLieLc47DwIJEMuKQkYhXMqmJHlg== - -"@swc/core-linux-x64-gnu@1.3.95": - version "1.3.95" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.95.tgz#80467727ec11da3de49e6be2abf735964a808483" - integrity sha512-n9SuHEFtdfSJ+sHdNXNRuIOVprB8nbsz+08apKfdo4lEKq6IIPBBAk5kVhPhkjmg2dFVHVo4Tr/OHXM1tzWCCw== - -"@swc/core-linux-x64-musl@1.3.95": - version "1.3.95" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.95.tgz#675a53ac037846bd1bb9840a95ebcb5289265d3b" - integrity sha512-L1JrVlsXU3LC0WwmVnMK9HrOT2uhHahAoPNMJnZQpc18a0paO9fqifPG8M/HjNRffMUXR199G/phJsf326UvVg== - -"@swc/core-win32-arm64-msvc@1.3.95": - version "1.3.95" - resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.95.tgz#7f0b5d0d0a090c5c625bbc54ffaf427d861c068a" - integrity sha512-YaP4x/aZbUyNdqCBpC2zL8b8n58MEpOUpmOIZK6G1SxGi+2ENht7gs7+iXpWPc0sy7X3YPKmSWMAuui0h8lgAA== - -"@swc/core-win32-ia32-msvc@1.3.95": - version "1.3.95" - resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.95.tgz#06e2778549a37f0b505b24fd8f40c1c038e29f3e" - integrity sha512-w0u3HI916zT4BC/57gOd+AwAEjXeUlQbGJ9H4p/gzs1zkSHtoDQghVUNy3n/ZKp9KFod/95cA8mbVF9t1+6epQ== - -"@swc/core-win32-x64-msvc@1.3.95": - version "1.3.95" - resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.95.tgz#40f6b131e84ba6ed97f516edf0f9d5a766c0da64" - integrity sha512-5RGnMt0S6gg4Gc6QtPUJ3Qs9Un4sKqccEzgH/tj7V/DVTJwKdnBKxFZfgQ34OR2Zpz7zGOn889xwsFVXspVWNA== - -"@swc/core@^1.3.18", "@swc/core@^1.3.82": - version "1.3.95" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.3.95.tgz#2743b8460e6f29385e3dbe49f3f66277ab233536" - integrity sha512-PMrNeuqIusq9DPDooV3FfNEbZuTu5jKAc04N3Hm6Uk2Fl49cqElLFQ4xvl4qDmVDz97n3n/C1RE0/f6WyGPEiA== - dependencies: - "@swc/counter" "^0.1.1" - "@swc/types" "^0.1.5" +"@storybook/theming@8.4.7": + version "8.4.7" + resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-8.4.7.tgz#c308f6a883999bd35e87826738ab8a76515932b5" + integrity sha512-99rgLEjf7iwfSEmdqlHkSG3AyLcK0sfExcr0jnc6rLiAkBhzuIsvcHjjUwkR210SOCgXqBPW0ZA6uhnuyppHLw== + +"@swc/core-darwin-arm64@1.10.7": + version "1.10.7" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.10.7.tgz#ff727de61faabfbdfe062747e47305ee3472298e" + integrity sha512-SI0OFg987P6hcyT0Dbng3YRISPS9uhLX1dzW4qRrfqQdb0i75lPJ2YWe9CN47HBazrIA5COuTzrD2Dc0TcVsSQ== + +"@swc/core-darwin-x64@1.10.7": + version "1.10.7" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.10.7.tgz#a276d5ee56e7c9fb03201c92c620143f8df6b52e" + integrity sha512-RFIAmWVicD/l3RzxgHW0R/G1ya/6nyMspE2cAeDcTbjHi0I5qgdhBWd6ieXOaqwEwiCd0Mot1g2VZrLGoBLsjQ== + +"@swc/core-linux-arm-gnueabihf@1.10.7": + version "1.10.7" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.10.7.tgz#8f2041b818691e7535bc275d32659e77b5f2fecc" + integrity sha512-QP8vz7yELWfop5mM5foN6KkLylVO7ZUgWSF2cA0owwIaziactB2hCPZY5QU690coJouk9KmdFsPWDnaCFUP8tg== + +"@swc/core-linux-arm64-gnu@1.10.7": + version "1.10.7" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.10.7.tgz#c185499f7db12ee95fdceb4c00fb503ed398cf1d" + integrity sha512-NgUDBGQcOeLNR+EOpmUvSDIP/F7i/OVOKxst4wOvT5FTxhnkWrW+StJGKj+DcUVSK5eWOYboSXr1y+Hlywwokw== + +"@swc/core-linux-arm64-musl@1.10.7": + version "1.10.7" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.10.7.tgz#20732c402ba44fbd708e9871aaa10df5597a3d01" + integrity sha512-gp5Un3EbeSThBIh6oac5ZArV/CsSmTKj5jNuuUAuEsML3VF9vqPO+25VuxCvsRf/z3py+xOWRaN2HY/rjMeZog== + +"@swc/core-linux-x64-gnu@1.10.7": + version "1.10.7" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.10.7.tgz#d6310152dd154c0796d1c0d99eb89fc26957c8f6" + integrity sha512-k/OxLLMl/edYqbZyUNg6/bqEHTXJT15l9WGqsl/2QaIGwWGvles8YjruQYQ9d4h/thSXLT9gd8bExU2D0N+bUA== + +"@swc/core-linux-x64-musl@1.10.7": + version "1.10.7" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.10.7.tgz#e03d4ec66f4234323887774151d1034339d0d7af" + integrity sha512-XeDoURdWt/ybYmXLCEE8aSiTOzEn0o3Dx5l9hgt0IZEmTts7HgHHVeRgzGXbR4yDo0MfRuX5nE1dYpTmCz0uyA== + +"@swc/core-win32-arm64-msvc@1.10.7": + version "1.10.7" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.10.7.tgz#f1a8c3149e2671d477af4ca39c761d6ade342d4c" + integrity sha512-nYAbi/uLS+CU0wFtBx8TquJw2uIMKBnl04LBmiVoFrsIhqSl+0MklaA9FVMGA35NcxSJfcm92Prl2W2LfSnTqQ== + +"@swc/core-win32-ia32-msvc@1.10.7": + version "1.10.7" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.10.7.tgz#133f3168fee9910566a874eb1d422dc79eb17d54" + integrity sha512-+aGAbsDsIxeLxw0IzyQLtvtAcI1ctlXVvVcXZMNXIXtTURM876yNrufRo4ngoXB3jnb1MLjIIjgXfFs/eZTUSw== + +"@swc/core-win32-x64-msvc@1.10.7": + version "1.10.7" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.10.7.tgz#84d6ed82b2f19bc00b868c9747f03ea6661d8023" + integrity sha512-TBf4clpDBjF/UUnkKrT0/th76/zwvudk5wwobiTFqDywMApHip5O0VpBgZ+4raY2TM8k5+ujoy7bfHb22zu17Q== + +"@swc/core@^1.5.22": + version "1.10.7" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.10.7.tgz#736a5bbf0db7628cb2de3eac871e331f9a27e60b" + integrity sha512-py91kjI1jV5D5W/Q+PurBdGsdU5TFbrzamP7zSCqLdMcHkKi3rQEM5jkQcZr0MXXSJTaayLxS3MWYTBIkzPDrg== + dependencies: + "@swc/counter" "^0.1.3" + "@swc/types" "^0.1.17" optionalDependencies: - "@swc/core-darwin-arm64" "1.3.95" - "@swc/core-darwin-x64" "1.3.95" - "@swc/core-linux-arm-gnueabihf" "1.3.95" - "@swc/core-linux-arm64-gnu" "1.3.95" - "@swc/core-linux-arm64-musl" "1.3.95" - "@swc/core-linux-x64-gnu" "1.3.95" - "@swc/core-linux-x64-musl" "1.3.95" - "@swc/core-win32-arm64-msvc" "1.3.95" - "@swc/core-win32-ia32-msvc" "1.3.95" - "@swc/core-win32-x64-msvc" "1.3.95" - -"@swc/counter@^0.1.1": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.2.tgz#bf06d0770e47c6f1102270b744e17b934586985e" - integrity sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw== + "@swc/core-darwin-arm64" "1.10.7" + "@swc/core-darwin-x64" "1.10.7" + "@swc/core-linux-arm-gnueabihf" "1.10.7" + "@swc/core-linux-arm64-gnu" "1.10.7" + "@swc/core-linux-arm64-musl" "1.10.7" + "@swc/core-linux-x64-gnu" "1.10.7" + "@swc/core-linux-x64-musl" "1.10.7" + "@swc/core-win32-arm64-msvc" "1.10.7" + "@swc/core-win32-ia32-msvc" "1.10.7" + "@swc/core-win32-x64-msvc" "1.10.7" + +"@swc/counter@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" + integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== "@swc/jest@^0.2.23": version "0.2.29" @@ -4817,10 +3296,12 @@ "@jest/create-cache-key-function" "^27.4.2" jsonc-parser "^3.2.0" -"@swc/types@^0.1.5": - version "0.1.5" - resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.5.tgz#043b731d4f56a79b4897a3de1af35e75d56bc63a" - integrity sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw== +"@swc/types@^0.1.17": + version "0.1.17" + resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.17.tgz#bd1d94e73497f27341bf141abdf4c85230d41e7c" + integrity sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ== + dependencies: + "@swc/counter" "^0.1.3" "@testing-library/dom@^10.0.0": version "10.0.0" @@ -4904,17 +3385,6 @@ resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.4.tgz#1a31c3d378850d2778dabb6374d036dcba4ba708" integrity sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw== -"@types/babel__core@^7.0.0": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.0.tgz#61bc5a4cae505ce98e1e36c5445e4bee060d8891" - integrity sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ== - dependencies: - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - "@types/babel__core@^7.1.14": version "7.1.19" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460" @@ -4926,6 +3396,17 @@ "@types/babel__template" "*" "@types/babel__traverse" "*" +"@types/babel__core@^7.18.0": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" + integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== + dependencies: + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + "@types/babel__generator@*": version "7.6.4" resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" @@ -4948,13 +3429,12 @@ dependencies: "@babel/types" "^7.3.0" -"@types/body-parser@*": - version "1.19.2" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" - integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== +"@types/babel__traverse@^7.18.0": + version "7.20.6" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.6.tgz#8dc9f0ae0f202c08d8d4dab648912c8d6038e3f7" + integrity sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg== dependencies: - "@types/connect" "*" - "@types/node" "*" + "@babel/types" "^7.20.7" "@types/chrome@0.0.237": version "0.0.237" @@ -4969,13 +3449,6 @@ resolved "https://registry.npmjs.org/@types/classnames/-/classnames-0.0.32.tgz" integrity sha1-RJq82agmgHgR7xAeWN+fg8/GFxM= -"@types/connect@*": - version "3.4.35" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" - integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== - dependencies: - "@types/node" "*" - "@types/content-disposition@0.5.4": version "0.5.4" resolved "https://registry.yarnpkg.com/@types/content-disposition/-/content-disposition-0.5.4.tgz#de48cf01c79c9f1560bcfd8ae43217ab028657f8" @@ -4986,13 +3459,6 @@ resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.6.0.tgz#eac397f28bf1d6ae0ae081363eca2f425bedf0d5" integrity sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA== -"@types/cross-spawn@^6.0.2": - version "6.0.4" - resolved "https://registry.yarnpkg.com/@types/cross-spawn/-/cross-spawn-6.0.4.tgz#e658d29e2308a01f48b7b30fd8cdf07aeb2e5a82" - integrity sha512-GGLpeThc2Bu8FBGmVn76ZU3lix17qZensEI4/MPty0aZpm2CHfgEMis31pf5X5EiudYKcPAsWciAsCALoPo5dw== - dependencies: - "@types/node" "*" - "@types/debug@^4.0.0": version "4.1.7" resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.7.tgz#7cc0ea761509124709b8b2d1090d8f6c17aadb82" @@ -5000,15 +3466,10 @@ dependencies: "@types/ms" "*" -"@types/detect-port@^1.3.0": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@types/detect-port/-/detect-port-1.3.2.tgz#8c06a975e472803b931ee73740aeebd0a2eb27ae" - integrity sha512-xxgAGA2SAU4111QefXPSp5eGbDm/hW6zhvYl9IeEPZEry9F4d66QAHm5qpUXjb6IsevZV/7emAEx5MhP6O192g== - -"@types/doctrine@^0.0.3": - version "0.0.3" - resolved "https://registry.yarnpkg.com/@types/doctrine/-/doctrine-0.0.3.tgz#e892d293c92c9c1d3f9af72c15a554fbc7e0895a" - integrity sha512-w5jZ0ee+HaPOaX25X2/2oGR/7rgAQSYII7X7pp0m9KgBfMP7uKfMfTvcpl5Dj+eDBbpxKGiqE+flqDr6XTd2RA== +"@types/doctrine@^0.0.9": + version "0.0.9" + resolved "https://registry.yarnpkg.com/@types/doctrine/-/doctrine-0.0.9.tgz#d86a5f452a15e3e3113b99e39616a9baa0f9863f" + integrity sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA== "@types/dompurify@3.0.2": version "3.0.2" @@ -5017,21 +3478,6 @@ dependencies: "@types/trusted-types" "*" -"@types/ejs@^3.1.1": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@types/ejs/-/ejs-3.1.2.tgz#75d277b030bc11b3be38c807e10071f45ebc78d9" - integrity sha512-ZmiaE3wglXVWBM9fyVC17aGPkLo/UgaOjEiI2FXQfyczrCefORPxIe+2dVmnmk3zkVIbizjrlQzmPGhSYGXG5g== - -"@types/emscripten@^1.39.6": - version "1.39.9" - resolved "https://registry.yarnpkg.com/@types/emscripten/-/emscripten-1.39.9.tgz#cbe73a8d153fc714a2e3177fbda2d7332d45efa7" - integrity sha512-ILdWj4XYtNOqxJaW22NEQx2gJsLfV5ncxYhhGX1a1H1lXl2Ta0gUz7QOnOoF1xQbJwWDjImi8gXN9mKdIf6n9g== - -"@types/escodegen@^0.0.6": - version "0.0.6" - resolved "https://registry.yarnpkg.com/@types/escodegen/-/escodegen-0.0.6.tgz#5230a9ce796e042cda6f086dbf19f22ea330659c" - integrity sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig== - "@types/eslint-scope@^3.7.3": version "3.7.7" resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" @@ -5068,26 +3514,6 @@ resolved "https://registry.npmjs.org/@types/expect/-/expect-1.20.3.tgz" integrity sha512-g0+CQosizg1hjNn06fKB2tEvS5kExrvVOkIfsGuIRfsQ/A9u/Xjp/6/czJVyLuCYdkmMbplDUXvQW+YjBQK7dA== -"@types/express-serve-static-core@^4.17.33": - version "4.17.34" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.34.tgz#c119e85b75215178bc127de588e93100698ab4cc" - integrity sha512-fvr49XlCGoUj2Pp730AItckfjat4WNb0lb3kfrLWffd+RLeoGAMsq7UOy04PAPtoL01uKwcp6u8nhzpgpDYr3w== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - "@types/send" "*" - -"@types/express@^4.7.0": - version "4.17.17" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4" - integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.33" - "@types/qs" "*" - "@types/serve-static" "*" - "@types/file-saver@2.0.5": version "2.0.5" resolved "https://registry.yarnpkg.com/@types/file-saver/-/file-saver-2.0.5.tgz#9ee342a5d1314bb0928375424a2f162f97c310c7" @@ -5105,11 +3531,6 @@ resolved "https://registry.yarnpkg.com/@types/filewriter/-/filewriter-0.0.29.tgz#a48795ecadf957f6c0d10e0c34af86c098fa5bee" integrity sha512-BsPXH/irW0ht0Ji6iw/jJaK8Lj3FJemon2gvEqHKpCdDCeemHa+rI3WBGq5z7cDMZgoLjY40oninGxqk+8NzNQ== -"@types/find-cache-dir@^3.2.1": - version "3.2.1" - resolved "https://registry.yarnpkg.com/@types/find-cache-dir/-/find-cache-dir-3.2.1.tgz#7b959a4b9643a1e6a1a5fe49032693cc36773501" - integrity sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw== - "@types/graceful-fs@^4.1.3": version "4.1.5" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" @@ -5205,7 +3626,7 @@ resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= -"@types/lodash@4.14.179", "@types/lodash@^4.14.167": +"@types/lodash@4.14.179": version "4.14.179" resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.179.tgz" integrity sha512-uwc1x90yCKqGcIOAT6DwOSuxnrAbpkdPsUOZtwrXb4D/6wZs+6qG7QnIawDuZWg0sWpxl+ltIKCaLoMlna678w== @@ -5217,6 +3638,13 @@ dependencies: "@types/unist" "*" +"@types/mdast@^4.0.0": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-4.0.4.tgz#7ccf72edd2f1aa7dd3437e180c64373585804dd6" + integrity sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA== + dependencies: + "@types/unist" "*" + "@types/mdurl@^1.0.0": version "1.0.2" resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.2.tgz#e2ce9d83a613bacf284c7be7d491945e39e1f8e9" @@ -5234,21 +3662,6 @@ dependencies: memoize-one "*" -"@types/mime-types@^2.1.0": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@types/mime-types/-/mime-types-2.1.1.tgz#d9ba43490fa3a3df958759adf69396c3532cf2c1" - integrity sha512-vXOTGVSLR2jMw440moWTC7H19iUyLtP3Z1YTj7cSsubOICinjMxFeb/V57v9QdyyPGbbWolUFSSmSiRSn94tFw== - -"@types/mime@*": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" - integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== - -"@types/mime@^1": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" - integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== - "@types/mocha@2.2.48": version "2.2.48" resolved "https://registry.npmjs.org/@types/mocha/-/mocha-2.2.48.tgz" @@ -5259,14 +3672,6 @@ resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197" integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== -"@types/node-fetch@^2.6.4": - version "2.6.8" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.8.tgz#9a2993583975849c2e1f360b6ca2f11755b2c504" - integrity sha512-nnH5lV9QCMPsbEVdTb5Y+F3GQxLSw1xQgIydrb2gSfEavRPs50FnMr+KUaa+LoPSqibm2N+ZZxH7lavZlAT4GA== - dependencies: - "@types/node" "*" - form-data "^4.0.0" - "@types/node@*": version "22.9.0" resolved "https://registry.yarnpkg.com/@types/node/-/node-22.9.0.tgz#b7f16e5c3384788542c72dc3d561a7ceae2c0365" @@ -5279,17 +3684,12 @@ resolved "https://registry.npmjs.org/@types/node/-/node-14.18.12.tgz" integrity sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A== -"@types/node@^18.0.0": - version "18.18.8" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.18.8.tgz#2b285361f2357c8c8578ec86b5d097c7f464cfd6" - integrity sha512-OLGBaaK5V3VRBS1bAkMVP2/W9B+H8meUfl866OrMNQqt7wDgdpWPp5o6gmIc9pB+lIQHSq4ZL8ypeH1vPxcPaQ== +"@types/node@^22.0.0": + version "22.10.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.10.7.tgz#14a1ca33fd0ebdd9d63593ed8d3fbc882a6d28d7" + integrity sha512-V09KvXxFiutGp6B7XkpaDXlNadZxrzajcY50EuoLIpQ6WWYCSvf19lVIazzfIzQvhUN2HjX12spLojTnhuKlGg== dependencies: - undici-types "~5.26.4" - -"@types/normalize-package-data@^2.4.0": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" - integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== + undici-types "~6.20.0" "@types/parse-json@^4.0.0": version "4.0.0" @@ -5301,11 +3701,6 @@ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.1.tgz#dfd20e2dc35f027cdd6c1908e80a5ddc7499670e" integrity sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow== -"@types/pretty-hrtime@^1.0.0": - version "1.0.1" - resolved "https://registry.npmjs.org/@types/pretty-hrtime/-/pretty-hrtime-1.0.1.tgz" - integrity sha512-VjID5MJb1eGKthz2qUerWT8+R4b9N+CHvGCzg9fn4kWZgaF9AhdYikQio3R7wV8YY1NsQKPaCwKz1Yff+aHNUQ== - "@types/prop-types@*", "@types/prop-types@^15.0.0": version "15.7.5" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" @@ -5316,20 +3711,10 @@ resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz" integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== -"@types/qs@*", "@types/qs@^6.9.5": - version "6.9.7" - resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz" - integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== - -"@types/range-parser@*": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" - integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== - -"@types/react-dom@18.3.1": - version "18.3.1" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.1.tgz#1e4654c08a9cdcfb6594c780ac59b55aad42fe07" - integrity sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ== +"@types/react-dom@18.2.0": + version "18.2.0" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.0.tgz#374f28074bb117f56f58c4f3f71753bebb545156" + integrity sha512-8yQrvS6sMpSwIovhPOwfyNf2Wz6v/B62LFSVYQ85+Rq3tLsBIG7rP5geMxaijTUxSkrO6RzN/IRuIAADYQsleA== dependencies: "@types/react" "*" @@ -5400,14 +3785,10 @@ "@types/prop-types" "*" csstype "^3.0.2" -"@types/react@>=16": - version "18.2.0" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.0.tgz#15cda145354accfc09a18d2f2305f9fc099ada21" - integrity sha512-0FLj93y5USLHdnhIhABk83rm8XEGA7kH3cr+YUlvxoUGp1xNt/DINUMvqPxLyOQMzLmZe8i4RTHbvb8MC7NmrA== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" +"@types/resolve@^1.20.2": + version "1.20.6" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.6.tgz#e6e60dad29c2c8c206c026e6dd8d6d1bdda850b8" + integrity sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ== "@types/scheduler@*": version "0.16.2" @@ -5419,22 +3800,6 @@ resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91" integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw== -"@types/send@*": - version "0.17.1" - resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.1.tgz#ed4932b8a2a805f1fe362a70f4e62d0ac994e301" - integrity sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q== - dependencies: - "@types/mime" "^1" - "@types/node" "*" - -"@types/serve-static@*": - version "1.15.1" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.1.tgz#86b1753f0be4f9a1bee68d459fcda5be4ea52b5d" - integrity sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ== - dependencies: - "@types/mime" "*" - "@types/node" "*" - "@types/sockjs-client@1.5.1": version "1.5.1" resolved "https://registry.yarnpkg.com/@types/sockjs-client/-/sockjs-client-1.5.1.tgz#7ed2093da89305af370511c4e3beb7e4ef0d7e87" @@ -5465,11 +3830,21 @@ resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz" integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== +"@types/unist@^3.0.0": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.3.tgz#acaab0f919ce69cce629c2d4ed2eb4adc1b6c20c" + integrity sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q== + "@types/uuid@8.3.4": version "8.3.4" resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== +"@types/uuid@^9.0.1": + version "9.0.8" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-9.0.8.tgz#7545ba4fc3c003d6c756f651f3bf163d8f0f29ba" + integrity sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA== + "@types/validator@13.11.9": version "13.11.9" resolved "https://registry.yarnpkg.com/@types/validator/-/validator-13.11.9.tgz#adfe96520b437a0eaa798a475877bf2f75ee402d" @@ -5535,13 +3910,13 @@ "@typescript-eslint/types" "5.58.0" "@typescript-eslint/visitor-keys" "5.58.0" -"@typescript-eslint/scope-manager@5.59.1": - version "5.59.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.59.1.tgz#8a20222719cebc5198618a5d44113705b51fd7fe" - integrity sha512-mau0waO5frJctPuAzcxiNWqJR5Z8V0190FTSqRw1Q4Euop6+zTwHAf8YIXNwDOT29tyUDrQ65jSg9aTU/H0omA== +"@typescript-eslint/scope-manager@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" + integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== dependencies: - "@typescript-eslint/types" "5.59.1" - "@typescript-eslint/visitor-keys" "5.59.1" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" "@typescript-eslint/type-utils@5.58.0": version "5.58.0" @@ -5558,10 +3933,10 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.58.0.tgz#54c490b8522c18986004df7674c644ffe2ed77d8" integrity sha512-JYV4eITHPzVQMnHZcYJXl2ZloC7thuUHrcUmxtzvItyKPvQ50kb9QXBkgNAt90OYMqwaodQh2kHutWZl1fc+1g== -"@typescript-eslint/types@5.59.1": - version "5.59.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.59.1.tgz#03f3fedd1c044cb336ebc34cc7855f121991f41d" - integrity sha512-dg0ICB+RZwHlysIy/Dh1SP+gnXNzwd/KS0JprD3Lmgmdq+dJAJnUPe1gNG34p0U19HvRlGX733d/KqscrGC1Pg== +"@typescript-eslint/types@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" + integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== "@typescript-eslint/typescript-estree@5.58.0": version "5.58.0" @@ -5576,13 +3951,13 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@5.59.1": - version "5.59.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.1.tgz#4aa546d27fd0d477c618f0ca00b483f0ec84c43c" - integrity sha512-lYLBBOCsFltFy7XVqzX0Ju+Lh3WPIAWxYpmH/Q7ZoqzbscLiCW00LeYCdsUnnfnj29/s1WovXKh2gwCoinHNGA== +"@typescript-eslint/typescript-estree@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" + integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== dependencies: - "@typescript-eslint/types" "5.59.1" - "@typescript-eslint/visitor-keys" "5.59.1" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" @@ -5603,17 +3978,17 @@ eslint-scope "^5.1.1" semver "^7.3.7" -"@typescript-eslint/utils@^5.45.0": - version "5.59.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.59.1.tgz#d89fc758ad23d2157cfae53f0b429bdf15db9473" - integrity sha512-MkTe7FE+K1/GxZkP5gRj3rCztg45bEhsd8HYjczBuYm+qFHP5vtZmjx3B0yUCDotceQ4sHgTyz60Ycl225njmA== +"@typescript-eslint/utils@^5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" + integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@types/json-schema" "^7.0.9" "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.59.1" - "@typescript-eslint/types" "5.59.1" - "@typescript-eslint/typescript-estree" "5.59.1" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" eslint-scope "^5.1.1" semver "^7.3.7" @@ -5625,12 +4000,12 @@ "@typescript-eslint/types" "5.58.0" eslint-visitor-keys "^3.3.0" -"@typescript-eslint/visitor-keys@5.59.1": - version "5.59.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.1.tgz#0d96c36efb6560d7fb8eb85de10442c10d8f6058" - integrity sha512-6waEYwBTCWryx0VJmP7JaM4FpipLsFl9CvYf2foAE8Qh/Y0s+bxWysciwOs0LTBED4JCaNxTZ5rGadB14M6dwA== +"@typescript-eslint/visitor-keys@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" + integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== dependencies: - "@typescript-eslint/types" "5.59.1" + "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" "@webassemblyjs/ast@1.11.1": @@ -5900,42 +4275,11 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== -"@yarnpkg/esbuild-plugin-pnp@^3.0.0-rc.10": - version "3.0.0-rc.15" - resolved "https://registry.yarnpkg.com/@yarnpkg/esbuild-plugin-pnp/-/esbuild-plugin-pnp-3.0.0-rc.15.tgz#4e40e7d2eb28825c9a35ab9d04c363931d7c0e67" - integrity sha512-kYzDJO5CA9sy+on/s2aIW0411AklfCi8Ck/4QDivOqsMKpStZA2SsR+X27VTggGwpStWaLrjJcDcdDMowtG8MA== - dependencies: - tslib "^2.4.0" - -"@yarnpkg/fslib@2.10.3": - version "2.10.3" - resolved "https://registry.yarnpkg.com/@yarnpkg/fslib/-/fslib-2.10.3.tgz#a8c9893df5d183cf6362680b9f1c6d7504dd5717" - integrity sha512-41H+Ga78xT9sHvWLlFOZLIhtU6mTGZ20pZ29EiZa97vnxdohJD2AF42rCoAoWfqUz486xY6fhjMH+DYEM9r14A== - dependencies: - "@yarnpkg/libzip" "^2.3.0" - tslib "^1.13.0" - -"@yarnpkg/libzip@2.3.0", "@yarnpkg/libzip@^2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@yarnpkg/libzip/-/libzip-2.3.0.tgz#fe1e762e47669f6e2c960fc118436608d834e3be" - integrity sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg== - dependencies: - "@types/emscripten" "^1.39.6" - tslib "^1.13.0" - abab@^2.0.3, abab@^2.0.5, abab@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== -accepts@~1.3.5, accepts@~1.3.8: - version "1.3.8" - resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" - integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== - dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" - ace-builds@1.4.12: version "1.4.12" resolved "https://registry.npmjs.org/ace-builds/-/ace-builds-1.4.12.tgz" @@ -5972,7 +4316,7 @@ acorn-jsx@^5.3.1: resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn-walk@^7.1.1, acorn-walk@^7.2.0: +acorn-walk@^7.1.1: version "7.2.0" resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== @@ -5989,7 +4333,7 @@ acorn-walk@^8.1.1: resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== -acorn@^7.1.1, acorn@^7.4.0, acorn@^7.4.1: +acorn@^7.1.1, acorn@^7.4.0: version "7.4.1" resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== @@ -6009,16 +4353,6 @@ acorn@^8.2.4, acorn@^8.4.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== -address@^1.0.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" - integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== - -agent-base@5: - version "5.1.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-5.1.1.tgz#e8fb3f242959db44d63be665db7a8e739537a32c" - integrity sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g== - agent-base@6: version "6.0.2" resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" @@ -6102,7 +4436,7 @@ ansi-escapes@^6.0.0: dependencies: type-fest "^3.0.0" -ansi-html-community@0.0.8, ansi-html-community@^0.0.8: +ansi-html-community@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== @@ -6146,11 +4480,6 @@ ansi-styles@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== -ansi-styles@^6.1.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" - integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== - anymatch@^3.0.3: version "3.1.2" resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" @@ -6167,11 +4496,6 @@ anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -app-root-dir@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/app-root-dir/-/app-root-dir-1.0.2.tgz" - integrity sha1-OBh+wt6nV3//Az/8sSFyaS/24Rg= - append-transform@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-2.0.0.tgz#99d9d29c7b38391e6f428d28ce136551f0b77e12" @@ -6196,13 +4520,6 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -aria-hidden@^1.1.1: - version "1.2.3" - resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.2.3.tgz#14aeb7fb692bbb72d69bebfa47279c1fd725e954" - integrity sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ== - dependencies: - tslib "^2.0.0" - aria-query@5.3.0, aria-query@^5.0.0: version "5.3.0" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" @@ -6223,11 +4540,6 @@ array-find@^1.0.0: resolved "https://registry.npmjs.org/array-find/-/array-find-1.0.0.tgz" integrity sha1-bI4obRHtdoMn+OYuzuhzU8o+eLg= -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" - integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= - array-includes@^3.0.3, array-includes@^3.1.3, array-includes@^3.1.4: version "3.1.4" resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz" @@ -6280,35 +4592,11 @@ assert@^1.1.1: object-assign "^4.1.1" util "0.10.3" -assert@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-2.0.0.tgz#95fc1c616d48713510680f2eaf2d10dd22e02d32" - integrity sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A== - dependencies: - es6-object-assign "^1.1.0" - is-nan "^1.2.1" - object-is "^1.0.1" - util "^0.12.0" - ast-types-flow@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== -ast-types@0.15.2: - version "0.15.2" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.15.2.tgz#39ae4809393c4b16df751ee563411423e85fb49d" - integrity sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg== - dependencies: - tslib "^2.0.1" - -ast-types@^0.14.2: - version "0.14.2" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.14.2.tgz#600b882df8583e3cd4f2df5fa20fa83759d4bdfd" - integrity sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA== - dependencies: - tslib "^2.0.1" - ast-types@^0.16.1: version "0.16.1" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.16.1.tgz#7a9da1617c9081bc121faafe91711b4c8bb81da2" @@ -6321,16 +4609,6 @@ astral-regex@^2.0.0: resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - -async@^3.2.3: - version "3.2.4" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" - integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -6372,7 +4650,7 @@ axios@1.7.4: form-data "^4.0.0" proxy-from-env "^1.1.0" -axios@^0.21.1, axios@^0.28.0: +axios@^0.28.0, axios@^1.6.1: version "0.28.1" resolved "https://registry.yarnpkg.com/axios/-/axios-0.28.1.tgz#2a7bcd34a3837b71ee1a5ca3762214b86b703e70" integrity sha512-iUcGA5a7p0mVb4Gm/sy+FSECNkPFT4y7wt6OM/CDpO/OnNCvSs3PoMG8ibrC9jRoGYU0gUK5pXVC4NPXq6lHRQ== @@ -6397,7 +4675,7 @@ babel-code-frame@^6.22.0: esutils "^2.0.2" js-tokens "^3.0.2" -babel-core@7.0.0-bridge.0, babel-core@^7.0.0-bridge.0: +babel-core@7.0.0-bridge.0: version "7.0.0-bridge.0" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== @@ -6427,15 +4705,15 @@ babel-jest@29.2.0, babel-jest@^29.2.0: graceful-fs "^4.2.9" slash "^3.0.0" -babel-jest@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.1.3.tgz#c1187258197c099072156a0a121c11ee1e3917d5" - integrity sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q== +babel-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" + integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== dependencies: - "@jest/transform" "^28.1.3" + "@jest/transform" "^29.7.0" "@types/babel__core" "^7.1.14" babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^28.1.3" + babel-preset-jest "^29.6.3" chalk "^4.0.0" graceful-fs "^4.2.9" slash "^3.0.0" @@ -6450,19 +4728,14 @@ babel-loader@8.2.3: make-dir "^3.1.0" schema-utils "^2.6.5" -babel-loader@^9.0.0: - version "9.1.2" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.1.2.tgz#a16a080de52d08854ee14570469905a5fc00d39c" - integrity sha512-mN14niXW43tddohGl8HPu5yfQq70iUThvFL/4QzESA7GcZoC0eVOhvWdQ8+3UlSjaDE9MVtsW9mxDY07W7VpVA== +babel-loader@^9.2.1: + version "9.2.1" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.2.1.tgz#04c7835db16c246dd19ba0914418f3937797587b" + integrity sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA== dependencies: - find-cache-dir "^3.3.2" + find-cache-dir "^4.0.0" schema-utils "^4.0.0" -babel-plugin-add-react-displayname@^0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/babel-plugin-add-react-displayname/-/babel-plugin-add-react-displayname-0.0.5.tgz#339d4cddb7b65fd62d1df9db9fe04de134122bd5" - integrity sha512-LY3+Y0XVDYcShHHorshrDbt4KFWL4bSeniCtl4SYZbask+Syngk1uMPCeN9+nSiZo6zX5s0RTq/J9Pnaaf/KHw== - babel-plugin-dynamic-import-node@2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" @@ -6481,20 +4754,20 @@ babel-plugin-istanbul@^6.1.1: istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.3.tgz#1952c4d0ea50f2d6d794353762278d1d8cca3fbe" - integrity sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q== +babel-plugin-jest-hoist@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.2.0.tgz#23ee99c37390a98cfddf3ef4a78674180d823094" + integrity sha512-TnspP2WNiR3GLfCsUNHqeXw0RoQ2f9U5hQ5L3XFpwuO8htQmSrhh8qsB6vi5Yi8+kuynN1yjDjQsPfkebmB6ZA== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" "@types/babel__core" "^7.1.14" "@types/babel__traverse" "^7.0.6" -babel-plugin-jest-hoist@^29.2.0: - version "29.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.2.0.tgz#23ee99c37390a98cfddf3ef4a78674180d823094" - integrity sha512-TnspP2WNiR3GLfCsUNHqeXw0RoQ2f9U5hQ5L3XFpwuO8htQmSrhh8qsB6vi5Yi8+kuynN1yjDjQsPfkebmB6ZA== +babel-plugin-jest-hoist@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" + integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" @@ -6510,11 +4783,6 @@ babel-plugin-macros@^3.1.0: cosmiconfig "^7.0.0" resolve "^1.19.0" -babel-plugin-named-exports-order@^0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/babel-plugin-named-exports-order/-/babel-plugin-named-exports-order-0.0.2.tgz#ae14909521cf9606094a2048239d69847540cb09" - integrity sha512-OgOYHOLoRK+/mvXU9imKHlG6GkPLYrUCvFXG/CM93R/aNNO8pOOF4aS+S8CCHMDQoNSeiOYEZb/G6RwL95Jktw== - babel-plugin-polyfill-corejs2@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" @@ -6524,15 +4792,6 @@ babel-plugin-polyfill-corejs2@^0.3.3: "@babel/helper-define-polyfill-provider" "^0.3.3" semver "^6.1.1" -babel-plugin-polyfill-corejs2@^0.4.6: - version "0.4.6" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz#b2df0251d8e99f229a8e60fc4efa9a68b41c8313" - integrity sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q== - dependencies: - "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.4.3" - semver "^6.3.1" - babel-plugin-polyfill-corejs3@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz#56ad88237137eade485a71b52f72dbed57c6230a" @@ -6541,14 +4800,6 @@ babel-plugin-polyfill-corejs3@^0.6.0: "@babel/helper-define-polyfill-provider" "^0.3.3" core-js-compat "^3.25.1" -babel-plugin-polyfill-corejs3@^0.8.5: - version "0.8.6" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz#25c2d20002da91fe328ff89095c85a391d6856cf" - integrity sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.3" - core-js-compat "^3.33.1" - babel-plugin-polyfill-regenerator@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747" @@ -6556,22 +4807,6 @@ babel-plugin-polyfill-regenerator@^0.4.1: dependencies: "@babel/helper-define-polyfill-provider" "^0.3.3" -babel-plugin-polyfill-regenerator@^0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz#d4c49e4b44614607c13fb769bcd85c72bb26a4a5" - integrity sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.3" - -babel-plugin-react-docgen@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/babel-plugin-react-docgen/-/babel-plugin-react-docgen-4.2.1.tgz#7cc8e2f94e8dc057a06e953162f0810e4e72257b" - integrity sha512-UQ0NmGHj/HAqi5Bew8WvNfCk8wSsmdgNd8ZdMjBCICtyCJCq9LiqgqvjCYe570/Wg7AQArSq1VQ60Dd/CHN7mQ== - dependencies: - ast-types "^0.14.2" - lodash "^4.17.15" - react-docgen "^5.0.0" - babel-preset-current-node-syntax@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" @@ -6590,14 +4825,6 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-28.1.3.tgz#5dfc20b99abed5db994406c2b9ab94c73aaa419d" - integrity sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A== - dependencies: - babel-plugin-jest-hoist "^28.1.3" - babel-preset-current-node-syntax "^1.0.0" - babel-preset-jest@^29.2.0: version "29.2.0" resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.2.0.tgz#3048bea3a1af222e3505e4a767a974c95a7620dc" @@ -6606,6 +4833,14 @@ babel-preset-jest@^29.2.0: babel-plugin-jest-hoist "^29.2.0" babel-preset-current-node-syntax "^1.0.0" +babel-preset-jest@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" + integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== + dependencies: + babel-plugin-jest-hoist "^29.6.3" + babel-preset-current-node-syntax "^1.0.0" + babel-runtime@6.x: version "6.26.0" resolved "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz" @@ -6624,7 +4859,7 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base64-js@^1.0.2, base64-js@^1.3.1: +base64-js@^1.0.2: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== @@ -6636,7 +4871,7 @@ better-opn@^3.0.2: dependencies: open "^8.0.4" -big-integer@^1.6.16, big-integer@^1.6.44: +big-integer@^1.6.16: version "1.6.51" resolved "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz" integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== @@ -6651,15 +4886,6 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -bl@^4.0.3, bl@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: version "4.12.0" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" @@ -6670,24 +4896,6 @@ bn.js@^5.0.0, bn.js@^5.2.1: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== -body-parser@1.20.3: - version "1.20.3" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6" - integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== - dependencies: - bytes "3.1.2" - content-type "~1.0.5" - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.13.0" - raw-body "2.5.2" - type-is "~1.6.18" - unpipe "1.0.0" - boolbase@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" @@ -6703,13 +4911,6 @@ bourbon@^4.2.6: resolved "https://registry.yarnpkg.com/bourbon/-/bourbon-4.3.4.tgz#4da380029e92c0c8f9764c779451a134b11e7cc3" integrity sha512-XY2nuWcgS5ODGVFHgE/SsjFb18ke1dPtxu32vDm2tue8v4RflmU0mp0jpdIvvyjEtYEv6oiSpQL2PRUsEqde4w== -bplist-parser@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.2.0.tgz#43a9d183e5bf9d545200ceac3e712f79ebbe8d0e" - integrity sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw== - dependencies: - big-integer "^1.6.44" - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -6718,13 +4919,6 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - braces@^3.0.3, braces@~3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" @@ -6815,13 +5009,6 @@ browserify-sign@^4.0.0: readable-stream "^3.6.2" safe-buffer "^5.2.1" -browserify-zlib@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" - integrity sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ== - dependencies: - pako "~0.2.0" - browserify-zlib@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" @@ -6859,7 +5046,7 @@ browserslist@^4.21.5: node-releases "^2.0.8" update-browserslist-db "^1.0.10" -browserslist@^4.21.9, browserslist@^4.22.1: +browserslist@^4.21.9: version "4.22.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== @@ -6879,6 +5066,16 @@ browserslist@^4.23.0: node-releases "^2.0.14" update-browserslist-db "^1.0.13" +browserslist@^4.24.0: + version "4.24.4" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.4.tgz#c6b2865a3f08bcb860a0e827389003b9fe686e4b" + integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A== + dependencies: + caniuse-lite "^1.0.30001688" + electron-to-chromium "^1.5.73" + node-releases "^2.0.19" + update-browserslist-db "^1.1.1" + bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -6886,11 +5083,6 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" -buffer-crc32@~0.2.3: - version "0.2.13" - resolved "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz" - integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= - buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" @@ -6910,14 +5102,6 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" -buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - builtin-modules@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz" @@ -6928,34 +5112,6 @@ builtin-status-codes@^3.0.0: resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== - -bytes@3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== - -c8@^7.6.0: - version "7.13.0" - resolved "https://registry.yarnpkg.com/c8/-/c8-7.13.0.tgz#a2a70a851278709df5a9247d62d7f3d4bcb5f2e4" - integrity sha512-/NL4hQTv1gBL6J6ei80zu3IiTrmePDKXKXOTLpHvcIWZTVYQlDhVWjjWvkhICylE8EwwnMVzDZugCvdx0/DIIA== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@istanbuljs/schema" "^0.1.3" - find-up "^5.0.0" - foreground-child "^2.0.0" - istanbul-lib-coverage "^3.2.0" - istanbul-lib-report "^3.0.0" - istanbul-reports "^3.1.4" - rimraf "^3.0.2" - test-exclude "^6.0.0" - v8-to-istanbul "^9.0.0" - yargs "^16.2.0" - yargs-parser "^20.2.9" - caching-transform@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-4.0.0.tgz#00d297a4206d71e2163c39eaffa8157ac0651f0f" @@ -6974,17 +5130,6 @@ call-bind@^1.0.0, call-bind@^1.0.2: function-bind "^1.1.1" get-intrinsic "^1.0.2" -call-bind@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" - integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== - dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - set-function-length "^1.2.1" - callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -7008,11 +5153,6 @@ camelcase@^6.2.0: resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -can-bind-to-host@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/can-bind-to-host/-/can-bind-to-host-1.1.2.tgz#45919a1fb426eb1b709ddd4853cd5eda0549e606" - integrity sha512-CqsgmaqiyFRNtP17Ihqa/uHbZxRirntNVNl/kJz31DLKuNRfzvzionkLoUSkElQ6Cz+cpXKA3mhHq4tjbieujA== - caniuse-lite@^1.0.30001400, caniuse-lite@^1.0.30001669: version "1.0.30001680" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001680.tgz#5380ede637a33b9f9f1fc6045ea99bd142f3da5e" @@ -7023,6 +5163,11 @@ caniuse-lite@^1.0.30001449, caniuse-lite@^1.0.30001541, caniuse-lite@^1.0.300015 resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001677.tgz" integrity sha512-fmfjsOlJUpMWu+mAAtZZZHz7UEwsUxIIvu1TJfO1HqFQvB/B+ii0xr9B5HpbZY/mC4XZ8SvjHJqtAY6pDPQEog== +caniuse-lite@^1.0.30001688: + version "1.0.30001692" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001692.tgz#4585729d95e6b95be5b439da6ab55250cd125bf9" + integrity sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A== + capital-case@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/capital-case/-/capital-case-1.0.4.tgz#9d130292353c9249f6b00fa5852bee38a717e669" @@ -7070,7 +5215,7 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -7143,16 +5288,6 @@ chokidar@^4.0.0: dependencies: readdirp "^4.0.1" -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - chrome-trace-event@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz#05bffd7ff928465093314708c93bdfa9bd1f0f5b" @@ -7176,6 +5311,11 @@ cjs-module-lexer@^1.0.0: resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== +cjs-module-lexer@^1.2.3: + version "1.4.1" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz#707413784dbb3a72aa11c2f2b042a0bef4004170" + integrity sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA== + classnames@2.2.5: version "2.2.5" resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.5.tgz#fb3801d453467649ef3603c7d61a02bd129bde6d" @@ -7203,27 +5343,6 @@ clean-stack@^2.0.0: resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-spinners@^2.5.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.7.0.tgz#f815fd30b5f9eaac02db604c7a231ed7cb2f797a" - integrity sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw== - -cli-table3@^0.6.1: - version "0.6.3" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.3.tgz#61ab765aac156b52f222954ffc607a6f01dbeeb2" - integrity sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg== - dependencies: - string-width "^4.2.0" - optionalDependencies: - "@colors/colors" "1.5.0" - cli-width@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-4.1.0.tgz#42daac41d3c254ef38ad8ac037672130173691c5" @@ -7238,15 +5357,6 @@ cliui@^6.0.0: strip-ansi "^6.0.0" wrap-ansi "^6.2.0" -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - cliui@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" @@ -7265,11 +5375,6 @@ clone-deep@^4.0.1: kind-of "^6.0.2" shallow-clone "^3.0.0" -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== - clsx@^1.1.0: version "1.1.1" resolved "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz" @@ -7309,7 +5414,7 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -colorette@^2.0.10, colorette@^2.0.19: +colorette@^2.0.10: version "2.0.20" resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== @@ -7331,7 +5436,7 @@ comma-separated-tokens@^2.0.0: resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.2.tgz#d4c25abb679b7751c880be623c1179780fe1dd98" integrity sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg== -commander@^2.11.0, commander@^2.12.1, commander@^2.19.0, commander@^2.20.0: +commander@^2.11.0, commander@^2.12.1, commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -7351,17 +5456,12 @@ commander@^5.1.0: resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== -commander@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" - integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== - commander@^8.3.0: version "8.3.0" resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== -commander@^9.0.0, commander@^9.4.1: +commander@^9.4.1: version "9.5.0" resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30" integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== @@ -7376,41 +5476,11 @@ commondir@^1.0.1: resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== -compressible@~2.0.16: - version "2.0.18" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -concat-stream@^1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - console-browserify@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" @@ -7437,11 +5507,6 @@ content-disposition@0.5.4: dependencies: safe-buffer "5.2.1" -content-type@~1.0.4, content-type@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" - integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== - convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.9.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" @@ -7452,16 +5517,6 @@ convert-source-map@^2.0.0: resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" - integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= - -cookie@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" - integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== - cookie@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" @@ -7474,18 +5529,6 @@ core-js-compat@^3.25.1: dependencies: browserslist "^4.21.5" -core-js-compat@^3.31.0, core-js-compat@^3.33.1: - version "3.33.2" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.2.tgz#3ea4563bfd015ad4e4b52442865b02c62aba5085" - integrity sha512-axfo+wxFVxnqf8RvxTzoAlzW4gRoacrHeoFlc9n0x50+7BEyZL/Rt3hicaED1/CEd7I6tPCPVUYcJwCMO5XUYw== - dependencies: - browserslist "^4.22.1" - -core-js-pure@^3.23.3: - version "3.30.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.30.1.tgz#7d93dc89e7d47b8ef05d7e79f507b0e99ea77eec" - integrity sha512-nXBEVpmUnNRhz83cHd9JRQC52cTMcuXAmR56+9dSMpRdpeA4I1PX6yjmhd71Eyc/wXNsdBdUDIj1QTIeZpU5Tg== - core-js@3.25.1: version "3.25.1" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.25.1.tgz#5818e09de0db8956e16bf10e2a7141e931b7c69c" @@ -7565,6 +5608,19 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: safe-buffer "^5.0.1" sha.js "^2.4.8" +create-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" + integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== + dependencies: + "@jest/types" "^29.6.3" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-config "^29.7.0" + jest-util "^29.7.0" + prompts "^2.0.1" + create-react-class@^15.5.1: version "15.7.0" resolved "https://registry.npmjs.org/create-react-class/-/create-react-class-15.7.0.tgz" @@ -7604,11 +5660,6 @@ crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" -crypto-random-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" - integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== - css-loader@6.7.3, css-loader@^6.7.1: version "6.7.3" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.7.3.tgz#1e8799f3ccc5874fdd55461af51137fcc5befbcd" @@ -7732,20 +5783,20 @@ date-fns@3.6.0: resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-3.6.0.tgz#f20ca4fe94f8b754951b24240676e8618c0206bf" integrity sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww== -debug@2.6.9, debug@^2.6.8, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.4: +debug@4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" +debug@^2.6.8, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + debug@^3.2.7: version "3.2.7" resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" @@ -7780,6 +5831,11 @@ dedent@^0.7.0: resolved "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz" integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= +dedent@^1.0.0: + version "1.5.3" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a" + integrity sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ== + deep-equal@^1.0.0: version "1.1.1" resolved "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz" @@ -7802,14 +5858,6 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== -default-browser-id@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-3.0.0.tgz#bee7bbbef1f4e75d31f98f4d3f1556a14cea790c" - integrity sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA== - dependencies: - bplist-parser "^0.2.0" - untildify "^4.0.0" - default-require-extensions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-3.0.1.tgz#bfae00feeaeada68c2ae256c62540f60b80625bd" @@ -7817,22 +5865,6 @@ default-require-extensions@^3.0.0: dependencies: strip-bom "^4.0.0" -defaults@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" - integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== - dependencies: - clone "^1.0.2" - -define-data-property@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" - integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== - dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - gopd "^1.0.1" - define-lazy-prop@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" @@ -7846,34 +5878,10 @@ define-properties@^1.1.3, define-properties@^1.1.4, define-properties@~1.1.2: has-property-descriptors "^1.0.0" object-keys "^1.1.1" -defu@^6.1.2: - version "6.1.2" - resolved "https://registry.yarnpkg.com/defu/-/defu-6.1.2.tgz#1217cba167410a1765ba93893c6dbac9ed9d9e5c" - integrity sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ== - -del@^6.0.0: - version "6.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-6.1.1.tgz#3b70314f1ec0aa325c6b14eb36b95786671edb7a" - integrity sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg== - dependencies: - globby "^11.0.1" - graceful-fs "^4.2.4" - is-glob "^4.0.1" - is-path-cwd "^2.2.0" - is-path-inside "^3.0.2" - p-map "^4.0.0" - rimraf "^3.0.2" - slash "^3.0.0" - delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -depd@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== dequal@^2.0.0, dequal@^2.0.2, dequal@^2.0.3: version "2.0.3" @@ -7888,21 +5896,11 @@ des.js@^1.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" -destroy@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - detect-file@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz" integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= -detect-indent@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" - integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== - detect-libc@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" @@ -7913,41 +5911,23 @@ detect-newline@^3.0.0: resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== -detect-node-es@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493" - integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ== - detect-node@^2.0.4, detect-node@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz" integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== -detect-package-manager@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/detect-package-manager/-/detect-package-manager-2.0.1.tgz#6b182e3ae5e1826752bfef1de9a7b828cffa50d8" - integrity sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A== - dependencies: - execa "^5.1.1" - -detect-port@^1.3.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.5.1.tgz#451ca9b6eaf20451acb0799b8ab40dff7718727b" - integrity sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ== +devlop@^1.0.0, devlop@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/devlop/-/devlop-1.1.0.tgz#4db7c2ca4dc6e0e834c30be70c94bbc976dc7018" + integrity sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA== dependencies: - address "^1.0.1" - debug "4" + dequal "^2.0.0" diff-match-patch@^1.0.4: version "1.0.5" resolved "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz" integrity sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw== -diff-sequences@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-28.1.1.tgz#9989dc731266dc2903457a70e996f3a041913ac6" - integrity sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw== - diff-sequences@^29.2.0: version "29.2.0" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.2.0.tgz#4c55b5b40706c7b5d2c5c75999a50c56d214e8f6" @@ -8125,43 +6105,6 @@ dot-case@^3.0.4: no-case "^3.0.4" tslib "^2.0.3" -dotenv-expand@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-10.0.0.tgz#12605d00fb0af6d0a592e6558585784032e4ef37" - integrity sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A== - -dotenv@^16.0.0: - version "16.0.3" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" - integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== - -duplexify@^3.5.0, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - -ejs@^3.1.8: - version "3.1.10" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" - integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== - dependencies: - jake "^10.8.5" - electron-to-chromium@^1.4.251, electron-to-chromium@^1.5.41: version "1.5.56" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.56.tgz#3213f369efc3a41091c3b2c05bc0f406108ac1df" @@ -8182,6 +6125,11 @@ electron-to-chromium@^1.4.668: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.724.tgz#e0a86fe4d3d0e05a4d7b032549d79608078f830d" integrity sha512-RTRvkmRkGhNBPPpdrgtDKvmOEYTrPlXDfc0J/Nfq5s29tEahAwhiX4mmhNzj6febWMleulxVYPh7QwCSL/EldA== +electron-to-chromium@^1.5.73: + version "1.5.83" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.83.tgz#3f74078f0c83e24bf7e692eaa855a998d1bec34f" + integrity sha512-LcUDPqSt+V0QmI47XLzZrz5OqILSMGsPFkDYus22rIbgorSvBYEFqq854ltTmUdHkY92FSdAAvsh4jWEULMdfQ== + elliptic@^6.5.3, elliptic@^6.5.4: version "6.6.0" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.6.0.tgz#5919ec723286c1edf28685aa89261d4761afa210" @@ -8215,33 +6163,11 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - emojis-list@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - -encodeurl@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" - integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== - -end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - endent@^2.0.1: version "2.1.0" resolved "https://registry.yarnpkg.com/endent/-/endent-2.1.0.tgz#5aaba698fb569e5e18e69e1ff7a28ff35373cd88" @@ -8326,13 +6252,6 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -error-stack-parser@^2.0.6: - version "2.1.4" - resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286" - integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== - dependencies: - stackframe "^1.3.4" - es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.20.4: version "1.21.1" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.1.tgz#e6105a099967c08377830a0c9cb589d570dd86c6" @@ -8372,18 +6291,6 @@ es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.20.4: unbox-primitive "^1.0.2" which-typed-array "^1.1.9" -es-define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" - integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== - dependencies: - get-intrinsic "^1.2.4" - -es-errors@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" - integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== - es-get-iterator@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6" @@ -8409,6 +6316,11 @@ es-module-lexer@^1.2.1: resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.2.1.tgz#ba303831f63e6a394983fde2f97ad77b22324527" integrity sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg== +es-module-lexer@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.6.0.tgz#da49f587fd9e68ee2404fe4e256c0c7d3a81be21" + integrity sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ== + es-set-tostringtag@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" @@ -8432,7 +6344,7 @@ es6-error@^4.0.1: resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== -es6-object-assign@1.1.0, es6-object-assign@^1.1.0: +es6-object-assign@1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz" integrity sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw= @@ -8534,11 +6446,6 @@ esbuild-openbsd-64@0.14.26: resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.26.tgz#68e2949986fba77f17dfb86ee5b4e1f37cd302ca" integrity sha512-Xj7IWpsPn/hgKNzwjLpnf6wMtV0lfw5bzn7N9vmiCKx9TBA28L2hI8G15O0s9atLKny4HpmCGwZWmReNF1Ui6g== -esbuild-plugin-alias@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/esbuild-plugin-alias/-/esbuild-plugin-alias-0.2.1.tgz#45a86cb941e20e7c2bc68a2bea53562172494fcb" - integrity sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ== - esbuild-register@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/esbuild-register/-/esbuild-register-3.5.0.tgz#449613fb29ab94325c722f560f800dd946dc8ea8" @@ -8592,44 +6499,42 @@ esbuild@^0.14.6: esbuild-windows-64 "0.14.26" esbuild-windows-arm64 "0.14.26" -esbuild@^0.18.0: - version "0.18.20" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.20.tgz#4709f5a34801b43b799ab7d6d82f7284a9b7a7a6" - integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA== +"esbuild@^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0": + version "0.24.2" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.24.2.tgz#b5b55bee7de017bff5fb8a4e3e44f2ebe2c3567d" + integrity sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA== optionalDependencies: - "@esbuild/android-arm" "0.18.20" - "@esbuild/android-arm64" "0.18.20" - "@esbuild/android-x64" "0.18.20" - "@esbuild/darwin-arm64" "0.18.20" - "@esbuild/darwin-x64" "0.18.20" - "@esbuild/freebsd-arm64" "0.18.20" - "@esbuild/freebsd-x64" "0.18.20" - "@esbuild/linux-arm" "0.18.20" - "@esbuild/linux-arm64" "0.18.20" - "@esbuild/linux-ia32" "0.18.20" - "@esbuild/linux-loong64" "0.18.20" - "@esbuild/linux-mips64el" "0.18.20" - "@esbuild/linux-ppc64" "0.18.20" - "@esbuild/linux-riscv64" "0.18.20" - "@esbuild/linux-s390x" "0.18.20" - "@esbuild/linux-x64" "0.18.20" - "@esbuild/netbsd-x64" "0.18.20" - "@esbuild/openbsd-x64" "0.18.20" - "@esbuild/sunos-x64" "0.18.20" - "@esbuild/win32-arm64" "0.18.20" - "@esbuild/win32-ia32" "0.18.20" - "@esbuild/win32-x64" "0.18.20" + "@esbuild/aix-ppc64" "0.24.2" + "@esbuild/android-arm" "0.24.2" + "@esbuild/android-arm64" "0.24.2" + "@esbuild/android-x64" "0.24.2" + "@esbuild/darwin-arm64" "0.24.2" + "@esbuild/darwin-x64" "0.24.2" + "@esbuild/freebsd-arm64" "0.24.2" + "@esbuild/freebsd-x64" "0.24.2" + "@esbuild/linux-arm" "0.24.2" + "@esbuild/linux-arm64" "0.24.2" + "@esbuild/linux-ia32" "0.24.2" + "@esbuild/linux-loong64" "0.24.2" + "@esbuild/linux-mips64el" "0.24.2" + "@esbuild/linux-ppc64" "0.24.2" + "@esbuild/linux-riscv64" "0.24.2" + "@esbuild/linux-s390x" "0.24.2" + "@esbuild/linux-x64" "0.24.2" + "@esbuild/netbsd-arm64" "0.24.2" + "@esbuild/netbsd-x64" "0.24.2" + "@esbuild/openbsd-arm64" "0.24.2" + "@esbuild/openbsd-x64" "0.24.2" + "@esbuild/sunos-x64" "0.24.2" + "@esbuild/win32-arm64" "0.24.2" + "@esbuild/win32-ia32" "0.24.2" + "@esbuild/win32-x64" "0.24.2" escalade@^3.1.1, escalade@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= - escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -8662,17 +6567,6 @@ escodegen@^2.0.0: optionalDependencies: source-map "~0.6.1" -escodegen@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" - integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== - dependencies: - esprima "^4.0.1" - estraverse "^5.2.0" - esutils "^2.0.2" - optionalDependencies: - source-map "~0.6.1" - eslint-config-airbnb-base@^11.3.0: version "11.3.2" resolved "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-11.3.2.tgz" @@ -8793,14 +6687,14 @@ eslint-plugin-react@7.29.4: semver "^6.3.0" string.prototype.matchall "^4.0.6" -eslint-plugin-storybook@0.6.11: - version "0.6.11" - resolved "https://registry.yarnpkg.com/eslint-plugin-storybook/-/eslint-plugin-storybook-0.6.11.tgz#3c52fc3e994d1539d8a69c4028999402601eaacb" - integrity sha512-lIVmCqQgA0bhcuS1yWYBFrnPHBKPEQI+LHPDtlN81UE1/17onCqgwUW7Nyt7gS2OHjCAiOR4npjTGEoe0hssKw== +eslint-plugin-storybook@0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-storybook/-/eslint-plugin-storybook-0.9.0.tgz#8f985899b957748d5780f8e6eb5d37c705976bc8" + integrity sha512-qOT/2vQBo0VqrG/BhZv8IdSsKQiyzJw+2Wqq+WFCiblI/PfxLSrGkF/buiXF+HumwfsCyBdaC94UhqhmYFmAvA== dependencies: "@storybook/csf" "^0.0.1" - "@typescript-eslint/utils" "^5.45.0" - requireindex "^1.1.0" + "@typescript-eslint/utils" "^5.62.0" + requireindex "^1.2.0" ts-dedent "^2.2.0" eslint-restricted-globals@^0.1.1: @@ -8930,25 +6824,11 @@ estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== -estree-to-babel@^3.1.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/estree-to-babel/-/estree-to-babel-3.2.1.tgz#82e78315275c3ca74475fdc8ac1a5103c8a75bf5" - integrity sha512-YNF+mZ/Wu2FU/gvmzuWtYc8rloubL7wfXCTgouFrnjGVXPA/EeYYA7pupXWrb3Iv1cTBeSSxxJIbK23l4MRNqg== - dependencies: - "@babel/traverse" "^7.1.6" - "@babel/types" "^7.2.0" - c8 "^7.6.0" - esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= - events@^3.0.0, events@^3.2.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" @@ -8967,7 +6847,7 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" -execa@^5.0.0, execa@^5.1.1: +execa@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== @@ -9019,18 +6899,7 @@ expect@1.20.2: object-keys "^1.0.9" tmatch "^2.0.1" -expect@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/expect/-/expect-28.1.3.tgz#90a7c1a124f1824133dd4533cce2d2bdcb6603ec" - integrity sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g== - dependencies: - "@jest/expect-utils" "^28.1.3" - jest-get-type "^28.0.2" - jest-matcher-utils "^28.1.3" - jest-message-util "^28.1.3" - jest-util "^28.1.3" - -expect@^29.0.0: +expect@^29.0.0, expect@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== @@ -9052,58 +6921,11 @@ expect@^29.2.0: jest-message-util "^29.2.0" jest-util "^29.2.0" -express@^4.17.3: - version "4.20.0" - resolved "https://registry.yarnpkg.com/express/-/express-4.20.0.tgz#f1d08e591fcec770c07be4767af8eb9bcfd67c48" - integrity sha512-pLdae7I6QqShF5PnNTCVn4hI91Dx0Grkn2+IAsMTgMIKuQVte2dN9PeGSSAME2FR8anOhVA62QDIUaWVfEXVLw== - dependencies: - accepts "~1.3.8" - array-flatten "1.1.1" - body-parser "1.20.3" - content-disposition "0.5.4" - content-type "~1.0.4" - cookie "0.6.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "2.0.0" - encodeurl "~2.0.0" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "1.2.0" - fresh "0.5.2" - http-errors "2.0.0" - merge-descriptors "1.0.3" - methods "~1.1.2" - on-finished "2.4.1" - parseurl "~1.3.3" - path-to-regexp "0.1.10" - proxy-addr "~2.0.7" - qs "6.11.0" - range-parser "~1.2.1" - safe-buffer "5.2.1" - send "0.19.0" - serve-static "1.16.0" - setprototypeof "1.2.0" - statuses "2.0.1" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - extend@^3.0.0: version "3.0.2" resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -extract-zip@^1.6.6: - version "1.7.0" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.7.0.tgz#556cc3ae9df7f452c493a0cfb51cc30277940927" - integrity sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA== - dependencies: - concat-stream "^1.6.2" - debug "^2.6.9" - mkdirp "^0.5.4" - yauzl "^2.10.0" - fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" @@ -9166,18 +6988,6 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" -fd-slicer@~1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz" - integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= - dependencies: - pend "~1.2.0" - -fetch-retry@^5.0.2: - version "5.0.4" - resolved "https://registry.yarnpkg.com/fetch-retry/-/fetch-retry-5.0.4.tgz#06e8e4533030bf6faa00ffbb9450cb9264c23c12" - integrity sha512-LXcdgpdcVedccGg0AZqg+S8lX/FCdwXD92WNZ5k5qsb0irRhSFsBOpcJt7oevyqT2/C2nEE0zSFNdBEpj3YOSw== - file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" @@ -9190,21 +7000,6 @@ file-saver@1.3.8: resolved "https://registry.npmjs.org/file-saver/-/file-saver-1.3.8.tgz" integrity sha512-spKHSBQIxxS81N/O21WmuXA2F6wppUCsutpzenOeZzOCCJ5gEfcbqJP983IrpLXzYmXnMUa6J03SubcNPdKrlg== -file-system-cache@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/file-system-cache/-/file-system-cache-2.3.0.tgz#201feaf4c8cd97b9d0d608e96861bb6005f46fe6" - integrity sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ== - dependencies: - fs-extra "11.1.1" - ramda "0.29.0" - -filelist@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" - integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== - dependencies: - minimatch "^5.0.1" - fill-range@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" @@ -9212,29 +7007,7 @@ fill-range@^7.1.1: dependencies: to-regex-range "^5.0.1" -finalhandler@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" - integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "2.4.1" - parseurl "~1.3.3" - statuses "2.0.1" - unpipe "~1.0.0" - -find-cache-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-cache-dir@^3.0.0, find-cache-dir@^3.2.0, find-cache-dir@^3.3.1, find-cache-dir@^3.3.2: +find-cache-dir@^3.2.0, find-cache-dir@^3.3.1: version "3.3.2" resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz" integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== @@ -9243,6 +7016,14 @@ find-cache-dir@^3.0.0, find-cache-dir@^3.2.0, find-cache-dir@^3.3.1, find-cache- make-dir "^3.0.2" pkg-dir "^4.1.0" +find-cache-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-4.0.0.tgz#a30ee0448f81a3990708f6453633c733e2f6eec2" + integrity sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg== + dependencies: + common-path-prefix "^3.0.0" + pkg-dir "^7.0.0" + find-file-up@^0.1.2: version "0.1.3" resolved "https://registry.yarnpkg.com/find-file-up/-/find-file-up-0.1.3.tgz#cf68091bcf9f300a40da411b37da5cce5a2fbea0" @@ -9279,13 +7060,6 @@ find-up@^2.1.0: dependencies: locate-path "^2.0.0" -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -9302,6 +7076,14 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" +find-up@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-6.3.0.tgz#2abab3d3280b2dc7ac10199ef324c4e002c8c790" + integrity sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw== + dependencies: + locate-path "^7.1.0" + path-exists "^5.0.0" + findup-sync@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-4.0.0.tgz#956c9cdde804052b881b428512905c4a5f2cdef0" @@ -9325,11 +7107,6 @@ flatted@^3.1.0: resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz" integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== -flow-parser@0.*: - version "0.205.0" - resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.205.0.tgz#8756173b6488dedc31ab838e80c8f008d7a44e05" - integrity sha512-ZJ6VuLe/BoqeI4GsF+ZuzlpfGi3FCnBrb4xDYhgEJxRt7SAj3ibRuRSsuJSRcY+lQhPZRPNbNWiQqFMxramUzw== - follow-redirects@^1.15.0, follow-redirects@^1.15.6: version "1.15.6" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" @@ -9350,14 +7127,6 @@ foreground-child@^2.0.0: cross-spawn "^7.0.0" signal-exit "^3.0.2" -foreground-child@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" - integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^4.0.1" - fork-ts-checker-webpack-plugin@6.5.0: version "6.5.0" resolved "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.0.tgz" @@ -9413,45 +7182,21 @@ form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - fraction.js@^4.3.7: version "4.3.7" resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= - fromentries@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/fromentries/-/fromentries-1.3.2.tgz#e4bca6808816bf8f93b52750f1127f5a6fd86e3a" integrity sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg== -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - fs-exists-sync@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" integrity sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg== -fs-extra@11.1.1, fs-extra@^11.1.0: - version "11.1.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3b002378b0954bb6ae7efdc0876e2d" - integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - fs-extra@^10.0.0: version "10.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" @@ -9471,13 +7216,6 @@ fs-extra@^9.0.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - fs-monkey@1.0.3, fs-monkey@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz" @@ -9552,37 +7290,11 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@ has "^1.0.3" has-symbols "^1.0.3" -get-intrinsic@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" - integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== - dependencies: - es-errors "^1.3.0" - function-bind "^1.1.2" - has-proto "^1.0.1" - has-symbols "^1.0.3" - hasown "^2.0.0" - -get-nonce@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" - integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== - -get-npm-tarball-url@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/get-npm-tarball-url/-/get-npm-tarball-url-2.0.3.tgz#67dff908d699e9e2182530ae6e939a93e5f8dfdb" - integrity sha512-R/PW6RqyaBQNWYaSyfrh54/qtcnOp22FHCCiRhSSZj0FP3KQWCsxxt0DzIdVTbwTqe9CtQfvl/FPD4UIPt4pqw== - get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== -get-port@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" - integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== - get-stream@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" @@ -9596,24 +7308,6 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" -giget@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/giget/-/giget-1.1.2.tgz#f99a49cb0ff85479c8c3612cdc7ca27f2066e818" - integrity sha512-HsLoS07HiQ5oqvObOI+Qb2tyZH4Gj5nYGfF9qQcZNrPw+uEFhdXtgJr01aO2pWadGHucajYDLxxbtQkm97ON2A== - dependencies: - colorette "^2.0.19" - defu "^6.1.2" - https-proxy-agent "^5.0.1" - mri "^1.2.0" - node-fetch-native "^1.0.2" - pathe "^1.1.0" - tar "^6.1.13" - -github-slugger@^1.0.0: - version "1.4.0" - resolved "https://registry.npmjs.org/github-slugger/-/github-slugger-1.4.0.tgz" - integrity sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ== - glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -9626,17 +7320,6 @@ glob-to-regexp@^0.4.1: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@^10.0.0, glob@^10.2.2: - version "10.3.10" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" - integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== - dependencies: - foreground-child "^3.1.0" - jackspeak "^2.3.5" - minimatch "^9.0.1" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - path-scurry "^1.10.1" - glob@^7.0.0, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" @@ -9706,7 +7389,7 @@ globalthis@^1.0.3: dependencies: define-properties "^1.1.3" -globby@^11.0.1, globby@^11.0.2, globby@^11.1.0: +globby@^11.1.0: version "11.1.0" resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -9725,7 +7408,7 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.2.4, graceful-fs@^4.2.9: +graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.2.4, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -9750,30 +7433,6 @@ growly@^1.3.0: resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" integrity sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw== -gunzip-maybe@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/gunzip-maybe/-/gunzip-maybe-1.4.2.tgz#b913564ae3be0eda6f3de36464837a9cd94b98ac" - integrity sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw== - dependencies: - browserify-zlib "^0.1.4" - is-deflate "^1.0.0" - is-gzip "^1.0.0" - peek-stream "^1.1.0" - pumpify "^1.3.3" - through2 "^2.0.3" - -handlebars@^4.7.7: - version "4.7.7" - resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz" - integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== - dependencies: - minimist "^1.2.5" - neo-async "^2.6.0" - source-map "^0.6.1" - wordwrap "^1.0.0" - optionalDependencies: - uglify-js "^3.1.4" - harmony-reflect@^1.4.6: version "1.6.2" resolved "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz" @@ -9808,13 +7467,6 @@ has-property-descriptors@^1.0.0: dependencies: get-intrinsic "^1.1.1" -has-property-descriptors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" - integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== - dependencies: - es-define-property "^1.0.0" - has-proto@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" @@ -9864,7 +7516,7 @@ hasha@^5.0.0: is-stream "^2.0.0" type-fest "^0.8.0" -hasown@^2.0.0: +hasown@^2.0.0, hasown@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== @@ -9962,11 +7614,6 @@ homedir-polyfill@^1.0.0, homedir-polyfill@^1.0.1: dependencies: parse-passwd "^1.0.0" -hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== - html-encoding-sniffer@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" @@ -10004,11 +7651,6 @@ html-minifier-terser@^6.0.2: relateurl "^0.2.7" terser "^5.10.0" -html-tags@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz" - integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg== - html-webpack-plugin@5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz#c3911936f57681c1f9f4d8b68c158cd9dfe52f50" @@ -10053,17 +7695,6 @@ htmlparser2@^6.1.0: domutils "^2.5.2" entities "^2.0.0" -http-errors@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" - http-parser-js@>=0.5.1: version "0.5.6" resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz" @@ -10092,14 +7723,6 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg== -https-proxy-agent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz#702b71fb5520a132a66de1f67541d9e62154d82b" - integrity sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg== - dependencies: - agent-base "5" - debug "4" - https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" @@ -10139,7 +7762,7 @@ identity-obj-proxy@3.0.0: dependencies: harmony-reflect "^1.4.6" -ieee754@^1.1.13, ieee754@^1.1.4: +ieee754@^1.1.4: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== @@ -10198,7 +7821,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -10249,21 +7872,6 @@ invariant@^2.0.0, invariant@^2.2.1, invariant@^2.2.4: dependencies: loose-envify "^1.0.0" -ip@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.1.tgz#e8f3595d33a3ea66490204234b77636965307105" - integrity sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ== - -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -is-absolute-url@^3.0.0: - version "3.0.3" - resolved "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz" - integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== - is-arguments@^1.0.4, is-arguments@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" @@ -10339,6 +7947,13 @@ is-core-module@^2.13.0: dependencies: hasown "^2.0.0" +is-core-module@^2.16.0: + version "2.16.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" + integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== + dependencies: + hasown "^2.0.2" + is-core-module@^2.2.0, is-core-module@^2.8.0, is-core-module@^2.9.0: version "2.10.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed" @@ -10353,11 +7968,6 @@ is-date-object@^1.0.1, is-date-object@^1.0.5: dependencies: has-tostringtag "^1.0.0" -is-deflate@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-deflate/-/is-deflate-1.0.0.tgz#c862901c3c161fb09dac7cdc7e784f80e98f2f14" - integrity sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ== - is-docker@^2.0.0, is-docker@^2.1.1: version "2.2.1" resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" @@ -10426,29 +8036,11 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-gzip@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-gzip/-/is-gzip-1.0.0.tgz#6ca8b07b99c77998025900e555ced8ed80879a83" - integrity sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ== - -is-interactive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" - integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== - is-map@^2.0.1, is-map@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz" integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== -is-nan@^1.2.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" - integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - is-negative-zero@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" @@ -10471,26 +8063,11 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-path-cwd@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - -is-path-inside@^3.0.2: - version "3.0.3" - resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - is-plain-obj@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0" integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg== -is-plain-object@5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz" - integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== - is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -10558,11 +8135,6 @@ is-typedarray@^1.0.0: resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - is-weakmap@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" @@ -10666,6 +8238,17 @@ istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: istanbul-lib-coverage "^3.2.0" semver "^6.3.0" +istanbul-lib-instrument@^6.0.0: + version "6.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz#fa15401df6c15874bcb2105f773325d78c666765" + integrity sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q== + dependencies: + "@babel/core" "^7.23.9" + "@babel/parser" "^7.23.9" + "@istanbuljs/schema" "^0.1.3" + istanbul-lib-coverage "^3.2.0" + semver "^7.5.4" + istanbul-lib-processinfo@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz#366d454cd0dcb7eb6e0e419378e60072c8626169" @@ -10704,7 +8287,7 @@ istanbul-reports@^3.0.2: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -istanbul-reports@^3.1.3, istanbul-reports@^3.1.4: +istanbul-reports@^3.1.3: version "3.1.5" resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== @@ -10712,33 +8295,6 @@ istanbul-reports@^3.1.3, istanbul-reports@^3.1.4: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jackspeak@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" - integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== - dependencies: - "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" - -jake@^10.8.5: - version "10.8.5" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" - integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== - dependencies: - async "^3.2.3" - chalk "^4.0.2" - filelist "^1.0.1" - minimatch "^3.0.4" - -jest-changed-files@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-28.1.3.tgz#d9aeee6792be3686c47cb988a8eaf82ff4238831" - integrity sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA== - dependencies: - execa "^5.0.0" - p-limit "^3.1.0" - jest-changed-files@^29.2.0: version "29.2.0" resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.2.0.tgz#b6598daa9803ea6a4dce7968e20ab380ddbee289" @@ -10747,30 +8303,14 @@ jest-changed-files@^29.2.0: execa "^5.0.0" p-limit "^3.1.0" -jest-circus@^28.0.0, jest-circus@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-28.1.3.tgz#d14bd11cf8ee1a03d69902dc47b6bd4634ee00e4" - integrity sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow== +jest-changed-files@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" + integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== dependencies: - "@jest/environment" "^28.1.3" - "@jest/expect" "^28.1.3" - "@jest/test-result" "^28.1.3" - "@jest/types" "^28.1.3" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - dedent "^0.7.0" - is-generator-fn "^2.0.0" - jest-each "^28.1.3" - jest-matcher-utils "^28.1.3" - jest-message-util "^28.1.3" - jest-runtime "^28.1.3" - jest-snapshot "^28.1.3" - jest-util "^28.1.3" + execa "^5.0.0" + jest-util "^29.7.0" p-limit "^3.1.0" - pretty-format "^28.1.3" - slash "^3.0.0" - stack-utils "^2.0.3" jest-circus@^29.2.0: version "29.2.0" @@ -10797,23 +8337,31 @@ jest-circus@^29.2.0: slash "^3.0.0" stack-utils "^2.0.3" -jest-cli@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-28.1.3.tgz#558b33c577d06de55087b8448d373b9f654e46b2" - integrity sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ== +jest-circus@^29.6.4, jest-circus@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" + integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== dependencies: - "@jest/core" "^28.1.3" - "@jest/test-result" "^28.1.3" - "@jest/types" "^28.1.3" + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - import-local "^3.0.2" - jest-config "^28.1.3" - jest-util "^28.1.3" - jest-validate "^28.1.3" - prompts "^2.0.1" - yargs "^17.3.1" + co "^4.6.0" + dedent "^1.0.0" + is-generator-fn "^2.0.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.0.0" + slash "^3.0.0" + stack-utils "^2.0.3" jest-cli@^29.2.0: version "29.2.0" @@ -10833,33 +8381,22 @@ jest-cli@^29.2.0: prompts "^2.0.1" yargs "^17.3.1" -jest-config@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-28.1.3.tgz#e315e1f73df3cac31447eed8b8740a477392ec60" - integrity sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ== +jest-cli@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" + integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== dependencies: - "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^28.1.3" - "@jest/types" "^28.1.3" - babel-jest "^28.1.3" + "@jest/core" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" chalk "^4.0.0" - ci-info "^3.2.0" - deepmerge "^4.2.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-circus "^28.1.3" - jest-environment-node "^28.1.3" - jest-get-type "^28.0.2" - jest-regex-util "^28.0.2" - jest-resolve "^28.1.3" - jest-runner "^28.1.3" - jest-util "^28.1.3" - jest-validate "^28.1.3" - micromatch "^4.0.4" - parse-json "^5.2.0" - pretty-format "^28.1.3" - slash "^3.0.0" - strip-json-comments "^3.1.1" + create-jest "^29.7.0" + exit "^0.1.2" + import-local "^3.0.2" + jest-config "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + yargs "^17.3.1" jest-config@^29.2.0: version "29.2.0" @@ -10885,20 +8422,38 @@ jest-config@^29.2.0: jest-validate "^29.2.0" micromatch "^4.0.4" parse-json "^5.2.0" - pretty-format "^29.2.0" + pretty-format "^29.2.0" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +jest-config@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" + integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== + dependencies: + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^29.7.0" + "@jest/types" "^29.6.3" + babel-jest "^29.7.0" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-circus "^29.7.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.4" + parse-json "^5.2.0" + pretty-format "^29.7.0" slash "^3.0.0" strip-json-comments "^3.1.1" -jest-diff@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-28.1.3.tgz#948a192d86f4e7a64c5264ad4da4877133d8792f" - integrity sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw== - dependencies: - chalk "^4.0.0" - diff-sequences "^28.1.1" - jest-get-type "^28.0.2" - pretty-format "^28.1.3" - jest-diff@^29.2.0: version "29.2.0" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.2.0.tgz#b1e11ac1a1401fc4792ef8ba406b48f1ae7d2bc5" @@ -10919,13 +8474,6 @@ jest-diff@^29.7.0: jest-get-type "^29.6.3" pretty-format "^29.7.0" -jest-docblock@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-28.1.1.tgz#6f515c3bf841516d82ecd57a62eed9204c2f42a8" - integrity sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA== - dependencies: - detect-newline "^3.0.0" - jest-docblock@^29.2.0: version "29.2.0" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.2.0.tgz#307203e20b637d97cee04809efc1d43afc641e82" @@ -10933,16 +8481,12 @@ jest-docblock@^29.2.0: dependencies: detect-newline "^3.0.0" -jest-each@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-28.1.3.tgz#bdd1516edbe2b1f3569cfdad9acd543040028f81" - integrity sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g== +jest-docblock@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" + integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== dependencies: - "@jest/types" "^28.1.3" - chalk "^4.0.0" - jest-get-type "^28.0.2" - jest-util "^28.1.3" - pretty-format "^28.1.3" + detect-newline "^3.0.0" jest-each@^29.2.0: version "29.2.0" @@ -10955,6 +8499,17 @@ jest-each@^29.2.0: jest-util "^29.2.0" pretty-format "^29.2.0" +jest-each@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" + integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== + dependencies: + "@jest/types" "^29.6.3" + chalk "^4.0.0" + jest-get-type "^29.6.3" + jest-util "^29.7.0" + pretty-format "^29.7.0" + jest-environment-jsdom@29.2.0: version "29.2.0" resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-29.2.0.tgz#a45aa6bb8737e7ab93ebb9111c7e5b1c9ae6aa51" @@ -10969,18 +8524,6 @@ jest-environment-jsdom@29.2.0: jest-util "^29.2.0" jsdom "^20.0.0" -jest-environment-node@^28.0.0, jest-environment-node@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-28.1.3.tgz#7e74fe40eb645b9d56c0c4b70ca4357faa349be5" - integrity sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A== - dependencies: - "@jest/environment" "^28.1.3" - "@jest/fake-timers" "^28.1.3" - "@jest/types" "^28.1.3" - "@types/node" "*" - jest-mock "^28.1.3" - jest-util "^28.1.3" - jest-environment-node@^29.2.0: version "29.2.0" resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.2.0.tgz#49c39d4f9df64fc74da3725cbcaeee6da01a6dd6" @@ -10993,16 +8536,23 @@ jest-environment-node@^29.2.0: jest-mock "^29.2.0" jest-util "^29.2.0" +jest-environment-node@^29.6.4, jest-environment-node@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" + integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + jest-util "^29.7.0" + jest-fixed-jsdom@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/jest-fixed-jsdom/-/jest-fixed-jsdom-0.0.8.tgz#5381b0deeaf4c1a0250e507092156b02be1e709c" integrity sha512-Pf7y5Px6MV8EwDtqJsYMJsiUi/Iu99hjMaqTrxGu/2j4kCz9wbz6iJ+NAIkbALKLlFxq7jpP8xJZbEVjCbih6A== -jest-get-type@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-28.0.2.tgz#34622e628e4fdcd793d46db8a242227901fcf203" - integrity sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA== - jest-get-type@^29.2.0: version "29.2.0" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.2.0.tgz#726646f927ef61d583a3b3adb1ab13f3a5036408" @@ -11013,25 +8563,6 @@ jest-get-type@^29.6.3: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== -jest-haste-map@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-28.1.3.tgz#abd5451129a38d9841049644f34b034308944e2b" - integrity sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA== - dependencies: - "@jest/types" "^28.1.3" - "@types/graceful-fs" "^4.1.3" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^28.0.2" - jest-util "^28.1.3" - jest-worker "^28.1.3" - micromatch "^4.0.4" - walker "^1.0.8" - optionalDependencies: - fsevents "^2.3.2" - jest-haste-map@^29.2.0: version "29.2.0" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.2.0.tgz#2410f2ec93958e0bd894818de6c8056eb1b4d6fc" @@ -11051,43 +8582,35 @@ jest-haste-map@^29.2.0: optionalDependencies: fsevents "^2.3.2" -jest-haste-map@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.5.0.tgz#69bd67dc9012d6e2723f20a945099e972b2e94de" - integrity sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA== +jest-haste-map@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" + integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== dependencies: - "@jest/types" "^29.5.0" + "@jest/types" "^29.6.3" "@types/graceful-fs" "^4.1.3" "@types/node" "*" anymatch "^3.0.3" fb-watchman "^2.0.0" graceful-fs "^4.2.9" - jest-regex-util "^29.4.3" - jest-util "^29.5.0" - jest-worker "^29.5.0" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + jest-worker "^29.7.0" micromatch "^4.0.4" walker "^1.0.8" optionalDependencies: fsevents "^2.3.2" -jest-junit@^14.0.0: - version "14.0.1" - resolved "https://registry.yarnpkg.com/jest-junit/-/jest-junit-14.0.1.tgz#5b357d6f5d333459585d628a24cd48b5bbc92ba2" - integrity sha512-h7/wwzPbllgpQhhVcRzRC76/cc89GlazThoV1fDxcALkf26IIlRsu/AcTG64f4nR2WPE3Cbd+i/sVf+NCUHrWQ== +jest-junit@^16.0.0: + version "16.0.0" + resolved "https://registry.yarnpkg.com/jest-junit/-/jest-junit-16.0.0.tgz#d838e8c561cf9fdd7eb54f63020777eee4136785" + integrity sha512-A94mmw6NfJab4Fg/BlvVOUXzXgF0XIH6EmTgJ5NDPp4xoKq0Kr7sErb+4Xs9nZvu58pJojz5RFGpqnZYJTrRfQ== dependencies: mkdirp "^1.0.4" strip-ansi "^6.0.1" uuid "^8.3.2" xml "^1.0.1" -jest-leak-detector@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz#a6685d9b074be99e3adee816ce84fd30795e654d" - integrity sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA== - dependencies: - jest-get-type "^28.0.2" - pretty-format "^28.1.3" - jest-leak-detector@^29.2.0: version "29.2.0" resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.2.0.tgz#7c0eace293cf05a130a09beb1b9318ecc2f77692" @@ -11096,15 +8619,13 @@ jest-leak-detector@^29.2.0: jest-get-type "^29.2.0" pretty-format "^29.2.0" -jest-matcher-utils@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz#5a77f1c129dd5ba3b4d7fc20728806c78893146e" - integrity sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw== +jest-leak-detector@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" + integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== dependencies: - chalk "^4.0.0" - jest-diff "^28.1.3" - jest-get-type "^28.0.2" - pretty-format "^28.1.3" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" jest-matcher-utils@^29.2.0: version "29.2.0" @@ -11126,21 +8647,6 @@ jest-matcher-utils@^29.7.0: jest-get-type "^29.6.3" pretty-format "^29.7.0" -jest-message-util@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.3.tgz#232def7f2e333f1eecc90649b5b94b0055e7c43d" - integrity sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^28.1.3" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^28.1.3" - slash "^3.0.0" - stack-utils "^2.0.3" - jest-message-util@^29.2.0: version "29.2.0" resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.2.0.tgz#cbd43fd9a20a8facd4267ac37556bc5c9a525ec0" @@ -11171,14 +8677,6 @@ jest-message-util@^29.7.0: slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-28.1.3.tgz#d4e9b1fc838bea595c77ab73672ebf513ab249da" - integrity sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA== - dependencies: - "@jest/types" "^28.1.3" - "@types/node" "*" - jest-mock@^29.2.0: version "29.2.0" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.2.0.tgz#3531012881178f59f4b5fd1e243acc329d08d6a1" @@ -11188,13 +8686,22 @@ jest-mock@^29.2.0: "@types/node" "*" jest-util "^29.2.0" -jest-playwright-preset@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/jest-playwright-preset/-/jest-playwright-preset-2.0.0.tgz#624edcbdd31d5242a3420f9eda01781c4d657f70" - integrity sha512-pV5ruTJJMen3lwshUL4dlSqLlP8z4q9MXqWJkmy+sB6HYfzXoqBHzhl+5hslznhnSVTe4Dwu+reiiwcUJpYUbw== +jest-mock@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" + integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-util "^29.7.0" + +jest-playwright-preset@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jest-playwright-preset/-/jest-playwright-preset-4.0.0.tgz#c3d60cf039b48209cfd2234e6c7694d7ecb1cc7f" + integrity sha512-+dGZ1X2KqtwXaabVjTGxy0a3VzYfvYsWaRcuO8vMhyclHSOpGSI1+5cmlqzzCwQ3+fv0EjkTc7I5aV9lo08dYw== dependencies: expect-playwright "^0.8.0" - jest-process-manager "^0.3.1" + jest-process-manager "^0.4.0" nyc "^15.1.0" playwright-core ">=1.2.0" rimraf "^3.0.2" @@ -11205,10 +8712,10 @@ jest-pnp-resolver@^1.2.2: resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== -jest-process-manager@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/jest-process-manager/-/jest-process-manager-0.3.1.tgz#e748da83ea66ac5073087feb1150ba1270332b2e" - integrity sha512-x9W54UgZ7IkzUHgXtnI1x4GKOVjxtwW0CA/7yGbTHtT/YhENO0Lic2yfVyC/gekn7OIEMcQmy0L1r9WLQABfqw== +jest-process-manager@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/jest-process-manager/-/jest-process-manager-0.4.0.tgz#fb05c8e09ad400fd038436004815653bb98f4e8b" + integrity sha512-80Y6snDyb0p8GG83pDxGI/kQzwVTkCxc7ep5FPe/F6JYdvRDhwr6RzRmPSP7SEwuLhxo80lBS/NqOdUIbHIfhw== dependencies: "@types/wait-on" "^5.2.0" chalk "^4.1.0" @@ -11219,14 +8726,9 @@ jest-process-manager@^0.3.1: signal-exit "^3.0.3" spawnd "^5.0.0" tree-kill "^1.2.2" - wait-on "^5.3.0" - -jest-regex-util@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead" - integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw== + wait-on "^7.0.0" -jest-regex-util@^29.0.0: +jest-regex-util@^29.0.0, jest-regex-util@^29.6.3: version "29.6.3" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== @@ -11236,19 +8738,6 @@ jest-regex-util@^29.2.0: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.2.0.tgz#82ef3b587e8c303357728d0322d48bbfd2971f7b" integrity sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA== -jest-regex-util@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.4.3.tgz#a42616141e0cae052cfa32c169945d00c0aa0bb8" - integrity sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg== - -jest-resolve-dependencies@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.3.tgz#8c65d7583460df7275c6ea2791901fa975c1fe66" - integrity sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA== - dependencies: - jest-regex-util "^28.0.2" - jest-snapshot "^28.1.3" - jest-resolve-dependencies@^29.2.0: version "29.2.0" resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.2.0.tgz#a127b7d6b7df69d4eaf2c7c99f652f17ba0fed71" @@ -11257,20 +8746,13 @@ jest-resolve-dependencies@^29.2.0: jest-regex-util "^29.2.0" jest-snapshot "^29.2.0" -jest-resolve@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-28.1.3.tgz#cfb36100341ddbb061ec781426b3c31eb51aa0a8" - integrity sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ== +jest-resolve-dependencies@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" + integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== dependencies: - chalk "^4.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^28.1.3" - jest-pnp-resolver "^1.2.2" - jest-util "^28.1.3" - jest-validate "^28.1.3" - resolve "^1.20.0" - resolve.exports "^1.1.0" - slash "^3.0.0" + jest-regex-util "^29.6.3" + jest-snapshot "^29.7.0" jest-resolve@^29.2.0: version "29.2.0" @@ -11287,32 +8769,20 @@ jest-resolve@^29.2.0: resolve.exports "^1.1.0" slash "^3.0.0" -jest-runner@^28.0.0, jest-runner@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-28.1.3.tgz#5eee25febd730b4713a2cdfd76bdd5557840f9a1" - integrity sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA== +jest-resolve@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" + integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== dependencies: - "@jest/console" "^28.1.3" - "@jest/environment" "^28.1.3" - "@jest/test-result" "^28.1.3" - "@jest/transform" "^28.1.3" - "@jest/types" "^28.1.3" - "@types/node" "*" chalk "^4.0.0" - emittery "^0.10.2" graceful-fs "^4.2.9" - jest-docblock "^28.1.1" - jest-environment-node "^28.1.3" - jest-haste-map "^28.1.3" - jest-leak-detector "^28.1.3" - jest-message-util "^28.1.3" - jest-resolve "^28.1.3" - jest-runtime "^28.1.3" - jest-util "^28.1.3" - jest-watcher "^28.1.3" - jest-worker "^28.1.3" - p-limit "^3.1.0" - source-map-support "0.5.13" + jest-haste-map "^29.7.0" + jest-pnp-resolver "^1.2.2" + jest-util "^29.7.0" + jest-validate "^29.7.0" + resolve "^1.20.0" + resolve.exports "^2.0.0" + slash "^3.0.0" jest-runner@^29.2.0: version "29.2.0" @@ -11341,33 +8811,32 @@ jest-runner@^29.2.0: p-limit "^3.1.0" source-map-support "0.5.13" -jest-runtime@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-28.1.3.tgz#a57643458235aa53e8ec7821949e728960d0605f" - integrity sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw== - dependencies: - "@jest/environment" "^28.1.3" - "@jest/fake-timers" "^28.1.3" - "@jest/globals" "^28.1.3" - "@jest/source-map" "^28.1.2" - "@jest/test-result" "^28.1.3" - "@jest/transform" "^28.1.3" - "@jest/types" "^28.1.3" +jest-runner@^29.6.4, jest-runner@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" + integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== + 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" "*" chalk "^4.0.0" - cjs-module-lexer "^1.0.0" - collect-v8-coverage "^1.0.0" - execa "^5.0.0" - glob "^7.1.3" + emittery "^0.13.1" graceful-fs "^4.2.9" - jest-haste-map "^28.1.3" - jest-message-util "^28.1.3" - jest-mock "^28.1.3" - jest-regex-util "^28.0.2" - jest-resolve "^28.1.3" - jest-snapshot "^28.1.3" - jest-util "^28.1.3" - slash "^3.0.0" - strip-bom "^4.0.0" + 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" jest-runtime@^29.2.0: version "29.2.0" @@ -11397,6 +8866,34 @@ jest-runtime@^29.2.0: slash "^3.0.0" strip-bom "^4.0.0" +jest-runtime@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" + integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== + 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" "*" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + 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" + jest-serializer-html@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/jest-serializer-html/-/jest-serializer-html-7.1.0.tgz#0cfea8a03b9b82bc420fd2cb969bd76713a87c08" @@ -11404,35 +8901,6 @@ jest-serializer-html@^7.1.0: dependencies: diffable-html "^4.1.0" -jest-snapshot@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-28.1.3.tgz#17467b3ab8ddb81e2f605db05583d69388fc0668" - integrity sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg== - dependencies: - "@babel/core" "^7.11.6" - "@babel/generator" "^7.7.2" - "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/traverse" "^7.7.2" - "@babel/types" "^7.3.3" - "@jest/expect-utils" "^28.1.3" - "@jest/transform" "^28.1.3" - "@jest/types" "^28.1.3" - "@types/babel__traverse" "^7.0.6" - "@types/prettier" "^2.1.5" - babel-preset-current-node-syntax "^1.0.0" - chalk "^4.0.0" - expect "^28.1.3" - graceful-fs "^4.2.9" - jest-diff "^28.1.3" - jest-get-type "^28.0.2" - jest-haste-map "^28.1.3" - jest-matcher-utils "^28.1.3" - jest-message-util "^28.1.3" - jest-util "^28.1.3" - natural-compare "^1.4.0" - pretty-format "^28.1.3" - semver "^7.3.5" - jest-snapshot@^29.2.0: version "29.2.0" resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.2.0.tgz#fb3d4e1d9df579f37d7c60072877ee99376b6090" @@ -11463,17 +8931,31 @@ jest-snapshot@^29.2.0: pretty-format "^29.2.0" semver "^7.3.5" -jest-util@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.3.tgz#f4f932aa0074f0679943220ff9cbba7e497028b0" - integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ== +jest-snapshot@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" + integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== dependencies: - "@jest/types" "^28.1.3" - "@types/node" "*" + "@babel/core" "^7.11.6" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-jsx" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/types" "^7.3.3" + "@jest/expect-utils" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - ci-info "^3.2.0" + expect "^29.7.0" graceful-fs "^4.2.9" - picomatch "^2.2.3" + 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.5.3" jest-util@^29.2.0: version "29.2.0" @@ -11487,18 +8969,6 @@ jest-util@^29.2.0: graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-util@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.5.0.tgz#24a4d3d92fc39ce90425311b23c27a6e0ef16b8f" - integrity sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ== - dependencies: - "@jest/types" "^29.5.0" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - jest-util@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" @@ -11511,18 +8981,6 @@ jest-util@^29.7.0: graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-validate@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-28.1.3.tgz#e322267fd5e7c64cea4629612c357bbda96229df" - integrity sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA== - dependencies: - "@jest/types" "^28.1.3" - camelcase "^6.2.0" - chalk "^4.0.0" - jest-get-type "^28.0.2" - leven "^3.1.0" - pretty-format "^28.1.3" - jest-validate@^29.2.0: version "29.2.0" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.2.0.tgz#e40faf33759365c12ead6a45165349d660d09ba4" @@ -11535,6 +8993,18 @@ jest-validate@^29.2.0: leven "^3.1.0" pretty-format "^29.2.0" +jest-validate@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" + integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== + dependencies: + "@jest/types" "^29.6.3" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^29.6.3" + leven "^3.1.0" + pretty-format "^29.7.0" + jest-watch-typeahead@^2.0.0: version "2.2.2" resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-2.2.2.tgz#5516d3cd006485caa5cfc9bd1de40f1f8b136abf" @@ -11548,21 +9018,7 @@ jest-watch-typeahead@^2.0.0: string-length "^5.0.1" strip-ansi "^7.0.1" -jest-watcher@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.1.3.tgz#c6023a59ba2255e3b4c57179fc94164b3e73abd4" - integrity sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g== - dependencies: - "@jest/test-result" "^28.1.3" - "@jest/types" "^28.1.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - emittery "^0.10.2" - jest-util "^28.1.3" - string-length "^4.0.1" - -jest-watcher@^29.0.0: +jest-watcher@^29.0.0, jest-watcher@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== @@ -11599,15 +9055,6 @@ jest-worker@^27.4.5: merge-stream "^2.0.0" supports-color "^8.0.0" -jest-worker@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.3.tgz#7e3c4ce3fa23d1bb6accb169e7f396f98ed4bb98" - integrity sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - jest-worker@^29.2.0: version "29.2.0" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.2.0.tgz#b2bd1a81fc7a1ae79a500b05f5feb0d1c0b1a19e" @@ -11618,13 +9065,13 @@ jest-worker@^29.2.0: merge-stream "^2.0.0" supports-color "^8.0.0" -jest-worker@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.5.0.tgz#bdaefb06811bd3384d93f009755014d8acb4615d" - integrity sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA== +jest-worker@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" + integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== dependencies: "@types/node" "*" - jest-util "^29.5.0" + jest-util "^29.7.0" merge-stream "^2.0.0" supports-color "^8.0.0" @@ -11638,24 +9085,24 @@ jest@29.2.0: import-local "^3.0.2" jest-cli "^29.2.0" -jest@^28.0.0: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest/-/jest-28.1.3.tgz#e9c6a7eecdebe3548ca2b18894a50f45b36dfc6b" - integrity sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA== +jest@^29.6.4: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" + integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== dependencies: - "@jest/core" "^28.1.3" - "@jest/types" "^28.1.3" + "@jest/core" "^29.7.0" + "@jest/types" "^29.6.3" import-local "^3.0.2" - jest-cli "^28.1.3" + jest-cli "^29.7.0" -joi@^17.3.0: - version "17.11.0" - resolved "https://registry.yarnpkg.com/joi/-/joi-17.11.0.tgz#aa9da753578ec7720e6f0ca2c7046996ed04fc1a" - integrity sha512-NgB+lZLNoqISVy1rZocE9PZI36bL/77ie924Ri43yEvi9GUUMPeyVIr8KdFTMUlby1p0PBYMk9spIxEUQYqrJQ== +joi@^17.11.0: + version "17.13.3" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.13.3.tgz#0f5cc1169c999b30d344366d384b12d92558bcec" + integrity sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA== dependencies: - "@hapi/hoek" "^9.0.0" - "@hapi/topo" "^5.0.0" - "@sideway/address" "^4.1.3" + "@hapi/hoek" "^9.3.0" + "@hapi/topo" "^5.1.0" + "@sideway/address" "^4.1.5" "@sideway/formula" "^3.0.1" "@sideway/pinpoint" "^2.0.0" @@ -11692,30 +9139,10 @@ js-yaml@3.14.1, js-yaml@^3.13.1, js-yaml@^3.7.0: argparse "^1.0.7" esprima "^4.0.0" -jscodeshift@^0.14.0: - version "0.14.0" - resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.14.0.tgz#7542e6715d6d2e8bde0b4e883f0ccea358b46881" - integrity sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA== - dependencies: - "@babel/core" "^7.13.16" - "@babel/parser" "^7.13.16" - "@babel/plugin-proposal-class-properties" "^7.13.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8" - "@babel/plugin-proposal-optional-chaining" "^7.13.12" - "@babel/plugin-transform-modules-commonjs" "^7.13.8" - "@babel/preset-flow" "^7.13.13" - "@babel/preset-typescript" "^7.13.0" - "@babel/register" "^7.13.16" - babel-core "^7.0.0-bridge.0" - chalk "^4.1.2" - flow-parser "0.*" - graceful-fs "^4.2.4" - micromatch "^4.0.4" - neo-async "^2.5.0" - node-dir "^0.1.17" - recast "^0.21.0" - temp "^0.8.4" - write-file-atomic "^2.3.0" +jsdoc-type-pratt-parser@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.1.0.tgz#ff6b4a3f339c34a6c188cbf50a16087858d22113" + integrity sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg== jsdom@16.7.0: version "16.7.0" @@ -11787,6 +9214,11 @@ jsesc@^2.5.1: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== +jsesc@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" + integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== + jsesc@~0.5.0: version "0.5.0" resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" @@ -11876,15 +9308,6 @@ klona@^2.0.4, klona@^2.0.6: resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22" integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== -lazy-universal-dotenv@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/lazy-universal-dotenv/-/lazy-universal-dotenv-4.0.0.tgz#0b220c264e89a042a37181a4928cdd298af73422" - integrity sha512-aXpZJRnTkpK6gQ/z4nk+ZBLd/Qdp118cvPruLSIQzQNRhKwEcdXCOzXuF55VDqIiuAaY3UGZ10DJtvZzDcvsxg== - dependencies: - app-root-dir "^1.0.2" - dotenv "^16.0.0" - dotenv-expand "^10.0.0" - leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" @@ -11950,7 +9373,7 @@ loader-utils@^1.0.2, loader-utils@^1.4.0: emojis-list "^3.0.0" json5 "^1.0.1" -loader-utils@^2.0.0, loader-utils@^2.0.4: +loader-utils@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== @@ -11967,14 +9390,6 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - locate-path@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" @@ -11989,6 +9404,13 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" +locate-path@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-7.2.0.tgz#69cb1779bd90b35ab1e771e1f2f89a202c2a8a8a" + integrity sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA== + dependencies: + p-locate "^6.0.0" + lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" @@ -12024,14 +9446,6 @@ lodash@4.17.21, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17. resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-symbols@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - longest-streak@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-3.0.1.tgz#c97315b7afa0e7d9525db9a5a2953651432bdc5d" @@ -12065,17 +9479,19 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -"lru-cache@^9.1.1 || ^10.0.0": - version "10.0.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.1.tgz#0a3be479df549cca0e5d693ac402ff19537a6b7a" - integrity sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g== - lz-string@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== -make-dir@^2.0.0, make-dir@^2.1.0: +magic-string@^0.30.5: + version "0.30.17" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.17.tgz#450a449673d2460e5bbcfba9a61916a1714c7453" + integrity sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.0" + +make-dir@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== @@ -12112,11 +9528,6 @@ markdown-table@^3.0.0: resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-3.0.2.tgz#9b59eb2c1b22fe71954a65ff512887065a7bb57c" integrity sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA== -markdown-to-jsx@^7.1.8: - version "7.5.0" - resolved "https://registry.yarnpkg.com/markdown-to-jsx/-/markdown-to-jsx-7.5.0.tgz#42ece0c71e842560a7d8bd9f81e7a34515c72150" - integrity sha512-RrBNcMHiFPcz/iqIj0n3wclzHXjwS7mzjBNWecKKVhNTIxQepIix6Il/wZCn2Cg5Y1ow2Qi84+eJrryFRWBEWw== - match-sorter@^6.0.2: version "6.3.1" resolved "https://registry.npmjs.org/match-sorter/-/match-sorter-6.3.1.tgz" @@ -12134,13 +9545,6 @@ md5.js@^1.3.4: inherits "^2.0.1" safe-buffer "^5.1.2" -mdast-util-definitions@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz" - integrity sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ== - dependencies: - unist-util-visit "^2.0.0" - mdast-util-definitions@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-5.1.1.tgz#2c1d684b28e53f84938bb06317944bee8efa79db" @@ -12159,6 +9563,16 @@ mdast-util-find-and-replace@^2.0.0: unist-util-is "^5.0.0" unist-util-visit-parents "^5.0.0" +mdast-util-find-and-replace@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz#70a3174c894e14df722abf43bc250cbae44b11df" + integrity sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg== + dependencies: + "@types/mdast" "^4.0.0" + escape-string-regexp "^5.0.0" + unist-util-is "^6.0.0" + unist-util-visit-parents "^6.0.0" + mdast-util-from-markdown@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-1.2.0.tgz#84df2924ccc6c995dec1e2368b2b208ad0a76268" @@ -12177,6 +9591,24 @@ mdast-util-from-markdown@^1.0.0: unist-util-stringify-position "^3.0.0" uvu "^0.5.0" +mdast-util-from-markdown@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz#4850390ca7cf17413a9b9a0fbefcd1bc0eb4160a" + integrity sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA== + dependencies: + "@types/mdast" "^4.0.0" + "@types/unist" "^3.0.0" + decode-named-character-reference "^1.0.0" + devlop "^1.0.0" + mdast-util-to-string "^4.0.0" + micromark "^4.0.0" + micromark-util-decode-numeric-character-reference "^2.0.0" + micromark-util-decode-string "^2.0.0" + micromark-util-normalize-identifier "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + unist-util-stringify-position "^4.0.0" + mdast-util-gfm-autolink-literal@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.2.tgz#4032dcbaddaef7d4f2f3768ed830475bb22d3970" @@ -12187,6 +9619,17 @@ mdast-util-gfm-autolink-literal@^1.0.0: mdast-util-find-and-replace "^2.0.0" micromark-util-character "^1.0.0" +mdast-util-gfm-autolink-literal@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz#abd557630337bd30a6d5a4bd8252e1c2dc0875d5" + integrity sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ== + dependencies: + "@types/mdast" "^4.0.0" + ccount "^2.0.0" + devlop "^1.0.0" + mdast-util-find-and-replace "^3.0.0" + micromark-util-character "^2.0.0" + mdast-util-gfm-footnote@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.1.tgz#11d2d40a1a673a399c459e467fa85e00223191fe" @@ -12196,6 +9639,17 @@ mdast-util-gfm-footnote@^1.0.0: mdast-util-to-markdown "^1.3.0" micromark-util-normalize-identifier "^1.0.0" +mdast-util-gfm-footnote@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz#25a1753c7d16db8bfd53cd84fe50562bd1e6d6a9" + integrity sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ== + dependencies: + "@types/mdast" "^4.0.0" + devlop "^1.1.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" + micromark-util-normalize-identifier "^2.0.0" + mdast-util-gfm-strikethrough@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.1.tgz#a4a74c36864ec6a6e3bbd31e1977f29beb475789" @@ -12204,6 +9658,15 @@ mdast-util-gfm-strikethrough@^1.0.0: "@types/mdast" "^3.0.0" mdast-util-to-markdown "^1.3.0" +mdast-util-gfm-strikethrough@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz#d44ef9e8ed283ac8c1165ab0d0dfd058c2764c16" + integrity sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg== + dependencies: + "@types/mdast" "^4.0.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" + mdast-util-gfm-table@^1.0.0: version "1.0.6" resolved "https://registry.yarnpkg.com/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.6.tgz#184e900979fe790745fc3dabf77a4114595fcd7f" @@ -12214,6 +9677,17 @@ mdast-util-gfm-table@^1.0.0: mdast-util-from-markdown "^1.0.0" mdast-util-to-markdown "^1.3.0" +mdast-util-gfm-table@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz#7a435fb6223a72b0862b33afbd712b6dae878d38" + integrity sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg== + dependencies: + "@types/mdast" "^4.0.0" + devlop "^1.0.0" + markdown-table "^3.0.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" + mdast-util-gfm-task-list-item@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.1.tgz#6f35f09c6e2bcbe88af62fdea02ac199cc802c5c" @@ -12222,6 +9696,16 @@ mdast-util-gfm-task-list-item@^1.0.0: "@types/mdast" "^3.0.0" mdast-util-to-markdown "^1.3.0" +mdast-util-gfm-task-list-item@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz#e68095d2f8a4303ef24094ab642e1047b991a936" + integrity sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ== + dependencies: + "@types/mdast" "^4.0.0" + devlop "^1.0.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" + mdast-util-gfm@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/mdast-util-gfm/-/mdast-util-gfm-2.0.1.tgz#16fcf70110ae689a06d77e8f4e346223b64a0ea6" @@ -12235,6 +9719,27 @@ mdast-util-gfm@^2.0.0: mdast-util-gfm-task-list-item "^1.0.0" mdast-util-to-markdown "^1.0.0" +mdast-util-gfm@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz#3f2aecc879785c3cb6a81ff3a243dc11eca61095" + integrity sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw== + dependencies: + mdast-util-from-markdown "^2.0.0" + mdast-util-gfm-autolink-literal "^2.0.0" + mdast-util-gfm-footnote "^2.0.0" + mdast-util-gfm-strikethrough "^2.0.0" + mdast-util-gfm-table "^2.0.0" + mdast-util-gfm-task-list-item "^2.0.0" + mdast-util-to-markdown "^2.0.0" + +mdast-util-phrasing@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz#7cc0a8dec30eaf04b7b1a9661a92adb3382aa6e3" + integrity sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w== + dependencies: + "@types/mdast" "^4.0.0" + unist-util-is "^6.0.0" + mdast-util-to-hast@^12.1.0: version "12.2.2" resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-12.2.2.tgz#2bd8cf985a67c90c181eadcfdd8d31b8798ed9a1" @@ -12265,26 +9770,38 @@ mdast-util-to-markdown@^1.0.0, mdast-util-to-markdown@^1.3.0: unist-util-visit "^4.0.0" zwitch "^2.0.0" -mdast-util-to-string@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz" - integrity sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A== - +mdast-util-to-markdown@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz#f910ffe60897f04bb4b7e7ee434486f76288361b" + integrity sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA== + dependencies: + "@types/mdast" "^4.0.0" + "@types/unist" "^3.0.0" + longest-streak "^3.0.0" + mdast-util-phrasing "^4.0.0" + mdast-util-to-string "^4.0.0" + micromark-util-classify-character "^2.0.0" + micromark-util-decode-string "^2.0.0" + unist-util-visit "^5.0.0" + zwitch "^2.0.0" + mdast-util-to-string@^3.0.0, mdast-util-to-string@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz#56c506d065fbf769515235e577b5a261552d56e9" integrity sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA== +mdast-util-to-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz#7a5121475556a04e7eddeb67b264aae79d312814" + integrity sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg== + dependencies: + "@types/mdast" "^4.0.0" + mdurl@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz" integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= - memfs@^3.1.2: version "3.4.1" resolved "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz" @@ -12336,11 +9853,6 @@ memory-fs@^0.5.0: errno "^0.1.3" readable-stream "^2.0.1" -merge-descriptors@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5" - integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== - merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" @@ -12351,11 +9863,6 @@ merge2@^1.3.0, merge2@^1.4.1: resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" - integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= - micromark-core-commonmark@^1.0.0, micromark-core-commonmark@^1.0.1: version "1.0.6" resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-1.0.6.tgz#edff4c72e5993d93724a3c206970f5a15b0585ad" @@ -12378,6 +9885,28 @@ micromark-core-commonmark@^1.0.0, micromark-core-commonmark@^1.0.1: micromark-util-types "^1.0.1" uvu "^0.5.0" +micromark-core-commonmark@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-2.0.2.tgz#6a45bbb139e126b3f8b361a10711ccc7c6e15e93" + integrity sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w== + dependencies: + decode-named-character-reference "^1.0.0" + devlop "^1.0.0" + micromark-factory-destination "^2.0.0" + micromark-factory-label "^2.0.0" + micromark-factory-space "^2.0.0" + micromark-factory-title "^2.0.0" + micromark-factory-whitespace "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-chunked "^2.0.0" + micromark-util-classify-character "^2.0.0" + micromark-util-html-tag-name "^2.0.0" + micromark-util-normalize-identifier "^2.0.0" + micromark-util-resolve-all "^2.0.0" + micromark-util-subtokenize "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + micromark-extension-gfm-autolink-literal@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.3.tgz#dc589f9c37eaff31a175bab49f12290edcf96058" @@ -12389,6 +9918,16 @@ micromark-extension-gfm-autolink-literal@^1.0.0: micromark-util-types "^1.0.0" uvu "^0.5.0" +micromark-extension-gfm-autolink-literal@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz#6286aee9686c4462c1e3552a9d505feddceeb935" + integrity sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw== + dependencies: + micromark-util-character "^2.0.0" + micromark-util-sanitize-uri "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + micromark-extension-gfm-footnote@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.0.4.tgz#cbfd8873b983e820c494498c6dac0105920818d5" @@ -12403,6 +9942,20 @@ micromark-extension-gfm-footnote@^1.0.0: micromark-util-types "^1.0.0" uvu "^0.5.0" +micromark-extension-gfm-footnote@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz#4dab56d4e398b9853f6fe4efac4fc9361f3e0750" + integrity sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw== + dependencies: + devlop "^1.0.0" + micromark-core-commonmark "^2.0.0" + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-normalize-identifier "^2.0.0" + micromark-util-sanitize-uri "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + micromark-extension-gfm-strikethrough@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.4.tgz#162232c284ffbedd8c74e59c1525bda217295e18" @@ -12415,6 +9968,18 @@ micromark-extension-gfm-strikethrough@^1.0.0: micromark-util-types "^1.0.0" uvu "^0.5.0" +micromark-extension-gfm-strikethrough@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz#86106df8b3a692b5f6a92280d3879be6be46d923" + integrity sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw== + dependencies: + devlop "^1.0.0" + micromark-util-chunked "^2.0.0" + micromark-util-classify-character "^2.0.0" + micromark-util-resolve-all "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + micromark-extension-gfm-table@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.5.tgz#7b708b728f8dc4d95d486b9e7a2262f9cddbcbb4" @@ -12426,6 +9991,17 @@ micromark-extension-gfm-table@^1.0.0: micromark-util-types "^1.0.0" uvu "^0.5.0" +micromark-extension-gfm-table@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.0.tgz#5cadedfbb29fca7abf752447967003dc3b6583c9" + integrity sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g== + dependencies: + devlop "^1.0.0" + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + micromark-extension-gfm-tagfilter@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.1.tgz#fb2e303f7daf616db428bb6a26e18fda14a90a4d" @@ -12433,6 +10009,13 @@ micromark-extension-gfm-tagfilter@^1.0.0: dependencies: micromark-util-types "^1.0.0" +micromark-extension-gfm-tagfilter@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz#f26d8a7807b5985fba13cf61465b58ca5ff7dc57" + integrity sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg== + dependencies: + micromark-util-types "^2.0.0" + micromark-extension-gfm-task-list-item@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.3.tgz#7683641df5d4a09795f353574d7f7f66e47b7fc4" @@ -12444,6 +10027,17 @@ micromark-extension-gfm-task-list-item@^1.0.0: micromark-util-types "^1.0.0" uvu "^0.5.0" +micromark-extension-gfm-task-list-item@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz#bcc34d805639829990ec175c3eea12bb5b781f2c" + integrity sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw== + dependencies: + devlop "^1.0.0" + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + micromark-extension-gfm@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/micromark-extension-gfm/-/micromark-extension-gfm-2.0.1.tgz#40f3209216127a96297c54c67f5edc7ef2d1a2a2" @@ -12458,6 +10052,20 @@ micromark-extension-gfm@^2.0.0: micromark-util-combine-extensions "^1.0.0" micromark-util-types "^1.0.0" +micromark-extension-gfm@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz#3e13376ab95dd7a5cfd0e29560dfe999657b3c5b" + integrity sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w== + dependencies: + micromark-extension-gfm-autolink-literal "^2.0.0" + micromark-extension-gfm-footnote "^2.0.0" + micromark-extension-gfm-strikethrough "^2.0.0" + micromark-extension-gfm-table "^2.0.0" + micromark-extension-gfm-tagfilter "^2.0.0" + micromark-extension-gfm-task-list-item "^2.0.0" + micromark-util-combine-extensions "^2.0.0" + micromark-util-types "^2.0.0" + micromark-factory-destination@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz#fef1cb59ad4997c496f887b6977aa3034a5a277e" @@ -12467,6 +10075,15 @@ micromark-factory-destination@^1.0.0: micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" +micromark-factory-destination@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz#8fef8e0f7081f0474fbdd92deb50c990a0264639" + integrity sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA== + dependencies: + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + micromark-factory-label@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-1.0.2.tgz#6be2551fa8d13542fcbbac478258fb7a20047137" @@ -12477,6 +10094,16 @@ micromark-factory-label@^1.0.0: micromark-util-types "^1.0.0" uvu "^0.5.0" +micromark-factory-label@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz#5267efa97f1e5254efc7f20b459a38cb21058ba1" + integrity sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg== + dependencies: + devlop "^1.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + micromark-factory-space@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz#cebff49968f2b9616c0fcb239e96685cb9497633" @@ -12485,6 +10112,14 @@ micromark-factory-space@^1.0.0: micromark-util-character "^1.0.0" micromark-util-types "^1.0.0" +micromark-factory-space@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz#36d0212e962b2b3121f8525fc7a3c7c029f334fc" + integrity sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg== + dependencies: + micromark-util-character "^2.0.0" + micromark-util-types "^2.0.0" + micromark-factory-title@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-1.0.2.tgz#7e09287c3748ff1693930f176e1c4a328382494f" @@ -12496,6 +10131,16 @@ micromark-factory-title@^1.0.0: micromark-util-types "^1.0.0" uvu "^0.5.0" +micromark-factory-title@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz#237e4aa5d58a95863f01032d9ee9b090f1de6e94" + integrity sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw== + dependencies: + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + micromark-factory-whitespace@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz#e991e043ad376c1ba52f4e49858ce0794678621c" @@ -12506,6 +10151,16 @@ micromark-factory-whitespace@^1.0.0: micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" +micromark-factory-whitespace@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz#06b26b2983c4d27bfcc657b33e25134d4868b0b1" + integrity sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ== + dependencies: + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + micromark-util-character@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-1.1.0.tgz#d97c54d5742a0d9611a68ca0cd4124331f264d86" @@ -12514,6 +10169,14 @@ micromark-util-character@^1.0.0: micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" +micromark-util-character@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-2.1.1.tgz#2f987831a40d4c510ac261e89852c4e9703ccda6" + integrity sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q== + dependencies: + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + micromark-util-chunked@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz#5b40d83f3d53b84c4c6bce30ed4257e9a4c79d06" @@ -12521,6 +10184,13 @@ micromark-util-chunked@^1.0.0: dependencies: micromark-util-symbol "^1.0.0" +micromark-util-chunked@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz#47fbcd93471a3fccab86cff03847fc3552db1051" + integrity sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA== + dependencies: + micromark-util-symbol "^2.0.0" + micromark-util-classify-character@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz#cbd7b447cb79ee6997dd274a46fc4eb806460a20" @@ -12530,6 +10200,15 @@ micromark-util-classify-character@^1.0.0: micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" +micromark-util-classify-character@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz#d399faf9c45ca14c8b4be98b1ea481bced87b629" + integrity sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q== + dependencies: + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + micromark-util-combine-extensions@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz#91418e1e74fb893e3628b8d496085639124ff3d5" @@ -12538,6 +10217,14 @@ micromark-util-combine-extensions@^1.0.0: micromark-util-chunked "^1.0.0" micromark-util-types "^1.0.0" +micromark-util-combine-extensions@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz#2a0f490ab08bff5cc2fd5eec6dd0ca04f89b30a9" + integrity sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg== + dependencies: + micromark-util-chunked "^2.0.0" + micromark-util-types "^2.0.0" + micromark-util-decode-numeric-character-reference@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz#dcc85f13b5bd93ff8d2868c3dba28039d490b946" @@ -12545,6 +10232,13 @@ micromark-util-decode-numeric-character-reference@^1.0.0: dependencies: micromark-util-symbol "^1.0.0" +micromark-util-decode-numeric-character-reference@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz#fcf15b660979388e6f118cdb6bf7d79d73d26fe5" + integrity sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw== + dependencies: + micromark-util-symbol "^2.0.0" + micromark-util-decode-string@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-1.0.2.tgz#942252ab7a76dec2dbf089cc32505ee2bc3acf02" @@ -12555,16 +10249,36 @@ micromark-util-decode-string@^1.0.0: micromark-util-decode-numeric-character-reference "^1.0.0" micromark-util-symbol "^1.0.0" +micromark-util-decode-string@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz#6cb99582e5d271e84efca8e61a807994d7161eb2" + integrity sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ== + dependencies: + decode-named-character-reference "^1.0.0" + micromark-util-character "^2.0.0" + micromark-util-decode-numeric-character-reference "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-encode@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-1.0.1.tgz#2c1c22d3800870ad770ece5686ebca5920353383" integrity sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA== +micromark-util-encode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz#0d51d1c095551cfaac368326963cf55f15f540b8" + integrity sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw== + micromark-util-html-tag-name@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.1.0.tgz#eb227118befd51f48858e879b7a419fc0df20497" integrity sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA== +micromark-util-html-tag-name@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz#e40403096481986b41c106627f98f72d4d10b825" + integrity sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA== + micromark-util-normalize-identifier@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz#4a3539cb8db954bbec5203952bfe8cedadae7828" @@ -12572,6 +10286,13 @@ micromark-util-normalize-identifier@^1.0.0: dependencies: micromark-util-symbol "^1.0.0" +micromark-util-normalize-identifier@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz#c30d77b2e832acf6526f8bf1aa47bc9c9438c16d" + integrity sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q== + dependencies: + micromark-util-symbol "^2.0.0" + micromark-util-resolve-all@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz#a7c363f49a0162e931960c44f3127ab58f031d88" @@ -12579,6 +10300,13 @@ micromark-util-resolve-all@^1.0.0: dependencies: micromark-util-types "^1.0.0" +micromark-util-resolve-all@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz#e1a2d62cdd237230a2ae11839027b19381e31e8b" + integrity sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg== + dependencies: + micromark-util-types "^2.0.0" + micromark-util-sanitize-uri@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.0.0.tgz#27dc875397cd15102274c6c6da5585d34d4f12b2" @@ -12588,6 +10316,15 @@ micromark-util-sanitize-uri@^1.0.0: micromark-util-encode "^1.0.0" micromark-util-symbol "^1.0.0" +micromark-util-sanitize-uri@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz#ab89789b818a58752b73d6b55238621b7faa8fd7" + integrity sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ== + dependencies: + micromark-util-character "^2.0.0" + micromark-util-encode "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-subtokenize@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz#ff6f1af6ac836f8bfdbf9b02f40431760ad89105" @@ -12598,16 +10335,36 @@ micromark-util-subtokenize@^1.0.0: micromark-util-types "^1.0.0" uvu "^0.5.0" +micromark-util-subtokenize@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.3.tgz#70ffb99a454bd8c913c8b709c3dc97baefb65f96" + integrity sha512-VXJJuNxYWSoYL6AJ6OQECCFGhIU2GGHMw8tahogePBrjkG8aCCas3ibkp7RnVOSTClg2is05/R7maAhF1XyQMg== + dependencies: + devlop "^1.0.0" + micromark-util-chunked "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + micromark-util-symbol@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-1.0.1.tgz#b90344db62042ce454f351cf0bebcc0a6da4920e" integrity sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ== +micromark-util-symbol@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz#e5da494e8eb2b071a0d08fb34f6cefec6c0a19b8" + integrity sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q== + micromark-util-types@^1.0.0, micromark-util-types@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-1.0.2.tgz#f4220fdb319205812f99c40f8c87a9be83eded20" integrity sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w== +micromark-util-types@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-2.0.1.tgz#a3edfda3022c6c6b55bfb049ef5b75d70af50709" + integrity sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ== + micromark@^3.0.0: version "3.0.10" resolved "https://registry.yarnpkg.com/micromark/-/micromark-3.0.10.tgz#1eac156f0399d42736458a14b0ca2d86190b457c" @@ -12631,6 +10388,29 @@ micromark@^3.0.0: micromark-util-types "^1.0.1" uvu "^0.5.0" +micromark@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/micromark/-/micromark-4.0.1.tgz#294c2f12364759e5f9e925a767ae3dfde72223ff" + integrity sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw== + dependencies: + "@types/debug" "^4.0.0" + debug "^4.0.0" + decode-named-character-reference "^1.0.0" + devlop "^1.0.0" + micromark-core-commonmark "^2.0.0" + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-chunked "^2.0.0" + micromark-util-combine-extensions "^2.0.0" + micromark-util-decode-numeric-character-reference "^2.0.0" + micromark-util-encode "^2.0.0" + micromark-util-normalize-identifier "^2.0.0" + micromark-util-resolve-all "^2.0.0" + micromark-util-sanitize-uri "^2.0.0" + micromark-util-subtokenize "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.8" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" @@ -12652,34 +10432,24 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": +mime-db@1.52.0: version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.12, mime-types@^2.1.25, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.24, mime-types@~2.1.34: +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: mime-db "1.52.0" -mime@1.6.0: - version "1.6.0" - resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mime@^2.0.3: - version "2.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" - integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== - mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -min-indent@^1.0.0: +min-indent@^1.0.0, min-indent@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== @@ -12701,75 +10471,24 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== -minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" -minimatch@^5.0.1: - version "5.1.6" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" - integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^9.0.1: - version "9.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" - integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== - dependencies: - brace-expansion "^2.0.1" - -minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: +minimist@^1.2.0, minimist@^1.2.6, minimist@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== -minipass@^3.0.0: - version "3.3.6" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" - integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== - dependencies: - yallist "^4.0.0" - -minipass@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" - integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== - -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": - version "7.0.4" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" - integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== - -minizlib@^2.1.1: - version "2.1.2" - resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - -mkdirp-classic@^0.5.2: - version "0.5.3" - resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" - integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== - -mkdirp@^0.5.4: - version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" - -mkdirp@^1.0.3, mkdirp@^1.0.4: +mkdirp@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mri@^1.1.0, mri@^1.2.0: +mri@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== @@ -12784,7 +10503,7 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3, ms@^2.1.1: +ms@^2.1.1: version "2.1.3" resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -12839,12 +10558,7 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -negotiator@0.6.3: - version "0.6.3" - resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - -neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1, neo-async@^2.6.2: +neo-async@^2.6.2: version "2.6.2" resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== @@ -12874,25 +10588,6 @@ node-bourbon@4.2.8: dependencies: bourbon "^4.2.6" -node-dir@^0.1.10, node-dir@^0.1.17: - version "0.1.17" - resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" - integrity sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg== - dependencies: - minimatch "^3.0.2" - -node-fetch-native@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.1.0.tgz#a530f5c4cadb49b382dcf81d8f5f19ed0f457fbe" - integrity sha512-nl5goFCig93JZ9FIV8GHT9xpNqXbxQUzkOmKIMKmncsBH9jhg7qKex8hirpymkBFmNQ114chEEG5lS4wgK2I+Q== - -node-fetch@^2, node-fetch@^2.0.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" - integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== - dependencies: - whatwg-url "^5.0.0" - node-fetch@^2.6.1: version "2.6.7" resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz" @@ -12968,6 +10663,11 @@ node-releases@^2.0.18, node-releases@^2.0.6: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== +node-releases@^2.0.19: + version "2.0.19" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" + integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== + node-releases@^2.0.8: version "2.0.10" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" @@ -12993,16 +10693,6 @@ node-sass-magic-importer@^5.3.3: postcss-scss "^3.0.2" resolve "^1.17.0" -normalize-package-data@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" @@ -13090,11 +10780,6 @@ object-inspect@^1.1.0, object-inspect@^1.12.0, object-inspect@^1.12.2, object-in resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== -object-inspect@^1.13.1: - version "1.13.2" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff" - integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g== - object-is@^1.0.1: version "1.1.5" resolved "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" @@ -13173,33 +10858,21 @@ oblivious-set@1.0.0: resolved "https://registry.npmjs.org/oblivious-set/-/oblivious-set-1.0.0.tgz" integrity sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw== -on-finished@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" - integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - -once@^1.3.0, once@^1.3.1, once@^1.4.0: +once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" -onetime@^5.1.0, onetime@^5.1.2: +onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" -open@^8.0.4, open@^8.4.0: +open@^8.0.4: version "8.4.2" resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== @@ -13232,21 +10905,6 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" -ora@^5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" - integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== - dependencies: - bl "^4.1.0" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-spinners "^2.5.0" - is-interactive "^1.0.0" - is-unicode-supported "^0.1.0" - log-symbols "^4.1.0" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - os-browserify@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" @@ -13269,7 +10927,7 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.0.0, p-limit@^2.2.0: +p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== @@ -13283,6 +10941,13 @@ p-limit@^3.0.2, p-limit@^3.1.0: dependencies: yocto-queue "^0.1.0" +p-limit@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644" + integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== + dependencies: + yocto-queue "^1.0.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz" @@ -13290,13 +10955,6 @@ p-locate@^2.0.0: dependencies: p-limit "^1.1.0" -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - p-locate@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" @@ -13311,6 +10969,13 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" +p-locate@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-6.0.0.tgz#3da9a49d4934b901089dca3302fa65dc5a05c04f" + integrity sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw== + dependencies: + p-limit "^4.0.0" + p-map@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" @@ -13318,13 +10983,6 @@ p-map@^3.0.0: dependencies: aggregate-error "^3.0.0" -p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== - dependencies: - aggregate-error "^3.0.0" - p-try@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz" @@ -13345,11 +11003,6 @@ package-hash@^4.0.0: lodash.flattendeep "^4.4.0" release-zalgo "^1.0.0" -pako@~0.2.0: - version "0.2.9" - resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" - integrity sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA== - pako@~1.0.5: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" @@ -13408,11 +11061,6 @@ parse5@^7.0.0, parse5@^7.1.1: dependencies: entities "^4.5.0" -parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - pascal-case@^3.1.2: version "3.1.2" resolved "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz" @@ -13449,6 +11097,11 @@ path-exists@^4.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== +path-exists@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7" + integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ== + path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -13464,19 +11117,6 @@ path-parse@^1.0.6, path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-scurry@^1.10.1: - version "1.10.1" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" - integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== - dependencies: - lru-cache "^9.1.1 || ^10.0.0" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - -path-to-regexp@0.1.10: - version "0.1.10" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.10.tgz#67e9108c5c0551b9e5326064387de4763c4d5f8b" - integrity sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w== - path-to-regexp@^1.7.0: version "1.8.0" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" @@ -13494,11 +11134,6 @@ path-type@^4.0.0: resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -pathe@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.0.tgz#e2e13f6c62b31a3289af4ba19886c230f295ec03" - integrity sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w== - pbkdf2@^3.0.3: version "3.1.2" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" @@ -13510,20 +11145,6 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" -peek-stream@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/peek-stream/-/peek-stream-1.1.3.tgz#3b35d84b7ccbbd262fff31dc10da56856ead6d67" - integrity sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA== - dependencies: - buffer-from "^1.0.0" - duplexify "^3.5.0" - through2 "^2.0.3" - -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz" - integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= - performance-now@^0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz" @@ -13539,7 +11160,7 @@ picocolors@^1.0.0, picocolors@^1.1.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.0, picomatch@^2.3.1: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -13549,18 +11170,11 @@ pify@^4.0.1: resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== -pirates@^4.0.4, pirates@^4.0.5: +pirates@^4.0.4: version "4.0.5" resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz" integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - pkg-dir@^4.1.0, pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" @@ -13568,12 +11182,12 @@ pkg-dir@^4.1.0, pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -pkg-dir@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz" - integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA== +pkg-dir@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-7.0.0.tgz#8f0c08d6df4476756c5ff29b3282d0bab7517d11" + integrity sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA== dependencies: - find-up "^5.0.0" + find-up "^6.3.0" playwright-core@1.39.0, playwright-core@>=1.2.0: version "1.39.0" @@ -13694,11 +11308,6 @@ prettier@2.2.1: resolved "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz" integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q== -prettier@^2.8.0: - version "2.8.8" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" - integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== - pretty-error@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" @@ -13716,16 +11325,6 @@ pretty-format@^27.0.2: ansi-styles "^5.0.0" react-is "^17.0.1" -pretty-format@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.3.tgz#c9fba8cedf99ce50963a11b27d982a9ae90970d5" - integrity sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q== - dependencies: - "@jest/schemas" "^28.1.3" - ansi-regex "^5.0.1" - ansi-styles "^5.0.0" - react-is "^18.0.0" - pretty-format@^29.0.0, pretty-format@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" @@ -13744,11 +11343,6 @@ pretty-format@^29.2.0: ansi-styles "^5.0.0" react-is "^18.0.0" -pretty-hrtime@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz" - integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= - process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -13766,12 +11360,12 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== -progress@^2.0.0, progress@^2.0.1: +progress@^2.0.0: version "2.0.3" resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -prompts@^2.0.1, prompts@^2.4.0, prompts@^2.4.1: +prompts@^2.0.1, prompts@^2.4.1: version "2.4.2" resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== @@ -13793,15 +11387,7 @@ property-information@^6.0.0: resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.1.1.tgz#5ca85510a3019726cb9afed4197b7b8ac5926a22" integrity sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w== -proxy-addr@~2.0.7: - version "2.0.7" - resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" - integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - -proxy-from-env@^1.0.0, proxy-from-env@^1.1.0: +proxy-from-env@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== @@ -13833,31 +11419,6 @@ public-encrypt@^4.0.0: randombytes "^2.0.1" safe-buffer "^5.1.2" -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" @@ -13878,35 +11439,10 @@ punycode@^2.1.1: resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -puppeteer-core@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-2.1.1.tgz#e9b3fbc1237b4f66e25999832229e9db3e0b90ed" - integrity sha512-n13AWriBMPYxnpbb6bnaY5YoY6rGj8vPLrz6CZF3o0qJNEwlcfJVxBzYZ0NJsQ21UbdJoijPCDrM++SUVEz7+w== - dependencies: - "@types/mime-types" "^2.1.0" - debug "^4.1.0" - extract-zip "^1.6.6" - https-proxy-agent "^4.0.0" - mime "^2.0.3" - mime-types "^2.1.25" - progress "^2.0.1" - proxy-from-env "^1.0.0" - rimraf "^2.6.1" - ws "^6.1.0" - -qs@6.11.0: - version "6.11.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" - integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== - dependencies: - side-channel "^1.0.4" - -qs@6.13.0, qs@^6.10.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906" - integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== - dependencies: - side-channel "^1.0.6" +pure-rand@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.1.0.tgz#d173cf23258231976ccbdb05247c9787957604f2" + integrity sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA== query-string@^3.0.0: version "3.0.3" @@ -13950,11 +11486,6 @@ raf@^3.1.0: dependencies: performance-now "^2.1.0" -ramda@0.29.0: - version "0.29.0" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.29.0.tgz#fbbb67a740a754c8a4cbb41e2a6e0eb8507f55fb" - integrity sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA== - randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -13970,21 +11501,11 @@ randomfill@^1.0.3: randombytes "^2.0.5" safe-buffer "^5.1.0" -range-parser@^1.2.1, range-parser@~1.2.1: +range-parser@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" - integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - rc-pagination@1.16.3: version "1.16.3" resolved "https://registry.npmjs.org/rc-pagination/-/rc-pagination-1.16.3.tgz" @@ -14009,11 +11530,6 @@ react-ace@9.3.0: lodash.isequal "^4.5.0" prop-types "^15.7.2" -react-colorful@^5.1.2: - version "5.6.1" - resolved "https://registry.yarnpkg.com/react-colorful/-/react-colorful-5.6.1.tgz#7dc2aed2d7c72fac89694e834d179e32f3da563b" - integrity sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw== - react-docgen-typescript-plugin@1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-1.0.5.tgz#015d8350b06a450d98000080d8ae5eac475e9f79" @@ -14032,21 +11548,21 @@ react-docgen-typescript@^2.2.2: resolved "https://registry.yarnpkg.com/react-docgen-typescript/-/react-docgen-typescript-2.2.2.tgz#4611055e569edc071204aadb20e1c93e1ab1659c" integrity sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg== -react-docgen@^5.0.0: - version "5.4.3" - resolved "https://registry.yarnpkg.com/react-docgen/-/react-docgen-5.4.3.tgz#7d297f73b977d0c7611402e5fc2a168acf332b26" - integrity sha512-xlLJyOlnfr8lLEEeaDZ+X2J/KJoe6Nr9AzxnkdQWush5hz2ZSu66w6iLMOScMmxoSHWpWMn+k3v5ZiyCfcWsOA== +react-docgen@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/react-docgen/-/react-docgen-7.1.0.tgz#4b41e557dab939a5157be09ee532fd09c07d99fc" + integrity sha512-APPU8HB2uZnpl6Vt/+0AFoVYgSRtfiP6FLrZgPPTDmqSb2R4qZRbgd0A3VzIFxDt5e+Fozjx79WjLWnF69DK8g== dependencies: - "@babel/core" "^7.7.5" - "@babel/generator" "^7.12.11" - "@babel/runtime" "^7.7.6" - ast-types "^0.14.2" - commander "^2.19.0" + "@babel/core" "^7.18.9" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" + "@types/babel__core" "^7.18.0" + "@types/babel__traverse" "^7.18.0" + "@types/doctrine" "^0.0.9" + "@types/resolve" "^1.20.2" doctrine "^3.0.0" - estree-to-babel "^3.1.0" - neo-async "^2.6.1" - node-dir "^0.1.10" - strip-indent "^3.0.0" + resolve "^1.22.1" + strip-indent "^4.0.0" react-dom@18.2.0: version "18.2.0" @@ -14056,14 +11572,13 @@ react-dom@18.2.0: loose-envify "^1.1.0" scheduler "^0.23.0" -react-element-to-jsx-string@^15.0.0: - version "15.0.0" - resolved "https://registry.yarnpkg.com/react-element-to-jsx-string/-/react-element-to-jsx-string-15.0.0.tgz#1cafd5b6ad41946ffc8755e254da3fc752a01ac6" - integrity sha512-UDg4lXB6BzlobN60P8fHWVPX3Kyw8ORrTeBtClmIlGdkOOE+GYQSFvmEU5iLLpwp/6v42DINwNcwOhOLfQ//FQ== +"react-dom@^16.8.0 || ^17.0.0 || ^18.0.0": + version "18.3.1" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4" + integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== dependencies: - "@base2/pretty-print-object" "1.0.1" - is-plain-object "5.0.0" - react-is "18.1.0" + loose-envify "^1.1.0" + scheduler "^0.23.2" react-error-boundary@3.1.4: version "3.1.4" @@ -14079,16 +11594,6 @@ react-input-autosize@^2.1.2: dependencies: prop-types "^15.5.8" -react-inspector@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/react-inspector/-/react-inspector-6.0.1.tgz#1a37f0165d9df81ee804d63259eaaeabe841287d" - integrity sha512-cxKSeFTf7jpSSVddm66sKdolG90qURAX3g1roTeaN6x0YEbtWc8JpmFN9+yIqLNH2uEkYerWLtJZIXRIFuBKrg== - -react-is@18.1.0: - version "18.1.0" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.1.0.tgz#61aaed3096d30eacf2a2127118b5b41387d32a67" - integrity sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg== - react-is@^16.13.0, react-is@^16.13.1, react-is@^16.7.0: version "16.13.1" resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" @@ -14143,37 +11648,6 @@ react-query@3.34.16: broadcast-channel "^3.4.1" match-sorter "^6.0.2" -react-refresh@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046" - integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== - -react-remove-scroll-bar@^2.3.3: - version "2.3.4" - resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz#53e272d7a5cb8242990c7f144c44d8bd8ab5afd9" - integrity sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A== - dependencies: - react-style-singleton "^2.2.1" - tslib "^2.0.0" - -react-remove-scroll@2.5.5: - version "2.5.5" - resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz#1e31a1260df08887a8a0e46d09271b52b3a37e77" - integrity sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw== - dependencies: - react-remove-scroll-bar "^2.3.3" - react-style-singleton "^2.2.1" - tslib "^2.1.0" - use-callback-ref "^1.3.0" - use-sidecar "^1.1.2" - -react-resize-detector@^7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/react-resize-detector/-/react-resize-detector-7.1.2.tgz#8ef975dd8c3d56f9a5160ac382ef7136dcd2d86c" - integrity sha512-zXnPJ2m8+6oq9Nn8zsep/orts9vQv3elrpA+R8XTcW7DVVUJ9vwDwMXaBtykAYjMnkCIaOoK9vObyR7ZgFNlOw== - dependencies: - lodash "^4.17.21" - react-router-dom@^4.1.1: version "4.3.1" resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-4.3.1.tgz#4c2619fc24c4fa87c9fd18f4fb4a43fe63fbd5c6" @@ -14244,15 +11718,6 @@ react-select@1.3.0: prop-types "^15.5.8" react-input-autosize "^2.1.2" -react-style-singleton@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/react-style-singleton/-/react-style-singleton-2.2.1.tgz#f99e420492b2d8f34d38308ff660b60d0b1205b4" - integrity sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g== - dependencies: - get-nonce "^1.0.0" - invariant "^2.2.4" - tslib "^2.0.0" - react-table@7.7.0: version "7.7.0" resolved "https://registry.yarnpkg.com/react-table/-/react-table-7.7.0.tgz#e2ce14d7fe3a559f7444e9ecfe8231ea8373f912" @@ -14292,33 +11757,14 @@ react-transition-group@^4.3.0: loose-envify "^1.4.0" prop-types "^15.6.2" -react@18.3.1: +react@18.3.1, "react@^16.8.0 || ^17.0.0 || ^18.0.0": version "18.3.1" resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891" integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== dependencies: loose-envify "^1.1.0" -read-pkg-up@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" - integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== - dependencies: - find-up "^4.1.0" - read-pkg "^5.2.0" - type-fest "^0.8.1" - -read-pkg@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" - -readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: +readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.3.3, readable-stream@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== @@ -14340,15 +11786,6 @@ readable-stream@^3.1.1, readable-stream@^3.6.0, readable-stream@^3.6.2: string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@^3.4.0: - version "3.6.0" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - readdirp@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.1.1.tgz#bd115327129672dc47f87408f05df9bd9ca3ef55" @@ -14361,25 +11798,15 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" -recast@^0.21.0: - version "0.21.5" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.21.5.tgz#e8cd22bb51bcd6130e54f87955d33a2b2e57b495" - integrity sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg== +recast@^0.23.5: + version "0.23.9" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.23.9.tgz#587c5d3a77c2cfcb0c18ccce6da4361528c2587b" + integrity sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q== dependencies: - ast-types "0.15.2" - esprima "~4.0.0" - source-map "~0.6.1" - tslib "^2.0.1" - -recast@^0.23.1: - version "0.23.1" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.23.1.tgz#ee415a5561d2f99f02318ea8db81ad3a2267a6ff" - integrity sha512-RokaBcoxSjXUDzz1TXSZmZsSW6ZpLmlA3GGqJ8uuTrQ9hZhEz+4Tpsc+gRvYRJ2BU4H+ZyUlg91eSGDw7bwy7g== - dependencies: - assert "^2.0.0" ast-types "^0.16.1" esprima "~4.0.0" source-map "~0.6.1" + tiny-invariant "^1.3.3" tslib "^2.0.1" rechoir@^0.8.0: @@ -14455,13 +11882,6 @@ regenerator-transform@^0.15.1: dependencies: "@babel/runtime" "^7.8.4" -regenerator-transform@^0.15.2: - version "0.15.2" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" - integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== - dependencies: - "@babel/runtime" "^7.8.4" - regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.1, regexp.prototype.flags@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" @@ -14531,18 +11951,7 @@ release-zalgo@^1.0.0: dependencies: es6-error "^4.0.1" -remark-external-links@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/remark-external-links/-/remark-external-links-8.0.0.tgz" - integrity sha512-5vPSX0kHoSsqtdftSHhIYofVINC8qmp0nctkeU9YoJwV3YfiBRiI6cbFRJ0oI/1F9xS+bopXG0m2KS8VFscuKA== - dependencies: - extend "^3.0.0" - is-absolute-url "^3.0.0" - mdast-util-definitions "^4.0.0" - space-separated-tokens "^1.0.0" - unist-util-visit "^2.0.0" - -remark-gfm@3.0.1, remark-gfm@^3.0.1: +remark-gfm@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/remark-gfm/-/remark-gfm-3.0.1.tgz#0b180f095e3036545e9dddac0e8df3fa5cfee54f" integrity sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig== @@ -14552,6 +11961,18 @@ remark-gfm@3.0.1, remark-gfm@^3.0.1: micromark-extension-gfm "^2.0.0" unified "^10.0.0" +remark-gfm@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/remark-gfm/-/remark-gfm-4.0.0.tgz#aea777f0744701aa288b67d28c43565c7e8c35de" + integrity sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA== + dependencies: + "@types/mdast" "^4.0.0" + mdast-util-gfm "^3.0.0" + micromark-extension-gfm "^3.0.0" + remark-parse "^11.0.0" + remark-stringify "^11.0.0" + unified "^11.0.0" + remark-parse@^10.0.0: version "10.0.1" resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-10.0.1.tgz#6f60ae53edbf0cf38ea223fe643db64d112e0775" @@ -14561,6 +11982,16 @@ remark-parse@^10.0.0: mdast-util-from-markdown "^1.0.0" unified "^10.0.0" +remark-parse@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-11.0.0.tgz#aa60743fcb37ebf6b069204eb4da304e40db45a1" + integrity sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA== + dependencies: + "@types/mdast" "^4.0.0" + mdast-util-from-markdown "^2.0.0" + micromark-util-types "^2.0.0" + unified "^11.0.0" + remark-rehype@^10.0.0: version "10.1.0" resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-10.1.0.tgz#32dc99d2034c27ecaf2e0150d22a6dcccd9a6279" @@ -14571,14 +12002,14 @@ remark-rehype@^10.0.0: mdast-util-to-hast "^12.1.0" unified "^10.0.0" -remark-slug@^6.0.0: - version "6.1.0" - resolved "https://registry.npmjs.org/remark-slug/-/remark-slug-6.1.0.tgz" - integrity sha512-oGCxDF9deA8phWvxFuyr3oSJsdyUAxMFbA0mZ7Y1Sas+emILtO+e5WutF9564gDsEN4IXaQXm5pFo6MLH+YmwQ== +remark-stringify@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-11.0.0.tgz#4c5b01dd711c269df1aaae11743eb7e2e7636fd3" + integrity sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw== dependencies: - github-slugger "^1.0.0" - mdast-util-to-string "^1.0.0" - unist-util-visit "^2.0.0" + "@types/mdast" "^4.0.0" + mdast-util-to-markdown "^2.0.0" + unified "^11.0.0" remove-accents@0.4.2: version "0.4.2" @@ -14611,7 +12042,7 @@ require-main-filename@^2.0.0: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== -requireindex@^1.1.0: +requireindex@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.2.0.tgz#3463cdb22ee151902635aa6c9535d4de9c2ef1ef" integrity sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww== @@ -14664,7 +12095,12 @@ resolve.exports@^1.1.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== -resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.3.2, resolve@^1.4.0: +resolve.exports@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.3.tgz#41955e6f1b4013b7586f873749a635dea07ebe3f" + integrity sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A== + +resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.3.2, resolve@^1.4.0: version "1.22.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== @@ -14682,6 +12118,15 @@ resolve@^1.17.0: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +resolve@^1.22.1, resolve@^1.22.8: + version "1.22.10" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" + integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== + dependencies: + is-core-module "^2.16.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + resolve@^2.0.0-next.3: version "2.0.0-next.3" resolved "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz" @@ -14690,14 +12135,6 @@ resolve@^2.0.0-next.3: is-core-module "^2.2.0" path-parse "^1.0.6" -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - reusify@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" @@ -14710,20 +12147,6 @@ rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" -rimraf@^2.6.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -rimraf@~2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -14739,12 +12162,12 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -rxjs@^6.6.3: - version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== +rxjs@^7.8.1: + version "7.8.1" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== dependencies: - tslib "^1.9.0" + tslib "^2.1.0" sade@^1.7.3: version "1.8.1" @@ -14753,16 +12176,16 @@ sade@^1.7.3: dependencies: mri "^1.1.0" -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + safe-regex-test@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" @@ -14817,6 +12240,13 @@ scheduler@^0.23.0: dependencies: loose-envify "^1.1.0" +scheduler@^0.23.2: + version "0.23.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3" + integrity sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ== + dependencies: + loose-envify "^1.1.0" + schema-utils@2.7.0: version "2.7.0" resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz" @@ -14868,7 +12298,7 @@ select@1.1.2: resolved "https://registry.npmjs.org/select/-/select-1.1.2.tgz" integrity sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0= -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.6.0: +semver@^5.3.0, semver@^5.6.0: version "5.7.2" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== @@ -14885,43 +12315,10 @@ semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semve dependencies: lru-cache "^6.0.0" -send@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" - integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== - dependencies: - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "2.0.0" - mime "1.6.0" - ms "2.1.3" - on-finished "2.4.1" - range-parser "~1.2.1" - statuses "2.0.1" - -send@0.19.0: - version "0.19.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8" - integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== - dependencies: - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "2.0.0" - mime "1.6.0" - ms "2.1.3" - on-finished "2.4.1" - range-parser "~1.2.1" - statuses "2.0.1" +semver@^7.5.4, semver@^7.6.2: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== sentence-case@^3.0.4: version "3.0.4" @@ -14939,43 +12336,16 @@ serialize-javascript@^6.0.1: dependencies: randombytes "^2.1.0" -serve-static@1.16.0: - version "1.16.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.0.tgz#2bf4ed49f8af311b519c46f272bf6ac3baf38a92" - integrity sha512-pDLK8zwl2eKaYrs8mrPZBJua4hMplRWJ1tIFksVC3FtBEBnl8dxgeHtsaMS8DhS9i4fLObaon6ABoc4/hQGdPA== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.18.0" - set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== -set-function-length@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" - integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== - dependencies: - define-data-property "^1.1.4" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - gopd "^1.0.1" - has-property-descriptors "^1.0.2" - setimmediate@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.11" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" @@ -15017,33 +12387,16 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -side-channel@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" - integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== - dependencies: - call-bind "^1.0.7" - es-errors "^1.3.0" - get-intrinsic "^1.2.4" - object-inspect "^1.13.1" - signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== -signal-exit@^4.0.1, signal-exit@^4.1.0: +signal-exit@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== -simple-update-notifier@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz#d70b92bdab7d6d90dfd73931195a30b6e3d7cebb" - integrity sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w== - dependencies: - semver "^7.5.3" - sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" @@ -15115,7 +12468,7 @@ source-map-support@0.5.13: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-support@^0.5.16, source-map-support@~0.5.20: +source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== @@ -15133,16 +12486,6 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.3: - version "0.7.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" - integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== - -space-separated-tokens@^1.0.0: - version "1.1.5" - resolved "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz" - integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== - space-separated-tokens@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz#43193cec4fb858a2ce934b7f98b7f2c18107098b" @@ -15170,32 +12513,6 @@ spawnd@^5.0.0: tree-kill "^1.2.2" wait-port "^0.2.9" -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.12" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz#69077835abe2710b65f03969898b6637b505a779" - integrity sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA== - sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -15213,12 +12530,7 @@ stack-utils@^2.0.3: dependencies: escape-string-regexp "^2.0.0" -stackframe@^1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" - integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== - -statuses@2.0.1, statuses@^2.0.1: +statuses@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== @@ -15230,17 +12542,12 @@ stop-iteration-iterator@^1.0.0: dependencies: internal-slot "^1.0.4" -store2@^2.14.2: - version "2.14.2" - resolved "https://registry.yarnpkg.com/store2/-/store2-2.14.2.tgz#56138d200f9fe5f582ad63bc2704dbc0e4a45068" - integrity sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w== - -storybook@7.5.2: - version "7.5.2" - resolved "https://registry.yarnpkg.com/storybook/-/storybook-7.5.2.tgz#73cb6e4f607be09e5000a8d4c7d21d9ed42dcacb" - integrity sha512-wuB5VdmI6teU2z5iiBEZ2ziNeP6g6Da/dGM7+tWQVUl8bmfOmpEgzgEyS1/XqdOfm+HoZplspwM0XMHOLo/Now== +storybook@8.4.7: + version "8.4.7" + resolved "https://registry.yarnpkg.com/storybook/-/storybook-8.4.7.tgz#a3068787a58074cec1b4197eed1c4427ec644b3f" + integrity sha512-RP/nMJxiWyFc8EVMH5gp20ID032Wvk+Yr3lmKidoegto5Iy+2dVQnUoElZb2zpbVXNHWakGuAkfI0dY1Hfp/vw== dependencies: - "@storybook/cli" "7.5.2" + "@storybook/core" "8.4.7" stream-browserify@^2.0.1: version "2.0.2" @@ -15261,11 +12568,6 @@ stream-http@^2.7.2: to-arraybuffer "^1.0.0" xtend "^4.0.0" -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - strict-event-emitter@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz#1602ece81c51574ca39c6815e09f1a3e8550bd93" @@ -15292,15 +12594,6 @@ string-length@^5.0.1: char-regex "^2.0.0" strip-ansi "^7.0.1" -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" @@ -15310,15 +12603,6 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string-width@^5.0.1, string-width@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.0.1" - string.prototype.matchall@^4.0.6: version "4.0.6" resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz" @@ -15365,13 +12649,6 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - strip-ansi@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" @@ -15415,7 +12692,14 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" -strip-json-comments@^3.0.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-4.0.0.tgz#b41379433dd06f5eae805e21d631e07ee670d853" + integrity sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA== + dependencies: + min-indent "^1.0.1" + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -15449,7 +12733,7 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^7.0.0, supports-color@^7.1.0: +supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== @@ -15463,34 +12747,16 @@ supports-color@^8.0.0: dependencies: has-flag "^4.0.0" -supports-hyperlinks@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624" - integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== - dependencies: - has-flag "^4.0.0" - supports-color "^7.0.0" - supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -swc-loader@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/swc-loader/-/swc-loader-0.2.3.tgz#6792f1c2e4c9ae9bf9b933b3e010210e270c186d" - integrity sha512-D1p6XXURfSPleZZA/Lipb3A8pZ17fP4NObZvFCDjK/OKljroqDpPmsBdTraWhVBqUNpcWBQY1imWdoPScRlQ7A== - symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== -synchronous-promise@^2.0.15: - version "2.0.15" - resolved "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.15.tgz" - integrity sha512-k8uzYIkIVwmT+TcglpdN50pS2y1BDcUnBPK9iJeGu0Pl1lOI8pD6wtzgw91Pjpe+RxtTncw32tLxs/R0yNL2Mg== - table@^6.0.9: version "6.8.0" resolved "https://registry.npmjs.org/table/-/table-6.8.0.tgz" @@ -15517,77 +12783,6 @@ tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -tar-fs@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" - integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== - dependencies: - chownr "^1.1.1" - mkdirp-classic "^0.5.2" - pump "^3.0.0" - tar-stream "^2.1.4" - -tar-stream@^2.1.4: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" - integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== - dependencies: - bl "^4.0.3" - end-of-stream "^1.4.1" - fs-constants "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.1.1" - -tar@^6.1.13: - version "6.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" - integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^5.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - -telejson@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/telejson/-/telejson-7.2.0.tgz#3994f6c9a8f8d7f2dba9be2c7c5bbb447e876f32" - integrity sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ== - dependencies: - memoizerific "^1.11.3" - -temp-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" - integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== - -temp@^0.8.4: - version "0.8.4" - resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.4.tgz#8c97a33a4770072e0a05f919396c7665a7dd59f2" - integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg== - dependencies: - rimraf "~2.6.2" - -tempy@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tempy/-/tempy-1.0.1.tgz#30fe901fd869cfb36ee2bd999805aa72fbb035de" - integrity sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w== - dependencies: - del "^6.0.0" - is-stream "^2.0.0" - temp-dir "^2.0.0" - type-fest "^0.16.0" - unique-string "^2.0.0" - -terminal-link@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" - integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== - dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^2.0.0" - terser-webpack-plugin@^5.1.3: version "5.3.10" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" @@ -15654,14 +12849,6 @@ text-table@^0.2.0: resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -through2@^2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - timers-browserify@^2.0.4: version "2.0.12" resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" @@ -15679,6 +12866,11 @@ tiny-invariant@^1.3.1: resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.1.tgz#8560808c916ef02ecfd55e66090df23a4b7aa642" integrity sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw== +tiny-invariant@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.3.tgz#46680b7a873a0d5d10005995eb90a70d74d60127" + integrity sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg== + tiny-warning@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" @@ -15711,16 +12903,6 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -tocbot@^4.20.1: - version "4.21.3" - resolved "https://registry.yarnpkg.com/tocbot/-/tocbot-4.21.3.tgz#8172136dd0fc5233a74d32811c2efb2133542e26" - integrity sha512-UKFkjz0nRB4s5WAeVnQJ3iIKmaKBbWDxzHYlRzJPZO7Doyp6v12nkJMN6T3HiMoQFHldvO1MZLAKRJqDMzkv2A== - -toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - tough-cookie@^4.0.0: version "4.1.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" @@ -15827,12 +13009,21 @@ tsconfig-paths@^3.12.0: minimist "^1.2.0" strip-bom "^3.0.0" -tslib@^1.13.0, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0: +tsconfig-paths@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" + integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== + dependencies: + json5 "^2.2.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tslib@^1.8.0, tslib@^1.8.1: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.0, tslib@^2.4.0: +tslib@^2.0.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== @@ -15905,11 +13096,6 @@ type-detect@4.0.8: resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== -type-fest@^0.16.0: - version "0.16.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" - integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== - type-fest@^0.20.2: version "0.20.2" resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" @@ -15920,17 +13106,12 @@ type-fest@^0.21.3: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== - -type-fest@^0.8.0, type-fest@^0.8.1: +type-fest@^0.8.0: version "0.8.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -type-fest@^2.19.0, type-fest@~2.19: +type-fest@^2.19.0: version "2.19.0" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== @@ -15945,14 +13126,6 @@ type-fest@^4.26.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.26.1.tgz#a4a17fa314f976dd3e6d6675ef6c775c16d7955e" integrity sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg== -type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - typed-array-length@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" @@ -15969,21 +13142,11 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== - typescript@4.7: version "4.7.4" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235" integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== -uglify-js@^3.1.4: - version "3.15.3" - resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.3.tgz" - integrity sha512-6iCVm2omGJbsu3JWac+p6kUiOpg3wFO2f8lIXjfEb8RrmLjzog1wTPMmwKB7swfzzqxj9YM+sGUM++u1qN4qJg== - unbox-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" @@ -15994,16 +13157,16 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== - undici-types@~6.19.8: version "6.19.8" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== +undici-types@~6.20.0: + version "6.20.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433" + integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg== + unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz" @@ -16045,12 +13208,18 @@ unified@^10.0.0: trough "^2.0.0" vfile "^5.0.0" -unique-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" - integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== +unified@^11.0.0: + version "11.0.5" + resolved "https://registry.yarnpkg.com/unified/-/unified-11.0.5.tgz#f66677610a5c0a9ee90cab2b8d4d66037026d9e1" + integrity sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA== dependencies: - crypto-random-string "^2.0.0" + "@types/unist" "^3.0.0" + bail "^2.0.0" + devlop "^1.0.0" + extend "^3.0.0" + is-plain-obj "^4.0.0" + trough "^2.0.0" + vfile "^6.0.0" unist-builder@^3.0.0: version "3.0.0" @@ -16064,16 +13233,18 @@ unist-util-generated@^2.0.0: resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-2.0.0.tgz#86fafb77eb6ce9bfa6b663c3f5ad4f8e56a60113" integrity sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw== -unist-util-is@^4.0.0: - version "4.1.0" - resolved "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz" - integrity sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg== - unist-util-is@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-5.1.1.tgz#e8aece0b102fa9bc097b0fef8f870c496d4a6236" integrity sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ== +unist-util-is@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-6.0.0.tgz#b775956486aff107a9ded971d996c173374be424" + integrity sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw== + dependencies: + "@types/unist" "^3.0.0" + unist-util-position@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-4.0.3.tgz#5290547b014f6222dff95c48d5c3c13a88fadd07" @@ -16088,13 +13259,12 @@ unist-util-stringify-position@^3.0.0: dependencies: "@types/unist" "^2.0.0" -unist-util-visit-parents@^3.0.0: - version "3.1.1" - resolved "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz" - integrity sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg== +unist-util-stringify-position@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz#449c6e21a880e0855bf5aabadeb3a740314abac2" + integrity sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ== dependencies: - "@types/unist" "^2.0.0" - unist-util-is "^4.0.0" + "@types/unist" "^3.0.0" unist-util-visit-parents@^5.0.0, unist-util-visit-parents@^5.1.1: version "5.1.1" @@ -16104,14 +13274,13 @@ unist-util-visit-parents@^5.0.0, unist-util-visit-parents@^5.1.1: "@types/unist" "^2.0.0" unist-util-is "^5.0.0" -unist-util-visit@^2.0.0: - version "2.0.3" - resolved "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz" - integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q== +unist-util-visit-parents@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz#4d5f85755c3b8f0dc69e21eca5d6d82d22162815" + integrity sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw== dependencies: - "@types/unist" "^2.0.0" - unist-util-is "^4.0.0" - unist-util-visit-parents "^3.0.0" + "@types/unist" "^3.0.0" + unist-util-is "^6.0.0" unist-util-visit@^4.0.0: version "4.1.1" @@ -16122,6 +13291,15 @@ unist-util-visit@^4.0.0: unist-util-is "^5.0.0" unist-util-visit-parents "^5.1.1" +unist-util-visit@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-5.0.0.tgz#a7de1f31f72ffd3519ea71814cccf5fd6a9217d6" + integrity sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg== + dependencies: + "@types/unist" "^3.0.0" + unist-util-is "^6.0.0" + unist-util-visit-parents "^6.0.0" + universalify@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" @@ -16140,11 +13318,6 @@ unload@2.2.0: "@babel/runtime" "^7.6.2" detect-node "^2.0.4" -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= - unplugin@^1.3.1: version "1.5.0" resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-1.5.0.tgz#8938ae84defe62afc7757df9ca05d27160f6c20c" @@ -16155,11 +13328,6 @@ unplugin@^1.3.1: webpack-sources "^3.2.3" webpack-virtual-modules "^0.5.0" -untildify@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz" - integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== - update-browserslist-db@^1.0.10: version "1.0.11" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" @@ -16221,33 +13389,11 @@ url@^0.11.0: punycode "1.3.2" querystring "0.2.0" -use-callback-ref@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.3.0.tgz#772199899b9c9a50526fedc4993fc7fa1f7e32d5" - integrity sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w== - dependencies: - tslib "^2.0.0" - use-debounce@9.0.4: version "9.0.4" resolved "https://registry.yarnpkg.com/use-debounce/-/use-debounce-9.0.4.tgz#51d25d856fbdfeb537553972ce3943b897f1ac85" integrity sha512-6X8H/mikbrt0XE8e+JXRtZ8yYVvKkdYRfmIhWZYsP8rcNs9hk3APV8Ua2mFkKRLcJKVdnX2/Vwrmg2GWKUQEaQ== -use-resize-observer@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/use-resize-observer/-/use-resize-observer-9.1.0.tgz#14735235cf3268569c1ea468f8a90c5789fc5c6c" - integrity sha512-R25VqO9Wb3asSD4eqtcxk8sJalvIOYBqS8MNZlpDSQ4l4xMQxC/J7Id9HoTqPq8FwULIn0PVW+OAqF2dyYbjow== - dependencies: - "@juggle/resize-observer" "^3.3.1" - -use-sidecar@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/use-sidecar/-/use-sidecar-1.1.2.tgz#2f43126ba2d7d7e117aa5855e5d8f0276dfe73c2" - integrity sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw== - dependencies: - detect-node-es "^1.1.0" - tslib "^2.0.0" - util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -16267,7 +13413,7 @@ util@^0.11.0: dependencies: inherits "2.0.3" -util@^0.12.0, util@^0.12.4: +util@^0.12.4, util@^0.12.5: version "0.12.5" resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== @@ -16283,11 +13429,6 @@ utila@~0.4: resolved "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz" integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= - uuid@8.3.2, uuid@^8.3.0, uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" @@ -16323,15 +13464,6 @@ v8-compile-cache@^2.0.3: resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz" integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== -v8-to-istanbul@^9.0.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz#1b83ed4e397f58c85c266a570fc2558b5feb9265" - integrity sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA== - dependencies: - "@jridgewell/trace-mapping" "^0.3.12" - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^1.6.0" - v8-to-istanbul@^9.0.1: version "9.0.1" resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz#b6f994b0b5d4ef255e17a0d17dc444a9f5132fa4" @@ -16341,14 +13473,6 @@ v8-to-istanbul@^9.0.1: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - validator@13.11.0: version "13.11.0" resolved "https://registry.yarnpkg.com/validator/-/validator-13.11.0.tgz#23ab3fd59290c61248364eabf4067f04955fbb1b" @@ -16359,11 +13483,6 @@ value-equal@^1.0.1: resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= - vfile-message@^3.0.0: version "3.1.2" resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-3.1.2.tgz#a2908f64d9e557315ec9d7ea3a910f658ac05f7d" @@ -16372,6 +13491,14 @@ vfile-message@^3.0.0: "@types/unist" "^2.0.0" unist-util-stringify-position "^3.0.0" +vfile-message@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-4.0.2.tgz#c883c9f677c72c166362fd635f21fc165a7d1181" + integrity sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw== + dependencies: + "@types/unist" "^3.0.0" + unist-util-stringify-position "^4.0.0" + vfile@^5.0.0: version "5.3.5" resolved "https://registry.yarnpkg.com/vfile/-/vfile-5.3.5.tgz#ec2e206b1414f561c85b7972bb1eeda8ab47ee61" @@ -16382,6 +13509,14 @@ vfile@^5.0.0: unist-util-stringify-position "^3.0.0" vfile-message "^3.0.0" +vfile@^6.0.0: + version "6.0.3" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-6.0.3.tgz#3652ab1c496531852bf55a6bac57af981ebc38ab" + integrity sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q== + dependencies: + "@types/unist" "^3.0.0" + vfile-message "^4.0.0" + vm-browserify@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" @@ -16408,16 +13543,16 @@ w3c-xmlserializer@^4.0.0: dependencies: xml-name-validator "^4.0.0" -wait-on@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-5.3.0.tgz#584e17d4b3fe7b46ac2b9f8e5e102c005c2776c7" - integrity sha512-DwrHrnTK+/0QFaB9a8Ol5Lna3k7WvUR4jzSKmz0YaPBpuN2sACyiPVKVfj6ejnjcajAcvn3wlbTyMIn9AZouOg== +wait-on@^7.0.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-7.2.0.tgz#d76b20ed3fc1e2bebc051fae5c1ff93be7892928" + integrity sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ== dependencies: - axios "^0.21.1" - joi "^17.3.0" + axios "^1.6.1" + joi "^17.11.0" lodash "^4.17.21" - minimist "^1.2.5" - rxjs "^6.6.3" + minimist "^1.2.8" + rxjs "^7.8.1" wait-port@^0.2.9: version "0.2.14" @@ -16456,14 +13591,6 @@ warning@^4.0.1: dependencies: loose-envify "^1.0.0" -watchpack@^2.2.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" - integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== - dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" - watchpack@^2.4.0: version "2.4.2" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.2.tgz#2feeaed67412e7c33184e5a79ca738fbd38564da" @@ -16472,13 +13599,6 @@ watchpack@^2.4.0: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== - dependencies: - defaults "^1.0.3" - webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" @@ -16518,10 +13638,10 @@ webpack-cli@5.0.1: rechoir "^0.8.0" webpack-merge "^5.7.3" -webpack-dev-middleware@^6.1.1: - version "6.1.2" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-6.1.2.tgz#0463232e59b7d7330fa154121528d484d36eb973" - integrity sha512-Wu+EHmX326YPYUpQLKmKbTyZZJIB8/n6R09pTmB03kJmnMsVPTo9COzHZFr01txwaCAuZvfBJE4ZCHRcKs5JaQ== +webpack-dev-middleware@^6.1.2: + version "6.1.3" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-6.1.3.tgz#79f4103f8c898564c9e96c3a9c2422de50f249bc" + integrity sha512-A4ChP0Qj8oGociTs6UdlRUGANIGrCDL3y+pmQMc+dSsraXHCatFpmMey4mYELA+juqwUqwQsUgJJISXl1KWmiw== dependencies: colorette "^2.0.10" memfs "^3.4.12" @@ -16572,6 +13692,11 @@ webpack-virtual-modules@^0.5.0: resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz#362f14738a56dae107937ab98ea7062e8bdd3b6c" integrity sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw== +webpack-virtual-modules@^0.6.0: + version "0.6.2" + resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz#057faa9065c8acf48f24cb57ac0e77739ab9a7e8" + integrity sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ== + webpack@5: version "5.81.0" resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.81.0.tgz#27a2e8466c8b4820d800a8d90f06ef98294f9956" @@ -16785,20 +13910,6 @@ word-wrap@^1.2.3, word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.4.tgz#cb4b50ec9aca570abd1f52f33cd45b6c61739a9f" integrity sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA== -wordwrap@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz" - integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= - -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" @@ -16817,29 +13928,11 @@ wrap-ansi@^7.0.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" - integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== - dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" - wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -write-file-atomic@^2.3.0: - version "2.4.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" - integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - write-file-atomic@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" @@ -16858,13 +13951,6 @@ write-file-atomic@^4.0.1, write-file-atomic@^4.0.2: imurmurhash "^0.1.4" signal-exit "^3.0.7" -ws@^6.1.0: - version "6.2.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.3.tgz#ccc96e4add5fd6fedbc491903075c85c5a11d9ee" - integrity sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA== - dependencies: - async-limiter "~1.0.0" - ws@^7.4.6: version "7.5.10" resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" @@ -16900,7 +13986,7 @@ xmlchars@^2.2.0: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -xtend@^4.0.0, xtend@~4.0.1: +xtend@^4.0.0: version "4.0.2" resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== @@ -16938,11 +14024,6 @@ yargs-parser@^18.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^20.2.2, yargs-parser@^20.2.9: - version "20.2.9" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - yargs-parser@^21.0.0: version "21.0.1" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz" @@ -16970,19 +14051,6 @@ yargs@^15.0.2: y18n "^4.0.0" yargs-parser "^18.1.2" -yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - yargs@^17.3.1: version "17.6.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.0.tgz#e134900fc1f218bc230192bdec06a0a5f973e46c" @@ -17009,14 +14077,6 @@ yargs@^17.7.2: y18n "^5.0.5" yargs-parser "^21.1.1" -yauzl@^2.10.0: - version "2.10.0" - resolved "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz" - integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= - dependencies: - buffer-crc32 "~0.2.3" - fd-slicer "~1.1.0" - yn@3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" @@ -17027,6 +14087,11 @@ yocto-queue@^0.1.0: resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== +yocto-queue@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.1.1.tgz#fef65ce3ac9f8a32ceac5a634f74e17e5b232110" + integrity sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g== + yoctocolors-cjs@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz#f4b905a840a37506813a7acaa28febe97767a242"