diff --git a/.dockerignore b/.dockerignore index c66fe3c91f..78b2f2ced1 100644 --- a/.dockerignore +++ b/.dockerignore @@ -6,6 +6,7 @@ !/apps/ !/libs/ !/tools/ +!/astarte-dashboard/ # Standard Elixir gitignore to be applied to all apps **/_build/ diff --git a/.dprint.json b/.dprint.json index 972f37de04..eefe280fd2 100644 --- a/.dprint.json +++ b/.dprint.json @@ -15,7 +15,8 @@ }, "excludes": [ "**/node_modules", - "**/*-lock.json" + "**/*-lock.json", + "astarte-dashboard/**" ], "plugins": [ "https://plugins.dprint.dev/typescript-0.95.13.wasm", diff --git a/.github/workflows/astarte-dashboard-compatibility.yml b/.github/workflows/astarte-dashboard-compatibility.yml new file mode 100644 index 0000000000..d52c4f223d --- /dev/null +++ b/.github/workflows/astarte-dashboard-compatibility.yml @@ -0,0 +1,47 @@ +name: Platform build compatibility +on: + push: + branches: + - master + - "release-*" + paths: + - "astarte-dashboard/**" + - ".github/workflows/astarte-dashboard-compatibility.yml" + create: + pull_request: + paths: + - "astarte-dashboard/**" + - ".github/workflows/astarte-dashboard-compatibility.yml" + +jobs: + build: + name: Node ${{ matrix.node_version }} on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + defaults: + run: + working-directory: ./astarte-dashboard + strategy: + matrix: + os: + - ubuntu-latest + node_version: + - 22 + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Use Node.js ${{ matrix.node_version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node_version }} + - name: Cache dependencies + uses: actions/cache@v4 + with: + path: | + **/node_modules + key: ${{ matrix.os }}-${{ matrix.node_version }}-${{ hashFiles('**/package-lock.json') }} + - name: Install dependencies + run: npm ci --production + - name: Check App compilation + run: npm run build + env: + CI: false diff --git a/.github/workflows/astarte-dashboard-docker-build.yml b/.github/workflows/astarte-dashboard-docker-build.yml new file mode 100644 index 0000000000..5fce05e40e --- /dev/null +++ b/.github/workflows/astarte-dashboard-docker-build.yml @@ -0,0 +1,36 @@ +name: Test Container Builds +on: + push: + branches: + - "master" + - "release-*" + paths: + - "astarte-dashboard/**" + - ".github/workflows/astarte-dashboard-docker-build.yml" + create: + pull_request: + paths: + - "astarte-dashboard/**" + - ".github/workflows/astarte-dashboard-docker-build.yml" + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true +jobs: + docker: + name: Test Container Build (astarte-dashboard) + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Build + id: docker_build + uses: docker/build-push-action@v6 + with: + context: ./astarte-dashboard + file: ./astarte-dashboard/Dockerfile + push: false diff --git a/.github/workflows/astarte-dashboard-tests.yml b/.github/workflows/astarte-dashboard-tests.yml new file mode 100644 index 0000000000..1c3e763be1 --- /dev/null +++ b/.github/workflows/astarte-dashboard-tests.yml @@ -0,0 +1,53 @@ +name: Functionality tests +on: + push: + branches: + - master + - "release-*" + paths: + - "astarte-dashboard/**" + - ".github/workflows/astarte-dashboard-tests.yml" + create: + pull_request: + paths: + - "astarte-dashboard/**" + - ".github/workflows/astarte-dashboard-tests.yml" + +jobs: + build: + name: Run code quality and funcionality tests + runs-on: ubuntu-latest + defaults: + run: + working-directory: ./astarte-dashboard + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Setup node.js + uses: actions/setup-node@v4 + with: + node-version-file: "astarte-dashboard/.tool-versions" + - name: Get Node.js Version + id: node-version + run: | + echo "version=$(node --version)" >> $GITHUB_OUTPUT + - name: Cache dependencies + uses: actions/cache@v4 + with: + path: | + astarte-dashboard/node_modules + key: ${{ runner.os }}-${{ steps.node-version.outputs.version }}-${{ hashFiles('**/package-lock.json') }} + - name: Install dependencies + run: npm ci + - name: Check formatting + run: npm run check-format + - name: Check linting + run: npm run check-lint + - name: Check Typescript + run: npm run check-types + - name: Run unit tests + run: npm run test + - name: Start dev server + run: npm run start & npx wait-on http://localhost:8080 + - name: Run Cypress tests + run: npm run cypress:test diff --git a/.gitignore b/.gitignore index 24bc6eeef8..480b558b3f 100644 --- a/.gitignore +++ b/.gitignore @@ -57,3 +57,27 @@ examples/*/.idea/ # Ignore .DS_Store files .DS_Store + +# Astarte Dashboard + +# dependencies +astarte-dashboard/node_modules/ +astarte-dashboard/.pnp +astarte-dashboard/.pnp.js + +# testing +astarte-dashboard/coverage/ + +# production +astarte-dashboard/dist/ +astarte-dashboard/build/ + +# misc +astarte-dashboard/.env.local +astarte-dashboard/.env.development.local +astarte-dashboard/.env.test.local +astarte-dashboard/.env.production.local + +astarte-dashboard/npm-debug.log* +astarte-dashboard/yarn-debug.log* +astarte-dashboard/yarn-error.log* diff --git a/.typos.toml b/.typos.toml index 4212161cf1..b602769470 100644 --- a/.typos.toml +++ b/.typos.toml @@ -26,3 +26,6 @@ ba = "ba" [default.extend-identifiers] OTPs = "OTPs" + +[files] +extend-exclude = ["astarte-dashboard/**"] diff --git a/astarte-dashboard/.claude/skills/astarte-forward-port/SKILL.md b/astarte-dashboard/.claude/skills/astarte-forward-port/SKILL.md new file mode 100644 index 0000000000..3b6bc47d2a --- /dev/null +++ b/astarte-dashboard/.claude/skills/astarte-forward-port/SKILL.md @@ -0,0 +1,48 @@ +--- +name: astarte-forward-port +description: Standardized workflow to cascade bug fixes and changes from older release branches to newer release branches and eventually into master. +--- + +# Astarte Dashboard Forward-Porting Workflow + +## Role + +This workflow must be followed to ensure that fixes and changes landed in older `release-X.Y` branches are correctly "forward-ported" (cascaded) to all newer active release branches, and finally into the `master` branch. +The workflow must also be followed when creating a new release on an older `release-X.Y` branch, so that the CHANGELOG.md file in newer release branches includes the section of the released version and presents a coherent release history. + +## Understanding the Branch Hierarchy + +- **Base Branches**: Fixes target the oldest affected active release branch (e.g., `release-1.1`). +- **Target Branches**: Newer release branches (e.g., `release-1.2`) and finally `master`. +- **Progression Flow**: A fix applied to `release-1.1` must be forward-ported to `release-1.2`. Once merged there, it must be forward-ported from `release-1.2` to `master` (when no `release-1.3` or newer version branches exist). + +## Process: How to Forward-Port + +When requested to forward port changes from `release-X.Y` to the next branch in the hierarchy (either `release-A.B` or `master`), follow these steps: + +1. **Identify the Target Branch**: + + - Find the next minor release branch available on the `origin` repository (e.g., if you are porting from `release-1.1`, check if `release-1.2` exists). + - If no newer release branch exists, the ultimate target branch is `master`. + +2. **Create the Forward-Port Branch**: + + - Check out the _Target Branch_ from the main repository (e.g., `git checkout origin/release-1.2` or `git checkout origin/master`). + - Create a new temporary branch on your personal fork for the forward-port: e.g. `forward-port-release-X.Y-into-`. + +3. **Merge the Changes**: + + - Fetch the latest changes from the _Source Branch_ (the older branch). + - Perform a merge using the `--no-ff` flag to explicitly record the merge commit: + `git merge --no-ff origin/release-X.Y` + - **Handling Conflicts**: If there are merge conflicts, resolve them carefully, keeping in mind the logic from the newer branch while incorporating the fix from the older branch. Commit the conflict resolution. + +4. **Open the Pull Request**: + + - Push your newly created forward-port branch to your personal fork. + - Use `gh pr create` to open a Pull Request against the _Target Branch_ on the main repository. + - **Title Naming Convention**: Use the format `Forward port release X.Y into ` (e.g., "Forward port release 1.1 into release 1.2" or "Forward port release 1.2 into master"). + +5. **Continue the Cascade (Iterative Loop)**: + - Once your PR is reviewed and merged into the target branch, the process is not necessarily over. + - If the target branch was a release branch (e.g., `release-1.2`), you MUST repeat steps 1-4 to forward port `release-1.2` into the next branch (e.g., `release-1.3`), and so on, until the changes finally land in `master`. diff --git a/astarte-dashboard/.claude/skills/astarte-release/SKILL.md b/astarte-dashboard/.claude/skills/astarte-release/SKILL.md new file mode 100644 index 0000000000..4d2ca21d85 --- /dev/null +++ b/astarte-dashboard/.claude/skills/astarte-release/SKILL.md @@ -0,0 +1,66 @@ +--- +name: astarte-release +description: Standardized workflow to prepare, tag, and publish a new release for Astarte Dashboard +--- + +# Astarte Dashboard Release Workflow + +This workflow describes Astarte project's release strategy and it must be followed when a release is to be prepared or published. + +## Astarte Branching & Release Strategy + +- **Base branches**: `master` is the main development branch. Release branches are named `release-X.Y` (e.g., `release-1.2`, `release-1.3`). +- **Versioning**: Strict Semantic Versioning with a `v` prefix for tags (e.g., `v1.2.0`, `v1.3.0-rc.1`, `v1.2.1-alpha.0`). +- **Files to update**: `package.json`, `package-lock.json`, and `CHANGELOG.md`. +- **Changelog format**: Follows "Keep a Changelog". Updates are staged in an `[Unreleased]` section. + +## Process: Part 1 - Prepare the Release + +When a new release is to be prepared (e.g., v1.3.0): + +1. **Determine the target release branch**: + + - The target branch should be `release-X.Y` based on the version being released, e.g. `release-1.3` for a `v1.3.2` release. + - Verify if the `release-X.Y` branch exists on the main repository. + - If it does not exist, create the branch on the main repo, branching it off the `master` branch. + +2. **Create a preparation branch**: + + - Create a new branch on your personal fork (e.g., `prepare-release-v1.3.0`) branching off the target release branch. + +3. **Update Versions**: + + - Update the `version` field in `package.json` to the new version (without the `v` prefix), and the `version` fields in `package-lock.json` (e.g. manually or by running `npm install`). + +4. **Update CHANGELOG.md**: + + - Locate the `## [Unreleased]` section. + - Rename the `## [Unreleased]` header with the upcoming release tag and current date, e.g. `## [X.Y.Z(-prerelease)] - YYYY-MM-DD`. + - If there are no unreleased changes, create a new section for the new version with empty appropriate headers (Added, Changed, Fixed, etc.) or whatever is appropriate based on Keep a Changelog. + - Add a new, empty `## [Unreleased]` section at the top of the changelog for future changes. + +5. **Commit & Pull Request**: + - Commit the changes with the message: `chore(release): prepare vX.Y.Z`. + - Push the preparation branch to your personal fork. + - Use `gh pr create` to open a Pull Request against the target `release-X.Y` branch on the main repository. + - Ensure you use a descriptive PR title like `chore(release): prepare vX.Y.Z`. + +## Process: Part 2 - Tag and Publish the Release + +The release must be tagged and published AFTER the preparation PR is merged: + +1. **Verify merge**: + + - Ensure the preparation PR is merged into the `release-X.Y` branch. + - Fetch the latest changes from the main repository and checkout the `release-X.Y` branch. + +2. **Tag the release**: + + - Tag the merge commit with the release tag, using a signed and annotated tag (e.g., `git tag -as v1.3.0 -m "Astarte Dashboard v1.3.0 release"`). + - Push the tag to the main repository. + +3. **Create GitHub Release**: + - Extract the release notes for this specific version from `CHANGELOG.md`. + - Use the `gh release create` command to create a GitHub release targeting the tag. + - **Important**: The title should be the tag name (e.g., `v1.3.0`). The body should contain the changes reported in the `CHANGELOG.md` for this release, following the existing pattern from previous releases. + - **Prerelease flag**: If the release tag contains `-alpha`, `-beta`, or `-rc` (e.g. `v1.3.0-rc.1`), you MUST append the `--prerelease` flag to the `gh release create` command. Set the release as the latest one with the `--latest` flag only when releasing the highest stable (not prelease) version according to semantic versioning scheme. diff --git a/astarte-dashboard/.dockerignore b/astarte-dashboard/.dockerignore new file mode 100644 index 0000000000..85dcc16df6 --- /dev/null +++ b/astarte-dashboard/.dockerignore @@ -0,0 +1,2 @@ +.git +node_modules diff --git a/astarte-dashboard/.env b/astarte-dashboard/.env new file mode 100644 index 0000000000..410670a6b4 --- /dev/null +++ b/astarte-dashboard/.env @@ -0,0 +1 @@ +VITE_APP_VERSION=$npm_package_version diff --git a/astarte-dashboard/.eslintrc.json b/astarte-dashboard/.eslintrc.json new file mode 100644 index 0000000000..440197be69 --- /dev/null +++ b/astarte-dashboard/.eslintrc.json @@ -0,0 +1,50 @@ +{ + "extends": ["react-app", "plugin:cypress/recommended", "prettier"], + "settings": { + "import/resolver": { + "node": { + "extensions": [".js", ".jsx", ".ts", ".tsx"], + "paths": "src" + } + } + }, + "rules": { + "camelcase": 1, + "curly": ["error", "all"], + "import/extensions": [ + "error", + "ignorePackages", + { + "js": "never", + "jsx": "never", + "ts": "never", + "tsx": "never" + } + ], + "import/no-extraneous-dependencies": ["error", { "devDependencies": true }], + "import/prefer-default-export": "off", + "jsx-a11y/click-events-have-key-events": "off", + "jsx-a11y/label-has-associated-control": "off", + "jsx-a11y/no-static-element-interactions": "off", + "no-case-declarations": "off", + "no-param-reassign": ["error", { "props": true, "ignorePropertyModificationsFor": ["state"] }], + "react/jsx-filename-extension": [ + 2, + { + "extensions": [".js", ".jsx", ".ts", ".tsx"] + } + ], + "react/jsx-props-no-spreading": "off", + "react/no-array-index-key": "off", + "react/prop-types": "off", + "react/require-default-props": "off", + "no-use-before-define": "off", + "@typescript-eslint/no-empty-function": "off", + "@typescript-eslint/no-use-before-define": [ + 2, + { + "functions": false + } + ] + } +} diff --git a/astarte-dashboard/.gitlab-ci.yml b/astarte-dashboard/.gitlab-ci.yml new file mode 100644 index 0000000000..09ed85fd51 --- /dev/null +++ b/astarte-dashboard/.gitlab-ci.yml @@ -0,0 +1,29 @@ +variables: + PROJECT_NAME: "astarte-dashboard" + +stages: + - build + - deploy + +next:build: + image: node:22.14.0 + stage: build + script: + - apt-get -y update + - apt-get -y install netbase build-essential autoconf libffi-dev + - npm ci --production + - npm run deploy + +docker:snapshot-container: + image: docker:stable + before_script: + - docker info + - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $DOCKER_REGISTRY + services: + - docker:stable-dind + stage: deploy + only: + - master@Astarte-NG/astarte-dashboard + script: + - docker build -t $DOCKER_REGISTRY/astarte-ng/astarte-dashboard:snapshot . + - docker push $DOCKER_REGISTRY/astarte-ng/astarte-dashboard:snapshot diff --git a/astarte-dashboard/.prettierrc b/astarte-dashboard/.prettierrc new file mode 100644 index 0000000000..5e2863a11f --- /dev/null +++ b/astarte-dashboard/.prettierrc @@ -0,0 +1,5 @@ +{ + "printWidth": 100, + "singleQuote": true, + "trailingComma": "all" +} diff --git a/astarte-dashboard/.tool-versions b/astarte-dashboard/.tool-versions new file mode 100644 index 0000000000..604be079d3 --- /dev/null +++ b/astarte-dashboard/.tool-versions @@ -0,0 +1 @@ +nodejs 22.14.0 diff --git a/astarte-dashboard/.travis.yml b/astarte-dashboard/.travis.yml new file mode 100644 index 0000000000..d32ad89476 --- /dev/null +++ b/astarte-dashboard/.travis.yml @@ -0,0 +1,22 @@ +language: node_js +node_js: + - 20 + +script: + - npm run check-format + - npm run check-lint + - npm run check-types + - npm run build + +deploy: + provider: pages + email: astarte-machine@ispirata.com + name: Astarte Bot + local_dir: build/ + repo: astarte-platform/online-interface-builder + fqdn: interfaces-editor.astarte-platform.org + skip_cleanup: true + github_token: $GITHUB_TOKEN + keep_history: true + on: + branch: master diff --git a/astarte-dashboard/AUTHORS.md b/astarte-dashboard/AUTHORS.md new file mode 100644 index 0000000000..0fe7516b5a --- /dev/null +++ b/astarte-dashboard/AUTHORS.md @@ -0,0 +1,3 @@ +This software has been developed by: +* Mattia Pavinati +* Davide Briani diff --git a/astarte-dashboard/CHANGELOG.md b/astarte-dashboard/CHANGELOG.md new file mode 100644 index 0000000000..00f4c745b2 --- /dev/null +++ b/astarte-dashboard/CHANGELOG.md @@ -0,0 +1,260 @@ +# Changelog +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). + +## [1.3.0-rc.2] - 2026-03-27 + +## [1.3.0-rc.1] - 2026-02-17 +### Added +- Compute permissions from the JWT and disable unavailable UI sections, ([#416](https://github.com/astarte-platform/astarte-dashboard/issues/416)). +- For server-owned interfaces, display a form to send data to the device, ([#417](https://github.com/astarte-platform/astarte-dashboard/issues/417)). +- Add a "keep me logged in" during login, ([#451](https://github.com/astarte-platform/astarte-dashboard/issues/451)). +- Allow unsetting property endpoints, ([#450](https://github.com/astarte-platform/astarte-dashboard/issues/450)). +- Allow to filter time of Interface DataStream data, ([#441](https://github.com/astarte-platform/astarte-dashboard/issues/441)). +- Add useful feedback about the invalid JWT token, ([#485](https://github.com/astarte-platform/astarte-dashboard/issues/485)). +- Add JSON user config defaulting to using local Astarte instance ([#515](https://github.com/astarte-platform/astarte-dashboard/pull/515)) +- Add support for device registration and deletion triggers ([#517](https://github.com/astarte-platform/astarte-dashboard/pull/517)) +### Changed +- Adapt Device Stats and PieChart to exclude interfaces with 0 exchanged messages, ([#428](https://github.com/astarte-platform/astarte-dashboard/issues/428)). +- Persist login using cookies instead of localStorage, ([#419](https://github.com/astarte-platform/astarte-dashboard/issues/419)). + +## [1.2.1-rc.0] - 2025-08-22 +### Fixed +- Correctly handle navigating to a trigger page when its name contains special characters ([#499](https://github.com/astarte-platform/astarte-dashboard/pull/499)). + +## [1.2.1-alpha.0] - 2025-04-10 +### Added +- Support redirection to a specific page after successful authentication + +## [1.2.0] - 2024-07-01 +### Changed +- Update Astarte logo in the login page and in the sidebar. + +## [1.2.0-rc.0] - 2024-05-28 +### Added +- Add Delete device button in Device Info Card ([#397](https://github.com/astarte-platform/astarte-dashboard/issues/397)). +- Add Deletion in progress column for every device ([#398](https://github.com/astarte-platform/astarte-dashboard/issues/398)). +- Report the device registration limit, how many devices can be registered, and why new devices cannot be registered ([#407](https://github.com/astarte-platform/astarte-dashboard/issues/407), [#408](https://github.com/astarte-platform/astarte-dashboard/issues/408)). + +## [1.1.2] - Unreleased +### Fixed +- The known_value filter property for triggers is correctly considered when relevant. +([#393](https://github.com/astarte-platform/astarte-dashboard/issues/393)) +- Correctly parse and display device data for datastream object interfaces with parametric endpoints. +([#376](https://github.com/astarte-platform/astarte-dashboard/issues/376)) +- Avoid querying Astarte for trigger delivery policies when Astarte does not support them ([#459](https://github.com/astarte-platform/astarte-dashboard/issues/459)). +- Simplified floating point values for specifying `known_value` in "incoming data" triggers. +([#465](https://github.com/astarte-platform/astarte-dashboard/issues/465)) +- Show falsey values in the DeviceLiveEventCard by `JSON.stringify` all values and not only objects. +- Resolved an issue where the search filter term was appended to the device ID and alias fields in the device list. + +## [1.1.1] - 2023-11-15 +### Added +- Revalidate token when dashboard is reloaded or opened from different tab. +([#375](https://github.com/astarte-platform/astarte-dashboard/issues/375)) +- Improve history navigation by replacing the browser's location. +([#385](https://github.com/astarte-platform/astarte-dashboard/issues/385)) +- Show error metadata in live events when AstarteDeviceErrorEvent is received. +([#377](https://github.com/astarte-platform/astarte-dashboard/issues/377)) +- Allow removing explicit_timestamp from and existing mapping. +([#387](https://github.com/astarte-platform/astarte-dashboard/issues/387)) +- Improve Device stats card to show Total Bytes/Messages value instead of NaN. +([#384](https://github.com/astarte-platform/astarte-dashboard/issues/384)) +### Fixed +- Validate parametric mappings when they overlap on the last leaf. +([#324](https://github.com/astarte-platform/astarte-dashboard/issues/324)) + +## [1.1.0] - 2023-06-20 + +## [1.1.0-rc.0] - 2023-06-08 +### Added +- Trigger Delivery Policy Editor to manage delivery policies for triggers +([#365](https://github.com/astarte-platform/astarte-dashboard/issues/365)). + +## [1.1.0-alpha.0] - 2022-11-24 +### Added +- Custom library to render graphic charts for data coming from Astarte. +### Changed +- Major rework for the Interface Editor. +- Major rework for the Trigger Editor. + +## [1.0.5] - 2023-09-25 +## Fixed +- Fix crash while displaying values of an Astarte interface. +- Fix duplicate items on device list when changing search filters +([#341](https://github.com/astarte-platform/astarte-dashboard/issues/341)). + +## [1.0.4] - 2022-10-24 + +## [1.0.3] - 2022-07-04 + +## [1.0.2] - 2022-03-30 + +## [1.0.1] - 2021-12-16 +### Fixed +- Visualization of boolean mappings in the device values page. + +## [1.0.0] - 2021-06-30 + +## [1.0.0-rc.0] - 2021-05-05 +### Added +- Display Astarte Dashboard version in the navigation menu. +### Changed +- Improve naming for buttons and modals for better usability. + +## [1.0.0-beta.2] - 2021-03-24 +### Fixed +- Hide login image column on small screen devices. +### Changed +- Device metadata are called device attributes now. Astarte >= 1.0.0-beta.2 is required. + +## [1.0.0-beta.1] - 2021-02-15 +### Added +- Support device groups in device triggers. +- Initial device introspection during device registration. +- Pipeline source visual editor. +- Search filters for devices page. +- Support target device or group in data triggers. + +### Changed +- Change Flow routes to avoid possible conflicts between routes. + +### Fixed +- Fix bug which caused marking triggers as invalid on parametric endpoints containing an underscore. +- Fix interface value page when displaying data from a parametric object datastream interface. + +## [1.0.0-alpha.1] - 2020-06-18 +### Added +- Device registration page. +- Add button for device credentials wipe on device page. +- Error messages when accessing pages with invalid direct URLs. +- Pairing API health check. +- Support to device metadata. +- Add support to custom headers and method for trigger HTTP actions +- Login form JWT token validation. +- Astarte Flow technology preview. +- AMQP trigger actions. +- Device error triggers. + +### Changed +- Look & feel. +- Paginate device list page. +- Configuration accepts both base Astarte API URL and specific component URLs. +- Explicit timestamp is enabled by default for all mappings when interface type is changed to + datastream. + +## [0.11.5] - Unreleased +### Changed +- Enforce IncomingData triggers with /* paths and * match operator on datastream object interfaces + (workaround to [astarte-platform/astarte#523](https://github.com/astarte-platform/astarte/issues/523)). + +## [0.11.4] - 2021-01-26 +### Changed +- Disable ValueChanged, ValueChangedApplied and PathCreated triggers + on datastream interfaces +- Disable ValueChange and ValueChangeApplied triggers on /* paths + (workaround to [astarte-platform/astarte#513](https://github.com/astarte-platform/astarte/issues/513)). +- Change `/resource/:id` routes to `/resource/:id/edit` to avoid conflicts with `/resource/new` routes +### Fixed +- Device sent bytes pie chart now showing up on Chrome browser. +- Fix typos in the Trigger Editor + +## [0.11.3] - 2020-09-24 +### Added +- Label for property unset in device live events page. + +### Fixed +- Fix wrong measurement unit used for mapping expiry. + +## [0.11.2] - 2020-08-14 +### Fixed +- Match API labels with their corresponding status. + +## [0.11.1] - 2020-05-18 +### Added +- Byte multiples in device stats stable. + +### Fixed +- Allow placeholders in data trigger paths +- Fix label positioning in device stats pie chart. + +## [0.11.0] - 2020-04-13 + +## [0.11.0-rc.1] - 2020-02-26 + +## [0.11.0-rc.0] - 2020-01-26 +### Added +- Support for data triggers matching "any interfaces". +- Group creation page. +- Device groups editing. +- API health check. +- Mapping database retention policy and TTL. +- API status and installed interfaces/triggers in Home page. +- Add button for device credential inhibit/enable. + +### Changed +- New datastream mappings have explicit\_timestamp by default +- Data triggers will match path /* by default +- Expect API configuration URLs not ending with /v1 +- Build Docker image with the latest nginx 1.x version +- Enable server owned, object aggregated, datastream interfaces. + +### Fixed +- Handle property interfaces in Device data page. + +## [0.11.0-beta.2] - 2020-01-24 +### Added +- Implement group viewer in ReactJS (start switching to ReactJS). + +## [0.11.0-beta.1] - 2019-01-09 +### Added +- Editor only mode, a mode with an Interface editor but no Astarte connection. +- Device list page +- Warn users about deprecated object aggregated / datastream path. New object aggregated + interfaces should use /collectioname instead. +- Auto refresh for interface, trigger and device Lists +- Group list page +- Device last sent data page + +### Changed +- Migrated to Elm 0.19 + +## [0.10.2] - 2019-12-09 +### Fixed +- Change endpoint regular expression validation to match the one used by Astarte. + +## [0.10.1] - 2019-10-02 + +## [0.10.0] - 2019-04-16 + +## [0.10.0-rc.0] - 2019-04-03 +### Added +- Detailed changeset errors. + +### Fixed +- Minor UI fixes. + +## [0.10.0-beta.3] - 2018-12-19 +### Fixed +- Change recommended interface name regexp. +- Enter key press behavior: close confirm message instead of reloading page. +- Accept `/*` as a valid Data Trigger path. +- Do not show inconsistent data while showing an existing trigger. + +## [0.10.0-beta.2] - 2018-10-19 +### Added +- Advice user about interface names. +- Update mapping endpoint validation. +- Encode data trigger known value according to matching interface path. +- Add dockerignore file to prevent build output from being copied in the docker volume. +- Home page. + +### Fixed +- Disallow interface minor to be 0 when major is also 0 +- Device triggers showing as Data triggers in the trigger builder. + +## [0.10.0-beta.1] - 2018-08-27 +### Added +- First Astarte release. diff --git a/astarte-dashboard/Dockerfile b/astarte-dashboard/Dockerfile new file mode 100644 index 0000000000..f759cb12ac --- /dev/null +++ b/astarte-dashboard/Dockerfile @@ -0,0 +1,12 @@ +FROM node:20.3.1 as builder + +WORKDIR /app +ADD . . +RUN apt-get -qq update +RUN apt-get -qq install netbase build-essential autoconf libffi-dev +RUN npm ci --production +RUN npm run build + +FROM nginx:1 +COPY --from=builder /app/build/ /usr/share/nginx/html/ +ADD default.conf /etc/nginx/conf.d/ diff --git a/astarte-dashboard/LICENSE b/astarte-dashboard/LICENSE new file mode 100644 index 0000000000..d645695673 --- /dev/null +++ b/astarte-dashboard/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/astarte-dashboard/README.md b/astarte-dashboard/README.md new file mode 100644 index 0000000000..8eb3e3e261 --- /dev/null +++ b/astarte-dashboard/README.md @@ -0,0 +1,192 @@ +# Astarte Dashboard + +Astarte Dashboard is a web UI that allows visualizing the status of your realm +and to perform administrative tasks such as installing interfaces and triggers, +managing devices, pipelines and flows. + +[![Dashboard Home Screen Shot][dashboard-home-screenshot]](https://github.com/davidebriani/astarte/blob/docs/add-astarte-dashboard-documentation/doc/images/astarte-dashboard-realm-overview.png) + +## Table of Contents + +- [Try it!](#try-it) +- [Run it locally](#run-it-locally) + - [Prerequisites](#prerequisites) + - [Configuration](#configuration) + - [Run it](#run-it) +- [Contributing](#contributing) + - [Dependencies](#dependencies) + - [Starting up a local server](#starting-up-a-local-server) + - [Testing](#testing) +- [License](#license) + + +## Try it! + +Astarte Dashboard is deployed by default on all Astarte instances. + +When deploying locally using __docker-compose__, visit http://localhost:4040. + +On a __kubernetes__ cluster, the URL is specified in the [Astarte Voyager Ingress configuration](https://docs.astarte-platform.org/snapshot/065-setup_ingress.html#creating-an-astartevoyageringress). + +Or try out __Astarte as a service__ on [Astarte Cloud](https://console.astarte.cloud/). + +## Run it locally + +### Prerequisites + +Before starting you must have: + +- [Docker](https://docs.docker.com/get-docker/) version 19.0 or greater. +- An Astarte instance up and running, either locally or on a remote cluster. + You can have a look at [Astarte in 5 minutes](https://docs.astarte-platform.org/1.2/010-astarte_in_5_minutes.html#content) + if you haven't already. + +### Configuration + +Astarte Dashboard relies on a configuration file for parameters like the Astarte API URL. +As soon as you open Astarte Dashboard, it will search for a file `config.json` +containing the following keys: + +* __astarte_api_url__ (required): + the base URL of your Astarte API endpoints. + This will be used to deduct the endpoints of all Astarte components: + + + AppEngine: api_url + /appengine + + Realm Management: api_url + /realmmanagement + + Pairing: api_url + /pairing + + Flow: api_url + /flow + + The special string `localhost` sets the enpoints the one ones used in the Astarte in 5 minutes guide + + + AppEngine: `http://localhost:4002` + + Realm Management: `http://localhost:4000` + + Pairing: `http://localhost:4003` + + Flow: `http://localhost:4009` + + In custom deployments those URLs may change, so you can overwrite any of those + with the following optional keys: + + __realm_management_api_url__ + + __appengine_api_url__ + + __pairing_api_url__ + + __flow_api_url__ + +* __default_realm__ (optional): + the default realm to login into. + +* __enable_flow_preview__ (optional): + this requires your Astarte cluster to have Flow configured and running. + When enabled (set it to `true`) the Dashboard will display Flow API status + and the related pages such as flows, pipelines and blocks. + +* __auth__ (required): + the list of auth options available for login. + + Supported authentication methods are direct token or OAuth2 Implicit Grant + + + __oauth__: + following the OAuth standard, Astarte Dashboard will redirect you to your OAuth provider + for login. On successful login you'll be redirected back to Astarte Dashboard. + + + __token__: + A token is needed to authenticate against the Astarte API. + You can generate one from the realm private key using [astartectl](https://github.com/astarte-platform/astartectl). + + If multiple auth options are enabled, the user may use either one. + +* __default_auth__ (required): + the default auth option to display when attempting login. + + +An example config would look like this: +```json +{ + "astarte_api_url": "https://api.example.com", + "enable_flow_preview": true, + "default_realm": "myrealm", + "default_auth": "token", + "auth": [ + { + "type": "token" + }, + { + "type": "oauth", + "oauth_api_url": "https://auth.example.com" + } + ] +} +``` + +### Run it + +You can easily run the Astarte Dashboard using the official Docker images from the public +Dockerhub registry. + +For example, to run it locally on port 4040, you can use the following command: + +```sh +docker run \ + -p 4040:80 \ + -v /absolute/path/to/config.json:/usr/share/nginx/html/user-config/config.json \ + astarte/astarte-dashboard:snapshot +``` + + +## Contributing + +### Dependencies + +Astarte Dashboard is written in TypeScript using the React framework and npm to manage dependencies. + +* node (10 or greater) +* npm (6 or greater) + +### Starting up a local server + +1. Clone this repo locally + ```sh + git clone git@github.com:astarte-platform/astarte-dashboard.git && cd astarte-dashboard + ``` +2. Install the project dependencies + ```sh + npm install + ``` +3. Place your configuration file in `public/user-config/config.json` +4. Start the dev server + ```sh + npm run start + ``` +5. Open the browser at the displayed URL, usually `http://localhost:8080` + + +### Testing + +Tests are carried out using Cypress, which in turn uses a headless browser to simulate user interactions. +So before testing, a server from which the browser can access Astarte Dashboard is needed. +The command `start-ci` serves the purpose. +```sh +npm run start-ci +``` + +Once the server is up, you can run tests in the CLI by running the command `test` +```sh +npm run test +``` + +But if you want to test specific pages or components, you can open the Cypress GUI with +```sh +npm run cypress:open +``` + +Other routine tests are formatting and typescript checks +```sh + npm run check-format + npm run check-types +``` + +## License + +Distributed under the Apache2.0 License. See [LICENSE](LICENSE) for more information. + + + +[dashboard-home-screenshot]: https://github.com/astarte-platform/astarte/blob/release-1.2/doc/images/astarte-dashboard-realm-overview.png diff --git a/astarte-dashboard/SECURITY.md b/astarte-dashboard/SECURITY.md new file mode 100644 index 0000000000..dbbd477467 --- /dev/null +++ b/astarte-dashboard/SECURITY.md @@ -0,0 +1,23 @@ + + +# Security Policy + +## Supported Versions + +| Version | Supported | +| ------- | ------------------ | +| 0.10.x | :x: | +| 0.11.x | :x: | +| 1.0.x | :x: | +| 1.1.x | :white_check_mark: | +| 1.2.x | :white_check_mark: | + +## Reporting a Vulnerability + +To submit a vulnerability report, please contact us at security AT secomind.com. +Please, **do not use GitHub issues for vulnerability reports**. +Your submission will be promptly reviewed and validated by a member of our team. diff --git a/astarte-dashboard/cypress.config.ts b/astarte-dashboard/cypress.config.ts new file mode 100644 index 0000000000..7c3bd96a88 --- /dev/null +++ b/astarte-dashboard/cypress.config.ts @@ -0,0 +1,9 @@ +import { defineConfig } from 'cypress'; + +export default defineConfig({ + video: false, + e2e: { + setupNodeEvents(on, config) {}, + baseUrl: 'http://dashboard.astarte.localhost:8080', + }, +}); diff --git a/astarte-dashboard/cypress/e2e/astarte_client.cy.js b/astarte-dashboard/cypress/e2e/astarte_client.cy.js new file mode 100644 index 0000000000..c39931fd47 --- /dev/null +++ b/astarte-dashboard/cypress/e2e/astarte_client.cy.js @@ -0,0 +1,274 @@ +import AstarteClient from '../../src/astarte-client/index.ts'; + +const interfaceList = [ + { + interfaceName: 'test.astarte.AggregatedObjectInterface', + interfaceValuesFixture: 'test_aggregated_object_interface_values', + interfaceLinearizedValuesFixture: 'test_aggregated_object_interface_linearized_values', + }, + { + interfaceName: 'test.astarte.IndividualObjectInterface', + interfaceValuesFixture: 'test_individual_object_interface_values', + interfaceLinearizedValuesFixture: 'test_individual_object_interface_linearized_values', + }, + { + interfaceName: 'test.astarte.PropertiesInterface', + interfaceValuesFixture: 'test_properties_interface_values', + interfaceLinearizedValuesFixture: 'test_properties_interface_linearized_values', + }, +]; + +describe('Astarte-client tests', () => { + beforeEach(() => { + cy.fixture('config/http').then((config) => { + cy.fixture('realm').then((realm) => { + cy.wrap( + new AstarteClient({ + appEngineApiUrl: new URL('appengine/', config.astarte_api_url).toString(), + pairingApiUrl: new URL('pairing/', config.astarte_api_url).toString(), + realmManagementApiUrl: new URL('realmmanagement/', config.astarte_api_url).toString(), + flowApiUrl: new URL('flow/', config.astarte_api_url).toString(), + realm: realm.name, + token: realm.infinite_token, + }), + ).as('astarteClient'); + }); + }); + }); + + context('Devices', () => { + beforeEach(() => { + cy.fixture('device_detailed').as('device'); + }); + + it("correctly retrieves a device's data and DataTree", function () { + const deviceId = this.device.data.id; + + // Get device data for different interface types + interfaceList.forEach(({ interfaceName, interfaceValuesFixture }) => { + cy.fixture(interfaceValuesFixture).then((interfaceValues) => { + cy.intercept( + 'GET', + `/appengine/v1/*/devices/${deviceId}/interfaces/${interfaceName}*`, + interfaceValues, + ).as(`getDeviceDataRequest-${interfaceName}`); + cy.get('@astarteClient') + .then((astarteClient) => { + return astarteClient.getDeviceData({ + deviceId, + interfaceName, + }); + }) + .as(`deviceData`); + cy.wait(`@getDeviceDataRequest-${interfaceName}`); + // Assert expected data from astarte-client + cy.get(`@deviceData`).should('deep.eq', interfaceValues.data); + }); + }); + + // Get device DataTree for different interface types + cy.intercept('GET', `/appengine/v1/*/devices/${deviceId}`, this.device); + interfaceList.forEach( + ({ interfaceName, interfaceValuesFixture, interfaceLinearizedValuesFixture }) => { + cy.fixture(interfaceValuesFixture).then((interfaceValues) => { + cy.intercept( + 'GET', + `/appengine/v1/*/devices/${deviceId}/interfaces/${interfaceName}*`, + interfaceValues, + ).as(`getDeviceDataRequest-${interfaceName}`); + cy.intercept('GET', `/realmmanagement/v1/*/interfaces/${interfaceName}/*`, { + fixture: interfaceName, + }); + cy.get('@astarteClient') + .then((astarteClient) => { + return astarteClient.getDeviceDataTree({ + deviceId, + interfaceName, + }); + }) + .as('deviceDataTree'); + cy.wait(`@getDeviceDataRequest-${interfaceName}`); + cy.fixture(interfaceLinearizedValuesFixture).then((interfaceLinearizedValues) => { + cy.get('@deviceDataTree').then((dataTree) => { + // Assert expected DataTree from astarte-client + expect(dataTree.toLinearizedData()).to.deep.eq(interfaceLinearizedValues); + }); + }); + }); + }, + ); + }); + + it("correctly retrieves a device's DataTree on a specific interface path", function () { + const deviceId = this.device.data.id; + const interfaceName = 'test.astarte.IndividualObjectInterface'; + const interfacePathValuesFixture = 'test_individual_object_interface_path_values'; + const interfacePath = '/sensors/light/estimated'; + + // Get device DataTree on a specific interface PATH + cy.intercept('GET', `/appengine/v1/*/devices/${deviceId}`, this.device); + cy.fixture(interfacePathValuesFixture).then((interfacePathValues) => { + cy.intercept( + 'GET', + `/appengine/v1/*/devices/${deviceId}/interfaces/${interfaceName}${interfacePath}?since=&since_after=&to=&limit=`, + interfacePathValues, + ).as('getDeviceDataRequest'); + cy.intercept('GET', `/realmmanagement/v1/*/interfaces/${interfaceName}/*`, { + fixture: interfaceName, + }); + cy.get('@astarteClient') + .then((astarteClient) => { + return astarteClient.getDeviceDataTree({ + deviceId, + interfaceName, + path: interfacePath, + }); + }) + .as('deviceDataTree'); + cy.wait('@getDeviceDataRequest'); + cy.get('@deviceDataTree').then((dataTree) => { + // Assert expected DataTree from astarte-client + expect(dataTree.toLinearizedData()).to.deep.eq([ + { + endpoint: '/sensors/light/estimated', + timestamp: '2020-10-14T12:27:02.331Z', + type: 'double', + value: 81, + }, + { + endpoint: '/sensors/light/estimated', + timestamp: '2020-10-14T12:27:13.200Z', + type: 'double', + value: 82, + }, + ]); + }); + + // Get device DataTree SINCE a specific timestamp + const since = '2020-10-14T12:27:13.200Z'; + const interfacePathValuesSince = { + data: interfacePathValues.data.filter((v) => v.timestamp >= since), + }; + cy.intercept( + 'GET', + `/appengine/v1/*/devices/${deviceId}/interfaces/${interfaceName}${interfacePath}?*since=${since}*`, + interfacePathValuesSince, + ).as('getDeviceDataSinceRequest'); + cy.get('@astarteClient') + .then((astarteClient) => { + return astarteClient.getDeviceDataTree({ + deviceId, + interfaceName, + path: interfacePath, + since, + }); + }) + .as('deviceDataTree'); + cy.wait('@getDeviceDataSinceRequest'); + cy.get('@deviceDataTree').then((dataTree) => { + // Assert expected DataTree from astarte-client + expect(dataTree.toLinearizedData()).to.deep.eq([ + { + endpoint: '/sensors/light/estimated', + timestamp: '2020-10-14T12:27:13.200Z', + type: 'double', + value: 82, + }, + ]); + }); + + // Get device DataTree TO a specific timestamp + const to = '2020-10-14T12:27:02.331Z'; + const interfacePathValuesTo = { + data: interfacePathValues.data.filter((v) => v.timestamp <= to), + }; + cy.intercept( + 'GET', + `/appengine/v1/*/devices/${deviceId}/interfaces/${interfaceName}${interfacePath}?*to=${to}*`, + interfacePathValuesTo, + ).as('getDeviceDataToRequest'); + cy.get('@astarteClient') + .then((astarteClient) => { + return astarteClient.getDeviceDataTree({ + deviceId, + interfaceName, + path: interfacePath, + to, + }); + }) + .as('deviceDataTree'); + cy.wait('@getDeviceDataToRequest'); + cy.get('@deviceDataTree').then((dataTree) => { + // Assert expected DataTree from astarte-client + expect(dataTree.toLinearizedData()).to.deep.eq([ + { + endpoint: '/sensors/light/estimated', + timestamp: '2020-10-14T12:27:02.331Z', + type: 'double', + value: 81, + }, + ]); + }); + + // Get device DataTree SINCEAFTER a specific timestamp + const sinceAfter = '2020-10-14T12:27:13.200Z'; + const interfacePathValuesSinceAfter = { + data: interfacePathValues.data.filter((v) => v.timestamp > sinceAfter), + }; + cy.intercept( + 'GET', + `/appengine/v1/*/devices/${deviceId}/interfaces/${interfaceName}${interfacePath}?*since_after=${sinceAfter}*`, + interfacePathValuesSinceAfter, + ).as('getDeviceDataSinceAfterRequest'); + cy.get('@astarteClient') + .then((astarteClient) => { + return astarteClient.getDeviceDataTree({ + deviceId, + interfaceName, + path: interfacePath, + sinceAfter, + }); + }) + .as('deviceDataTree'); + cy.wait('@getDeviceDataSinceAfterRequest'); + cy.get('@deviceDataTree').then((dataTree) => { + // Assert expected DataTree from astarte-client + expect(dataTree.toLinearizedData()).to.deep.eq([]); + }); + + // Get device DataTree from last LIMIT values + const limit = 1; + const interfacePathValuesLimit = { + data: interfacePathValues.data.slice(-limit), + }; + cy.intercept( + 'GET', + `/appengine/v1/*/devices/${deviceId}/interfaces/${interfaceName}${interfacePath}?*limit=${limit}*`, + interfacePathValuesLimit, + ).as('getDeviceDataLimitRequest'); + cy.get('@astarteClient') + .then((astarteClient) => { + return astarteClient.getDeviceDataTree({ + deviceId, + interfaceName, + path: interfacePath, + limit, + }); + }) + .as('deviceDataTree'); + cy.wait('@getDeviceDataLimitRequest'); + cy.get('@deviceDataTree').then((dataTree) => { + // Assert expected DataTree from astarte-client + expect(dataTree.toLinearizedData()).to.deep.eq([ + { + endpoint: '/sensors/light/estimated', + timestamp: '2020-10-14T12:27:13.200Z', + type: 'double', + value: 82, + }, + ]); + }); + }); + }); + }); +}); diff --git a/astarte-dashboard/cypress/e2e/block_page.cy.js b/astarte-dashboard/cypress/e2e/block_page.cy.js new file mode 100644 index 0000000000..be184b7cd2 --- /dev/null +++ b/astarte-dashboard/cypress/e2e/block_page.cy.js @@ -0,0 +1,106 @@ +const blockTypeToLabel = { + consumer: 'Consumer', + producer: 'Producer', + producer_consumer: 'Producer & Consumer', +}; + +describe('Block page tests', () => { + context('no access before login', () => { + it('redirects to home', () => { + cy.visit('/blocks/blockname/edit'); + cy.location('pathname').should('eq', '/login'); + }); + }); + + context('authenticated', () => { + context('Block page for a custom block', () => { + beforeEach(() => { + cy.fixture('custom_block') + .as('customBlock') + .then((customBlock) => { + cy.intercept('GET', `/flow/v1/*/blocks/${customBlock.data.name}`, customBlock); + cy.intercept('DELETE', `/flow/v1/*/blocks/${customBlock.data.name}`, { + statusCode: 204, + body: '', + }).as('deleteBlockRequest'); + cy.login(); + cy.visit(`/blocks/${customBlock.data.name}/edit`); + }); + }); + + it('successfully loads Block page for a custom block', function () { + cy.location('pathname').should('eq', `/blocks/${this.customBlock.data.name}/edit`); + cy.get('h2').contains('Block Details'); + }); + + it('displays correct properties for a custom block', function () { + cy.get('.main-content').within(() => { + cy.contains('Name').next().contains(this.customBlock.data.name); + cy.contains('Type').next().contains(blockTypeToLabel[this.customBlock.data.type]); + cy.contains('Source'); + cy.contains('Schema'); + }); + }); + + it('correctly displays a block with the name "new"', function () { + const block = { + name: 'new', + schema: {}, + source: 'source', + type: 'producer', + }; + cy.intercept('GET', '/flow/v1/*/blocks/new', { data: block }); + cy.visit('/blocks/new/edit'); + cy.location('pathname').should('eq', '/blocks/new/edit'); + cy.get('h2').contains('Block Details'); + cy.get('.main-content').contains('Name').next().contains('new'); + }); + + it('can delete a custom block', function () { + cy.get('.main-content').within(() => { + cy.contains('Delete block').click(); + }); + cy.get('.modal') + .contains(`Delete block ${this.customBlock.data.name}?`) + .parents('.modal') + .within(() => { + cy.get('button').contains('Delete').click(); + }); + cy.wait('@deleteBlockRequest'); + cy.location('pathname').should('eq', '/blocks'); + }); + }); + + context('Block page for a native block', () => { + beforeEach(() => { + cy.fixture('native_block') + .as('nativeBlock') + .then((nativeBlock) => { + cy.login(); + cy.visit(`/blocks/${nativeBlock.data.name}/edit`); + cy.intercept('GET', `/flow/v1/*/blocks/${nativeBlock.data.name}`, nativeBlock); + }); + }); + + it('successfully loads Block page for a native block', function () { + cy.location('pathname').should('eq', `/blocks/${this.nativeBlock.data.name}/edit`); + cy.get('h2').contains('Block Details'); + }); + + it('displays correct properties for a native block', function () { + cy.get('.main-content').within(() => { + cy.contains('Name').next().contains(this.nativeBlock.data.name); + cy.contains('Type').next().contains(blockTypeToLabel[this.nativeBlock.data.type]); + cy.contains('Source').should('not.exist'); + cy.contains('Schema'); + }); + }); + + it('cannot delete a native block', function () { + cy.get('.main-content').within(() => { + cy.contains('Delete block').should('not.exist'); + }); + }); + }); + }); +}); diff --git a/astarte-dashboard/cypress/e2e/blocks_page.cy.js b/astarte-dashboard/cypress/e2e/blocks_page.cy.js new file mode 100644 index 0000000000..e0187ad39f --- /dev/null +++ b/astarte-dashboard/cypress/e2e/blocks_page.cy.js @@ -0,0 +1,63 @@ +describe('Blocks page tests', () => { + context('no access before login', () => { + it('redirects to home', () => { + cy.visit('/blocks'); + cy.location('pathname').should('eq', '/login'); + }); + }); + + context('authenticated', () => { + beforeEach(function () { + cy.fixture('blocks').as('blocks'); + cy.intercept('GET', '/flow/v1/*/blocks', { fixture: 'blocks' }).as('getBlocksRequest'); + cy.login(); + cy.visit('/blocks'); + cy.wait('@getBlocksRequest'); + }); + + it('successfully loads Blocks page', () => { + cy.location('pathname').should('eq', '/blocks'); + cy.get('h2').contains('Blocks'); + }); + + it('shows a first card to create a new block', () => { + cy.get('.main-content').within(() => { + cy.get('.card') + .first() + .within(() => { + cy.contains('Create your custom block'); + cy.get('button').contains('Create').as('createBlockButton').should('be.visible'); + cy.get('@createBlockButton').click(); + cy.location('pathname').should('eq', '/blocks/new'); + }); + }); + }); + + it('displays the list of blocks', function () { + cy.get('.main-content').within(() => { + this.blocks.data.forEach((block) => { + cy.get(`.card[data-testid="${block.name}"]`).get('button').contains(block.name); + }); + }); + }); + + it("native blocks have a Native badge, custom blocks don't", function () { + cy.get('.main-content').within(() => { + this.blocks.data.forEach((block) => { + cy.get(`.card[data-testid="${block.name}"]`).within(() => { + if (block.beam_module) { + cy.get('.badge').contains('native'); + } else { + cy.get('.badge').should('not.exist'); + } + }); + }); + }); + }); + + it('each block has a primary button that redirects to the block page', function () { + cy.get('.main-content .card button.btn-primary').contains('Show').first().click(); + cy.location('pathname').should('eq', `/blocks/${this.blocks.data[0].name}/edit`); + }); + }); +}); diff --git a/astarte-dashboard/cypress/e2e/device_page.cy.js b/astarte-dashboard/cypress/e2e/device_page.cy.js new file mode 100644 index 0000000000..9662c4eb33 --- /dev/null +++ b/astarte-dashboard/cypress/e2e/device_page.cy.js @@ -0,0 +1,910 @@ +import _ from 'lodash'; + +describe('Device page tests', () => { + context('no access before login', () => { + before(() => { + cy.fixture('device').as('device'); + }); + + it('redirects to login', function () { + cy.visit(`/devices/${this.device.data.id}/edit`); + cy.location('pathname').should('eq', '/login'); + }); + }); + + context('authenticated', () => { + beforeEach(() => { + cy.fixture('device').as('device'); + cy.fixture('device_detailed').as('deviceDetailed'); + cy.fixture('groups').as('groups'); + cy.intercept('POST', '/appengine/v1/*/groups/*/devices', { + statusCode: 201, + body: '', + }).as('updateGroupRequest'); + cy.login(); + }); + + it('successfully loads Device page', function () { + cy.intercept('GET', '/appengine/v1/*/devices/*', { fixture: 'device' }); + cy.visit(`/devices/${this.device.data.id}/edit`); + cy.location('pathname').should('eq', `/devices/${this.device.data.id}/edit`); + cy.get('h2').contains('Device'); + }); + + it('displays correct properties for a device', function () { + const allGroups = ['group1', 'group2', 'group3', 'group4']; + cy.intercept('GET', '/appengine/v1/*/groups', { data: allGroups }); + cy.intercept('GET', '/appengine/v1/*/devices/*', { fixture: 'device' }); + cy.visit(`/devices/${this.device.data.id}/edit`); + cy.get('.main-content').within(() => { + cy.contains('Device Info') + .next() + .within(() => { + cy.contains('Device ID').next().contains(this.device.data.id); + cy.contains('Device name').next().contains('No name alias set'); + cy.contains('Status').next().contains('Never connected'); + cy.contains('Credentials inhibited').next().contains('False'); + cy.contains('Inhibit credentials').should('exist').and('not.be.disabled'); + cy.contains('Enable credentials request').should('not.exist'); + cy.contains('Wipe credential secret').should('exist').and('not.be.disabled'); + }); + + cy.contains('Aliases') + .next() + .within(() => { + cy.contains('Device has no aliases'); + cy.contains('Add alias').should('exist').and('not.be.disabled'); + }); + + cy.contains('Attributes') + .next() + .within(() => { + cy.contains('Device has no attribute'); + cy.contains('Add attribute').should('exist').and('not.be.disabled'); + }); + + cy.contains('Groups') + .next() + .within(() => { + cy.contains('Device does not belong to any group'); + cy.contains('Add to existing group').should('exist').and('not.be.disabled'); + }); + + cy.contains('Interfaces') + .next() + .within(() => { + cy.contains('No introspection info'); + }); + + cy.contains('Previous Interfaces') + .next() + .within(() => { + cy.contains('No previous interfaces info'); + }); + + cy.contains('Device Status Events'); + + cy.contains('Device Live Events'); + }); + }); + + it('successfully loads Device page for a detailed device', function () { + cy.intercept('GET', '/appengine/v1/*/devices/*', { fixture: 'device_detailed' }); + cy.visit(`/devices/${this.deviceDetailed.data.id}/edit`); + cy.location('pathname').should('eq', `/devices/${this.deviceDetailed.data.id}/edit`); + cy.get('h2').contains('Device'); + }); + + it('displays correct properties for a detailed device', function () { + cy.intercept('GET', '/appengine/v1/*/groups', { fixture: 'groups' }); + cy.intercept('GET', '/appengine/v1/*/devices/*', { fixture: 'device_detailed' }); + cy.visit(`/devices/${this.deviceDetailed.data.id}/edit`); + cy.get('.main-content').within(() => { + cy.contains('Device Info') + .next() + .within(() => { + cy.contains('Device ID').next().contains(this.deviceDetailed.data.id); + cy.contains('Device name').next().contains(this.deviceDetailed.data.aliases.name); + cy.contains('Status').next().contains('Connected'); + cy.contains('Credentials inhibited').next().contains('True'); + cy.contains('Enable credentials request').should('not.be.disabled'); + cy.contains('Inhibit credentials').should('not.exist'); + cy.contains('Wipe credential secret').should('not.be.disabled'); + }); + + cy.contains('Aliases') + .next() + .within(() => { + Object.entries(this.deviceDetailed.data.aliases).forEach(([aliasKey, aliasValue]) => { + cy.contains(aliasKey).next().contains(aliasValue); + }); + cy.contains('Add alias').should('not.be.disabled'); + }); + + cy.contains('Attributes') + .next() + .within(() => { + Object.entries(this.deviceDetailed.data.attributes).forEach( + ([attributeKey, attributeValue]) => { + cy.contains(attributeKey).next().contains(attributeValue); + }, + ); + cy.contains('Add attribute').should('not.be.disabled'); + }); + + cy.contains('Groups') + .next() + .within(() => { + this.deviceDetailed.data.groups.forEach((group) => { + cy.contains(group).should('have.attr', 'href', `/groups/${group}/edit`); + }); + cy.contains('Add to existing group').should('not.be.disabled'); + }); + + cy.contains('Interfaces') + .next() + .within(() => { + Object.entries(this.deviceDetailed.data.introspection).forEach(([interfaceName]) => { + cy.contains(interfaceName); + }); + }); + + cy.contains('Previous Interfaces') + .next() + .within(() => { + this.deviceDetailed.data.previous_interfaces.forEach((iface) => { + cy.contains(iface.name); + }); + }); + + cy.contains('Device Stats'); + + cy.contains('Device Status Events') + .next() + .within(() => { + cy.contains('Last seen IP').next().contains(this.deviceDetailed.data.last_seen_ip); + cy.contains('Last credentials request IP') + .next() + .contains(this.deviceDetailed.data.last_credentials_request_ip); + cy.contains('First credentials request'); + cy.contains('First registration'); + cy.contains('Last connection'); + cy.contains('Last disconnection'); + }); + + cy.contains('Device Live Events'); + }); + }); + + it('correctly inhibit credentials request', function () { + const deviceWithInhibitedCredentials = _.merge({}, this.device, { + data: { credentials_inhibited: true }, + }); + const deviceWithoutInhibitedCredentials = _.merge({}, this.device, { + data: { credentials_inhibited: false }, + }); + cy.dynamicIntercept( + 'getDeviceRequest', + 'GET', + '/appengine/v1/*/devices/*', + deviceWithoutInhibitedCredentials, + ); + cy.visit(`/devices/${this.device.data.id}/edit`); + cy.get('.main-content .card-header') + .contains('Device Info') + .parents('.card') + .within(() => { + cy.contains('Credentials inhibited').next().contains('False'); + cy.contains('Enable credentials request').should('not.exist'); + cy.contains('Inhibit credentials').should('exist').and('not.be.disabled'); + cy.intercept('PATCH', '/appengine/v1/*/devices/*', deviceWithInhibitedCredentials).as( + 'updateDeviceRequest', + ); + cy.dynamicIntercept( + 'getDeviceRequest', + 'GET', + '/appengine/v1/*/devices/*', + deviceWithInhibitedCredentials, + ); + cy.contains('Inhibit credentials').click(); + cy.wait('@updateDeviceRequest') + .its('request.body') + .then((body) => body.data.credentials_inhibited) + .should('deep.eq', true); + cy.contains('Credentials inhibited').next().contains('True'); + cy.contains('Enable credentials request').should('exist').and('not.be.disabled'); + cy.contains('Inhibit credentials').should('not.exist'); + }); + }); + + it('correctly enable credentials request', function () { + const deviceWithInhibitedCredentials = _.merge({}, this.device, { + data: { credentials_inhibited: true }, + }); + const deviceWithoutInhibitedCredentials = _.merge({}, this.device, { + data: { credentials_inhibited: false }, + }); + cy.dynamicIntercept( + 'getDeviceRequest', + 'GET', + '/appengine/v1/*/devices/*', + deviceWithInhibitedCredentials, + ); + cy.visit(`/devices/${this.device.data.id}/edit`); + cy.get('.main-content .card-header') + .contains('Device Info') + .parents('.card') + .within(() => { + cy.contains('Credentials inhibited').next().contains('True'); + cy.contains('Enable credentials request').should('exist').and('not.be.disabled'); + cy.contains('Inhibit credentials').should('not.exist'); + cy.intercept('PATCH', '/appengine/v1/*/devices/*', deviceWithoutInhibitedCredentials).as( + 'updateDeviceRequest', + ); + cy.dynamicIntercept( + 'getDeviceRequest', + 'GET', + '/appengine/v1/*/devices/*', + deviceWithoutInhibitedCredentials, + ); + cy.contains('Enable credentials request').click(); + cy.wait('@updateDeviceRequest') + .its('request.body') + .then((body) => body.data.credentials_inhibited) + .should('deep.eq', false); + cy.contains('Credentials inhibited').next().contains('False'); + cy.contains('Enable credentials request').should('not.exist'); + cy.contains('Inhibit credentials').should('exist').and('not.be.disabled'); + }); + }); + + it('asks confirmation before wiping credentials secret', function () { + cy.intercept('GET', '/appengine/v1/*/devices/*', { fixture: 'device' }); + cy.intercept('DELETE', `/pairing/v1/*/agent/devices/${this.device.data.id}`, { + statusCode: 204, + body: '', + }).as('wipeCredentialsSecretRequest'); + cy.visit(`/devices/${this.device.data.id}/edit`); + cy.get('.main-content').within(() => { + cy.contains('Wipe credential secret').should('exist').and('not.be.disabled').click(); + }); + cy.get('.modal').within(() => { + cy.contains( + 'This will remove the current device credential secret from Astarte, forcing the device to register again and store its new credentials secret. Continue?', + ); + cy.contains('Wipe credentials secret').click(); + cy.wait('@wipeCredentialsSecretRequest'); + }); + cy.get('.modal-dialog').within(() => { + cy.contains( + "The device's credentials secret was wiped from Astarte. You can click here to register the device again and retrieve its new credentials secret.", + ) + .contains('click here') + .should('have.attr', 'href') + .then((href) => { + expect(href.endsWith(`/devices/register?deviceId=${this.device.data.id}`)).to.be.true; + }); + cy.get('button').contains('Ok').click(); + }); + }); + + it('correctly adds a device alias', function () { + const device = _.merge({}, this.device); + device.data.aliases = {}; + const updatedDevice = _.merge({}, this.device); + updatedDevice.data.aliases = { alias_key: 'alias_value' }; + cy.dynamicIntercept('getDeviceRequest', 'GET', '/appengine/v1/*/devices/*', device); + cy.visit(`/devices/${device.data.id}/edit`); + cy.get('.main-content').within(() => { + cy.get('.card-header') + .contains('Aliases') + .parents('.card') + .within(() => { + cy.contains('Add alias').should('exist').and('not.be.disabled').click(); + }); + }); + cy.get('.modal-dialog').within(() => { + cy.get('.modal-header') + .contains('Add Alias') + .parents('.modal') + .within(() => { + cy.get('input#root_key').paste('alias_key'); + cy.get('input#root_value').paste('alias_value'); + cy.dynamicIntercept( + 'getDeviceRequest', + 'GET', + '/appengine/v1/*/devices/*', + updatedDevice, + ); + cy.intercept('PATCH', '/appengine/v1/*/devices/*', updatedDevice).as( + 'updateDeviceRequest', + ); + cy.get('button').contains('Add').should('not.be.disabled').click(); + }); + cy.wait('@updateDeviceRequest') + .its('request.body') + .then((body) => body.data) + .should('deep.eq', { aliases: { alias_key: 'alias_value' } }); + }); + cy.get('.main-content').within(() => { + cy.get('.card-header') + .contains('Aliases') + .parents('.card') + .within(() => { + cy.get('table tbody').find('tr').should('have.length', 1); + cy.contains('alias_key'); + cy.contains('alias_value'); + }); + }); + }); + + it('correctly removes a device alias', function () { + const device = _.merge({}, this.device); + device.data.aliases = { alias_key1: 'alias_value1', alias_key2: 'alias_value2' }; + const updatedDevice = _.merge({}, this.device); + updatedDevice.data.aliases = { alias_key1: 'alias_value1' }; + cy.dynamicIntercept('getDeviceRequest', 'GET', '/appengine/v1/*/devices/*', device); + cy.visit(`/devices/${device.data.id}/edit`); + cy.get('.main-content').within(() => { + cy.get('.card-header') + .contains('Aliases') + .parents('.card') + .within(() => { + cy.get('table tbody').find('tr').should('have.length', 2); + cy.contains('alias_key1'); + cy.contains('alias_value1'); + cy.contains('alias_key2'); + cy.contains('alias_value2'); + cy.get('table tbody tr:nth(1) i.fa-eraser').click(); + }); + }); + cy.get('.modal-dialog').within(() => { + cy.get('.modal-header') + .contains('Delete Alias') + .parents('.modal') + .within(() => { + cy.dynamicIntercept( + 'getDeviceRequest', + 'GET', + '/appengine/v1/*/devices/*', + updatedDevice, + ); + cy.intercept('PATCH', '/appengine/v1/*/devices/*', updatedDevice).as( + 'updateDeviceRequest', + ); + cy.get('button').contains('Delete').click(); + }); + cy.wait('@updateDeviceRequest') + .its('request.body') + .then((body) => body.data) + .should('deep.eq', { aliases: { alias_key2: null } }); + }); + cy.get('.main-content').within(() => { + cy.get('.card-header') + .contains('Aliases') + .parents('.card') + .within(() => { + cy.get('table tbody').find('tr').should('have.length', 1); + cy.contains('alias_key1'); + cy.contains('alias_value1'); + }); + }); + }); + + it('correctly edits a device alias', function () { + const device = _.merge({}, this.device); + device.data.aliases = { alias_key: 'alias_value' }; + const updatedDevice = _.merge({}, this.device); + updatedDevice.data.aliases = { alias_key: 'alias_new_value' }; + cy.dynamicIntercept('getDeviceRequest', 'GET', '/appengine/v1/*/devices/*', device); + cy.visit(`/devices/${device.data.id}/edit`); + cy.get('.main-content').within(() => { + cy.get('.card-header') + .contains('Aliases') + .parents('.card') + .within(() => { + cy.get('table tbody').find('tr').should('have.length', 1); + cy.contains('alias_key'); + cy.contains('alias_value'); + cy.get('table tbody tr:nth(0) i.fa-pencil-alt').click(); + }); + }); + cy.get('.modal-dialog').within(() => { + cy.get('.modal-header') + .contains('Edit "alias_key"') + .parents('.modal') + .within(() => { + cy.get('input#root_value').clear(); + cy.get('input#root_value').paste('alias_new_value'); + cy.dynamicIntercept( + 'getDeviceRequest', + 'GET', + '/appengine/v1/*/devices/*', + updatedDevice, + ); + cy.intercept('PATCH', '/appengine/v1/*/devices/*', updatedDevice).as( + 'updateDeviceRequest', + ); + cy.get('button').contains('Update').click(); + }); + cy.wait('@updateDeviceRequest') + .its('request.body') + .then((body) => body.data) + .should('deep.eq', { aliases: { alias_key: 'alias_new_value' } }); + }); + cy.get('.main-content').within(() => { + cy.get('.card-header') + .contains('Aliases') + .parents('.card') + .within(() => { + cy.get('table tbody').find('tr').should('have.length', 1); + cy.contains('alias_key'); + cy.contains('alias_new_value'); + }); + }); + }); + + it('correctly adds a device attribute', function () { + const device = _.merge({}, this.device); + device.data.attributes = {}; + const updatedDevice = _.merge({}, this.device); + updatedDevice.data.attributes = { attribute_key: 'attribute_value' }; + cy.dynamicIntercept('getDeviceRequest', 'GET', '/appengine/v1/*/devices/*', device); + cy.visit(`/devices/${device.data.id}/edit`); + cy.get('.main-content').within(() => { + cy.get('.card-header') + .contains('Attributes') + .parents('.card') + .within(() => { + cy.contains('Add attribute').should('exist').and('not.be.disabled').click(); + }); + }); + cy.get('.modal-dialog').within(() => { + cy.get('.modal-header') + .contains('Add Attribute') + .parents('.modal') + .within(() => { + cy.get('input#root_key').paste('attribute_key'); + cy.get('input#root_value').paste('attribute_value'); + cy.dynamicIntercept( + 'getDeviceRequest', + 'GET', + '/appengine/v1/*/devices/*', + updatedDevice, + ); + cy.intercept('PATCH', '/appengine/v1/*/devices/*', updatedDevice).as( + 'updateDeviceRequest', + ); + cy.get('button').contains('Add').should('not.be.disabled').click(); + }); + cy.wait('@updateDeviceRequest') + .its('request.body') + .then((body) => body.data) + .should('deep.eq', { attributes: { attribute_key: 'attribute_value' } }); + }); + cy.get('.main-content').within(() => { + cy.get('.card-header') + .contains('Attributes') + .parents('.card') + .within(() => { + cy.get('table tbody').find('tr').should('have.length', 1); + cy.contains('attribute_key'); + cy.contains('attribute_value'); + }); + }); + }); + + it('correctly removes a device attribute', function () { + const device = _.merge({}, this.device); + device.data.attributes = { + attribute_key1: 'attribute_value1', + attribute_key2: 'attribute_value2', + }; + const updatedDevice = _.merge({}, this.device); + updatedDevice.data.attributes = { attribute_key1: 'attribute_value1' }; + cy.dynamicIntercept('getDeviceRequest', 'GET', '/appengine/v1/*/devices/*', device); + cy.visit(`/devices/${device.data.id}/edit`); + cy.get('.main-content').within(() => { + cy.get('.card-header') + .contains('Attributes') + .parents('.card') + .within(() => { + cy.get('table tbody').find('tr').should('have.length', 2); + cy.contains('attribute_key1'); + cy.contains('attribute_value1'); + cy.contains('attribute_key2'); + cy.contains('attribute_value2'); + cy.get('table tbody tr:nth(1) i.fa-eraser').click(); + }); + }); + cy.get('.modal-dialog').within(() => { + cy.get('.modal-header') + .contains('Delete Attribute') + .parents('.modal') + .within(() => { + cy.contains('Do you want to delete attribute_key2 from attributes?'); + cy.dynamicIntercept( + 'getDeviceRequest', + 'GET', + '/appengine/v1/*/devices/*', + updatedDevice, + ); + cy.intercept('PATCH', '/appengine/v1/*/devices/*', updatedDevice).as( + 'updateDeviceRequest', + ); + cy.get('button').contains('Delete').click(); + }); + cy.wait('@updateDeviceRequest') + .its('request.body') + .then((body) => body.data) + .should('deep.eq', { attributes: { attribute_key2: null } }); + }); + cy.get('.main-content').within(() => { + cy.get('.card-header') + .contains('Attributes') + .parents('.card') + .within(() => { + cy.get('table tbody').find('tr').should('have.length', 1); + cy.contains('attribute_key1'); + cy.contains('attribute_value1'); + }); + }); + }); + + it('correctly edits a device attribute', function () { + const device = _.merge({}, this.device); + device.data.attributes = { attribute_key: 'attribute_value' }; + const updatedDevice = _.merge({}, this.device); + updatedDevice.data.attributes = { attribute_key: 'attribute_new_value' }; + cy.dynamicIntercept('getDeviceRequest', 'GET', '/appengine/v1/*/devices/*', device); + cy.visit(`/devices/${device.data.id}/edit`); + cy.get('.main-content').within(() => { + cy.get('.card-header') + .contains('Attributes') + .parents('.card') + .within(() => { + cy.get('table tbody').find('tr').should('have.length', 1); + cy.contains('attribute_key'); + cy.contains('attribute_value'); + cy.get('table tbody tr:nth(0) i.fa-pencil-alt').click(); + }); + }); + cy.get('.modal-dialog').within(() => { + cy.get('.modal-header') + .contains('Edit "attribute_key"') + .parents('.modal') + .within(() => { + cy.get('input#root_value').clear(); + cy.get('button').contains('Update').should('not.be.disabled'); + cy.get('input#root_value').paste('attribute_new_value'); + cy.dynamicIntercept( + 'getDeviceRequest', + 'GET', + '/appengine/v1/*/devices/*', + updatedDevice, + ); + cy.intercept('PATCH', '/appengine/v1/*/devices/*', updatedDevice).as( + 'updateDeviceRequest', + ); + cy.get('button').contains('Update').click(); + }); + cy.wait('@updateDeviceRequest') + .its('request.body') + .then((body) => body.data) + .should('deep.eq', { attributes: { attribute_key: 'attribute_new_value' } }); + }); + cy.get('.main-content').within(() => { + cy.get('.card-header') + .contains('Attributes') + .parents('.card') + .within(() => { + cy.get('table tbody').find('tr').should('have.length', 1); + cy.contains('attribute_key'); + cy.contains('attribute_new_value'); + }); + }); + }); + + it('correctly adds to new group', function () { + const deviceGroups = ['group1', 'group2']; + const allGroups = ['group1', 'group2', 'group3', 'group4']; + const device = _.merge({}, this.deviceDetailed); + device.data.groups = deviceGroups; + const updatedDevice = _.merge({}, this.deviceDetailed); + updatedDevice.data.groups = deviceGroups.concat('group3'); + cy.intercept('GET', '/appengine/v1/*/groups', { data: allGroups }); + cy.dynamicIntercept('getDeviceRequest', 'GET', '/appengine/v1/*/devices/*', device); + cy.visit(`/devices/${device.data.id}/edit`); + cy.get('.main-content').within(() => { + cy.get('.card-header') + .contains('Groups') + .parents('.card') + .within(() => { + cy.get('table tbody tr').should('have.length', deviceGroups.length); + cy.contains('Add to existing group').click(); + }); + }); + cy.get('.modal-dialog').within(() => { + cy.get('.modal-header') + .contains('Select Existing Group') + .parents('.modal') + .within(() => { + cy.get('button').contains('Add to group').should('be.disabled'); + cy.contains('group3').click(); + cy.dynamicIntercept( + 'getDeviceRequest', + 'GET', + '/appengine/v1/*/devices/*', + updatedDevice, + ); + cy.get('button').contains('Add to group').click(); + }); + cy.wait(['@updateGroupRequest', '@getDeviceRequest']); + }); + cy.get('.main-content').within(() => { + cy.get('.card-header') + .contains('Groups') + .parents('.card') + .within(() => { + cy.get('table tbody tr').should('have.length', deviceGroups.length + 1); + cy.contains('group3'); + }); + }); + }); + + it('correctly adds the device to a group with symbols in its name', function () { + const groupName = '!"£$%&/()=?^'; + const deviceGroups = ['group1', 'group2']; + const allGroups = deviceGroups.concat(groupName); + const device = _.merge({}, this.deviceDetailed); + device.data.groups = deviceGroups; + const updatedDevice = _.merge({}, this.deviceDetailed); + updatedDevice.data.groups = allGroups; + cy.dynamicIntercept('getDeviceRequest', 'GET', '/appengine/v1/*/devices/*', device); + cy.intercept('GET', '/appengine/v1/*/groups', { data: allGroups }); + + cy.visit(`/devices/${device.data.id}/edit`); + cy.get('.main-content').within(() => { + cy.get('.card-header') + .contains('Groups') + .parents('.card') + .within(() => { + cy.get('table tbody tr').should('have.length', deviceGroups.length); + cy.contains('Add to existing group').click(); + }); + }); + cy.get('.modal-dialog').within(() => { + cy.get('.modal-header') + .contains('Select Existing Group') + .parents('.modal') + .within(() => { + cy.get('button').contains('Add to group').should('be.disabled'); + cy.contains(groupName).click(); + cy.dynamicIntercept( + 'getDeviceRequest', + 'GET', + '/appengine/v1/*/devices/*', + updatedDevice, + ); + cy.get('button').contains('Add to group').click(); + }); + }); + cy.wait(['@updateGroupRequest', '@getDeviceRequest']); + cy.get('.main-content').within(() => { + cy.get('.card-header') + .contains('Groups') + .parents('.card') + .within(() => { + cy.contains(groupName); + }); + }); + }); + + it('correctly renders Device Stats', function () { + cy.intercept('GET', '/appengine/v1/*/devices/*', { fixture: 'device_detailed' }); + cy.visit(`/devices/${this.deviceDetailed.data.id}/edit`); + + const formatBytes = (bytes) => { + if (bytes < 1024) { + return bytes + 'B'; + } + if (bytes < 1024 * 1024) { + return (bytes / 1024).toFixed(2) + 'KiB'; + } + return (bytes / (1024 * 1024)).toFixed(2) + 'MiB'; + }; + + cy.get('.card-header') + .contains('Device Stats') + .parents('.card') + .within(() => { + const currentInterfaces = Object.entries( + this.deviceDetailed.data.introspection, + ).map(([name, iface]) => ({ name, ...iface })); + const previousInterfaces = this.deviceDetailed.data.previous_interfaces; + const interfaces = [...currentInterfaces, ...previousInterfaces]; + cy.get('table tbody tr').should('have.length', interfaces.length + 2); + interfaces.forEach((iface) => { + cy.contains(`${iface.name} v${iface.major}.${iface.minor}`) + .parents('tr') + .within(() => { + cy.contains(formatBytes(iface.exchanged_bytes)); + cy.contains(iface.exchanged_msgs); + }); + }); + const totalBytes = this.deviceDetailed.data.total_received_bytes; + const totalMessages = this.deviceDetailed.data.total_received_msgs; + const interfacesBytes = _.sumBy(interfaces, 'exchanged_bytes'); + const interfacesMessages = _.sumBy(interfaces, 'exchanged_msgs'); + const otherBytes = totalBytes - interfacesBytes; + const otherMessages = totalMessages - interfacesMessages; + cy.get(`table tbody tr:nth-child(${interfaces.length + 1})`).within(() => { + cy.contains('Other'); + cy.contains(formatBytes(otherBytes)); + cy.contains(otherMessages); + }); + cy.get(`table tbody tr:nth-child(${interfaces.length + 2})`).within(() => { + cy.contains('Total'); + cy.contains(formatBytes(totalBytes)); + cy.contains(totalMessages); + }); + cy.get('canvas[role="img"]').scrollIntoView().should('be.visible'); + }); + }); + + it('correctly displays live messages', function () { + cy.fixture('config/https').then((config) => { + const wssUrl = + config.astarte_api_url.replace('https://', 'wss://') + '/appengine/v1/socket/websocket'; + cy.intercept('GET', '/appengine/v1/*/devices/*', this.device); + cy.mockWebSocket({ url: wssUrl }); + cy.visit(`/devices/${this.device.data.id}/edit`); + cy.get('.main-content .card-header') + .contains('Device Live Events') + .parents('.card') + .within(() => { + cy.contains(`Joined room for device ${this.device.data.id}`); + cy.contains('Watching for device connection events'); + cy.contains('Watching for device disconnection events'); + cy.contains('Watching for device error events'); + cy.contains('Watching for device data events'); + + cy.sendWebSocketDeviceConnected({ + deviceId: this.device.data.id, + deviceIpAddress: '1.2.3.4', + }); + cy.contains('device connected'); + cy.contains('IP : 1.2.3.4'); + + cy.sendWebSocketDeviceDisconnected({ deviceId: this.device.data.id }); + cy.contains('device disconnected'); + cy.contains('Device disconnected'); + + cy.sendWebSocketDeviceEvent({ + deviceId: this.device.data.id, + event: { + type: 'incoming_data', + interface: 'com.domain.InterfaceName1', + path: '/some/endpoint1', + value: 42, + }, + }); + cy.contains('incoming data'); + cy.contains('com.domain.InterfaceName1'); + cy.contains('/some/endpoint1'); + cy.contains('42'); + + const randomValue = Math.random().toFixed(2); + cy.sendWebSocketDeviceEvent({ + deviceId: this.device.data.id, + event: { + type: 'incoming_data', + interface: 'com.domain.AggregatedInterfaceName', + path: '/some/endpoint', + value: { + a: "test", + b: 2, + c: randomValue, + }, + }, + }); + cy.contains('incoming data'); + cy.contains('com.domain.AggregatedInterfaceName'); + cy.contains('/some/endpoint'); + cy.contains('test'); + cy.contains(randomValue); + + cy.sendWebSocketDeviceEvent({ + deviceId: this.device.data.id, + event: { + type: 'incoming_data', + interface: 'com.domain.InterfaceName2', + path: '/some/endpoint2', + value: null, + }, + }); + cy.contains('unset property'); + cy.contains('com.domain.InterfaceName2'); + cy.contains('/some/endpoint2'); + + const deviceErrors = [ + { + name: 'write_on_server_owned_interface', + label: 'Write on a server owned interface', + }, + { + name: 'invalid_interface', + label: 'Invalid interface', + }, + { + name: 'invalid_path', + label: 'Invalid path', + }, + { + name: 'mapping_not_found', + label: 'Mapping not found', + }, + { + name: 'interface_loading_failed', + label: 'Interface loading failed', + }, + { + name: 'ambiguous_path', + label: 'Ambiguous path', + }, + { + name: 'undecodable_bson_payload', + label: 'Undecodable BSON payload', + }, + { + name: 'unexpected_value_type', + label: 'Unexpected value type', + }, + { + name: 'value_size_exceeded', + label: 'Value size exceeded', + }, + { + name: 'unexpected_object_key', + label: 'Unexpected object key', + }, + { + name: 'invalid_introspection', + label: 'Invalid introspection', + }, + { + name: 'unexpected_control_message', + label: 'Unexpected control message', + }, + { + name: 'device_session_not_found', + label: 'Device session not found', + }, + { + name: 'resend_interface_properties_failed', + label: 'Resend interface properties failed', + }, + { + name: 'empty_cache_error', + label: 'Empty cache error', + }, + ]; + deviceErrors.forEach((deviceError) => { + cy.sendWebSocketDeviceEvent({ + deviceId: this.device.data.id, + event: { + type: 'device_error', + error_name: deviceError.name, + metadata: { + meta_key: 'meta_value', + }, + }, + }); + cy.contains('device error'); + cy.contains(deviceError.label); + }); + }); + }); + }); + }); +}); diff --git a/astarte-dashboard/cypress/e2e/devices_page.cy.js b/astarte-dashboard/cypress/e2e/devices_page.cy.js new file mode 100644 index 0000000000..a74f0ed418 --- /dev/null +++ b/astarte-dashboard/cypress/e2e/devices_page.cy.js @@ -0,0 +1,121 @@ +describe('Devices page tests', () => { + context('no access before login', () => { + it('redirects to login', function () { + cy.visit('/devices'); + cy.location('pathname').should('eq', '/login'); + }); + }); + + context('authenticated', () => { + beforeEach(() => { + cy.fixture('devices_detailed').as('devices'); + cy.fixture('devices_stats').as('devicesStats'); + cy.intercept('GET', '/appengine/v1/*/stats/devices', { fixture: 'devices_stats' }); + cy.intercept('GET', '/appengine/v1/*/devices*details=true*', { fixture: 'devices_detailed' }); + cy.login(); + cy.visit('/devices'); + }); + + it('successfully loads Devices page', () => { + cy.location('pathname').should('eq', '/devices'); + cy.get('h2').contains('Devices'); + }); + + it('displays devices list correctly', function () { + cy.get('.main-content').within(() => { + cy.get('table tbody').find('tr').should('have.length', this.devices.data.length); + this.devices.data.forEach((device, index) => { + cy.get(`table tbody tr:nth-child(${index + 1})`).within(() => { + cy.contains(device.aliases.name || device.id); + cy.contains(device.last_connection ? 'Connected on' : 'Never connected'); + }); + }); + }); + }); + + it('clicking a Device ID redirects to its page', function () { + cy.get('.main-content').within(() => { + const device = this.devices.data[0]; + cy.get('table tbody') + .contains(device.aliases.name || device.id) + .click(); + cy.location('pathname').should('eq', `/devices/${device.id}/edit`); + }); + }); + + it('has a button to register a new device', () => { + cy.get('.main-content').within(() => { + cy.contains('Register a new device').click(); + }); + cy.location('pathname').should('eq', '/devices/register'); + }); + + it('correctly filters by connection status', () => { + cy.get('#checkbox-connected').check(); + cy.get('#checkbox-disconnected').uncheck(); + cy.get('#checkbox-never-connected').uncheck(); + cy.get('table tbody tr i') + .should('have.length', 1) + .each(($icon) => { + expect($icon).to.have.class('color-green'); + }); + }); + + it('correctly filters by device handle', function () { + const deviceName = this.devices.data[0].aliases.name; + const filter = deviceName.substring(2, 7); + cy.get('#filterId').paste(filter); + cy.get('table tbody tr').should('have.length', 1); + cy.get('table tbody tr td:nth-child(2)').should('contain', deviceName); + }); + + it('correctly filters by attribute key', function () { + const attributes = this.devices.data[0].attributes; + const key = Object.keys(attributes)[0]; + + cy.get('#filterAttributeKey').paste(key); + cy.get('table tbody tr').should('have.length', 1); + cy.get('table tbody tr td:nth-child(2)').should('contain', key); + }); + + it('correctly filters by attribute value', function () { + const attributes = this.devices.data[0].attributes; + const value = Object.values(attributes)[0]; + + cy.get('#filterAttributeValue').paste(value); + cy.get('table tbody tr').should('have.length', 1); + cy.get('table tbody tr td:nth-child(2)').should('contain', value); + }); + + it('correctly filters by both attribute key and value', function () { + const attributes = this.devices.data[0].attributes; + const key = Object.keys(attributes)[0]; + const value = attributes[key]; + + cy.get('#filterAttributeKey').paste(key); + cy.get('table tbody tr').should('have.length', 1); + cy.get('table tbody tr td:nth-child(2)').should('contain', key); + + cy.get('#filterAttributeValue').paste(value); + cy.get('table tbody tr').should('have.length', 1); + cy.get('table tbody tr td:nth-child(2)').should('contain', value); + }); + + it('correctly filters by last device activity', function () { + const disconnectedDevice = this.devices.data.find((device) => device.last_connection != null); + const activeSinceDate = new Date(disconnectedDevice.last_connection); + const activeDevices = this.devices.data.filter( + (device) => + !!device.connected || + (device.lastDisconnection != null && device.lastDisconnection >= activeSinceDate), + ); + cy.get('table tbody tr').should('have.length', this.devices.data.length); + cy.get('#filterActiveSince').type(activeSinceDate.toISOString().slice(0, 10)); + cy.get('#filterActiveSince').type('{enter}'); + cy.get('table tbody tr').should('have.length', activeDevices.length); + activeDevices.forEach((activeDevice) => { + cy.get('table tbody').should('contain', activeDevice?.aliases?.name || activeDevice.id); + }); + }); + }); +}); diff --git a/astarte-dashboard/cypress/e2e/flow_page.cy.js b/astarte-dashboard/cypress/e2e/flow_page.cy.js new file mode 100644 index 0000000000..3821d3c7fd --- /dev/null +++ b/astarte-dashboard/cypress/e2e/flow_page.cy.js @@ -0,0 +1,47 @@ +const _ = require('lodash'); + +describe('Flow page tests', () => { + context('no access before login', () => { + it('redirects to login', () => { + cy.visit('/flows/test-flow/edit'); + cy.location('pathname').should('eq', '/login'); + }); + }); + + context('authenticated', () => { + beforeEach(() => { + cy.fixture('flow.room1-occupation') + .as('flow') + .then((flow) => { + cy.intercept('GET', `/flow/v1/*/flows/${flow.data.name}`, flow).as('getFlow'); + cy.login(); + cy.visit(`/flows/${flow.data.name}/edit`); + }); + }); + + it('successfully loads Flow page', function () { + cy.location('pathname').should('eq', `/flows/${this.flow.data.name}/edit`); + cy.get('h2').contains('Flow Details'); + }); + + it('correctly displays flow details', function () { + cy.get('.main-content').within(() => { + cy.contains('Flow configuration'); + cy.get('pre code'); + }); + }); + + it('correctly displays a flow with name "new"', function () { + const flow = _.merge({}, this.flow.data, { name: 'new' }); + cy.intercept('GET', `/flow/v1/*/flows/${flow.name}`, { data: flow }).as('getFlow'); + cy.login(); + cy.visit(`/flows/${flow.name}/edit`); + cy.location('pathname').should('eq', `/flows/new/edit`); + cy.get('h2').contains('Flow Details'); + cy.get('.main-content').within(() => { + cy.contains('Flow configuration'); + cy.get('pre code'); + }); + }); + }); +}); diff --git a/astarte-dashboard/cypress/e2e/flows_page.cy.js b/astarte-dashboard/cypress/e2e/flows_page.cy.js new file mode 100644 index 0000000000..0923c75ffd --- /dev/null +++ b/astarte-dashboard/cypress/e2e/flows_page.cy.js @@ -0,0 +1,77 @@ +describe('Flows page tests', () => { + context('no access before login', () => { + it('redirects to login', () => { + cy.visit('/flows'); + cy.location('pathname').should('eq', '/login'); + }); + }); + + context('authenticated', () => { + beforeEach(() => { + cy.fixture('flows').as('flows'); + cy.fixture('flow.room1-occupation').as('flow'); + cy.intercept('GET', '/flow/v1/*/flows/*', { fixture: 'flow.room1-occupation' }).as('getFlow'); + cy.intercept('DELETE', `/flow/v1/*/flows/*`, { + statusCode: 204, + body: '', + }); + cy.login(); + cy.visit('/flows'); + }); + + it('successfully loads Flows page', () => { + cy.location('pathname').should('eq', '/flows'); + cy.get('h2').contains('Running Flows'); + }); + + it('correctly reports there are no flows running', () => { + cy.intercept('GET', '/flow/v1/*/flows', { data: [] }).as('getFlows'); + cy.wait(['@getFlows']); + cy.get('.main-content').within(() => { + cy.contains('No running flows'); + cy.get('table').should('not.exist'); + }); + }); + + it('correctly displays running flows in a table', function () { + cy.intercept('GET', '/flow/v1/*/flows', this.flows).as('getFlows'); + cy.wait(['@getFlows', '@getFlow']); + cy.get('.main-content').within(() => { + cy.get('table tbody').find('tr').should('have.length', this.flows.data.length); + this.flows.data.forEach((_, index) => { + cy.get(`table tbody tr:nth-child(${index + 1})`).within(() => { + cy.contains(this.flow.data.name); + cy.contains(this.flow.data.pipeline); + cy.get('.btn.btn-danger'); + }); + }); + }); + }); + + it('each flow name is a link to its dedicated page', function () { + cy.intercept('GET', '/flow/v1/*/flows', this.flows).as('getFlows'); + cy.wait(['@getFlows', '@getFlow']); + cy.get('.main-content').within(() => { + cy.get('table tbody tr:nth-child(1)').contains(this.flow.data.name).click(); + cy.location('pathname').should('eq', `/flows/${this.flow.data.name}/edit`); + }); + }); + + it('shows a confirm dialog when deleting a flow', function () { + cy.intercept('GET', '/flow/v1/*/flows', this.flows).as('getFlows'); + cy.wait(['@getFlows', '@getFlow']); + cy.get('.main-content table tbody tr:nth-child(1) .btn.btn-danger').click(); + cy.get('[role="dialog"]').contains(`Delete flow ${this.flow.data.name}?`); + cy.get('[role="dialog"] button').contains('Delete').click(); + cy.get('[role="dialog"]').should('not.exist'); + cy.location('pathname').should('eq', '/flows'); + }); + + it('has a button to instantiate a new flow', () => { + cy.get('.main-content').within(() => { + cy.get('button').contains('New flow').click(); + cy.location('pathname').should('eq', '/pipelines'); + }); + }); + }); +}); diff --git a/astarte-dashboard/cypress/e2e/group_page.cy.js b/astarte-dashboard/cypress/e2e/group_page.cy.js new file mode 100644 index 0000000000..c7c8806dd0 --- /dev/null +++ b/astarte-dashboard/cypress/e2e/group_page.cy.js @@ -0,0 +1,106 @@ +describe('Group page tests', () => { + context('no access before login', () => { + it('redirects to login', () => { + cy.visit('/groups/group-name'); + cy.location('pathname').should('eq', '/login'); + }); + }); + + context('authenticated', () => { + beforeEach(() => { + cy.fixture('realm').as('realm'); + cy.login(); + }); + + it('successfully loads Group page, even when its name has special characters', function () { + const groupName = 'special characters %20///%%`~!@#$^&*()_-+=[]{};:\'"|\\<>,.'; + const encodedGroupName = encodeURIComponent(groupName); + const groupFixture = groupName.startsWith('special characters') + ? `group.special-characters.devices.json` + : `group.${groupName}.devices.json`; + cy.fixture(groupFixture).then((groupDevices) => { + cy.intercept( + 'GET', + `/appengine/v1/${this.realm.name}/groups/*/devices?details=true`, + groupDevices, + ); + cy.visit(`/groups/${encodedGroupName}/edit`); + cy.location('pathname').should( + 'eq', + // Browsers will convert single quotes but encodeURIComponent don't + `/groups/${encodedGroupName.replace(/'/g, '%27')}/edit`, + ); + cy.get('h2').contains('Group Devices'); + cy.contains('Devices in group').should('have.text', `Devices in group ${groupName}`); + }); + }); + + it('displays devices list correctly', function () { + const groupName = 'test-devices'; + const encodedGroupName = encodeURIComponent(groupName); + const groupFixture = groupName.startsWith('special characters') + ? `group.special-characters.devices.json` + : `group.${groupName}.devices.json`; + cy.fixture(groupFixture).then((groupDevices) => { + cy.intercept( + 'GET', + `/appengine/v1/${this.realm.name}/groups/${encodedGroupName}/devices?details=true`, + groupDevices, + ); + cy.visit(`/groups/${encodedGroupName}/edit`); + cy.get('.main-content').within(() => { + cy.get('table tbody').find('tr').should('have.length', groupDevices.data.length); + groupDevices.data.forEach((device, index) => { + cy.get(`table tbody tr:nth-child(${index + 1})`).within(() => { + cy.contains(device.aliases.name || device.id); + cy.contains(device.last_connection ? 'Connected on' : 'Never connected'); + }); + }); + }); + }); + }); + + it('asks confirmation before removing a device from group', function () { + const groupName = 'test-devices'; + const encodedGroupName = encodeURIComponent(groupName); + const groupFixture = groupName.startsWith('special characters') + ? `group.special-characters.devices.json` + : `group.${groupName}.devices.json`; + cy.fixture(groupFixture).then((groupDevices) => { + cy.intercept( + 'GET', + `/appengine/v1/${this.realm.name}/groups/${encodedGroupName}/devices?details=true`, + groupDevices, + ); + cy.intercept('DELETE', `/appengine/v1/${this.realm.name}/groups/*/devices/*`, { + statusCode: 204, + }).as('deleteDeviceRequest'); + cy.visit(`/groups/${encodedGroupName}/edit`); + cy.get('.main-content table tbody tr .btn').first().click(); + cy.get('[role="dialog"]').get('button').contains('Remove').click(); + cy.wait('@deleteDeviceRequest'); + }); + }); + + it('correctly removes a device from a group with symbols in its name', function () { + const groupName = '!"£$%&/()=?^'; + const encodedGroupName = encodeURIComponent(groupName); + const groupFixture = 'group.special-characters.devices.json'; + cy.fixture(groupFixture).then((groupDevices) => { + cy.intercept( + 'GET', + `/appengine/v1/${this.realm.name}/groups/*/devices?details=true`, + groupDevices, + ); + cy.intercept('DELETE', `/appengine/v1/${this.realm.name}/groups/*/devices/*`, { + statusCode: 204, + }).as('deleteDeviceRequest'); + + cy.visit(`/groups/${encodedGroupName}/edit`); + cy.get('.main-content table tbody tr .btn').first().click(); + cy.get('[role="dialog"]').get('button').contains('Remove').click(); + cy.wait('@deleteDeviceRequest'); + }); + }); + }); +}); diff --git a/astarte-dashboard/cypress/e2e/groups_page.cy.js b/astarte-dashboard/cypress/e2e/groups_page.cy.js new file mode 100644 index 0000000000..73cbd96d97 --- /dev/null +++ b/astarte-dashboard/cypress/e2e/groups_page.cy.js @@ -0,0 +1,83 @@ +describe('Groups page tests', () => { + context('no access before login', () => { + it('redirects to home', function () { + cy.visit('/groups'); + cy.location('pathname').should('eq', '/login'); + }); + }); + + context('authenticated', () => { + beforeEach(() => { + cy.fixture('realm').then((realm) => { + cy.fixture('groups') + .as('groups') + .then((groups) => { + groups.data.forEach((groupName) => { + const encodedGroupName = encodeURIComponent(groupName); + const groupFixture = groupName.startsWith('special characters') + ? `group.special-characters.devices.json` + : `group.${groupName}.devices.json`; + cy.fixture(groupFixture).as(`${encodedGroupName}-devices`); + // Browsers will convert single quotes but encodeURIComponent don't + cy.intercept( + 'GET', + `/appengine/v1/${realm.name}/groups/${encodeURIComponent(encodedGroupName).replace( + /'/g, + '%27', + )}/devices?details=true`, + { fixture: groupFixture }, + ).as(`${encodedGroupName}-request`); + }); + cy.intercept('GET', `/appengine/v1/${realm.name}/groups`, groups); + cy.login(); + cy.visit('/groups'); + const requestAliases = groups.data.map( + (groupName) => `@${encodeURIComponent(groupName)}-request`, + ); + cy.wait(requestAliases); + }); + }); + }); + + it('successfully loads Groups page', function () { + cy.location('pathname').should('eq', '/groups'); + cy.get('h2').contains('Groups'); + }); + + it('displays groups list correctly', function () { + cy.get('.main-content').within(() => { + cy.get('table tbody').find('tr').should('have.length', this.groups.data.length); + this.groups.data.forEach((groupName, index) => { + const encodedGroupName = encodeURIComponent(groupName); + cy.get(`table tbody tr:nth-child(${index + 1})`).within(() => { + const groupDevices = this[`${encodedGroupName}-devices`].data; + const connectedGroupDevices = groupDevices.filter((d) => d.connected); + cy.get('td:nth-child(1)').contains(groupName); + cy.get('td:nth-child(2)').contains(connectedGroupDevices.length); + cy.get('td:nth-child(3)').contains(groupDevices.length); + }); + }); + }); + }); + + it('has a button to create a new group', function () { + cy.get('.main-content').within(() => { + cy.get('button').contains('Create new group').click(); + cy.location('pathname').should('eq', '/groups/new'); + }); + }); + + it("clicking on a group's name will correctly redirect to its page", () => { + cy.get('.main-content').within(() => { + // Find existing group's name, even with special characters + const groupName = 'special characters %20///%%`~!@#$^&*()_-+=[]{};:\'"|\\<>,.'; + const encodedGroupName = encodeURIComponent(groupName); + cy.get('table td').contains(groupName).click(); + cy.location('pathname').should( + 'eq', + `/groups/${encodedGroupName}/edit`, + ); + }); + }); + }); +}); diff --git a/astarte-dashboard/cypress/e2e/home_page.cy.js b/astarte-dashboard/cypress/e2e/home_page.cy.js new file mode 100644 index 0000000000..06d813ee03 --- /dev/null +++ b/astarte-dashboard/cypress/e2e/home_page.cy.js @@ -0,0 +1,106 @@ +describe('Home page tests', () => { + context('no access before login', () => { + it('redirects to login', function () { + cy.visit('/'); + cy.location('pathname').should('eq', '/login'); + }); + }); + + context('authenticated', () => { + beforeEach(() => { + cy.fixture('devices_stats').as('devicesStats'); + cy.fixture('interfaces').as('interfaces'); + cy.fixture('interface_majors').as('interfaceMajors'); + cy.fixture('triggers').as('triggers'); + cy.intercept('GET', '/appengine/v1/*/stats/devices', { fixture: 'devices_stats' }); + cy.intercept('GET', '/realmmanagement/v1/*/triggers', { fixture: 'triggers' }); + cy.intercept('GET', '/realmmanagement/v1/*/interfaces', { fixture: 'interfaces' }); + cy.intercept('GET', '/realmmanagement/v1/*/interfaces/*', { fixture: 'interface_majors' }); + cy.intercept('GET', '/appengine/health', ''); + cy.intercept('GET', '/realmmanagement/health', ''); + cy.intercept('GET', '/pairing/health', ''); + cy.intercept('GET', '/flow/health', ''); + cy.login(); + cy.visit('/'); + }); + + it('successfully loads the Home page', () => { + cy.location('pathname').should('eq', '/'); + cy.get('h2').contains('Astarte Dashboard'); + }); + + it('has an API Status card with a table to display services health', () => { + cy.get('#status-card') + .contains('API Status') + .parents('.card') + .within(() => { + const services = ['Realm Management', 'AppEngine', 'Pairing', 'Flow']; + cy.get('table tbody').find('tr').should('have.length', services.length); + services.forEach((service, index) => { + cy.get(`table tbody tr:nth-child(${index + 1})`).within(() => { + cy.contains(service); + if (service === 'Flow') { + cy.contains('This service is operating normally'); + } else { + cy.contains('Cannot query the service with the current token'); + } + }); + }); + }); + }); + + it('has a Devices card that shows stats on devices', function () { + cy.get('#devices-card') + .contains('Devices') + .parents('.card') + .within(() => { + cy.contains('Registered devices').next().contains(this.devicesStats.data.total_devices); + cy.contains('Connected devices') + .next() + .contains(this.devicesStats.data.connected_devices); + }); + }); + + it('has a Interfaces card that shows available interfaces', function () { + cy.get('#interfaces-card') + .contains('Interfaces') + .parents('.card') + .within(() => { + this.interfaces.data.slice(0, 4).forEach((interfaceName) => { + cy.contains(interfaceName); + }); + if (this.interfaces.data.length > 5) { + cy.contains(`${this.interfaces.data.length - 4} more installed interfaces`); + } + cy.get('button').contains('Install a new interface'); + const interfaceName = this.interfaces.data[0]; + const interfaceMajor = Math.max(this.interfaceMajors.data); + cy.contains(interfaceName).click(); + cy.location('pathname').should('eq', `/interfaces/${interfaceName}/${interfaceMajor}/edit`); + }); + cy.visit('/'); + cy.get('#interfaces-card button').contains('Install a new interface').click(); + cy.location('pathname').should('eq', '/interfaces/new'); + }); + + it('has a Triggers card that shows available triggers', function () { + cy.get('#triggers-card') + .contains('Triggers') + .parents('.card') + .within(() => { + this.triggers.data.slice(0, 4).forEach((trigger) => { + cy.contains(trigger); + }); + if (this.triggers.data.length > 5) { + cy.contains(`${this.triggers.data.length - 4} more installed triggers`); + } + cy.get('button').contains('Install a new trigger'); + cy.contains(this.triggers.data[0]).click(); + cy.location('pathname').should('eq', `/triggers/${this.triggers.data[0]}/edit`); + }); + cy.visit('/'); + cy.get('#triggers-card button').contains('Install a new trigger').click(); + cy.location('pathname').should('eq', '/triggers/new'); + }); + }); +}); diff --git a/astarte-dashboard/cypress/e2e/interface_builder.cy.js b/astarte-dashboard/cypress/e2e/interface_builder.cy.js new file mode 100644 index 0000000000..16daddcfae --- /dev/null +++ b/astarte-dashboard/cypress/e2e/interface_builder.cy.js @@ -0,0 +1,1001 @@ +const _ = require('lodash'); + +const parseMappingOptions = (mapping) => { + return { + reliability: _.get(mapping, 'reliability', 'unreliable'), + explicitTimestamp: _.get(mapping, 'explicit_timestamp', false), + retention: _.get(mapping, 'retention', 'discard'), + expiry: _.get(mapping, 'expiry', 0), + databaseRetention: _.get(mapping, 'database_retention_policy', 'no_ttl'), + databaseTTL: _.get(mapping, 'database_retention_ttl'), + allowUnset: _.get(mapping, 'allow_unset', false), + }; +}; + +const setupInterfaceEditorFromSource = (iface) => { + cy.get('#interfaceSource').clear().paste(JSON.stringify(iface)); + cy.wait(500); +}; + +const setupInterfaceEditorFromUI = (iface) => { + cy.get('#interfaceName').scrollIntoView().clear().paste(iface.interface_name); + if (iface.version_major > 0) { + cy.get('#interfaceMajor').scrollIntoView().type(`{selectall}${iface.version_major}`); + cy.get('#interfaceMinor').scrollIntoView().type(`{selectall}${iface.version_minor}`); + } else { + cy.get('#interfaceMinor').scrollIntoView().type(`{selectall}${iface.version_minor}`); + cy.get('#interfaceMajor').scrollIntoView().type(`{selectall}${iface.version_major}`); + } + if (iface.ownership === 'server') { + cy.get('#interfaceOwnershipServer').scrollIntoView().check(); + } else { + cy.get('#interfaceOwnershipDevice').scrollIntoView().check(); + } + if (iface.type === 'properties') { + cy.get('#interfaceTypeProperties').scrollIntoView().scrollIntoView().check(); + } else { + cy.get('#interfaceTypeDatastream').scrollIntoView().check(); + if (iface.aggregation === 'object') { + cy.get('#interfaceAggregationObject').scrollIntoView().check(); + } else { + cy.get('#interfaceAggregationIndividual').scrollIntoView().check(); + } + } + if (iface.aggregation === 'object') { + const { + reliability, + explicitTimestamp, + retention, + expiry, + databaseRetention, + databaseTTL, + } = parseMappingOptions(_.get(iface.mappings, '0')); + cy.get('#objectMappingReliability').scrollIntoView().select(reliability); + if (explicitTimestamp) { + cy.get('#objectMappingExplicitTimestamp').scrollIntoView().check(); + } else { + cy.get('#objectMappingExplicitTimestamp').scrollIntoView().uncheck(); + } + cy.get('#objectMappingRetention').scrollIntoView().select(retention); + cy.get('#objectMappingDatabaseRetention').scrollIntoView().select(databaseRetention); + if (retention !== 'discard') { + cy.get('#objectMappingExpiry').scrollIntoView().type(`{selectall}${expiry}`); + } + if (databaseRetention !== 'no_ttl') { + cy.get('#objectMappingTTL').scrollIntoView().type(`{selectall}${databaseTTL}`); + } + } + cy.get('#interfaceDescription').scrollIntoView().clear(); + if (iface.description) { + cy.get('#interfaceDescription').scrollIntoView().paste(iface.description); + } + cy.get('#interfaceDocumentation').scrollIntoView().clear(); + if (iface.doc) { + cy.get('#interfaceDocumentation').scrollIntoView().paste(iface.doc); + } + (iface.mappings || []).forEach((mapping) => { + cy.get('button').contains('Add mapping...').click(); + cy.get('.modal.show').within(() => { + cy.get('#mappingEndpoint').scrollIntoView().clear().paste(mapping.endpoint); + cy.get('#mappingType').scrollIntoView().select(mapping.type); + cy.get('#mappingDescription').scrollIntoView().clear(); + if (mapping.description) { + cy.get('#mappingDescription').scrollIntoView().paste(mapping.description); + } + cy.get('#mappingDocumentation').scrollIntoView().clear(); + if (mapping.doc) { + cy.get('#mappingDocumentation').scrollIntoView().paste(mapping.doc); + } + const { + reliability, + explicitTimestamp, + retention, + expiry, + databaseRetention, + databaseTTL, + allowUnset, + } = parseMappingOptions(mapping); + if (iface.type === 'properties') { + if (allowUnset) { + cy.get('#mappingAllowUnset').scrollIntoView().check(); + } else { + cy.get('#mappingAllowUnset').scrollIntoView().uncheck(); + } + } else if (iface.type === 'datastream' && iface.aggregation !== 'object') { + cy.get('#mappingReliability').scrollIntoView().select(reliability); + cy.get('#mappingRetention').scrollIntoView().select(retention); + cy.get('#mappingDatabaseRetention').scrollIntoView().select(databaseRetention); + if (explicitTimestamp) { + cy.get('#mappingExplicitTimestamp').scrollIntoView().check(); + } else { + cy.get('#mappingExplicitTimestamp').scrollIntoView().uncheck(); + } + if (retention !== 'discard') { + cy.get('#mappingExpiry').scrollIntoView().type(`{selectall}${expiry}`); + } + if (databaseRetention !== 'no_ttl') { + cy.get('#mappingTTL').scrollIntoView().type(`{selectall}${databaseTTL}`); + } + } + cy.get('button').contains('Add').click(); + }); + }); +}; + +const checkMappingEditorUIValues = ({ mapping, type, aggregation = 'individual' }) => { + cy.get(`[data-testid="${mapping.endpoint}"]`) + .scrollIntoView() + .should('be.visible') + .within(() => { + cy.contains(mapping.endpoint); + cy.get('button').contains('Edit...').click(); + }); + cy.get('.modal.show').within(() => { + cy.get('#mappingEndpoint') + .scrollIntoView() + .should('be.visible') + .and('have.value', mapping.endpoint); + cy.get('#mappingType').scrollIntoView().should('be.visible').and('have.value', mapping.type); + cy.get('#mappingDescription') + .scrollIntoView() + .should('be.visible') + .and('have.value', mapping.description || ''); + cy.get('#mappingDocumentation') + .scrollIntoView() + .should('be.visible') + .and('have.value', mapping.doc || ''); + const { + reliability, + explicitTimestamp, + retention, + expiry, + databaseRetention, + databaseTTL, + allowUnset, + } = parseMappingOptions(mapping); + if (type === 'properties') { + cy.get('#mappingAllowUnset') + .scrollIntoView() + .should('be.visible') + .and(allowUnset ? 'be.checked' : 'not.be.checked'); + } else if (type === 'datastream' && aggregation !== 'object') { + cy.get('#mappingReliability') + .scrollIntoView() + .should('be.visible') + .and('have.value', reliability || 'unreliable'); + cy.get('#mappingRetention') + .scrollIntoView() + .should('be.visible') + .and('have.value', retention || 'discard'); + cy.get('#mappingDatabaseRetention') + .scrollIntoView() + .should('be.visible') + .and('have.value', databaseRetention || 'no_ttl'); + cy.get('#mappingExplicitTimestamp') + .scrollIntoView() + .should('be.visible') + .and(explicitTimestamp ? 'be.checked' : 'not.be.checked'); + if (retention !== 'discard') { + cy.get('#mappingExpiry') + .scrollIntoView() + .should('be.visible') + .and('have.value', expiry || 0); + } + if (databaseRetention !== 'no_ttl') { + cy.get('#mappingTTL') + .scrollIntoView() + .should('be.visible') + .and('have.value', databaseTTL || 60); + } + } + cy.get('button').contains('Cancel').click(); + }); +}; + +const checkInterfaceEditorUIValues = (iface) => { + cy.get('#interfaceName') + .scrollIntoView() + .should('be.visible') + .and('have.value', iface.interface_name); + cy.get('#interfaceMajor') + .scrollIntoView() + .should('be.visible') + .and('have.value', iface.version_major); + cy.get('#interfaceMinor') + .scrollIntoView() + .should('be.visible') + .and('have.value', iface.version_minor); + cy.get('#interfaceDescription') + .scrollIntoView() + .should('be.visible') + .and('have.value', iface.description || ''); + cy.get('#interfaceDocumentation') + .scrollIntoView() + .should('be.visible') + .and('have.value', iface.doc || ''); + if (iface.ownership === 'server') { + cy.get('#interfaceOwnershipServer').scrollIntoView().should('be.visible').and('be.checked'); + } else { + cy.get('#interfaceOwnershipDevice').scrollIntoView().should('be.visible').and('be.checked'); + } + if (iface.type === 'properties') { + cy.get('#interfaceTypeProperties').scrollIntoView().should('be.visible').and('be.checked'); + } else { + cy.get('#interfaceTypeDatastream').scrollIntoView().should('be.visible').and('be.checked'); + if (iface.aggregation === 'object') { + cy.get('#interfaceAggregationObject').scrollIntoView().should('be.visible').and('be.checked'); + } else { + cy.get('#interfaceAggregationIndividual') + .scrollIntoView() + .should('be.visible') + .and('be.checked'); + } + } + if (iface.aggregation === 'object') { + const { + reliability, + explicitTimestamp, + retention, + expiry, + databaseRetention, + databaseTTL, + } = parseMappingOptions(_.get(iface.mappings, '0')); + cy.get('#objectMappingReliability') + .scrollIntoView() + .should('be.visible') + .and('have.value', reliability || 'unreliable'); + cy.get('#objectMappingExplicitTimestamp') + .scrollIntoView() + .should('be.visible') + .and(explicitTimestamp ? 'be.checked' : 'not.be.checked'); + cy.get('#objectMappingRetention') + .scrollIntoView() + .should('be.visible') + .and('have.value', retention || 'discard'); + cy.get('#objectMappingDatabaseRetention') + .scrollIntoView() + .should('be.visible') + .and('have.value', databaseRetention || 'no_ttl'); + if (retention !== 'discard') { + cy.get('#objectMappingExpiry') + .scrollIntoView() + .should('be.visible') + .and('have.value', expiry || 0); + } + if (databaseRetention !== 'no_ttl') { + cy.get('#objectMappingTTL') + .scrollIntoView() + .should('be.visible') + .and('have.value', databaseTTL || 60); + } + } + (iface.mappings || []).forEach((mapping) => { + cy.get(`[data-testid="${mapping.endpoint}"]`) + .contains(mapping.endpoint) + .scrollIntoView() + .should('be.visible'); + }); +}; + +describe('Interface builder tests', () => { + context("without an app's config", () => { + it('starts up as a standalone Interface Editor', () => { + cy.dynamicIntercept('getUserConfig', 'GET', '/user-config/config.json', { + statusCode: 404, + body: '', + }); + cy.visit('/'); + cy.get('h2').contains('Interface Editor'); + cy.get('#interfaceName').should('have.value', ''); + + cy.get('.nav-col .nav').within(() => { + cy.get('.nav-brand').as('brand').next('.nav-link').as('interfaceEditor'); + cy.get('@brand').should('have.attr', 'href', '/'); + cy.get('@interfaceEditor').should('have.attr', 'href', '/').contains('Interface Editor'); + }); + }); + }); + + context('no access before login', () => { + it('redirects to login', () => { + cy.visit('/interfaces/new'); + cy.location('pathname').should('eq', '/login'); + + cy.visit('/interfaces/testInterface/0/edit'); + cy.location('pathname').should('eq', '/login'); + }); + }); + + context('authenticated', () => { + beforeEach(() => { + cy.login(); + }); + + context('new interface page', () => { + beforeEach(() => { + cy.visit('/interfaces/new'); + }); + + it('successfully loads New Interface page', function () { + cy.location('pathname').should('eq', '/interfaces/new'); + cy.get('.main-content h2').contains('Interface Editor'); + }); + + it('has a Hide button to toggle Interface Source visibility', () => { + cy.get('#interfaceSource').scrollIntoView().should('be.visible'); + cy.get('button').contains('Hide source').scrollIntoView().click(); + cy.get('#interfaceSource').should('not.exist'); + cy.get('button').contains('Show source').scrollIntoView().click(); + cy.get('#interfaceSource').scrollIntoView().should('be.visible'); + }); + + it('correctly displays default and disabled options', () => { + cy.get('label[for="interfaceName"]').contains('Name'); + cy.get('#interfaceName').should('be.enabled').and('be.empty'); + // default interface version should be 0.1 + cy.get('label[for="interfaceMajor"]').contains('Major'); + cy.get('#interfaceMajor').should('be.enabled').and('have.value', '0'); + cy.get('label[for="interfaceMinor"]').contains('Minor'); + cy.get('#interfaceMinor').should('be.enabled').and('have.value', '1'); + cy.get('label[for="interfaceTypeDatastream"]').contains('Datastream'); + cy.get('#interfaceTypeDatastream').should('be.enabled').and('not.be.checked'); + cy.get('label[for="interfaceTypeProperties"]').contains('Properties'); + cy.get('#interfaceTypeProperties').should('be.enabled').and('be.checked'); + cy.get('label[for="interfaceAggregationIndividual"]').contains('Individual'); + cy.get('#interfaceAggregationIndividual').should('be.disabled'); + cy.get('label[for="interfaceAggregationObject"]').contains('Object'); + cy.get('#interfaceAggregationObject').should('be.disabled'); + cy.get('label[for="interfaceOwnershipDevice"]').contains('Device'); + cy.get('#interfaceOwnershipDevice').should('be.enabled').and('be.checked'); + cy.get('label[for="interfaceOwnershipServer"]').contains('Server'); + cy.get('#interfaceOwnershipServer').should('be.enabled').and('not.be.checked'); + cy.get('label[for="interfaceDescription"]').contains('Description'); + cy.get('#interfaceDescription').should('be.enabled').and('be.empty'); + cy.get('label[for="interfaceDocumentation"]').contains('Documentation'); + cy.get('#interfaceDocumentation').should('be.enabled').and('be.empty'); + cy.get('button').contains('Add mapping...'); + + // Select Datastream type + cy.get('label').contains('Datastream').click(); + cy.get('#interfaceAggregationIndividual').should('be.enabled').and('be.checked'); + cy.get('#interfaceAggregationObject').should('be.enabled').and('not.be.checked'); + + // Select Object type + cy.get('label').contains('Object').click(); + + cy.get('label[for="objectMappingReliability"]').contains('Reliability'); + cy.get('#objectMappingReliability').should('be.enabled').and('have.value', 'unreliable'); + cy.get('label[for="objectMappingExplicitTimestamp"]').contains('Explicit timestamp'); + cy.get('#objectMappingExplicitTimestamp').should('be.enabled').and('be.checked'); + cy.get('label[for="objectMappingRetention"]').contains('Retention'); + cy.get('#objectMappingRetention').should('be.enabled').and('have.value', 'discard'); + cy.get('label[for="objectMappingDatabaseRetention"]').contains('Database Retention'); + cy.get('#objectMappingDatabaseRetention').should('be.enabled').and('have.value', 'no_ttl'); + + // Select Volatile retention + cy.get('#objectMappingRetention').select('volatile'); + + cy.get('label[for="objectMappingExpiry"]').contains('Expiry'); + cy.get('#objectMappingExpiry').should('be.enabled').and('have.value', '0'); + + // Select use_ttl database retention + cy.get('#objectMappingDatabaseRetention').select('use_ttl'); + + cy.get('label[for="objectMappingTTL"]').contains('TTL'); + cy.get('#objectMappingTTL').should('be.enabled').and('have.value', '60'); + }); + + it('displays correct Mapping editor depending on interface type', () => { + // Properties interface + cy.get('label').contains('Properties').click(); + cy.get('button').contains('Add mapping...').click(); + cy.get('.modal.show').within(() => { + cy.get('.modal-header').contains('Add Mapping'); + cy.get('label[for="mappingEndpoint"]').contains('Endpoint'); + cy.get('#mappingEndpoint').should('be.enabled').and('be.empty'); + cy.get('label[for="mappingType"]').contains('Type'); + cy.get('#mappingType').should('be.enabled').and('have.value', 'double'); + cy.get('label[for="mappingAllowUnset"]').contains('Allow unset'); + cy.get('#mappingAllowUnset').should('be.enabled').and('not.be.checked'); + cy.get('label[for="mappingDescription"]').contains('Description'); + cy.get('#mappingDescription').should('be.enabled').and('be.empty'); + cy.get('label[for="mappingDocumentation"]').contains('Documentation'); + cy.get('#mappingDocumentation').should('be.enabled').and('be.empty'); + cy.get('button').contains('Add').should('be.disabled'); + cy.get('button').contains('Cancel').click(); + }); + + // Datastream Object interface + cy.get('label').contains('Datastream').click(); + cy.get('label').contains('Object').click(); + cy.get('button').contains('Add mapping...').click(); + cy.get('.modal.show').within(() => { + cy.get('.modal-header').contains('Add Mapping'); + cy.get('label[for="mappingEndpoint"]').contains('Endpoint'); + cy.get('#mappingEndpoint').should('be.enabled').and('be.empty'); + cy.get('label[for="mappingType"]').contains('Type'); + cy.get('#mappingType').should('be.enabled').and('have.value', 'double'); + cy.get('label[for="mappingDescription"]').contains('Description'); + cy.get('#mappingDescription').should('be.enabled').and('be.empty'); + cy.get('label[for="mappingDocumentation"]').contains('Documentation'); + cy.get('#mappingDocumentation').should('be.enabled').and('be.empty'); + cy.get('button').contains('Add').should('be.disabled'); + cy.get('button').contains('Cancel').click(); + }); + + // Datastream Individual interface + cy.get('label').contains('Datastream').click(); + cy.get('label').contains('Individual').click(); + cy.get('button').contains('Add mapping...').click(); + cy.get('.modal.show').within(() => { + cy.get('.modal-header').contains('Add Mapping'); + cy.get('label[for="mappingEndpoint"]').contains('Endpoint'); + cy.get('#mappingEndpoint').should('be.enabled').and('be.empty'); + cy.get('label[for="mappingType"]').contains('Type'); + cy.get('#mappingType').should('be.enabled').and('have.value', 'double'); + cy.get('label[for="mappingReliability"]').contains('Reliability'); + cy.get('#mappingReliability').should('be.enabled').and('have.value', 'unreliable'); + cy.get('label[for="mappingRetention"]').contains('Retention'); + cy.get('#mappingRetention').should('be.enabled').and('have.value', 'discard'); + cy.get('label[for="mappingDatabaseRetention"]').contains('Database retention'); + cy.get('#mappingDatabaseRetention').should('be.enabled').and('have.value', 'no_ttl'); + cy.get('label[for="mappingExplicitTimestamp"]').contains('Explicit timestamp'); + cy.get('#mappingExplicitTimestamp').should('be.enabled').and('be.checked'); + cy.get('label[for="mappingDescription"]').contains('Description'); + cy.get('#mappingDescription').should('be.enabled').and('be.empty'); + cy.get('label[for="mappingDocumentation"]').contains('Documentation'); + cy.get('#mappingDocumentation').should('be.enabled').and('be.empty'); + + // Select Volatile retention + cy.get('#mappingRetention').select('volatile'); + cy.get('label[for="mappingExpiry"]').contains('Expiry'); + cy.get('#mappingExpiry').should('be.enabled').and('have.value', '0'); + + // Select use_ttl database retention + cy.get('#mappingDatabaseRetention').select('use_ttl'); + cy.get('label[for="mappingTTL"]').contains('TTL'); + cy.get('#mappingTTL').should('be.enabled').and('have.value', '60'); + + cy.get('button').contains('Add').should('be.disabled'); + cy.get('button').contains('Cancel').click(); + }); + }); + + it('can add, edit and delete mappings', () => { + const mappingEndpoint = '/mapping_endpoint'; + + // Add Mapping + cy.get('button').contains('Add mapping...').click(); + cy.get('.modal.show').within(() => { + cy.get('.modal-header').contains('Add Mapping'); + cy.get('#mappingEndpoint').paste(mappingEndpoint); + cy.get('#mappingType').select('double'); + cy.get('button').contains('Add').click(); + }); + cy.get(`[data-testid="${mappingEndpoint}"]`).within(() => { + cy.contains(mappingEndpoint); + cy.get('.badge').contains('double'); + }); + + // Edit Mapping + cy.get(`[data-testid="${mappingEndpoint}"]`).within(() => { + cy.contains(mappingEndpoint); + cy.get('button').contains('Edit...').click(); + }); + cy.get('.modal.show').within(() => { + cy.get('.modal-header').contains('Edit Mapping'); + cy.get('#mappingType').select('string'); + cy.get('button').contains('Update').click(); + }); + cy.get(`[data-testid="${mappingEndpoint}"]`).within(() => { + cy.contains(mappingEndpoint); + cy.get('.badge').contains('string'); + }); + + // Delete mapping + cy.get(`[data-testid="${mappingEndpoint}"]`).within(() => { + cy.contains(mappingEndpoint); + cy.get('button').contains('Delete').click(); + }); + cy.get(`[data-testid="${mappingEndpoint}"]`).should('not.exist'); + }); + + it('shows the correct confirmation modal before installing the interface', () => { + const interfaceName = 'com.samples.Interface'; + + // Set name + cy.get('#interfaceName').paste(interfaceName); + + // Set draft version + cy.get('#interfaceMinor').type('{selectall}1'); + cy.get('#interfaceMajor').type('{selectall}0'); + + // Add mapping + cy.get('button').contains('Add mapping...').click(); + cy.get('.modal.show').within(() => { + cy.get('.modal-header').contains('Add Mapping'); + cy.get('#mappingEndpoint').paste('/enpdoint'); + cy.get('button').contains('Add').click(); + }); + + // Modal confirmation for draft version + cy.get('button').contains('Install interface').click(); + cy.get('.modal.show').within(() => { + cy.get('.modal-header').contains('Confirmation Required'); + cy.contains(`You are about to install the interface ${interfaceName}.`); + cy.contains( + 'As its major version is 0, this is a draft interface, which can be deleted.', + ); + cy.contains('In such a case, any data sent through this interface will be lost.'); + cy.contains('Draft Interfaces should be used for development and testing purposes only.'); + cy.contains('Are you sure you want to continue?'); + cy.get('button').contains('Cancel').click(); + }); + + // Set major version + cy.get('#interfaceMajor').type('{selectall}1'); + + // Modal confirmation for major version + cy.get('button').contains('Install interface').click(); + cy.get('.modal.show').within(() => { + cy.get('.modal-header').contains('Confirmation Required'); + cy.contains(`You are about to install the interface ${interfaceName}.`); + cy.contains( + 'Interface major is greater than zero, that means you will not be able to change already installed mappings.', + ); + cy.contains('Are you sure you want to continue?'); + cy.get('button').contains('Cancel').click(); + }); + }); + + it('correctly reports errors and warning for the interface name property', () => { + // Empty name + cy.get('#interfaceName').clear(); + cy.get('#interfaceName').should('have.class', 'is-invalid'); + + // Invalid name + cy.get('#interfaceName').paste('invalid_name!'); + cy.get('#interfaceName').should('have.class', 'is-invalid'); + + // Valid but poor name + cy.get('#interfaceName').clear().paste('name'); + cy.get('#interfaceName').should('not.have.class', 'is-invalid'); + cy.get('#interfaceName') + .parents() + .get('.warning-feedback') + .should('be.visible') + .and('not.empty'); + + // Valid name + cy.get('#interfaceName').clear().paste('com.sample.Name'); + cy.get('#interfaceName').should('not.have.class', 'is-invalid'); + cy.get('#interfaceName') + .parents() + .get('.warning-feedback') + .should('not.exist'); + }); + + it('correctly reports errors in mapping editor for the endpoint field', () => { + cy.get('button').contains('Add mapping...').click(); + cy.get('.modal.show').within(() => { + cy.get('#mappingEndpoint').clear(); + cy.get('#mappingEndpoint').should('have.class', 'is-invalid'); + cy.get('#mappingEndpoint').paste('invalid_endpoint!'); + cy.get('#mappingEndpoint').should('have.class', 'is-invalid'); + cy.get('#mappingEndpoint').clear().paste('/valid_endpoint'); + cy.get('#mappingEndpoint').should('not.have.class', 'is-invalid'); + }); + }); + + it('correctly loads interface from its source', () => { + const interfaceFixtures = [ + 'test.astarte.NoDefaultsInterface', + 'test.astarte.PropertiesInterface', + 'test.astarte.IndividualObjectInterface', + 'test.astarte.AggregatedObjectInterface', + ]; + interfaceFixtures.forEach((interfaceFixture) => { + cy.fixture(interfaceFixture).then(({ data: iface }) => { + setupInterfaceEditorFromSource(iface); + checkInterfaceEditorUIValues(iface); + }); + }); + }); + + it('can correctly build an interface with the UI', () => { + const interfaceFixtures = [ + 'test.astarte.NoDefaultsInterface', + 'test.astarte.PropertiesInterface', + 'test.astarte.IndividualObjectInterface', + 'test.astarte.AggregatedObjectInterface', + ]; + interfaceFixtures.forEach((interfaceFixture) => { + cy.fixture(interfaceFixture).then(({ data: iface }) => { + setupInterfaceEditorFromUI(iface); + checkInterfaceEditorUIValues(iface); + (iface.mappings || []).forEach((mapping) => { + checkMappingEditorUIValues({ + mapping, + type: iface.type, + aggregation: iface.aggregation, + }); + }); + }); + }); + }); + + it('redirects to list of interfaces after a new interface installation', () => { + cy.fixture('test.astarte.PropertiesInterface').then((interfaceFixture) => { + cy.intercept('POST', '/realmmanagement/v1/*/interfaces', { + statusCode: 201, + body: interfaceFixture, + }).as('installInterfaceRequest'); + setupInterfaceEditorFromUI(interfaceFixture.data); + cy.get('button').contains('Install interface').click(); + cy.get('.modal.show button').contains('Install').click(); + cy.wait('@installInterfaceRequest') + .its('request.body.data') + .should('deep.eq', interfaceFixture.data); + cy.location('pathname').should('eq', '/interfaces'); + }); + }); + }); + + context('edit interface page', () => { + it('correctly loads interface data into the Editor UI', () => { + const interfaceFixtures = [ + 'test.astarte.NoDefaultsInterface', + 'test.astarte.PropertiesInterface', + 'test.astarte.IndividualObjectInterface', + 'test.astarte.AggregatedObjectInterface', + ]; + interfaceFixtures.forEach((interfaceFixture) => { + cy.fixture(interfaceFixture).then(({ data: iface }) => { + cy.intercept( + 'GET', + `/realmmanagement/v1/*/interfaces/${iface.interface_name}/${iface.version_major}`, + { data: iface }, + ).as(`getInterfaceRequest-${interfaceFixture}`); + cy.visit(`/interfaces/${iface.interface_name}/${iface.version_major}/edit`); + cy.location('pathname').should( + 'eq', + `/interfaces/${iface.interface_name}/${iface.version_major}/edit`, + ); + cy.wait(`@getInterfaceRequest-${interfaceFixture}`); + checkInterfaceEditorUIValues(iface); + }); + }); + }); + + it('correctly displays fields as disabled to prevent breaking changes from being made', function () { + cy.fixture('test.astarte.NoDefaultsInterface').then(({ data: iface }) => { + cy.intercept( + 'GET', + `/realmmanagement/v1/*/interfaces/${iface.interface_name}/${iface.version_major}`, + { data: iface }, + ).as('getInterfaceRequest'); + cy.visit(`/interfaces/${iface.interface_name}/${iface.version_major}/edit`); + cy.wait('@getInterfaceRequest'); + cy.get('#interfaceName').should('have.attr', 'readonly'); + cy.get('#interfaceMajor').should('have.attr', 'readonly'); + cy.get('#interfaceTypeDatastream').should('be.disabled'); + cy.get('#interfaceTypeProperties').should('be.disabled'); + cy.get('#interfaceAggregationIndividual').should('be.disabled'); + cy.get('#interfaceAggregationObject').should('be.disabled'); + cy.get('#interfaceOwnershipDevice').should('be.disabled'); + cy.get('#interfaceOwnershipServer').should('be.disabled'); + cy.get('#objectMappingReliability').should('be.disabled'); + cy.get('#objectMappingExplicitTimestamp').should('be.disabled'); + cy.get('#objectMappingRetention').should('be.disabled'); + cy.get('#objectMappingExpiry').should('be.disabled'); + cy.get('#objectMappingDatabaseRetention').should('be.disabled'); + cy.get('#objectMappingTTL').should('be.disabled'); + cy.get(`[data-testid="${iface.mappings[0].endpoint}"]`) + .should('exist') + .within(() => { + cy.contains(iface.mappings[0].endpoint); + cy.get('button').contains('Edit...').should('not.exist'); + cy.get('button').contains('Delete').should('not.exist'); + }); + }); + }); + + it('can add, edit and delete new mappings', function () { + cy.fixture('test.astarte.NoDefaultsInterface').then(({ data: iface }) => { + cy.intercept( + 'GET', + `/realmmanagement/v1/*/interfaces/${iface.interface_name}/${iface.version_major}`, + { data: iface }, + ).as('getInterfaceRequest'); + cy.visit(`/interfaces/${iface.interface_name}/${iface.version_major}/edit`); + cy.wait('@getInterfaceRequest'); + + const mappingEndpoint = '/new_mapping_endpoint'; + + // Add Mapping + cy.get('button').contains('Add mapping...').click(); + cy.get('.modal.show').within(() => { + cy.get('.modal-header').contains('Add Mapping'); + cy.get('#mappingEndpoint').paste(mappingEndpoint); + cy.get('#mappingType').select('double'); + cy.get('button').contains('Add').click(); + }); + cy.get(`[data-testid="${mappingEndpoint}"]`).within(() => { + cy.contains(mappingEndpoint); + cy.get('.badge').contains('double'); + }); + + // Edit Mapping + cy.get(`[data-testid="${mappingEndpoint}"]`).within(() => { + cy.contains(mappingEndpoint); + cy.get('button').contains('Edit...').click(); + }); + cy.get('.modal.show').within(() => { + cy.get('.modal-header').contains('Edit Mapping'); + cy.get('#mappingType').select('string'); + cy.get('button').contains('Update').click(); + }); + cy.get(`[data-testid="${mappingEndpoint}"]`).within(() => { + cy.contains(mappingEndpoint); + cy.get('.badge').contains('string'); + }); + + // Delete mapping + cy.get(`[data-testid="${mappingEndpoint}"]`).within(() => { + cy.contains(mappingEndpoint); + cy.get('button').contains('Delete').click(); + }); + cy.get(`[data-testid="${mappingEndpoint}"]`).should('not.exist'); + }); + }); + + it('can only delete a draft Interface', function () { + const draftInterface = { + interface_name: 'test.astarte.DraftInterface', + version_major: 0, + version_minor: 1, + type: 'datastream', + ownership: 'device', + mappings: [ + { + endpoint: '/test', + type: 'double', + }, + ], + }; + const majorInterface = _.merge({}, draftInterface, { version_major: 1 }); + + cy.intercept( + 'GET', + `/realmmanagement/v1/*/interfaces/${majorInterface.interface_name}/${majorInterface.version_major}`, + { data: majorInterface }, + ).as('getInterfaceRequest'); + cy.visit( + `/interfaces/${majorInterface.interface_name}/${majorInterface.version_major}/edit`, + ); + cy.wait('@getInterfaceRequest'); + cy.contains('Delete interface').should('not.exist'); + + cy.intercept( + 'GET', + `/realmmanagement/v1/*/interfaces/${draftInterface.interface_name}/${draftInterface.version_major}`, + { data: draftInterface }, + ).as('getInterfaceRequest2'); + cy.intercept( + 'DELETE', + `/realmmanagement/v1/*/interfaces/${draftInterface.interface_name}/${draftInterface.version_major}`, + { + statusCode: 204, + body: '', + }, + ).as('deleteInterfaceRequest'); + cy.visit( + `/interfaces/${draftInterface.interface_name}/${draftInterface.version_major}/edit`, + ); + cy.wait('@getInterfaceRequest2'); + cy.contains('Delete interface').scrollIntoView().click(); + cy.get('.modal.show').within(() => { + cy.contains( + `You are going to delete ${draftInterface.interface_name} v${draftInterface.version_major}. This might cause data loss, deleted interfaces cannot be restored. Are you sure?`, + ); + cy.contains(`Please type ${draftInterface.interface_name} to proceed.`); + cy.get('button').contains('Delete').should('be.disabled'); + cy.get('#confirmInterfaceName').paste(draftInterface.interface_name); + cy.get('button').contains('Delete').should('be.enabled').click(); + }); + cy.wait('@deleteInterfaceRequest'); + cy.location('pathname').should('eq', '/interfaces'); + }); + + it('asks to confirm before correctly applying changes', function () { + cy.fixture('test.astarte.NoDefaultsInterface').then(({ data: iface }) => { + cy.intercept( + 'GET', + `/realmmanagement/v1/*/interfaces/${iface.interface_name}/${iface.version_major}`, + { data: iface }, + ).as('getInterfaceRequest'); + cy.intercept( + 'PUT', + `/realmmanagement/v1/*/interfaces/${iface.interface_name}/${iface.version_major}`, + { + statusCode: 204, + body: '', + }, + ).as('saveInterfaceRequest'); + cy.visit(`/interfaces/${iface.interface_name}/${iface.version_major}/edit`); + cy.wait('@getInterfaceRequest'); + const newIface = _.merge({}, iface, { + version_minor: iface.version_minor + 1, + doc: 'New documentation', + }); + cy.get('#interfaceMinor').type(`{selectall}${newIface.version_minor}`); + cy.get('#interfaceDocumentation').clear().paste(newIface.doc); + cy.get('button').contains('Apply changes').scrollIntoView().click(); + cy.get('.modal.show').within(() => { + cy.get('.modal-header').contains('Confirmation Required'); + cy.get('.modal-body').contains(`Update the interface ${newIface.interface_name}?`); + cy.get('button').contains('Update').click(); + }); + cy.wait('@saveInterfaceRequest').its('request.body.data').should('deep.eq', newIface); + }); + }); + + it('displays and saves an interface source with default values stripped out', function () { + // Case with no default values to strip out + cy.fixture('test.astarte.NoDefaultsInterface').then(({ data: iface }) => { + cy.intercept( + 'GET', + `/realmmanagement/v1/*/interfaces/${iface.interface_name}/${iface.version_major}`, + { data: iface }, + ).as('getInterfaceRequest'); + cy.intercept( + 'PUT', + `/realmmanagement/v1/*/interfaces/${iface.interface_name}/${iface.version_major}`, + { + statusCode: 204, + body: '', + }, + ).as('saveNoDefaultsInterfaceRequest'); + cy.visit(`/interfaces/${iface.interface_name}/${iface.version_major}/edit`); + cy.wait('@getInterfaceRequest'); + const newIface = _.merge({}, iface, { + version_minor: iface.version_minor + 1, + doc: 'New documentation', + }); + + // Source should be displayed equal, without adding default values + cy.get('#interfaceSource') + .invoke('val') + .should((ifaceSource) => { + expect(JSON.parse(ifaceSource)).to.deep.eq(iface); + }); + + cy.get('#interfaceMinor').type(`{selectall}${newIface.version_minor}`); + cy.get('#interfaceDocumentation').clear().paste(newIface.doc); + + // Source should be displayed equal, without adding default values + cy.get('#interfaceSource') + .invoke('val') + .should((ifaceSource) => { + expect(JSON.parse(ifaceSource)).to.deep.eq(newIface); + }); + + // Interface should be saved without adding default values + cy.get('button').contains('Apply changes').scrollIntoView().click(); + cy.get('.modal.show button').contains('Update').click(); + cy.wait('@saveNoDefaultsInterfaceRequest') + .its('request.body.data') + .should('deep.eq', newIface); + }); + + // Case with default values to strip out + cy.fixture('test.astarte.SpecifiedDefaultsInterface').then(({ data: iface }) => { + cy.intercept( + 'GET', + `/realmmanagement/v1/*/interfaces/${iface.interface_name}/${iface.version_major}`, + { data: iface }, + ).as('getInterfaceRequest2'); + cy.intercept( + 'PUT', + `/realmmanagement/v1/*/interfaces/${iface.interface_name}/${iface.version_major}`, + { + statusCode: 204, + body: '', + }, + ).as('saveSpecifiedDefaultsInterfaceRequest'); + cy.visit(`/interfaces/${iface.interface_name}/${iface.version_major}/edit`); + cy.wait('@getInterfaceRequest2'); + const newIface = _.merge({}, iface, { + version_minor: iface.version_minor + 1, + doc: 'New documentation', + }); + + // Source should not be displayed equal, since default values are stripped out + cy.get('#interfaceSource') + .invoke('val') + .should((ifaceSource) => { + expect(JSON.parse(ifaceSource)).not.to.deep.eq(iface); + }); + + cy.get('#interfaceMinor').type(`{selectall}${newIface.version_minor}`); + cy.get('#interfaceDocumentation').clear().paste(newIface.doc); + + // Source should not be displayed equal, since default values are stripped out + cy.get('#interfaceSource') + .invoke('val') + .should((ifaceSource) => { + expect(JSON.parse(ifaceSource)).not.to.deep.eq(newIface); + }); + + // Interface should be saved with default values stripped out + cy.get('button').contains('Apply changes').scrollIntoView().click(); + cy.get('.modal.show button').contains('Update').click(); + cy.wait('@saveSpecifiedDefaultsInterfaceRequest') + .its('request.body.data') + .should('not.deep.eq', newIface); + }); + }); + + it('can remove insensitive properties from mappings of interface when minor_version is changed', () => { + cy.fixture('test.astarte.FirstInterface').then(({ data: initialIface }) => { + // Load the example interface + cy.intercept( + 'GET', + `/realmmanagement/v1/*/interfaces/${initialIface.interface_name}/${initialIface.version_major}`, + { data: initialIface }, + ).as('getInterfaceRequest'); + + cy.visit(`/interfaces/${initialIface.interface_name}/${initialIface.version_major}/edit`); + cy.wait('@getInterfaceRequest'); + + // Remove explicit_timestamp in JSON source + const { explicit_timestamp, ...restOfElements } = initialIface.mappings[0]; + const updatedIface = { + ...initialIface, + mappings: [restOfElements], + }; + cy.get('#interfaceSource') + .clear() + .invoke('val', JSON.stringify(updatedIface, null, 4)) + .type('{enter}'); + + cy.get('[data-testid="/test"]').within(() => { + // Check if the mapping endpoint is displayed + cy.contains('/test'); + + // Check that the Edit and Delete buttons are not present + cy.get('button').contains('Edit...').should('not.exist'); + cy.get('button').contains('Delete').should('not.exist'); + }); + + cy.get('button').contains('Apply changes').scrollIntoView().should('be.disabled'); + + // Change version_minor in JSON source + const newIface = { + ...updatedIface, + version_minor: updatedIface.version_minor + 1, + }; + cy.get('#interfaceSource') + .clear() + .invoke('val', JSON.stringify(newIface, null, 4)) + .type('{enter}'); + + cy.intercept( + 'PUT', + `/realmmanagement/v1/*/interfaces/${newIface.interface_name}/${newIface.version_major}`, + { + statusCode: 204, + body: '', + }, + ).as('saveSpecifiedDefaultsInterfaceRequest'); + + cy.get('button').contains('Apply changes').scrollIntoView().should('be.enabled').click(); + cy.get('.modal.show button').contains('Update').click(); + cy.wait('@saveSpecifiedDefaultsInterfaceRequest') + .its('request.body.data') + .should('deep.eq', newIface); + }); + }); + }); + }); +}); diff --git a/astarte-dashboard/cypress/e2e/interface_value_page.cy.js b/astarte-dashboard/cypress/e2e/interface_value_page.cy.js new file mode 100644 index 0000000000..0df468f5d1 --- /dev/null +++ b/astarte-dashboard/cypress/e2e/interface_value_page.cy.js @@ -0,0 +1,225 @@ +describe('Interface values page tests', () => { + context('unauthenticated', () => { + it('redirects to login', () => { + cy.visit('/devices/test-device-id/interfaces/test.interface.name'); + cy.location('pathname').should('eq', '/login'); + }); + }); + + context('authenticated', () => { + beforeEach(() => { + cy.login(); + }); + + it('correctly loads the page', () => { + cy.visit('/devices/deviceId/interfaces/interfaceName/interfaceMajor'); + cy.location('pathname').should('eq', '/devices/deviceId/interfaces/interfaceName/interfaceMajor'); + cy.get('.main-content').within(() => { + cy.get('h2').contains('Interface Data'); + cy.get('.card-header').contains('deviceId /interfaceName'); + }); + }); + + it('pressing back redirects to the device page', () => { + cy.intercept('GET', '/appengine/v1/*/devices/*', { fixture: 'device_detailed' }); + cy.intercept('GET', '/realmmanagement/v1/*/interfaces/*/*', { + fixture: 'test.astarte.IndividualObjectInterface', + }); + cy.intercept('GET', '/appengine/v1/*/devices/*/interfaces/*', { + fixture: 'test_individual_object_interface_values', + }); + + const deviceId = '0ma4SioESHKk28VhYGcW1w'; + const interfaceName = 'test.astarte.IndividualObjectInterface'; + const interfaceMajor = 0; + + cy.visit(`/devices/${deviceId}/interfaces/${interfaceName}/${interfaceMajor}`); + cy.get('[aria-label="Back"]').click(); + cy.location('pathname').should('eq', `/devices/${deviceId}/edit`); + }); + + it('correctly handles error while fetching interface', () => { + cy.fixture('test_aggregated_object_interface_values').as('interface_data'); + cy.fixture('test.astarte.AggregatedObjectInterface') + .as('interface') + .then((iface) => { + cy.fixture('device_detailed') + .as('device') + .then((device) => { + const interfaceName = iface.data.interface_name; + const deviceId = device.data.id; + const interfaceMajor = iface.data.interfaceMajor; + cy.intercept('GET', `/appengine/v1/*/devices/${deviceId}`, device); + cy.intercept( + 'GET', + `/appengine/v1/*/devices/${deviceId}/interfaces/${interfaceName}/${interfaceMajor}`, + { fixture: 'test_aggregated_object_interface_values' }, + ); + cy.intercept('GET', `/realmmanagement/v1/*/interfaces/${interfaceName}/${interfaceMajor}/*`, { + statusCode: 418, + body: '', + }); + cy.visit(`/devices/${deviceId}/interfaces/${interfaceName}/${interfaceMajor}`); + cy.get('.main-content .card-body').contains("Couldn't load interface data"); + }); + }); + }); + + it('correctly handles error while fetching device', () => { + cy.fixture('test_aggregated_object_interface_values').as('interface_data'); + cy.fixture('test.astarte.AggregatedObjectInterface') + .as('interface') + .then((iface) => { + cy.fixture('device_detailed') + .as('device') + .then((device) => { + const interfaceName = iface.data.interface_name; + const deviceId = device.data.id; + const interfaceMajor = iface.data.interfaceMajor; + cy.intercept('GET', `/realmmanagement/v1/*/interfaces/${interfaceName}/${interfaceMajor}/*`, iface); + cy.intercept( + 'GET', + `/appengine/v1/*/devices/${deviceId}/interfaces/${interfaceName}/${interfaceMajor}`, + { fixture: 'test_aggregated_object_interface_values' }, + ); + cy.intercept('GET', `/appengine/v1/*/devices/${deviceId}`, { + statusCode: 418, + body: '', + }); + cy.visit(`/devices/${deviceId}/interfaces/${interfaceName}/${interfaceMajor}`); + cy.get('.main-content .card-body').contains("Couldn't load interface data"); + }); + }); + }); + + it('correctly handles error while fetching interface data', () => { + cy.fixture('test_aggregated_object_interface_values').as('interface_data'); + cy.fixture('test.astarte.AggregatedObjectInterface') + .as('interface') + .then((iface) => { + cy.fixture('device_detailed') + .as('device') + .then((device) => { + const interfaceName = iface.data.interface_name; + const deviceId = device.data.id; + const interfaceMajor = iface.data.interfaceMajor; + cy.intercept('GET', `/realmmanagement/v1/*/interfaces/${interfaceName}/${interfaceMajor}/*`, iface); + cy.intercept('GET', `/appengine/v1/*/devices/${deviceId}`, device); + cy.intercept( + 'GET', + `/appengine/v1/*/devices/${deviceId}/interfaces/${interfaceName}/${interfaceMajor}`, + { + statusCode: 418, + body: '', + }, + ); + cy.visit(`/devices/${deviceId}/interfaces/${interfaceName}/${interfaceMajor}`); + cy.get('.main-content .card-body').contains("Couldn't load interface data"); + }); + }); + }); + + context('aggregated datastream interface', () => { + beforeEach(() => { + cy.fixture('test.astarte.AggregatedObjectInterface').as('interface'); + cy.fixture('test_aggregated_object_interface_values').as('interface_data'); + cy.fixture('device_detailed').as('device'); + cy.intercept('GET', '/realmmanagement/v1/*/interfaces/*/*', { + fixture: 'test.astarte.AggregatedObjectInterface', + }); + cy.intercept('GET', '/appengine/v1/*/devices/*', { fixture: 'device_detailed' }); + cy.intercept('GET', '/appengine/v1/*/devices/*/interfaces/*', { + fixture: 'test_aggregated_object_interface_values', + }); + }); + + it('shows correct aggregated datastream data', function () { + const deviceId = this.device.data.id; + const interfaceName = this.interface.data.interface_name; + const interfaceMajor = this.interface.data.interfaceMajor; + cy.visit(`/devices/${deviceId}/interfaces/${interfaceName}/${interfaceMajor}`); + cy.location('pathname').should('eq', `/devices/${deviceId}/interfaces/${interfaceName}/${interfaceMajor}`); + cy.get('.main-content').within(() => { + cy.get('.card-header').contains(`${deviceId} /${interfaceName}`); + Object.keys(this.interface_data.data.sensors).forEach((sensorId) => { + const sensorData = this.interface_data.data.sensors[sensorId].value; + cy.get('.card-body p') + .contains(`/sensors/${sensorId}/value`) + .next() + .within(() => { + cy.get('table tbody tr').should('have.length', sensorData.length); + cy.get('table thead th').should('have.length', Object.keys(sensorData[0]).length); + Object.keys(sensorData[0]).forEach((valueLabel) => { + cy.get('table thead th').contains( + valueLabel === 'timestamp' ? 'Timestamp' : valueLabel, + ); + }); + }); + }); + }); + }); + }); + + context('individual datastream interface', () => { + beforeEach(() => { + cy.fixture('test.astarte.IndividualObjectInterface').as('interface'); + cy.fixture('test_individual_object_interface_values').as('interface_data'); + cy.fixture('device_detailed').as('device'); + cy.intercept('GET', '/realmmanagement/v1/*/interfaces/*/*', { + fixture: 'test.astarte.IndividualObjectInterface', + }); + cy.intercept('GET', '/appengine/v1/*/devices/*', { fixture: 'device_detailed' }); + cy.intercept('GET', '/appengine/v1/*/devices/*/interfaces/*', { + fixture: 'test_individual_object_interface_values', + }); + }); + + it('shows correct individual datastream data', function () { + const deviceId = this.device.data.id; + const interfaceName = this.interface.data.interface_name; + const interfaceMajor = this.interface.data.interfaceMajor; + cy.visit(`/devices/${deviceId}/interfaces/${interfaceName}/${interfaceMajor}`); + cy.location('pathname').should('eq', `/devices/${deviceId}/interfaces/${interfaceName}/${interfaceMajor}`); + cy.get('.main-content').within(() => { + cy.get('.card-header').contains(`${deviceId} /${interfaceName}`); + cy.get('.card-body table').within(() => { + cy.get('tbody tr').should('have.length', 5); + cy.get('thead th').should('have.length', 3); + cy.get('thead th').contains('Path'); + cy.get('thead th').contains('Last value'); + cy.get('thead th').contains('Last timestamp'); + }); + }); + }); + }); + + context('properties interface', () => { + beforeEach(() => { + cy.fixture('test.astarte.PropertiesInterface').as('interface'); + cy.fixture('test_properties_interface_values').as('interface_data'); + cy.fixture('device_detailed').as('device'); + cy.intercept('GET', '/realmmanagement/v1/*/interfaces/*/*', { + fixture: 'test.astarte.PropertiesInterface', + }); + cy.intercept('GET', '/appengine/v1/*/devices/*', { fixture: 'device_detailed' }); + cy.intercept('GET', '/appengine/v1/*/devices/*/interfaces/*', { + fixture: 'test_properties_interface_values', + }); + }); + + it('shows correct properties data', function () { + const deviceId = this.device.data.id; + const interfaceName = this.interface.data.interface_name; + const interfaceMajor = this.interface.data.interfaceMajor; + cy.visit(`/devices/${deviceId}/interfaces/${interfaceName}/${interfaceMajor}`); + cy.location('pathname').should('eq', `/devices/${deviceId}/interfaces/${interfaceName}/${interfaceMajor}`); + cy.get('.main-content').within(() => { + cy.get('.card-header').contains(`${deviceId} /${interfaceName}`); + Object.keys(this.interface_data.data).forEach((key) => { + cy.get('.card-body pre code').contains(key); + }); + }); + }); + }); + }); +}); diff --git a/astarte-dashboard/cypress/e2e/interfaces_page.cy.js b/astarte-dashboard/cypress/e2e/interfaces_page.cy.js new file mode 100644 index 0000000000..80bf07b59a --- /dev/null +++ b/astarte-dashboard/cypress/e2e/interfaces_page.cy.js @@ -0,0 +1,56 @@ +describe('Interfaces page tests', () => { + context('no access before login', () => { + it('redirects to login', () => { + cy.visit('/interfaces'); + cy.location('pathname').should('eq', '/login'); + }); + }); + + context('require login', () => { + beforeEach(() => { + cy.fixture('interfaces').as('interfaces'); + cy.fixture('interface_majors').as('interface_majors'); + cy.intercept('GET', '/realmmanagement/v1/*/interfaces', { fixture: 'interfaces' }); + cy.intercept('GET', '/realmmanagement/v1/*/interfaces/*', { fixture: 'interface_majors' }); + cy.login(); + cy.visit('/interfaces'); + }); + + it('successfully loads the Interfaces page', () => { + cy.location('pathname').should('eq', '/interfaces'); + cy.get('h2').contains('Interfaces'); + }); + + it('correctly displays available interfaces', function () { + const interfaceMajors = this.interface_majors.data; + this.interfaces.data.sort().forEach((interfaceName, index) => { + const majorMax = Math.max(...interfaceMajors); + cy.get('.list-group-item a').contains(interfaceName); + cy.get(`.list-group > .list-group-item:nth-child(${index + 2})`).within(() => { + cy.contains(interfaceName).should( + 'have.attr', + 'href', + `/interfaces/${interfaceName}/${majorMax}/edit`, + ); + interfaceMajors.forEach((major) => { + cy.get('a') + .should('have.attr', 'href', `/interfaces/${interfaceName}/${major}/edit`) + .get('.badge') + .contains(`v${major}`); + }); + }); + }); + }); + + it('correctly redirects to interface page when clicking on its name', function () { + const interfaceMajors = this.interface_majors.data; + const sampleInterfaceName = this.interfaces.data[0]; + const sampleInterfaceMajor = Math.max(...interfaceMajors); + cy.get('.list-group-item a').contains(sampleInterfaceName).click(); + cy.location('pathname').should( + 'eq', + `/interfaces/${sampleInterfaceName}/${sampleInterfaceMajor}/edit`, + ); + }); + }); +}); diff --git a/astarte-dashboard/cypress/e2e/login.cy.js b/astarte-dashboard/cypress/e2e/login.cy.js new file mode 100644 index 0000000000..cca7d306e5 --- /dev/null +++ b/astarte-dashboard/cypress/e2e/login.cy.js @@ -0,0 +1,185 @@ +const _ = require('lodash'); + +describe('Login tests', () => { + it('successfully loads', () => { + cy.visit('/login'); + }); + + context('after login pages', () => { + beforeEach(() => { + cy.fixture('realm').as('realm'); + cy.intercept('http://**/appengine/v1/*/stats/devices', { fixture: 'devices_stats' }).as( + 'httpRequest', + ); + cy.intercept('https://**/appengine/v1/*/stats/devices', { fixture: 'devices_stats' }).as( + 'httpsRequest', + ); + }); + + it('successfully login', function () { + cy.visit('/login'); + + cy.get('input[id=astarteRealm]').clear().paste(this.realm.name); + cy.get('textarea[id=astarteToken]').paste(this.realm.infinite_token); + cy.get('.btn[type=submit]').click(); + + cy.location('pathname').should('eq', '/'); + + cy.get('h2').contains('Astarte Dashboard'); + cy.get('.nav-status').contains(this.realm.name); + }); + + it('use unsecure HTTP when configured to do so', function () { + cy.dynamicIntercept('getUserConfig', 'GET', '/user-config/config.json', { + fixture: 'config/http', + }); + + cy.visit('/login'); + + cy.get('input[id=astarteRealm]').clear().paste(this.realm.name); + cy.get('textarea[id=astarteToken]').paste(this.realm.infinite_token); + cy.get('.btn[type=submit]').click(); + + cy.wait('@httpRequest'); + }); + + it('use HTTPS when configured to do so', function () { + cy.dynamicIntercept('getUserConfig', 'GET', '/user-config/config.json', { + fixture: 'config/https', + }); + + cy.visit('/login'); + + cy.get('input[id=astarteRealm]').clear().paste(this.realm.name); + cy.get('textarea[id=astarteToken]').paste(this.realm.infinite_token); + cy.get('.btn[type=submit]').click(); + + cy.wait('@httpsRequest'); + }); + + it('correctly loads without Flow features when configured to do so', function () { + cy.dynamicIntercept('getUserConfig', 'GET', '/user-config/config.json', { + fixture: 'config/flowDisabled', + }); + + cy.visit('/login'); + + cy.get('input[id=astarteRealm]').clear().paste(this.realm.name); + cy.get('textarea[id=astarteToken]').paste(this.realm.infinite_token); + cy.get('.btn[type=submit]').click(); + + cy.get('#status-card').should('not.contain', 'Flow'); + cy.get('#main-navbar').should('be.visible'); + cy.get('#main-navbar').should('not.contain', 'Flows'); + cy.get('#main-navbar').should('not.contain', 'Pipelines'); + cy.get('#main-navbar').should('not.contain', 'Blocks'); + }); + + it('use custom Astarte URLs when configured to do so', function () { + cy.dynamicIntercept('getUserConfig', 'GET', '/user-config/config.json', { + fixture: 'config/custom_urls', + }); + + cy.intercept('https://api.example.com/custom-appengine/health', '').as( + 'appEngineHealthRequest', + ); + cy.intercept('https://api.example.com/custom-realmmanagement/health', '').as( + 'realmManagementHealthRequest', + ); + cy.intercept('https://api.example.com/custom-pairing/health', '').as('pairingHealthRequest'); + cy.intercept('https://api.example.com/custom-flow/health', '').as('flowHealthRequest'); + + cy.visit('/login'); + + cy.get('input[id=astarteRealm]').clear().paste(this.realm.name); + cy.get('textarea[id=astarteToken]').paste(this.realm.infinite_token); + cy.get('.btn[type=submit]').click(); + + cy.wait([ + '@appEngineHealthRequest', + '@realmManagementHealthRequest', + '@pairingHealthRequest', + '@flowHealthRequest', + ]); + }); + + it('saves session as a cookie after login, deletes it after logout', function () { + cy.visit('/login'); + + cy.get('input[id=astarteRealm]').clear().paste(this.realm.name); + cy.get('textarea[id=astarteToken]').paste(this.realm.infinite_token); + cy.get('.btn[type=submit]').click(); + + cy.getCookie('session').its("value").then(decodeURIComponent).then(JSON.parse).should('deep.eq', { + _version: 1, + realm: this.realm.name, + token: this.realm.infinite_token, + authUrl: null + }) + + cy.get('#main-navbar').contains('Logout').scrollIntoView().click(); + + cy.getCookie("session").should('not.exist'); + }); + }); + + context('login form on multiple auth methods', () => { + beforeEach(() => { + cy.fixture('config/multiple_auth').as('config'); + }); + + it('allows switching from OAuth to token login', function () { + const oauthLoginConfig = { + ...this.config, + default_auth: 'oauth', + }; + cy.dynamicIntercept('getUserConfig', 'GET', '/user-config/config.json', oauthLoginConfig); + cy.visit('/login'); + cy.contains('.btn-link', 'Switch to token login'); + }); + + it('allows switching from token to OAuth login', function () { + const tokenLoginConfig = { + ...this.config, + default_auth: 'token', + }; + cy.dynamicIntercept('getUserConfig', 'GET', '/user-config/config.json', tokenLoginConfig); + cy.visit('/login'); + cy.contains('.btn-link', 'Switch to OAuth login'); + }); + }); + + context('OAuth login', () => { + beforeEach(() => { + cy.fixture('config/oauth').as('config'); + }); + + it('does not show OAuth URL field when already configured', function () { + const config = _.cloneDeep(this.config); + config.auth[0].oauth_api_url = 'http://www.oauth.example.com'; + cy.dynamicIntercept('getUserConfig', 'GET', '/user-config/config.json', config); + cy.visit('/login'); + + cy.get('input[id=astarteRealm]').should('be.empty'); + cy.get('input[id=oauthProviderUrl]').should('not.exist'); + }); + + /* + TODO: reenable when cypress adds support to multi-domain testing + see https://github.com/cypress-io/cypress/issues/944 + */ + it.skip('successfully redirect users', function () { + cy.dynamicIntercept('getUserConfig', 'GET', '/user-config/config.json', this.config); + cy.visit('/login'); + + cy.get('input[id=astarteRealm]').clear().paste('testrealm'); + cy.get('input[id=oauthProviderUrl]').paste('http://www.oauth.example.com'); + cy.get('.btn[type=submit]').click(); + + cy.url().should( + 'eq', + 'http://www.oauth.example.com/?client_id=astarte-dashboard&response_type=token&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Fauth%3Frealm%3Dtestrealm%26authUrl%3Dhttp%253A%252F%252Fwww.oauth.example.com/login', + ); + }); + }); +}); diff --git a/astarte-dashboard/cypress/e2e/new_block_page.cy.js b/astarte-dashboard/cypress/e2e/new_block_page.cy.js new file mode 100644 index 0000000000..2b3e6e8374 --- /dev/null +++ b/astarte-dashboard/cypress/e2e/new_block_page.cy.js @@ -0,0 +1,57 @@ +describe('New block page tests', () => { + context('no access before login', () => { + it('redirects to home', () => { + cy.visit('/blocks/new'); + cy.location('pathname').should('eq', '/login'); + }); + }); + + context('authenticated', () => { + beforeEach(() => { + cy.fixture('custom_block').as('customBlock'); + cy.intercept('POST', '**/flow/v1/**', { + statusCode: 201, + fixture: 'custom_block', + }).as('postNewBlock'); + cy.login(); + cy.visit('/blocks/new'); + }); + + it('successfully loads New Block page', () => { + cy.location('pathname').should('eq', '/blocks/new'); + cy.get('h2').contains('New Block'); + }); + + it('can fill out a form for a new Block', function () { + cy.get('.main-content').within(() => { + cy.contains('Create new block').should('be.disabled'); + cy.get('input#block-name').clear().paste('customblock'); + cy.get('select#block-type').select('producer'); + cy.get('textarea#block-source').clear().paste('source'); + cy.get('textarea#block-schema').clear().paste('{}'); + cy.contains('Create new block').should('not.be.disabled'); + cy.contains('Create new block').click({ force: true }); + }); + cy.wait('@postNewBlock').its('request.body').should('deep.eq', this.customBlock); + cy.location('pathname').should('eq', '/blocks'); + }); + + it('can create a Block with name "new"', function () { + const newBlock = { + name: 'new', + schema: {}, + source: 'source', + type: 'producer', + }; + cy.get('.main-content').within(() => { + cy.get('input#block-name').clear().paste(newBlock.name); + cy.get('select#block-type').select(newBlock.type); + cy.get('textarea#block-source').clear().paste(newBlock.source); + cy.get('textarea#block-schema').clear().paste(JSON.stringify(newBlock.schema)); + cy.contains('Create new block').scrollIntoView().click(); + }); + cy.wait('@postNewBlock').its('request.body.data').should('deep.eq', newBlock); + cy.location('pathname').should('eq', '/blocks'); + }); + }); +}); diff --git a/astarte-dashboard/cypress/e2e/new_flow_page.cy.js b/astarte-dashboard/cypress/e2e/new_flow_page.cy.js new file mode 100644 index 0000000000..c1cc168cc3 --- /dev/null +++ b/astarte-dashboard/cypress/e2e/new_flow_page.cy.js @@ -0,0 +1,68 @@ +const _ = require('lodash'); + +describe('New Flow page tests', () => { + context('no access before login', () => { + it('redirects to login', () => { + cy.visit('/flows/new?pipelineId=test-pipeline'); + cy.location('pathname').should('eq', '/login'); + }); + }); + + context('authenticated', () => { + beforeEach(() => { + cy.fixture('flows').as('flows'); + cy.fixture('flow.room1-occupation').as('flow'); + cy.fixture('pipelines').as('pipelines'); + cy.fixture('pipeline.room-occupation') + .as('pipeline') + .then((pipeline) => { + cy.intercept('GET', '/flow/v1/*/flows', { fixture: 'flows' }); + cy.intercept('GET', '/flow/v1/*/flows/*', { fixture: 'flow.room1-occupation' }); + cy.intercept('GET', '/flow/v1/*/pipelines', { fixture: 'pipelines' }); + cy.intercept('GET', '/flow/v1/*/pipelines/*', { fixture: 'pipeline.room-occupation' }); + cy.intercept('POST', '/flow/v1/*/flows', { + statusCode: 201, + fixture: 'flow.room1-occupation', + }).as('postNewFlow'); + cy.login(); + cy.visit(`/flows/new?pipelineId=${pipeline.data.name}`); + }); + }); + + it('successfully loads New Flow page', function () { + cy.location('pathname').should('eq', '/flows/new'); + cy.location('search').should('eq', `?pipelineId=${this.pipeline.data.name}`); + cy.get('h2').contains('Flow Configuration'); + }); + + it('correctly reports referenced pipeline', function () { + cy.get('.main-content').contains(this.pipeline.data.name); + }); + + it('can fill out a form to instantiate a new Flow', function () { + cy.get('.main-content').within(() => { + cy.get('button').contains('Instantiate Flow').should('be.disabled'); + cy.get('#flowNameInput').clear().paste(this.flow.data.name); + cy.get('#flowConfigInput').clear().paste(JSON.stringify(this.flow.data.config)); + cy.get('button').contains('Instantiate Flow').click(); + cy.wait('@postNewFlow').its('request.body').should('deep.eq', this.flow); + cy.location('pathname').should('eq', '/flows'); + }); + }); + + it('can instantiate a Flow with the name "new"', function () { + const newFlow = _.merge({}, this.flow.data, { name: 'new' }); + cy.intercept('POST', '/flow/v1/*/flows', { + statusCode: 201, + body: { data: newFlow }, + }).as('postNewFlow'); + cy.get('.main-content').within(() => { + cy.get('#flowNameInput').clear().paste(newFlow.name); + cy.get('#flowConfigInput').clear().paste(JSON.stringify(newFlow.config)); + cy.get('button').contains('Instantiate Flow').click(); + cy.wait('@postNewFlow').its('request.body.data').should('deep.eq', newFlow); + cy.location('pathname').should('eq', '/flows'); + }); + }); + }); +}); diff --git a/astarte-dashboard/cypress/e2e/new_group_page.cy.js b/astarte-dashboard/cypress/e2e/new_group_page.cy.js new file mode 100644 index 0000000000..3b69e2f7b7 --- /dev/null +++ b/astarte-dashboard/cypress/e2e/new_group_page.cy.js @@ -0,0 +1,100 @@ +describe('New Group page tests', () => { + context('no access before login', () => { + it('redirects to login', () => { + cy.visit('/groups/new'); + cy.location('pathname').should('eq', '/login'); + }); + }); + + context('authenticated', () => { + beforeEach(() => { + cy.fixture('devices_detailed').as('devices'); + cy.fixture('group.first-floor.created').as('postNewGroupResponse'); + cy.intercept('GET', '/appengine/v1/*/devices?details=true', { fixture: 'devices_detailed' }); + cy.intercept('POST', '/appengine/v1/*/groups', { + statusCode: 201, + fixture: 'group.first-floor.created', + }).as('postNewGroup'); + cy.login(); + cy.visit('/groups/new'); + }); + + it('successfully loads New Group page', () => { + cy.location('pathname').should('eq', '/groups/new'); + cy.get('h2').contains('Create a New Group'); + }); + + it('displays devices list correctly', function () { + cy.get('.main-content').within(() => { + cy.get('table tbody').find('tr').should('have.length', this.devices.data.length); + this.devices.data.forEach((device, index) => { + cy.get(`table tbody tr:nth-child(${index + 1})`).within(() => { + cy.contains(device.id); + Object.values(device.aliases).forEach((alias) => { + cy.contains(alias); + }); + }); + }); + }); + }); + + it('correctly filters devices by Device ID or by alias', function () { + cy.get('.main-content').within(() => { + const device = this.devices.data.find((d) => Object.values(d.aliases).length > 0); + const deviceAlias = Object.values(device.aliases)[0]; + cy.get("input[placeholder*='Device ID']").paste(device.id); + cy.get('table tbody').find('tr').should('have.length', 1); + cy.get("input[placeholder*='Device ID']").clear().paste(deviceAlias); + cy.get('table tbody').find('tr').should('have.length', 1); + }); + }); + + it('reports how many devices are selected, even if they are filtered out', () => { + cy.get('.main-content').within(() => { + cy.contains('Please select at least one device'); + cy.get('table tbody tr:nth-child(1) [type="checkbox"]').check(); + cy.contains('1 device selected'); + cy.get('table tbody tr:nth-child(2) [type="checkbox"]').check(); + cy.contains('2 devices selected'); + cy.get("input[placeholder*='Device ID']").paste('non-existent-device-id'); + cy.contains('2 devices selected'); + }); + }); + + it('cannot create a group without devices', () => { + cy.get('.main-content').within(() => { + cy.get('button').contains('Create group').should('be.disabled'); + cy.get('#groupNameInput').paste('my_group'); + cy.get('button').contains('Create group').should('be.disabled'); + }); + }); + + it('cannot create a group without a name', () => { + cy.get('.main-content').within(() => { + cy.get('button').contains('Create group').should('be.disabled'); + cy.get('table tbody tr:nth-child(1) [type="checkbox"]').check(); + cy.get('button').contains('Create group').should('be.disabled'); + }); + }); + + it('can create a group with a name and a device', function () { + cy.get('.main-content').within(() => { + const groupName = this.postNewGroupResponse.data.group_name; + const groupDevices = this.devices.data.filter((d) => d.groups.includes(groupName)); + const groupDevicesIds = groupDevices.map((d) => d.id); + cy.get('button').contains('Create group').should('be.disabled'); + cy.get('#groupNameInput').paste(groupName); + groupDevicesIds.forEach((deviceId) => { + cy.get("input[placeholder*='Device ID']").clear().paste(deviceId); + cy.get('table tbody tr:nth-child(1) [type="checkbox"]').check(); + }); + cy.get('button').contains('Create group').should('not.be.disabled').click(); + cy.wait('@postNewGroup').its('request.body.data').should('deep.eq', { + devices: groupDevicesIds, + group_name: groupName, + }); + cy.location('pathname').should('eq', '/groups'); + }); + }); + }); +}); diff --git a/astarte-dashboard/cypress/e2e/new_pipeline_page.cy.js b/astarte-dashboard/cypress/e2e/new_pipeline_page.cy.js new file mode 100644 index 0000000000..1924063a70 --- /dev/null +++ b/astarte-dashboard/cypress/e2e/new_pipeline_page.cy.js @@ -0,0 +1,194 @@ +const _ = require('lodash'); + +describe('New Pipeline page tests', () => { + context('no access before login', () => { + it('redirects to login', () => { + cy.visit('/pipelines/new'); + cy.location('pathname').should('eq', '/login'); + }); + }); + + context('authenticated', () => { + beforeEach(() => { + cy.fixture('blocks') + .as('blocks') + .then((blocks) => { + const producerBlocks = blocks.data.filter((b) => b.type === 'producer'); + const producerConsumerBlocks = blocks.data.filter((b) => b.type === 'producer_consumer'); + const consumerBlocks = blocks.data.filter((b) => b.type === 'consumer'); + cy.wrap(producerBlocks).as('producerBlocks'); + cy.wrap(producerConsumerBlocks).as('producerConsumerBlocks'); + cy.wrap(consumerBlocks).as('consumerBlocks'); + cy.fixture('pipeline.sample-computation').as('pipeline'); + cy.intercept('GET', '/flow/v1/*/blocks', blocks); + cy.intercept('POST', '/flow/v1/*/pipelines', { + statusCode: 201, + fixture: 'pipeline.sample-computation', + }).as('postNewPipeline'); + cy.login(); + cy.visit('/pipelines/new'); + }); + }); + + it('successfully loads New Pipeline page', () => { + cy.location('pathname').should('eq', '/pipelines/new'); + cy.get('h2').contains('New Pipeline'); + }); + + it('correctly displays the form with a visual editor', () => { + cy.get('.main-content').within(() => { + cy.get('form input#pipeline-name'); + cy.get('form .flow-editor'); + cy.get('button').contains('Generate pipeline source'); + cy.get('button').contains('Create new pipeline').should('not.exist'); + }); + }); + + it('correctly displays all blocks in its category in the visual editor', function () { + cy.get('.main-content .flow-editor').within(() => { + cy.get('.block-item').should('have.length', this.blocks.data.length + 7); + this.producerBlocks.forEach((block) => { + cy.get('.block-label') + .contains('Producer') + .nextUntil('.block-label') + .contains(block.name); + }); + this.producerConsumerBlocks.forEach((block) => { + cy.get('.block-label') + .contains('Producer & Consumer') + .nextUntil('.block-label') + .contains(block.name); + }); + this.consumerBlocks.forEach((block) => { + cy.get('.block-label').contains('Consumer').nextAll('.block-item').contains(block.name); + }); + }); + }); + + it('notifies when a source cannot be generated from the visual editor, otherwise hide the editor', function () { + cy.get('.main-content').within(() => { + const producerBlockName = this.producerBlocks[0].name; + const consumerBlockName = this.consumerBlocks[0].name; + cy.get('button').contains('Generate pipeline source').click(); + cy.get('[role="alert"]').contains('Pipelines must start with a producer block'); + + cy.get('.flow-editor .block-item') + .contains(producerBlockName) + .dragOnto('.flow-editor .canvas-container'); + cy.get('.canvas-container .node .producer').parents('.node').moveTo(-50, -50); + cy.get('button').contains('Generate pipeline source').scrollIntoView().click(); + cy.get('[role="alert"]').contains('Pipelines must end with a consumer block'); + + cy.get('.flow-editor .block-item') + .contains(consumerBlockName) + .dragOnto('.flow-editor .canvas-container'); + cy.get('.canvas-container .node .consumer').parents('.node').moveTo(50, 50); + cy.get('button').contains('Generate pipeline source').scrollIntoView().click(); + cy.get('[role="alert"]').contains('Pipelines must end with a consumer block'); + + cy.get('.canvas-container .node .producer .port[data-name="Out"] > div').moveOnto( + '.canvas-container .node .consumer .port[data-name="In"] > div', + ); + cy.get('button').contains('Generate pipeline source').scrollIntoView().click(); + cy.get('button').contains('Generate pipeline source').should('not.exist'); + cy.get('button').contains('Create new pipeline').should('exist'); + cy.get('.flow-editor').should('not.exist'); + }); + }); + + it('shows the visual editor when the Source field is cleared', function () { + cy.get('.main-content').within(() => { + const producerBlockName = this.producerBlocks[0].name; + const consumerBlockName = this.consumerBlocks[0].name; + cy.get('.flow-editor .block-item') + .contains(producerBlockName) + .dragOnto('.flow-editor .canvas-container'); + cy.get('.canvas-container .node .producer').parents('.node').moveTo(-50, -50); + cy.get('.flow-editor .block-item') + .contains(consumerBlockName) + .dragOnto('.flow-editor .canvas-container'); + cy.get('.canvas-container .node .consumer').parents('.node').moveTo(50, 50); + cy.get('.canvas-container .node .producer .port[data-name="Out"] > div').moveOnto( + '.canvas-container .node .consumer .port[data-name="In"] > div', + ); + cy.get('button').contains('Generate pipeline source').scrollIntoView().click(); + + cy.get('#pipeline-source').scrollIntoView().clear(); + cy.get('.flow-editor').should('exist'); + cy.get('button').contains('Create new pipeline').should('not.exist'); + cy.get('button').contains('Generate pipeline source').should('exist'); + }); + }); + + it('can create a pipeline without a schema', function () { + cy.get('.main-content').within(() => { + const producerBlockName = this.producerBlocks[0].name; + const consumerBlockName = this.consumerBlocks[0].name; + cy.get('.flow-editor .block-item') + .contains(producerBlockName) + .dragOnto('.flow-editor .canvas-container'); + cy.get('.canvas-container .node .producer').parents('.node').moveTo(-50, -50); + cy.get('.flow-editor .block-item') + .contains(consumerBlockName) + .dragOnto('.flow-editor .canvas-container'); + cy.get('.canvas-container .node .consumer').parents('.node').moveTo(50, 50); + cy.get('.canvas-container .node .producer .port[data-name="Out"] > div').moveOnto( + '.canvas-container .node .consumer .port[data-name="In"] > div', + ); + cy.get('button').contains('Generate pipeline source').scrollIntoView().click(); + + cy.get('#pipeline-name').scrollIntoView().paste(this.pipeline.data.name); + cy.get('#pipeline-schema').clear(); + cy.get('#pipeline-description').paste(this.pipeline.data.description); + cy.get('#pipeline-source').type(`{selectall}${this.pipeline.data.source}`); + cy.get('button').contains('Create new pipeline').scrollIntoView().click(); + cy.wait('@postNewPipeline') + .its('request.body') + .should('deep.eq', { + data: { + name: this.pipeline.data.name, + description: this.pipeline.data.description, + source: this.pipeline.data.source, + }, + }); + cy.location('pathname').should('eq', '/pipelines'); + }); + }); + + it('can create a pipeline with the name "new"', function () { + const pipeline = _.merge({}, this.pipeline.data, { name: 'new' }); + cy.get('.main-content').within(() => { + const producerBlockName = this.producerBlocks[0].name; + const consumerBlockName = this.consumerBlocks[0].name; + cy.get('.flow-editor .block-item') + .contains(producerBlockName) + .dragOnto('.flow-editor .canvas-container'); + cy.get('.canvas-container .node .producer').parents('.node').moveTo(-50, -50); + cy.get('.flow-editor .block-item') + .contains(consumerBlockName) + .dragOnto('.flow-editor .canvas-container'); + cy.get('.canvas-container .node .consumer').parents('.node').moveTo(50, 50); + cy.get('.canvas-container .node .producer .port[data-name="Out"] > div').moveOnto( + '.canvas-container .node .consumer .port[data-name="In"] > div', + ); + cy.get('button').contains('Generate pipeline source').scrollIntoView().click(); + + cy.get('#pipeline-name').scrollIntoView().paste(pipeline.name); + cy.get('#pipeline-schema').clear(); + cy.get('#pipeline-description').paste(pipeline.description); + cy.get('#pipeline-source').type(`{selectall}${pipeline.source}`); + cy.get('button').contains('Create new pipeline').scrollIntoView().click(); + cy.wait('@postNewPipeline') + .its('request.body') + .should('deep.eq', { + data: { + name: pipeline.name, + description: pipeline.description, + source: pipeline.source, + }, + }); + cy.location('pathname').should('eq', '/pipelines'); + }); + }); + }); +}); diff --git a/astarte-dashboard/cypress/e2e/pipeline_page.cy.js b/astarte-dashboard/cypress/e2e/pipeline_page.cy.js new file mode 100644 index 0000000000..7bcb8a45d5 --- /dev/null +++ b/astarte-dashboard/cypress/e2e/pipeline_page.cy.js @@ -0,0 +1,67 @@ +const _ = require('lodash'); + +describe('Pipeline page tests', () => { + context('no access before login', () => { + it('redirects to login', () => { + cy.visit('/pipelines/pipeline_name/edit'); + cy.location('pathname').should('eq', '/login'); + }); + }); + + context('authenticated', () => { + beforeEach(() => { + cy.fixture('pipeline.sample-computation') + .as('pipeline') + .then((pipeline) => { + cy.intercept('GET', `/flow/v1/*/pipelines/${pipeline.data.name}`, pipeline).as( + 'getPipeline', + ); + cy.intercept('DELETE', `/flow/v1/*/pipelines/${pipeline.data.name}`, { + statusCode: 204, + body: '', + }).as('deletePipelineRequest'); + cy.login(); + cy.visit(`/pipelines/${pipeline.data.name}/edit`); + cy.wait('@getPipeline'); + }); + }); + + it('successfully loads Pipeline page', function () { + cy.location('pathname').should('eq', `/pipelines/${this.pipeline.data.name}/edit`); + cy.get('h2').contains('Pipeline Details'); + }); + + it("correctly displays the pipeline's properties", function () { + cy.get('.main-content').within(() => { + cy.contains('Name').next().contains(this.pipeline.data.name); + if (this.pipeline.data.description) { + cy.contains('Description').next().contains(this.pipeline.data.description); + } + cy.contains('Source'); + }); + }); + + it('correctly displays a pipeline with the name "new"', function () { + const pipeline = _.merge({}, this.pipeline.data, { name: 'new' }); + cy.intercept('GET', `/flow/v1/*/pipelines/${pipeline.name}`, { data: pipeline }); + cy.visit(`/pipelines/${pipeline.name}/edit`); + cy.location('pathname').should('eq', `/pipelines/new/edit`); + cy.get('h2').contains('Pipeline Details'); + cy.get('.main-content').contains('Name').next().contains(pipeline.name); + }); + + it('can delete the pipeline', function () { + cy.get('.main-content').within(() => { + cy.contains('Delete pipeline').click(); + }); + cy.get('.modal') + .contains(`Delete pipeline ${this.pipeline.data.name}?`) + .parents('.modal') + .within(() => { + cy.get('button').contains('Delete').click(); + }); + cy.wait('@deletePipelineRequest'); + cy.location('pathname').should('eq', '/pipelines'); + }); + }); +}); diff --git a/astarte-dashboard/cypress/e2e/pipelines_page.cy.js b/astarte-dashboard/cypress/e2e/pipelines_page.cy.js new file mode 100644 index 0000000000..11d1d00c38 --- /dev/null +++ b/astarte-dashboard/cypress/e2e/pipelines_page.cy.js @@ -0,0 +1,84 @@ +describe('Pipelines page tests', () => { + context('no access before login', () => { + it('redirects to login', () => { + cy.visit('/pipelines'); + cy.location('pathname').should('eq', '/login'); + }); + }); + + context('authenticated', () => { + beforeEach(() => { + cy.fixture('pipelines').as('pipelines'); + cy.fixture('pipeline.test-calculation').as('pipeline-test-calculation'); + cy.fixture('pipeline.sample-computation').as('pipeline-sample-computation'); + cy.intercept('GET', '/flow/v1/*/pipelines', { fixture: 'pipelines' }).as('getPipelines'); + cy.intercept('GET', '/flow/v1/*/pipelines/test-calculation', { + fixture: 'pipeline.test-calculation', + }).as('get-pipeline-test-calculation'); + cy.intercept('GET', '/flow/v1/*/pipelines/sample-computation', { + fixture: 'pipeline.sample-computation', + }).as('get-pipeline-sample-computation'); + cy.login(); + cy.visit('/pipelines'); + cy.get('.main-content .card').should('have.length', 3); + }); + + it('successfully loads Pipelines page', () => { + cy.location('pathname').should('eq', '/pipelines'); + cy.get('h2').contains('Pipelines'); + }); + + it('has a card to create a new pipeline', () => { + cy.get('.main-content').within(() => { + cy.get('.card') + .first() + .within(() => { + cy.contains('New Pipeline'); + cy.contains('Create your custom pipeline'); + cy.get('button').contains('Create').as('createPipelineButton').should('be.visible'); + cy.get('@createPipelineButton').click(); + cy.location('pathname').should('eq', '/pipelines/new'); + }); + }); + }); + + it('displays the pipeline list', function () { + cy.get('.main-content').within(() => { + this.pipelines.data.forEach((pipelineName) => { + const pipelineDescription = this[`pipeline-${pipelineName}`].data.description; + cy.get('.card') + .contains(pipelineName) + .parents('.card') + .within(() => { + if (pipelineDescription) { + cy.contains(pipelineDescription); + } + cy.get('button').contains('Instantiate').should('not.be.disabled'); + }); + }); + }); + }); + + it("can see details of a pipeline by clicking on its card's title", function () { + cy.get('.main-content').within(() => { + const pipelineName = this.pipelines.data[0]; + cy.get('.card .card-header').contains(pipelineName).click(); + cy.location('pathname').should('eq', `/pipelines/${pipelineName}/edit`); + }); + }); + + it('can instantiate a pipeline', function () { + cy.get('.main-content').within(() => { + const pipelineName = this.pipelines.data[0]; + cy.get('.card') + .contains(pipelineName) + .parents('.card') + .get('button') + .contains('Instantiate') + .click(); + cy.location('pathname').should('eq', '/flows/new'); + cy.location('search').should('eq', `?pipelineId=${pipelineName}`); + }); + }); + }); +}); diff --git a/astarte-dashboard/cypress/e2e/realm_settings_page.cy.js b/astarte-dashboard/cypress/e2e/realm_settings_page.cy.js new file mode 100644 index 0000000000..c7ff08ac96 --- /dev/null +++ b/astarte-dashboard/cypress/e2e/realm_settings_page.cy.js @@ -0,0 +1,51 @@ +describe('Realm Settings page tests', () => { + context('no access before login', () => { + it('redirects to home', () => { + cy.visit('/settings'); + cy.location('pathname').should('eq', '/login'); + }); + }); + + context('authenticated', () => { + beforeEach(() => { + cy.fixture('config_auth').as('configAuth'); + cy.intercept('GET', '/realmmanagement/v1/*/config/auth', { fixture: 'config_auth' }); + cy.login(); + cy.visit('/settings'); + }); + + it('successfully loads Realm Settings page', function () { + cy.location('pathname').should('eq', '/settings'); + cy.get('h2').contains('Realm Settings'); + }); + + it('displays current public key', function () { + cy.get('.main-content').within(() => { + cy.contains('Public key') + .next() + .should('have.value', this.configAuth.data.jwt_public_key_pem) + .should('not.be.disabled'); + cy.contains('Change').should('be.disabled'); + }); + }); + + it('cannot update current public key with an empty string', function () { + cy.get('.main-content').within(() => { + cy.contains('Public key').next().clear(); + cy.contains('Change').should('be.disabled'); + }); + }); + + it('can update current public key with a proper value', function () { + cy.get('.main-content').within(() => { + cy.contains('Public key') + .next() + .clear() + .paste(this.configAuth.data.jwt_public_key_pem + '\n'); + cy.contains('Change').should('not.be.disabled').click(); + }); + cy.get('[role="dialog"]').contains('Confirm Public Key Update'); + cy.get('[role="dialog"]').contains('Update settings').click(); + }); + }); +}); diff --git a/astarte-dashboard/cypress/e2e/register_device_page.cy.js b/astarte-dashboard/cypress/e2e/register_device_page.cy.js new file mode 100644 index 0000000000..c5b4afc0f7 --- /dev/null +++ b/astarte-dashboard/cypress/e2e/register_device_page.cy.js @@ -0,0 +1,81 @@ +import { urlSafeBase64ToByteArray } from '../../src/Base64.ts'; + +describe('Register device page tests', () => { + context('no access before login', () => { + it('redirects to login', () => { + cy.visit('/devices/register'); + cy.location('pathname').should('eq', '/login'); + }); + }); + + context('authenticated', () => { + beforeEach(() => { + cy.login(); + cy.wait(200); + cy.visit('/devices/register'); + }); + + it('successfully loads', () => { + cy.location('pathname').should('eq', '/devices/register'); + cy.get('h2').contains('Register Device'); + }); + + it('random id button generates a valid device id', () => { + cy.get('.btn').contains('Generate random ID').click(); + + cy.get('#deviceIdInput').should(($input) => { + expect($input).to.have.length(1); + + const byteArray = urlSafeBase64ToByteArray($input[0].value); + const isValidDeviceId = byteArray.length === 17 && byteArray[16] === 0; + + expect(isValidDeviceId).to.eq(true); + }); + }); + + it('namespaced device id work as expected', () => { + const namespace = 'a717f8d6-5952-4064-add0-008d780879a9'; + const customString = 'test-string'; + const expectedDeviceId = 'Zb0hSFUSVduexJXxXlGvrA'; + + cy.get('.btn').contains('Generate from name').click(); + + cy.get('[id$="userNamespace"]').paste(namespace); + cy.get('[id$="userString"]').paste(customString); + + cy.get('.btn').contains('Generate ID').click(); + + cy.get('#deviceIdInput').should(($input) => { + expect($input).to.have.length(1); + expect($input[0].value).to.eq(expectedDeviceId); + }); + }); + + it('register device to astarte', () => { + const deviceId = 'Zb0hSFUSVduexJXxXlGvrA'; + const credentialSecret = 'W3Bj5uModtDXSr3lqcjOVuYIRhgdNe1REJKj76v16IM='; + cy.intercept('POST', '/pairing/v1/*/agent/devices', { + statusCode: 201, + body: { + data: { + credentials_secret: credentialSecret, + }, + }, + }).as('registerDeviceCheck'); + + cy.get('#deviceIdInput').paste(deviceId); + cy.get('.btn').contains('Register device').click(); + + cy.wait('@registerDeviceCheck') + .its('request.body') + .should('deep.equal', { + data: { + hw_id: deviceId, + }, + }) + .then(() => { + cy.get('.modal-body pre code').contains(credentialSecret).should('be.visible'); + }); + }); + }); +}); diff --git a/astarte-dashboard/cypress/e2e/sidebar.cy.js b/astarte-dashboard/cypress/e2e/sidebar.cy.js new file mode 100644 index 0000000000..734587fcbf --- /dev/null +++ b/astarte-dashboard/cypress/e2e/sidebar.cy.js @@ -0,0 +1,91 @@ +describe('Sidebar tests', () => { + context('unauthenticated', () => { + it('does not show the sidebar', () => { + cy.visit('/'); + cy.location('pathname').should('eq', '/login'); + cy.get('#main-navbar').should('not.exist'); + }); + }); + + context('authenticated', () => { + beforeEach(() => { + cy.fixture('realm').as('realm'); + cy.login(); + cy.visit('/'); + }); + + it('correctly renders sidebar elements', function () { + cy.intercept('GET', '**/version', (req) => { + req.reply({ data: '1.1.1' }); + }) + cy.intercept('GET', '/appengine/health', ''); + cy.intercept('GET', '/realmmanagement/health', ''); + cy.intercept('GET', '/pairing/health', ''); + cy.intercept('GET', '/flow/health', ''); + cy.get('.nav-col .nav').within(() => { + cy.get('.nav-brand') + .as('brand') + .next('.nav-link') + .as('home') + .next('.nav-item') + .next('.nav-link') + .as('interfaces') + .next('.nav-link') + .as('triggers') + .next('.nav-link') + .as('trigger-delivery-policies') + .next('.nav-item') + .next('.nav-link') + .as('devices') + .next('.nav-link') + .as('groups') + .next('.nav-item') + .next('.nav-link') + .as('flows') + .next('.nav-link') + .as('pipelines') + .next('.nav-link') + .as('blocks') + .next('.nav-item') + .next('.nav-link') + .as('realmSettings') + .next('.nav-item') + .next('.nav-status') + .as('realmStatus') + .next('.nav-item') + .next('.nav-link') + .as('logout'); + cy.get('@brand').should('have.attr', 'href', '/'); + cy.get('@home').should('have.attr', 'href', '/').contains('Home'); + cy.get('@interfaces').should('have.attr', 'href', '/interfaces').contains('Interfaces'); + cy.get('@triggers').should('have.attr', 'href', '/triggers').contains('Triggers'); + cy.get('@trigger-delivery-policies') + .should('have.attr', 'href', '/trigger-delivery-policies') + .contains('Delivery Policies'); + cy.get('@devices').should('have.attr', 'href', '/devices').contains('Devices'); + cy.get('@groups').should('have.attr', 'href', '/groups').contains('Groups'); + cy.get('@flows').should('have.attr', 'href', '/flows').contains('Flows'); + cy.get('@pipelines').should('have.attr', 'href', '/pipelines').contains('Pipelines'); + cy.get('@blocks').should('have.attr', 'href', '/blocks').contains('Blocks'); + cy.get('@realmSettings') + .should('have.attr', 'href', '/settings') + .contains('Realm settings'); + cy.get('@realmStatus').within(() => { + cy.contains('Realm'); + cy.contains(this.realm.name); + cy.contains('API Status'); + cy.contains('Up and running'); + }); + cy.get('@logout').should('have.attr', 'href', '/logout').contains('Logout'); + }); + }); + + it('correctly reports realm status when unhealthy', () => { + cy.intercept('GET', '/appengine/health', { statusCode: 200, body: '' }); + cy.intercept('GET', '/realmmanagement/health', { statusCode: 200, body: '' }); + cy.intercept('GET', '/pairing/health', { statusCode: 200, body: '' }); + cy.intercept('GET', '/flow/health', { statusCode: 500, body: '' }); + cy.get('.nav-col .nav .nav-status').contains('Degraded'); + }); + }); +}); diff --git a/astarte-dashboard/cypress/e2e/trigger_builder.cy.js b/astarte-dashboard/cypress/e2e/trigger_builder.cy.js new file mode 100644 index 0000000000..d0ddfa39ba --- /dev/null +++ b/astarte-dashboard/cypress/e2e/trigger_builder.cy.js @@ -0,0 +1,828 @@ +const triggerConditionToLabel = { + device_connected: 'Device Connected', + device_disconnected: 'Device Disconnected', + device_registered: 'Device Registered', + device_deletion_finished: 'Device Deletion Finished', + device_deletion_started: 'Device Deletion Started', + device_error: 'Device Error', + device_empty_cache_received: 'Empty Cache Received', + incoming_data: 'Incoming Data', + value_change: 'Value Change', + value_change_applied: 'Value Change Applied', + path_created: 'Path Created', + path_removed: 'Path Removed', + value_stored: 'Value Stored', +}; + +const triggerOperatorToLabel = { + '*': '*', + '==': '==', + '!=': '!=', + '>': '>', + '>=': '>=', + '<': '<', + '<=': '<=', + contains: 'Contains', + not_contains: 'Not Contains', +}; + +const setupTriggerEditorFromSource = (trigger) => { + cy.get('#triggerSource').scrollIntoView().paste(JSON.stringify(trigger)); + cy.wait(1500); +}; + +const checkTriggerEditorUIValues = (trigger) => { + const simpleTrigger = trigger.simple_triggers[0]; + cy.get('#triggerName').scrollIntoView().should('be.visible').and('have.value', trigger.name); + cy.get('#triggerCondition') + .scrollIntoView() + .should('be.visible') + .contains(triggerConditionToLabel[simpleTrigger.on]) + .should('be.selected'); + + const isDataTrigger = simpleTrigger.type === 'data_trigger'; + cy.get('#triggerSimpleTriggerType') + .scrollIntoView() + .should('be.visible') + .contains(isDataTrigger ? 'Data Trigger' : 'Device Trigger') + .should('be.selected'); + + if (simpleTrigger.device_id) { + cy.get('#triggerTargetSelect') + .scrollIntoView() + .should('be.visible') + .contains('Device') + .should('be.selected'); + cy.get('#triggerDeviceId') + .scrollIntoView() + .should('be.visible') + .and('have.value', simpleTrigger.device_id); + } else if (simpleTrigger.group_name) { + cy.get('#triggerTargetSelect') + .scrollIntoView() + .should('be.visible') + .contains('Group') + .should('be.selected'); + cy.get('#triggerGroupName') + .scrollIntoView() + .should('be.visible') + .and('have.value', simpleTrigger.group_name); + } else { + cy.get('#triggerTargetSelect') + .scrollIntoView() + .should('be.visible') + .contains('All devices') + .should('be.selected'); + } + + if (isDataTrigger) { + const iface = simpleTrigger.interface_name; + if (iface === '*') { + cy.get('#triggerInterfaceName') + .scrollIntoView() + .should('be.visible') + .contains('Any interface') + .should('be.selected'); + } else { + cy.get('#triggerInterfaceName') + .scrollIntoView() + .should('be.visible') + .contains(iface) + .should('be.selected'); + cy.get('#triggerInterfaceMajor') + .scrollIntoView() + .should('be.visible') + .contains(simpleTrigger.interface_major) + .should('be.selected'); + cy.get('#triggerPath') + .scrollIntoView() + .should('be.visible') + .and('have.value', simpleTrigger.match_path); + if (simpleTrigger.value_match_operator) { + cy.get('#triggerOperator') + .scrollIntoView() + .should('be.visible') + .contains(triggerOperatorToLabel[simpleTrigger.value_match_operator]) + .should('be.selected'); + } + if (simpleTrigger.known_value != null) { + cy.get('#triggerKnownValue') + .scrollIntoView() + .should('be.visible') + .and('have.value', simpleTrigger.known_value); + } + } + } + + const isHttpAction = !!trigger.action.http_url; + cy.get('#triggerActionType') + .scrollIntoView() + .should('be.visible') + .contains(isHttpAction ? 'HTTP request' : 'AMQP Message') + .should('be.selected'); + + if (isHttpAction) { + cy.get('#triggerMethod') + .scrollIntoView() + .should('be.visible') + .contains(trigger.action.http_method.toUpperCase()) + .should('be.selected'); + cy.get('#triggerUrl') + .scrollIntoView() + .should('be.visible') + .and('have.value', trigger.action.http_url); + cy.get('#actionIgnoreSSLErrors') + .scrollIntoView() + .should('be.visible') + .and(trigger.action.ignore_ssl_errors ? 'be.checked' : 'not.be.checked'); + const hasMustacheTemplate = trigger.action.template_type === 'mustache'; + cy.get('#triggerTemplateType') + .should('be.visible') + .contains(hasMustacheTemplate ? 'Mustache' : 'Use default event format (JSON)') + .should('be.selected'); + if (hasMustacheTemplate) { + cy.get('#actionPayload') + .scrollIntoView() + .should('be.visible') + .and('have.value', trigger.action.template); + } + Object.entries(trigger.action.http_static_headers || {}).forEach( + ([headerName, headerValue]) => { + cy.get('table tr').contains(headerName).scrollIntoView().should('be.visible'); + cy.get('table tr').contains(headerValue).scrollIntoView().should('be.visible'); + }, + ); + } + + if (!isHttpAction) { + // AMQP action + cy.get('#amqpExchange') + .scrollIntoView() + .should('be.visible') + .and('have.value', trigger.action.amqp_exchange); + cy.get('#amqpRoutingKey') + .scrollIntoView() + .should('be.visible') + .and('have.value', trigger.action.amqp_routing_key || ''); + cy.get('#amqpPersistency') + .scrollIntoView() + .should('be.visible') + .and(trigger.action.amqp_message_persistent ? 'be.checked' : 'not.be.checked'); + cy.get('#amqpPriority') + .scrollIntoView() + .should('be.visible') + .and('have.value', trigger.action.amqp_message_priority || 0); + cy.get('#amqpExpiration') + .scrollIntoView() + .should('be.visible') + .and('have.value', trigger.action.amqp_message_expiration_ms || 0); + Object.entries(trigger.action.amqp_static_headers || {}).forEach( + ([headerName, headerValue]) => { + cy.get('table tr').contains(headerName).scrollIntoView().should('be.visible'); + cy.get('table tr').contains(headerValue).scrollIntoView().should('be.visible'); + }, + ); + } +}; + +const checkTriggerEditorUIDisabledOptions = (trigger) => { + const simpleTrigger = trigger.simple_triggers[0]; + cy.get('#triggerName').should('have.attr', 'readonly'); + cy.get('#triggerCondition').should('be.disabled'); + cy.get('#triggerSimpleTriggerType').should('be.disabled'); + const isDataTrigger = simpleTrigger.type === 'data_trigger'; + + cy.get('#triggerTargetSelect').should('be.disabled'); + if (simpleTrigger.device_id) { + cy.get('#triggerDeviceId').should('have.attr', 'readonly'); + } else if (simpleTrigger.group_name) { + cy.get('#triggerGroupName').should('have.attr', 'readonly'); + } + + if (isDataTrigger) { + const iface = simpleTrigger.interface_name; + cy.get('#triggerInterfaceName').should('be.disabled'); + if (iface !== '*') { + cy.get('#triggerInterfaceMajor').should('be.disabled'); + cy.get('#triggerPath').should('have.attr', 'readonly'); + if (simpleTrigger.value_match_operator) { + cy.get('#triggerOperator').should('be.disabled'); + } + if (simpleTrigger.known_value != null) { + cy.get('#triggerKnownValue').should('have.attr', 'readonly'); + } + } + } + + const isHttpAction = !!trigger.action.http_url; + cy.get('#triggerActionType').should('be.disabled'); + + if (isHttpAction) { + cy.get('#triggerMethod').should('be.disabled'); + cy.get('#triggerUrl').should('have.attr', 'readonly'); + cy.get('#actionIgnoreSSLErrors').should('be.disabled'); + cy.get('#triggerTemplateType').should('be.disabled'); + const hasMustacheTemplate = trigger.action.template_type === 'mustache'; + if (hasMustacheTemplate) { + cy.get('#actionPayload').should('have.attr', 'readonly'); + } + Object.keys(trigger.action.http_static_headers || {}).forEach((headerName) => { + cy.get('table tr') + .contains(headerName) + .parents('tr') + .get('i.fa-pencil-alt') + .should('not.exist'); + cy.get('table tr').contains(headerName).parents('tr').get('i.fa-eraser').should('not.exist'); + }); + } + + if (!isHttpAction) { + // AMQP action + cy.get('#amqpExchange').should('have.attr', 'readonly'); + cy.get('#amqpRoutingKey').should('have.attr', 'readonly'); + cy.get('#amqpPersistency').should('be.disabled'); + cy.get('#amqpPriority').should('have.attr', 'readonly'); + cy.get('#amqpExpiration').should('have.attr', 'readonly'); + Object.keys(trigger.action.amqp_static_headers || {}).forEach((headerName) => { + cy.get('table tr') + .contains(headerName) + .parents('tr') + .get('i.fa-pencil-alt') + .should('not.exist'); + cy.get('table tr').contains(headerName).parents('tr').get('i.fa-eraser').should('not.exist'); + }); + } +}; + +describe('Trigger builder tests', () => { + context('no access before login', () => { + it('redirects to login', () => { + cy.visit('/triggers/new'); + cy.location('pathname').should('eq', '/login'); + + cy.visit('/triggers/testTrigger/edit'); + cy.location('pathname').should('eq', '/login'); + }); + }); + + context('authenticated', () => { + beforeEach(() => { + cy.login(); + cy.fixture('realm').as('realm'); + cy.fixture('interfaces').as('interfaces'); + cy.fixture('interface_majors').as('interface_majors'); + cy.fixture('test.astarte.FirstInterface').as('first_interface'); + cy.intercept('GET', '/realmmanagement/v1/*/interfaces', { fixture: 'interfaces' }); + cy.intercept('GET', '/realmmanagement/v1/*/interfaces/test.astarte.FirstInterface', { + fixture: 'interface_majors', + }); + cy.intercept('GET', '/realmmanagement/v1/*/interfaces/test.astarte.FirstInterface/*', { + fixture: 'test.astarte.FirstInterface', + }); + cy.fixture('test.astarte.AggregatedObjectInterface') + .as('datastream_object_interface') + .then((iface) => { + cy.intercept('GET', `/realmmanagement/v1/*/interfaces/${iface.data.interface_name}`, { + data: [iface.data.version_major], + }); + cy.intercept( + 'GET', + `/realmmanagement/v1/*/interfaces/${iface.data.interface_name}/${iface.data.version_major}`, + iface, + ); + }); + cy.fixture('test.astarte.PropertiesInterface') + .as('properties_interface') + .then((iface) => { + cy.intercept('GET', `/realmmanagement/v1/*/interfaces/${iface.data.interface_name}`, { + data: [iface.data.version_major], + }); + cy.intercept( + 'GET', + `/realmmanagement/v1/*/interfaces/${iface.data.interface_name}/${iface.data.version_major}`, + iface, + ); + }); + }); + + context('new trigger page', () => { + beforeEach(() => { + cy.visit('/triggers/new'); + cy.wait(1000); + }); + + it('successfully loads New Trigger page', function () { + cy.location('pathname').should('eq', '/triggers/new'); + cy.get('.main-content h2').contains('Trigger Editor'); + cy.get('#triggerName').should('have.value', ''); + }); + + it('has a Hide button to toggle Trigger Source visibility', () => { + cy.get('#triggerSource').scrollIntoView().should('be.visible'); + cy.get('button').contains('Hide source').scrollIntoView().click(); + cy.get('#triggerSource').should('not.exist'); + cy.get('button').contains('Show source').scrollIntoView().click(); + cy.get('#triggerSource').scrollIntoView().should('be.visible'); + }); + + it('correctly displays default and disabled options', function () { + cy.get('label[for="triggerName"]').contains('Name'); + cy.get('#triggerName').should('be.enabled').and('be.empty'); + cy.get('label[for="triggerSimpleTriggerType"]').contains('Trigger type'); + cy.get('#triggerSimpleTriggerType') + .should('be.enabled') + .contains('Data Trigger') + .should('be.selected'); + + cy.get('label[for="triggerTargetSelect"]').contains('Target'); + cy.get('#triggerTargetSelect') + .should('be.enabled') + .contains('All devices') + .should('be.selected'); + cy.get('#triggerTargetSelect').select('Device'); + cy.get('label[for="triggerDeviceId"]').contains('Device id'); + cy.get('#triggerDeviceId').should('be.enabled').and('be.empty'); + cy.get('#triggerTargetSelect').select('Group'); + cy.get('label[for="triggerGroupName"]').contains('Group Name'); + cy.get('#triggerGroupName').should('be.enabled').and('be.empty'); + + cy.get('label[for="triggerInterfaceName"]').contains('Interface name'); + cy.get('#triggerInterfaceName') + .should('be.enabled') + .contains('Any interface') + .should('be.selected'); + cy.get('#triggerInterfaceName').select(this.first_interface.data.interface_name, { + force: true, + }); + cy.get('label[for="triggerInterfaceMajor"]').contains('Interface major'); + cy.get('#triggerInterfaceMajor') + .should('be.enabled') + .contains(this.first_interface.data.version_major) + .should('be.selected'); + cy.get('label[for="triggerCondition"]').contains('Trigger condition'); + cy.get('#triggerCondition') + .should('be.enabled') + .contains('Incoming Data') + .should('be.selected'); + cy.get('label[for="triggerPath"]').contains('Path'); + cy.get('#triggerPath').should('be.enabled').and('have.value', '/*'); + cy.get('label[for="triggerOperator"]').contains('Operator'); + cy.get('#triggerOperator').should('be.enabled').contains('*').should('be.selected'); + cy.get('label[for="triggerActionType"]').contains('Action type'); + cy.get('#triggerActionType') + .should('be.enabled') + .contains('HTTP request') + .should('be.selected'); + cy.get('label[for="triggerMethod"]').contains('Method'); + cy.get('#triggerMethod').should('be.enabled').contains('POST').should('be.selected'); + cy.get('label[for="triggerUrl"]').contains('URL'); + cy.get('#triggerUrl').should('be.enabled').and('be.empty'); + cy.get('label[for="actionIgnoreSSLErrors"]').contains('Ignore SSL errors'); + cy.get('#actionIgnoreSSLErrors').should('be.enabled').and('not.be.checked'); + cy.get('label[for="triggerTemplateType"]').contains('Payload type'); + cy.get('#triggerTemplateType') + .should('be.enabled') + .contains('Use default event format (JSON)') + .should('be.selected'); + + cy.get('#triggerInterfaceName').select('Any interface', { force: true }); + cy.get('#triggerInterfaceMajor').should('not.exist'); + cy.get('#triggerPath').should('not.exist'); + cy.get('#triggerOperator').should('not.exist'); + + cy.get('#triggerSimpleTriggerType').select('Device Trigger'); + cy.get('#triggerInterfaceName').should('not.exist'); + cy.get('label[for="triggerTargetSelect"]').contains('Target'); + cy.get('#triggerTargetSelect') + .should('be.enabled') + .contains('All devices') + .should('be.selected'); + cy.get('#triggerCondition') + .should('be.enabled') + .contains('Device Connected') + .should('be.selected'); + + cy.get('#triggerTargetSelect').select('Device'); + cy.get('label[for="triggerDeviceId"]').contains('Device id'); + cy.get('#triggerDeviceId').should('be.enabled').and('be.empty'); + + cy.get('#triggerTargetSelect').select('Group'); + cy.get('label[for="triggerGroupName"]').contains('Group Name'); + cy.get('#triggerGroupName').should('be.enabled').and('be.empty'); + + cy.get('#triggerTemplateType').select('Mustache'); + cy.get('label[for="actionPayload"]').contains('Payload'); + cy.get('#actionPayload').should('be.enabled').and('be.empty'); + + cy.get('#triggerActionType').select('AMQP Message'); + cy.get('label[for="amqpExchange"]').contains('Exchange'); + cy.get('#amqpExchange') + .should('be.enabled') + .and('be.empty') + .and('have.attr', 'placeholder', `astarte_events_${this.realm.name}_`); + cy.get('label[for="amqpRoutingKey"]').contains('Routing key'); + cy.get('#amqpRoutingKey').should('be.enabled').and('be.empty'); + cy.get('label[for="amqpPersistency"]').contains('Persistency'); + cy.get('label[for="amqpPersistency"]').contains('Publish persistent messages'); + cy.get('#amqpPersistency').should('be.enabled').and('not.be.checked'); + cy.get('label[for="amqpPriority"]').contains('Priority'); + cy.get('#amqpPriority') + .should('be.enabled') + .and('have.value', '0') + .and('have.attr', 'min', 0) + .and('have.attr', 'max', 9); + cy.get('label[for="amqpExpiration"]').contains('Expiration'); + cy.get('#amqpExpiration').should('be.enabled').and('have.value', '0'); + }); + + it('correctly lists Trigger Type options', () => { + cy.get('#triggerSimpleTriggerType option').should((options) => { + const labels = [...options].map((option) => option.textContent); + expect(labels).to.deep.eq(['Device Trigger', 'Data Trigger']); + }); + }); + + it('correctly lists Trigger Target options for a Data trigger', () => { + cy.get('#triggerSimpleTriggerType').select('Data Trigger'); + cy.get('#triggerTargetSelect option').should((options) => { + const labels = [...options].map((option) => option.textContent); + expect(labels).to.deep.eq(['All devices', 'Device', 'Group']); + }); + }); + + it('correctly lists Trigger Target options for a Device trigger', () => { + cy.get('#triggerSimpleTriggerType').select('Device Trigger'); + cy.get('#triggerTargetSelect option').should((options) => { + const labels = [...options].map((option) => option.textContent); + expect(labels).to.deep.eq(['All devices', 'Device', 'Group']); + }); + }); + + it('correctly lists Trigger Condition options for a Device trigger', () => { + cy.get('#triggerSimpleTriggerType').select('Device Trigger'); + cy.get('#triggerCondition option').should((options) => { + const labels = [...options].map((option) => option.textContent); + expect(labels).to.deep.eq([ + 'Device Connected', + 'Device Disconnected', + 'Device Registered', + 'Device Deletion Finished', + 'Device Deletion Started', + 'Device Error', + 'Empty Cache Received', + ]); + }); + }); + + it('correctly lists Trigger Condition options for a Data trigger / Any interface', () => { + cy.get('#triggerSimpleTriggerType').select('Data Trigger'); + cy.get('#triggerInterfaceName').select('Any interface', { force: true }); + cy.get('#triggerCondition option').should((options) => { + const labels = [...options].map((option) => option.textContent); + expect(labels).to.deep.eq(['Incoming Data', 'Value Stored']); + }); + }); + + it('correctly lists Trigger Condition options for a Data trigger / Datastream interface', function () { + const iface = this.datastream_object_interface.data; + cy.get('#triggerSimpleTriggerType').select('Data Trigger'); + cy.get('#triggerInterfaceName').select(iface.interface_name, { force: true }); + cy.get('#triggerCondition option').should((options) => { + const labels = [...options].map((option) => option.textContent); + expect(labels).to.deep.eq(['Incoming Data', 'Value Stored']); + }); + }); + + it('correctly lists Trigger Condition options for a Data trigger / Properties interface', function () { + const iface = this.properties_interface.data; + cy.get('#triggerSimpleTriggerType').select('Data Trigger'); + cy.get('#triggerInterfaceName').select(iface.interface_name, { force: true }); + cy.get('#triggerCondition option').should((options) => { + const labels = [...options].map((option) => option.textContent); + expect(labels).to.deep.eq([ + 'Incoming Data', + 'Value Change', + 'Value Change Applied', + 'Path Created', + 'Path Removed', + 'Value Stored', + ]); + }); + }); + + it('lists all available interfaces for a Data trigger', function () { + const ifaces = this.interfaces.data; + cy.get('#triggerSimpleTriggerType').select('Data Trigger'); + cy.get('#triggerInterfaceName option').should((options) => { + const labels = [...options].map((option) => option.textContent); + expect(labels).to.deep.eq(['Any interface', ...ifaces]); + }); + }); + + it('lists appropriate Condition Operators for the specified interface path', function () { + cy.get('#triggerSimpleTriggerType').select('Data Trigger'); + cy.get('#triggerInterfaceName').select('Any interface', { force: true }); + cy.get('#triggerOperator').should('not.exist'); + + // Without specified path + const iface = this.properties_interface.data; + cy.get('#triggerInterfaceName').select(iface.interface_name, { force: true }); + cy.get('#triggerPath').clear().paste('/*'); + cy.get('#triggerOperator option').should((options) => { + const labels = [...options].map((option) => option.textContent); + expect(labels).to.deep.eq(['*']); + }); + + // Path with boolean value + cy.get('#triggerPath').clear().paste('/lights/kitchen'); + cy.get('#triggerOperator option').should((options) => { + const labels = [...options].map((option) => option.textContent); + expect(labels).to.deep.eq(['*', '==', '!=', '>', '>=', '<', '<=']); + }); + + // Path with array-like value (e.g. booleanarray) + cy.get('#triggerPath').clear().paste('/lights/bath'); + cy.get('#triggerOperator option').should((options) => { + const labels = [...options].map((option) => option.textContent); + expect(labels).to.deep.eq([ + '*', + '==', + '!=', + '>', + '>=', + '<', + '<=', + 'Contains', + 'Not Contains', + ]); + }); + }); + + it('correctly lists Action Type options', () => { + cy.get('#triggerActionType option').should((options) => { + const labels = [...options].map((option) => option.textContent); + expect(labels).to.deep.eq(['HTTP request', 'AMQP Message']); + }); + }); + + it('correctly lists Method options for a HTTP action', () => { + cy.get('#triggerActionType').select('HTTP request'); + cy.get('#triggerMethod option').should((options) => { + const labels = [...options].map((option) => option.textContent); + expect(labels).to.deep.eq(['DELETE', 'GET', 'HEAD', 'OPTIONS', 'PATCH', 'POST', 'PUT']); + }); + }); + + it('correctly lists Template Type options for a HTTP action', () => { + cy.get('#triggerActionType').select('HTTP request'); + cy.get('#triggerTemplateType option').should((options) => { + const labels = [...options].map((option) => option.textContent); + expect(labels).to.deep.eq(['Use default event format (JSON)', 'Mustache']); + }); + }); + + it('shows Path field as invalid if not existent in its interface', function () { + const iface = this.properties_interface.data; + cy.get('#triggerSimpleTriggerType').select('Data Trigger'); + cy.get('#triggerInterfaceName').select(iface.interface_name, { force: true }); + cy.get('#triggerInterfaceMajor').select(String(iface.version_major)); + cy.get('#triggerPath').clear().paste('/*'); + cy.get('#triggerPath').should('not.have.class', 'is-invalid'); + cy.get('#triggerPath').clear().paste('/invalid'); // invalid path + cy.get('#triggerPath').should('have.class', 'is-invalid'); + cy.get('#triggerPath').clear().paste('/lights/kitchen'); // valid path + cy.get('#triggerPath').should('not.have.class', 'is-invalid'); + cy.get('#triggerPath').clear().paste('/kitchen/heating/active'); // valid parametrized path + cy.get('#triggerPath').should('not.have.class', 'is-invalid'); + }); + + it("shows Value field as invalid if inconsistent with its path's value type", function () { + const iface = this.properties_interface.data; + cy.get('#triggerSimpleTriggerType').select('Data Trigger'); + cy.get('#triggerInterfaceName').select(iface.interface_name, { force: true }); + cy.get('#triggerInterfaceMajor').select(String(iface.version_major)); + cy.get('#triggerPath').clear().paste('/lights/kitchen'); // boolean type + cy.get('#triggerOperator').select('=='); + cy.get('#triggerKnownValue').clear().paste('notboolean'); // invalid boolean + cy.get('#triggerKnownValue').should('have.class', 'is-invalid'); + cy.get('#triggerKnownValue').clear().paste('false'); // valid boolean + cy.get('#triggerKnownValue').should('not.have.class', 'is-invalid'); + }); + + it('shows amqp_exchange as invalid if it does not follow astarte_events__ format', function () { + cy.get('#triggerActionType').select('AMQP Message'); + cy.get('#amqpExchange').clear().paste('invalid_format_exchange'); + cy.get('#amqpExchange').should('have.class', 'is-invalid'); + cy.get('#amqpExchange').clear().paste(`astarte_events_${this.realm.name}_exchange`); + cy.get('#amqpExchange').should('not.have.class', 'is-invalid'); + }); + + it('shows amqp_routing_key as invalid if it contains { or }', () => { + cy.get('#triggerActionType').select('AMQP Message'); + cy.get('#amqpRoutingKey').clear().paste('invalid_{route}'); + cy.get('#amqpRoutingKey').should('have.class', 'is-invalid'); + cy.get('#amqpRoutingKey').clear().paste('valid_route'); + cy.get('#amqpRoutingKey').should('not.have.class', 'is-invalid'); + }); + + it('can add, edit, remove HTTP headers', () => { + cy.get('#triggerActionType').select('HTTP request'); + + // Add http header + cy.contains('Add custom HTTP headers').click(); + cy.get('.modal.show').within(() => { + cy.get('.modal-header').contains('Add Custom HTTP Header'); + cy.get('label').contains('Header'); + cy.get('#root_key').should('be.enabled').and('be.empty'); + cy.get('label').contains('Value'); + cy.get('#root_value').should('be.enabled').and('be.empty'); + cy.get('#root_key').paste('X-Custom-Header'); + cy.get('#root_value').paste('Header value'); + cy.get('button').contains('Add').click(); + }); + cy.get('table tr').contains('X-Custom-Header'); + cy.get('table tr').contains('Header value'); + cy.get('#triggerSource') + .invoke('val') + .should((triggerSource) => { + const trigger = JSON.parse(triggerSource); + expect(trigger.action.http_static_headers).to.deep.eq({ + 'X-Custom-Header': 'Header value', + }); + }); + + // Edit http header + cy.get('table tr').contains('X-Custom-Header').parents('tr').get('i.fa-pencil-alt').click(); + cy.get('.modal.show').within(() => { + cy.get('.modal-header').contains('Edit Value for Header "X-Custom-Header"'); + cy.get('label').contains('Value'); + cy.get('#root_value').should('be.enabled').and('be.empty'); + cy.get('#root_value').paste('Header new value'); + cy.get('button').contains('Update').click(); + }); + cy.get('table tr').contains('Header new value'); + cy.get('#triggerSource') + .invoke('val') + .should((triggerSource) => { + const trigger = JSON.parse(triggerSource); + expect(trigger.action.http_static_headers).to.deep.eq({ + 'X-Custom-Header': 'Header new value', + }); + }); + + // Delete http header + cy.get('table tr').contains('X-Custom-Header').parents('tr').get('i.fa-eraser').click(); + cy.get('.modal.show').within(() => { + cy.get('.modal-header').contains('Delete Header'); + cy.get('.modal-body').contains('Delete custom header "X-Custom-Header"?'); + cy.get('button').contains('Delete').click(); + }); + cy.contains('X-Custom-Header').should('not.exist'); + cy.get('#triggerSource') + .invoke('val') + .should((triggerSource) => { + const trigger = JSON.parse(triggerSource); + expect(trigger.action.http_static_headers || {}).to.deep.eq({}); + }); + }); + + it('can add, edit, remove AMQP headers', () => { + cy.get('#triggerActionType').select('AMQP Message'); + + // Add amqp header + cy.contains('Add static AMQP headers').click(); + cy.get('.modal.show').within(() => { + cy.get('.modal-header').contains('Add Custom AMQP Header'); + cy.get('label').contains('Header'); + cy.get('#root_key').should('be.enabled').and('be.empty'); + cy.get('label').contains('Value'); + cy.get('#root_value').should('be.enabled').and('be.empty'); + cy.get('#root_key').paste('X-Custom-Header'); + cy.get('#root_value').paste('Header value'); + cy.get('button').contains('Add').click(); + }); + cy.get('table tr').contains('X-Custom-Header'); + cy.get('table tr').contains('Header value'); + cy.get('#triggerSource') + .invoke('val') + .should((triggerSource) => { + const trigger = JSON.parse(triggerSource); + expect(trigger.action.amqp_static_headers).to.deep.eq({ + 'X-Custom-Header': 'Header value', + }); + }); + + // Edit amqp header + cy.get('table tr').contains('X-Custom-Header').parents('tr').get('i.fa-pencil-alt').click(); + cy.get('.modal.show').within(() => { + cy.get('.modal-header').contains('Edit Value for Header "X-Custom-Header"'); + cy.get('label').contains('Value'); + cy.get('#root_value').should('be.enabled').and('be.empty'); + cy.get('#root_value').paste('Header new value'); + cy.get('button').contains('Update').click(); + }); + cy.get('table tr').contains('Header new value'); + cy.get('#triggerSource') + .invoke('val') + .should((triggerSource) => { + const trigger = JSON.parse(triggerSource); + expect(trigger.action.amqp_static_headers).to.deep.eq({ + 'X-Custom-Header': 'Header new value', + }); + }); + + // Delete amqp header + cy.get('table tr').contains('X-Custom-Header').parents('tr').get('i.fa-eraser').click(); + cy.get('.modal.show').within(() => { + cy.get('.modal-header').contains('Delete Header'); + cy.get('.modal-body').contains('Delete static header "X-Custom-Header"?'); + cy.get('button').contains('Delete').click(); + }); + cy.contains('X-Custom-Header').should('not.exist'); + cy.get('#triggerSource') + .invoke('val') + .should((triggerSource) => { + const trigger = JSON.parse(triggerSource); + expect(trigger.action.amqp_static_headers || {}).to.deep.eq({}); + }); + }); + + it('correctly loads trigger from its source', () => { + cy.fixture('test.astarte.FirstTrigger').then((trigger) => { + setupTriggerEditorFromSource(trigger.data); + checkTriggerEditorUIValues(trigger.data); + }); + }); + + it('correctly installs a trigger and redirects to list of triggers', () => { + cy.fixture('test.astarte.FirstTrigger').then((trigger) => { + cy.intercept('POST', '/realmmanagement/v1/*/triggers', { + statusCode: 201, + body: trigger, + }).as('installTriggerRequest'); + setupTriggerEditorFromSource(trigger.data); + cy.get('button').contains('Install Trigger').scrollIntoView().click(); + cy.wait('@installTriggerRequest') + .its('request.body.data') + .should('deep.eq', trigger.data); + cy.location('pathname').should('eq', '/triggers'); + cy.get('[data-testid="triggers-page"]').should('be.visible'); + cy.get('h2').contains('Triggers'); + }); + }); + }); + + context('edit trigger page', () => { + beforeEach(() => { + cy.fixture('test.astarte.FirstInterface').as('interface_source'); + cy.fixture('test.astarte.FirstTrigger').as('test_trigger'); + cy.intercept('GET', '/realmmanagement/v1/*/interfaces/*/*', { + fixture: 'test.astarte.FirstInterface', + }); + cy.intercept('GET', '/realmmanagement/v1/*/triggers/*', { + fixture: 'test.astarte.FirstTrigger', + }); + }); + + it('correctly shows trigger data in the Editor UI', function () { + const encodedTriggerName = encodeURIComponent(this.test_trigger.data.name); + cy.visit(`/triggers/${encodedTriggerName}/edit`); + cy.wait(1000); + cy.location('pathname').should('eq', `/triggers/${encodedTriggerName}/edit`); + checkTriggerEditorUIValues(this.test_trigger.data); + }); + + it('correctly displays all fields as readonly/disabled', function () { + const encodedTriggerName = encodeURIComponent(this.test_trigger.data.name); + cy.visit(`/triggers/${encodedTriggerName}/edit`); + cy.wait(1000); + cy.location('pathname').should('eq', `/triggers/${encodedTriggerName}/edit`); + checkTriggerEditorUIDisabledOptions(this.test_trigger.data); + }); + + it('redirects to list of triggers after deleting a trigger', function () { + const encodedTriggerName = encodeURIComponent(this.test_trigger.data.name); + cy.intercept('DELETE', `/realmmanagement/v1/*/triggers/${encodedTriggerName}`, { + statusCode: 204, + body: '', + }).as('deleteTriggerRequest'); + cy.visit(`/triggers/${this.test_trigger.data.name}/edit`); + cy.wait(1000); + cy.get('button').contains('Delete trigger').click(); + cy.get('.modal.show').within(() => { + cy.get('.modal-header').contains('Confirmation Required'); + cy.get('.modal-body').contains( + `You are going to delete ${this.test_trigger.data.name}. This might cause data loss, deleted triggers cannot be restored. Are you sure?`, + ); + cy.get('.modal-body').contains(`Please type ${this.test_trigger.data.name} to proceed.`); + cy.get('#confirmTriggerName').paste(this.test_trigger.data.name); + cy.get('button').contains('Delete').click(); + }); + cy.wait('@deleteTriggerRequest'); + cy.location('pathname').should('eq', '/triggers'); + cy.get('[data-testid="triggers-page"]').should('be.visible'); + cy.get('h2').contains('Triggers'); + }); + }); + }); +}); diff --git a/astarte-dashboard/cypress/e2e/triggers_page.cy.js b/astarte-dashboard/cypress/e2e/triggers_page.cy.js new file mode 100644 index 0000000000..e61fd1e0c1 --- /dev/null +++ b/astarte-dashboard/cypress/e2e/triggers_page.cy.js @@ -0,0 +1,35 @@ +describe('Triggers page tests', () => { + context('no access before login', () => { + it('redirects to login', () => { + cy.visit('/triggers'); + cy.location('pathname').should('eq', '/login'); + }); + }); + + context('authenticated', () => { + beforeEach(() => { + cy.login(); + cy.intercept('GET', '/realmmanagement/v1/*/triggers', { fixture: 'triggers' }); + cy.visit('/triggers'); + }); + + it('successfully loads', () => { + cy.location('pathname').should('eq', '/triggers'); + + cy.get('h2').contains('Triggers'); + cy.get('.list-group > .list-group-item:nth-child(2) .btn').contains( + 'test.astarte.FirstTrigger', + ); + cy.get('.list-group > .list-group-item:nth-child(3) .btn').contains( + 'test.astarte.SecondTrigger', + ); + }); + + it('correctly redirects to trigger page when clicking on its name', function () { + cy.get('.list-group > .list-group-item:nth-child(2) .btn') + .contains('test.astarte.FirstTrigger') + .click(); + cy.location('pathname').should('eq', `/triggers/test.astarte.FirstTrigger/edit`); + }); + }); +}); diff --git a/astarte-dashboard/cypress/fixtures/blocks.json b/astarte-dashboard/cypress/fixtures/blocks.json new file mode 100644 index 0000000000..6f64a1cbd0 --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/blocks.json @@ -0,0 +1,158 @@ +{ + "data": [ + { "name": "customblock", "schema": {}, "source": "source", "type": "producer" }, + { + "beam_module": "Elixir.Astarte.Flow.Blocks.JsonMapper", + "name": "to_json", + "schema": { + "$id": "https://astarte-platform.org/specs/astarte_flow/blocks/to_json.json", + "$schema": "http://json-schema.org/draft-04/schema#", + "additionalProperties": false, + "properties": {}, + "title": "ToJSONOptions", + "type": "object" + }, + "type": "producer_consumer" + }, + { + "beam_module": "Elixir.Astarte.Flow.Blocks.Sorter", + "name": "sort", + "schema": { + "$id": "https://astarte-platform.org/specs/astarte_flow/blocks/sort.json", + "$schema": "http://json-schema.org/draft-04/schema#", + "additionalProperties": false, + "properties": { + "deduplicate": { + "default": "false", + "description": "Duplicated messages are discarded when true.", + "type": "boolean" + }, + "window_size_ms": { "description": "Window size in milliseconds.", "type": "integer" } + }, + "required": ["window_size_ms"], + "title": "SortOptions", + "type": "object" + }, + "type": "producer_consumer" + }, + { + "beam_module": "Elixir.Astarte.Flow.Blocks.RandomProducer", + "name": "random_source", + "schema": { + "$id": "https://astarte-platform.org/specs/astarte_flow/blocks/random_source.json", + "$schema": "http://json-schema.org/draft-04/schema#", + "additionalProperties": false, + "properties": { + "delay_ms": { + "default": 1000, + "description": "Delay between 2 consecutive messages.", + "type": "integer" + }, + "key": { "description": "Message key.", "type": "string" }, + "max": { "default": 1, "description": "Random number maximum value.", "type": "number" }, + "min": { "default": 0, "description": "Random number minimum value.", "type": "number" }, + "type": { + "default": "real", + "description": "Value type.", + "enum": ["integer", "real", "boolean"], + "type": "string" + } + }, + "required": ["key"], + "title": "RandomSourceOptions", + "type": "object" + }, + "type": "producer" + }, + { + "beam_module": "Elixir.Astarte.Flow.Blocks.LuaMapper", + "name": "lua_map", + "schema": { + "$id": "https://astarte-platform.org/specs/astarte_flow/blocks/lua_map.json", + "$schema": "http://json-schema.org/draft-04/schema#", + "additionalProperties": false, + "properties": { + "config": { + "default": {}, + "description": "Lua script configuration object.", + "type": "object" + }, + "script": { "description": "Lua script.", "type": "string" } + }, + "required": ["script"], + "title": "LuaMapOptions", + "type": "object" + }, + "type": "producer_consumer" + }, + { + "beam_module": "Elixir.Astarte.Flow.Blocks.JsonPathMapper", + "name": "json_path_map", + "schema": { + "$id": "https://astarte-platform.org/specs/astarte_flow/blocks/json_path_map.json", + "$schema": "http://json-schema.org/draft-04/schema#", + "additionalProperties": false, + "properties": { "template": { "description": "JSONPath template.", "type": "string" } }, + "required": ["template"], + "title": "JSONPathMapOptions", + "type": "object" + }, + "type": "producer_consumer" + }, + { + "beam_module": "Elixir.Astarte.Flow.Blocks.HttpSource", + "name": "http_source", + "schema": { + "$id": "https://astarte-platform.org/specs/astarte_flow/blocks/http_source.json", + "$schema": "http://json-schema.org/draft-04/schema#", + "additionalProperties": false, + "properties": { + "base_url": { "description": "Target base URL.", "type": "string" }, + "headers": { + "additionalProperties": { "type": "string" }, + "description": "Http request headers.", + "type": "object" + }, + "polling_interval_ms": { "description": "Polling interval.", "type": "integer" }, + "target_paths": { + "description": "Relative paths.", + "items": { "type": "string" }, + "type": "array" + } + }, + "required": ["base_url", "target_paths", "polling_interval_ms"], + "title": "HttpSourceOptions", + "type": "object" + }, + "type": "producer" + }, + { + "beam_module": "Elixir.Astarte.Flow.Blocks.HttpSink", + "name": "http_sink", + "schema": { + "$id": "https://astarte-platform.org/specs/astarte_flow/blocks/http_sink.json", + "$schema": "http://json-schema.org/draft-04/schema#", + "additionalProperties": false, + "properties": { "url": { "description": "Target URL.", "type": "string" } }, + "required": ["url"], + "title": "HttpSinkOptions", + "type": "object" + }, + "type": "consumer" + }, + { + "beam_module": "Elixir.Astarte.Flow.Blocks.JsonMapper", + "name": "filter", + "schema": { + "$id": "https://astarte-platform.org/specs/astarte_flow/blocks/filter.json", + "$schema": "http://json-schema.org/draft-04/schema#", + "additionalProperties": false, + "properties": { "script": { "description": "Lua script filter.", "type": "string" } }, + "required": ["script"], + "title": "FilterOptions", + "type": "object" + }, + "type": "producer_consumer" + } + ] +} diff --git a/astarte-dashboard/cypress/fixtures/config/custom_urls.json b/astarte-dashboard/cypress/fixtures/config/custom_urls.json new file mode 100644 index 0000000000..d1541ab675 --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/config/custom_urls.json @@ -0,0 +1,10 @@ +{ + "astarte_api_url": "https://api.example.com", + "appengine_api_url": "https://api.example.com/custom-appengine/", + "realm_management_api_url": "https://api.example.com/custom-realmmanagement/", + "pairing_api_url": "https://api.example.com/custom-pairing/", + "flow_api_url": "https://api.example.com/custom-flow/", + "auth": [{ "type": "token" }], + "default_auth": "token", + "enable_flow_preview": true +} diff --git a/astarte-dashboard/cypress/fixtures/config/flowDisabled.json b/astarte-dashboard/cypress/fixtures/config/flowDisabled.json new file mode 100644 index 0000000000..3799550e61 --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/config/flowDisabled.json @@ -0,0 +1,5 @@ +{ + "astarte_api_url": "localhost", + "auth": [{ "type": "token" }], + "default_auth": "token" +} diff --git a/astarte-dashboard/cypress/fixtures/config/http.json b/astarte-dashboard/cypress/fixtures/config/http.json new file mode 100644 index 0000000000..9c152aa7dd --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/config/http.json @@ -0,0 +1,6 @@ +{ + "astarte_api_url": "http://api.example.com", + "auth": [{ "type": "token" }], + "default_auth": "token", + "enable_flow_preview": true +} diff --git a/astarte-dashboard/cypress/fixtures/config/https.json b/astarte-dashboard/cypress/fixtures/config/https.json new file mode 100644 index 0000000000..25b5c7f877 --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/config/https.json @@ -0,0 +1,6 @@ +{ + "astarte_api_url": "https://api.example.com", + "auth": [{ "type": "token" }], + "default_auth": "token", + "enable_flow_preview": true +} diff --git a/astarte-dashboard/cypress/fixtures/config/multiple_auth.json b/astarte-dashboard/cypress/fixtures/config/multiple_auth.json new file mode 100644 index 0000000000..c0bd65bb4e --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/config/multiple_auth.json @@ -0,0 +1,13 @@ +{ + "astarte_api_url": "http://api.example.com", + "default_auth": "token", + "enable_flow_preview": true, + "auth": [ + { + "type": "token" + }, + { + "type": "oauth" + } + ] +} diff --git a/astarte-dashboard/cypress/fixtures/config/oauth.json b/astarte-dashboard/cypress/fixtures/config/oauth.json new file mode 100644 index 0000000000..cd2dbaa835 --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/config/oauth.json @@ -0,0 +1,6 @@ +{ + "astarte_api_url": "http://api.example.com", + "auth": [{ "type": "oauth" }], + "default_auth": "oauth", + "enable_flow_preview": false +} diff --git a/astarte-dashboard/cypress/fixtures/config_auth.json b/astarte-dashboard/cypress/fixtures/config_auth.json new file mode 100644 index 0000000000..c99a6c57a0 --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/config_auth.json @@ -0,0 +1,5 @@ +{ + "data": { + "jwt_public_key_pem": "-----BEGIN PUBLIC KEY-----\nMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMNV2kf6Xkh6O3HfDTXXC1O5YWA7v+dd\n4BdlYn5cwk/X5D/TLnWRSwAhhyoyjNM5293idDmpVp62+nZnUS3RVe0CAwEAAQ==\n-----END PUBLIC KEY-----\n" + } +} diff --git a/astarte-dashboard/cypress/fixtures/custom_block.json b/astarte-dashboard/cypress/fixtures/custom_block.json new file mode 100644 index 0000000000..ab55d92dff --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/custom_block.json @@ -0,0 +1,8 @@ +{ + "data": { + "name": "customblock", + "schema": {}, + "source": "source", + "type": "producer" + } +} diff --git a/astarte-dashboard/cypress/fixtures/device.json b/astarte-dashboard/cypress/fixtures/device.json new file mode 100644 index 0000000000..7bfc6a34eb --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/device.json @@ -0,0 +1,20 @@ +{ + "data": { + "aliases": {}, + "connected": false, + "credentials_inhibited": false, + "first_credentials_request": null, + "first_registration": "2020-01-01T12:00:00.000Z", + "groups": [], + "id": "PO6RuqIXQuysOCAJrcedqA", + "introspection": {}, + "last_connection": null, + "last_credentials_request_ip": null, + "last_disconnection": null, + "last_seen_ip": null, + "attributes": {}, + "previous_interfaces": [], + "total_received_bytes": 0, + "total_received_msgs": 0 + } +} diff --git a/astarte-dashboard/cypress/fixtures/device_detailed.json b/astarte-dashboard/cypress/fixtures/device_detailed.json new file mode 100644 index 0000000000..e6b3e41984 --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/device_detailed.json @@ -0,0 +1,58 @@ +{ + "data": { + "id": "0ma4SioESHKk28VhYGcW1w", + "aliases": { + "name": "my_device_name", + "serial_number": "1234567" + }, + "attributes": { + "attribute_key": "attribute_value" + }, + "introspection": { + "com.example.ExampleInterface": { + "major": 2, + "minor": 0, + "exchanged_msgs": 3, + "exchanged_bytes": 42 + }, + "test.astarte.AggregatedObjectInterface": { + "major": 1, + "minor": 0, + "exchanged_msgs": 3000, + "exchanged_bytes": 42000 + }, + "test.astarte.IndividualObjectInterface": { + "major": 1, + "minor": 0, + "exchanged_msgs": 3000000, + "exchanged_bytes": 42000000 + }, + "test.astarte.PropertiesInterface": { + "major": 1, + "minor": 0, + "exchanged_msgs": 3000000000, + "exchanged_bytes": 42000000000 + } + }, + "connected": true, + "last_connection": "2017-09-28T03:45:00.000Z", + "last_disconnection": "2017-09-29T18:25:00.000Z", + "first_registration": "2016-07-08T09:44:00.000Z", + "first_credentials_request": "2016-08-20T09:44:00.000Z", + "last_seen_ip": "198.51.100.81", + "credentials_inhibited": true, + "last_credentials_request_ip": "98.51.100.89", + "total_received_bytes": 45000000000, + "total_received_msgs": 4000000000, + "groups": ["test-devices", "first-floor"], + "previous_interfaces": [ + { + "name": "com.example.ExampleInterface", + "major": 1, + "minor": 1, + "exchanged_msgs": 5, + "exchanged_bytes": 102 + } + ] + } +} diff --git a/astarte-dashboard/cypress/fixtures/devices_detailed.json b/astarte-dashboard/cypress/fixtures/devices_detailed.json new file mode 100644 index 0000000000..c33059f111 --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/devices_detailed.json @@ -0,0 +1,97 @@ +{ + "data": [ + { + "id": "0ma4SioESHKk28VhYGcW1w", + "aliases": { + "name": "my_device_name", + "serial_number": "1234567" + }, + "attributes": { + "attribute_key": "attribute_value" + }, + "introspection": { + "com.example.ExampleInterface": { + "major": 2, + "minor": 0, + "exchanged_msgs": 20, + "exchanged_bytes": 200 + }, + "test.astarte.AggregatedObjectInterface": { + "major": 1, + "minor": 0, + "exchanged_msgs": 3, + "exchanged_bytes": 42 + }, + "test.astarte.IndividualObjectInterface": { + "major": 1, + "minor": 0, + "exchanged_msgs": 3, + "exchanged_bytes": 42 + }, + "test.astarte.PropertiesInterface": { + "major": 1, + "minor": 0, + "exchanged_msgs": 3, + "exchanged_bytes": 42 + } + }, + "connected": true, + "last_connection": "2017-09-28T03:45:00.000Z", + "last_disconnection": "2017-09-29T18:25:00.000Z", + "first_registration": "2016-07-08T09:44:00.000Z", + "first_credentials_request": "2016-08-20T09:44:00.000Z", + "last_seen_ip": "198.51.100.81", + "credentials_inhibited": true, + "last_credentials_request_ip": "98.51.100.89", + "total_received_bytes": 10240, + "total_received_msgs": 10, + "groups": ["test-devices", "first-floor"], + "previous_interfaces": [ + { + "name": "com.example.ExampleInterface", + "major": 1, + "minor": 1, + "exchanged_msgs": 5, + "exchanged_bytes": 102 + } + ] + }, + { + "aliases": {}, + "connected": false, + "credentials_inhibited": false, + "first_credentials_request": null, + "first_registration": "2020-01-01T12:00:00.000Z", + "groups": [], + "id": "PO6RuqIXQuysOCAJrcedqA", + "introspection": {}, + "last_connection": null, + "last_credentials_request_ip": null, + "last_disconnection": null, + "last_seen_ip": null, + "attributes": {}, + "previous_interfaces": [], + "total_received_bytes": 0, + "total_received_msgs": 0 + }, + { + "aliases": {}, + "connected": false, + "credentials_inhibited": false, + "first_credentials_request": null, + "first_registration": "2019-01-01T12:00:00.000Z", + "groups": [], + "id": "qI9KQ3KfSyGPKEA6evGgXQ", + "introspection": {}, + "last_connection": null, + "last_credentials_request_ip": null, + "last_disconnection": null, + "last_seen_ip": null, + "attributes": {}, + "previous_interfaces": [], + "total_received_bytes": 0, + "total_received_msgs": 0 + } + ], + "links": { "self": "/v1/testrealm/devices?details=true&limit=20" } +} diff --git a/astarte-dashboard/cypress/fixtures/devices_stats.json b/astarte-dashboard/cypress/fixtures/devices_stats.json new file mode 100644 index 0000000000..26e89a77f6 --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/devices_stats.json @@ -0,0 +1 @@ +{ "data": { "connected_devices": 1, "total_devices": 2 } } diff --git a/astarte-dashboard/cypress/fixtures/flow.room1-occupation.json b/astarte-dashboard/cypress/fixtures/flow.room1-occupation.json new file mode 100644 index 0000000000..ba34f034aa --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/flow.room1-occupation.json @@ -0,0 +1,24 @@ +{ + "data": { + "config": { + "amqp_exchange": "astarte_events_testrealm_room1_occupation", + "devices": ["0ma4SioESHKk28VhYGcW1w", "PO6RuqIXQuysOCAJrcedqA"], + "interfaces": [ + { + "interface_name": "com.astarte-platform.examples.RoomOccupation", + "mappings": [{ "endpoint": "/estimated", "type": "integer" }], + "ownership": "device", + "type": "datastream", + "version_major": 0, + "version_minor": 1 + } + ], + "pairing_jwt": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE1OTI4MjkwMjAsImFfcGEiOlsiLio6Oi4qIl19.tZtMfABhuRXr9z5XBd_BFzFtz-QD60QiKTM5hRRZ3x0", + "realm": "testrealm", + "room_id": "q4zjsC7GSqmrQzhHIsAUMQ", + "room_size": 42.3 + }, + "name": "room1-occupation", + "pipeline": "room-occupation" + } +} diff --git a/astarte-dashboard/cypress/fixtures/flows.json b/astarte-dashboard/cypress/fixtures/flows.json new file mode 100644 index 0000000000..9b9ef0484a --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/flows.json @@ -0,0 +1 @@ +{ "data": ["room1-occupation", "room2-occupation", "room3-occupation"] } diff --git a/astarte-dashboard/cypress/fixtures/group.first-floor.created.json b/astarte-dashboard/cypress/fixtures/group.first-floor.created.json new file mode 100644 index 0000000000..dc5d7db1f3 --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/group.first-floor.created.json @@ -0,0 +1,6 @@ +{ + "data": { + "devices": ["0ma4SioESHKk28VhYGcW1w"], + "group_name": "first-floor" + } +} diff --git a/astarte-dashboard/cypress/fixtures/group.first-floor.devices.json b/astarte-dashboard/cypress/fixtures/group.first-floor.devices.json new file mode 100644 index 0000000000..7aa5acbacc --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/group.first-floor.devices.json @@ -0,0 +1,61 @@ +{ + "data": [ + { + "id": "0ma4SioESHKk28VhYGcW1w", + "aliases": { + "name": "my_device_name", + "serial_number": "1234567" + }, + "attributes": { + "attribute_key": "attribute_value" + }, + "introspection": { + "com.example.ExampleInterface": { + "major": 2, + "minor": 0, + "exchanged_msgs": 20, + "exchanged_bytes": 200 + }, + "test.astarte.AggregatedObjectInterface": { + "major": 1, + "minor": 0, + "exchanged_msgs": 3, + "exchanged_bytes": 42 + }, + "test.astarte.IndividualObjectInterface": { + "major": 1, + "minor": 0, + "exchanged_msgs": 3, + "exchanged_bytes": 42 + }, + "test.astarte.PropertiesInterface": { + "major": 1, + "minor": 0, + "exchanged_msgs": 3, + "exchanged_bytes": 42 + } + }, + "connected": true, + "last_connection": "2017-09-28T03:45:00.000Z", + "last_disconnection": "2017-09-29T18:25:00.000Z", + "first_registration": "2016-07-08T09:44:00.000Z", + "first_credentials_request": "2016-08-20T09:44:00.000Z", + "last_seen_ip": "198.51.100.81", + "credentials_inhibited": true, + "last_credentials_request_ip": "98.51.100.89", + "total_received_bytes": 10240, + "total_received_msgs": 10, + "groups": ["test-devices", "first-floor"], + "previous_interfaces": [ + { + "name": "com.example.ExampleInterface", + "major": 1, + "minor": 1, + "exchanged_msgs": 5, + "exchanged_bytes": 102 + } + ] + } + ], + "links": { "self": "/v1/testrealm/groups/first-floor/devices?details=true" } +} diff --git a/astarte-dashboard/cypress/fixtures/group.special-characters.devices.json b/astarte-dashboard/cypress/fixtures/group.special-characters.devices.json new file mode 100644 index 0000000000..8ae06a3f07 --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/group.special-characters.devices.json @@ -0,0 +1,63 @@ +{ + "data": [ + { + "id": "0ma4SioESHKk28VhYGcW1w", + "aliases": { + "name": "my_device_name", + "serial_number": "1234567" + }, + "attributes": { + "attribute_key": "attribute_value" + }, + "introspection": { + "com.example.ExampleInterface": { + "major": 2, + "minor": 0, + "exchanged_msgs": 20, + "exchanged_bytes": 200 + }, + "test.astarte.AggregatedObjectInterface": { + "major": 1, + "minor": 0, + "exchanged_msgs": 3, + "exchanged_bytes": 42 + }, + "test.astarte.IndividualObjectInterface": { + "major": 1, + "minor": 0, + "exchanged_msgs": 3, + "exchanged_bytes": 42 + }, + "test.astarte.PropertiesInterface": { + "major": 1, + "minor": 0, + "exchanged_msgs": 3, + "exchanged_bytes": 42 + } + }, + "connected": true, + "last_connection": "2017-09-28T03:45:00.000Z", + "last_disconnection": "2017-09-29T18:25:00.000Z", + "first_registration": "2016-07-08T09:44:00.000Z", + "first_credentials_request": "2016-08-20T09:44:00.000Z", + "last_seen_ip": "198.51.100.81", + "credentials_inhibited": true, + "last_credentials_request_ip": "98.51.100.89", + "total_received_bytes": 10240, + "total_received_msgs": 10, + "groups": ["test-devices", "first-floor"], + "previous_interfaces": [ + { + "name": "com.example.ExampleInterface", + "major": 1, + "minor": 1, + "exchanged_msgs": 5, + "exchanged_bytes": 102 + } + ] + } + ], + "links": { + "self": "/v1/testrealm/groups/%252520%252F%252F%252F%2525%2525%2560~!%2540%2523%2524%255E%2526*()_-%252B%253D%255B%255D%257B%257D%253B%253A'%2522%257C%255C%253C%253E%252C./devices?details=true" + } +} diff --git a/astarte-dashboard/cypress/fixtures/group.test-devices.devices.json b/astarte-dashboard/cypress/fixtures/group.test-devices.devices.json new file mode 100644 index 0000000000..a9b819b0b6 --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/group.test-devices.devices.json @@ -0,0 +1,79 @@ +{ + "data": [ + { + "id": "0ma4SioESHKk28VhYGcW1w", + "aliases": { + "name": "my_device_name", + "serial_number": "1234567" + }, + "attributes": { + "attribute_key": "attribute_value" + }, + "introspection": { + "com.example.ExampleInterface": { + "major": 2, + "minor": 0, + "exchanged_msgs": 20, + "exchanged_bytes": 200 + }, + "test.astarte.AggregatedObjectInterface": { + "major": 1, + "minor": 0, + "exchanged_msgs": 3, + "exchanged_bytes": 42 + }, + "test.astarte.IndividualObjectInterface": { + "major": 1, + "minor": 0, + "exchanged_msgs": 3, + "exchanged_bytes": 42 + }, + "test.astarte.PropertiesInterface": { + "major": 1, + "minor": 0, + "exchanged_msgs": 3, + "exchanged_bytes": 42 + } + }, + "connected": true, + "last_connection": "2017-09-28T03:45:00.000Z", + "last_disconnection": "2017-09-29T18:25:00.000Z", + "first_registration": "2016-07-08T09:44:00.000Z", + "first_credentials_request": "2016-08-20T09:44:00.000Z", + "last_seen_ip": "198.51.100.81", + "credentials_inhibited": true, + "last_credentials_request_ip": "98.51.100.89", + "total_received_bytes": 10240, + "total_received_msgs": 10, + "groups": ["test-devices", "first-floor"], + "previous_interfaces": [ + { + "name": "com.example.ExampleInterface", + "major": 1, + "minor": 1, + "exchanged_msgs": 5, + "exchanged_bytes": 102 + } + ] + }, + { + "aliases": {}, + "connected": false, + "credentials_inhibited": false, + "first_credentials_request": null, + "first_registration": "2019-01-01T12:00:00.000Z", + "groups": [], + "id": "qI9KQ3KfSyGPKEA6evGgXQ", + "introspection": {}, + "last_connection": null, + "last_credentials_request_ip": null, + "last_disconnection": null, + "last_seen_ip": null, + "attributes": {}, + "previous_interfaces": [], + "total_received_bytes": 0, + "total_received_msgs": 0 + } + ], + "links": { "self": "/v1/testrealm/groups/test-devices/devices?details=true" } +} diff --git a/astarte-dashboard/cypress/fixtures/groups.json b/astarte-dashboard/cypress/fixtures/groups.json new file mode 100644 index 0000000000..2e890d9888 --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/groups.json @@ -0,0 +1,7 @@ +{ + "data": [ + "test-devices", + "first-floor", + "special characters %20///%%`~!@#$^&*()_-+=[]{};:'\"|\\<>,." + ] +} diff --git a/astarte-dashboard/cypress/fixtures/interface_majors.json b/astarte-dashboard/cypress/fixtures/interface_majors.json new file mode 100644 index 0000000000..62db0481ee --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/interface_majors.json @@ -0,0 +1,3 @@ +{ + "data": [0] +} diff --git a/astarte-dashboard/cypress/fixtures/interfaces.json b/astarte-dashboard/cypress/fixtures/interfaces.json new file mode 100644 index 0000000000..bb700b9d85 --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/interfaces.json @@ -0,0 +1,12 @@ +{ + "data": [ + "test.astarte.FirstInterface", + "test.astarte.SecondInterface", + "test.astarte.ThirdInterface", + "test.astarte.AggregatedObjectInterface", + "test.astarte.IndividualObjectInterface", + "test.astarte.PropertiesInterface", + "com.example.ExampleInterface", + "com.test.TestInterface" + ] +} diff --git a/astarte-dashboard/cypress/fixtures/native_block.json b/astarte-dashboard/cypress/fixtures/native_block.json new file mode 100644 index 0000000000..49ac385a70 --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/native_block.json @@ -0,0 +1,15 @@ +{ + "data": { + "beam_module": "Elixir.Astarte.Flow.Blocks.JsonMapper", + "name": "to_json", + "schema": { + "$id": "https://astarte-platform.org/specs/astarte_flow/blocks/to_json.json", + "$schema": "http://json-schema.org/draft-04/schema#", + "additionalProperties": false, + "properties": {}, + "title": "ToJSONOptions", + "type": "object" + }, + "type": "producer_consumer" + } +} diff --git a/astarte-dashboard/cypress/fixtures/pipeline.room-occupation.json b/astarte-dashboard/cypress/fixtures/pipeline.room-occupation.json new file mode 100644 index 0000000000..814605c56d --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/pipeline.room-occupation.json @@ -0,0 +1,8 @@ +{ + "data": { + "description": "", + "name": "room-occupation", + "schema": {}, + "source": "astarte_devices_source\n .realm(${$.config.realm})\n .amqp_exchange(${$.config.amqp_exchange})\n .target_devices(${$.config.devices})\n| filter\n .script(\"\"\"\n return string.find(message.key, \"com.astarte%-platform.examples.AirSensor\") ~= nil;\n \"\"\")\n| container\n .image(\"docker-registry.com/occupancy-compute:latest\")\n| virtual_device_pool\n .pairing_url(\"https://api.domain.com/pairing/v1\")\n .realms([{realm: ${$.config.realm}, jwt: ${$.config.pairing_jwt}}])\n .interfaces(${$.config.interfaces})" + } +} diff --git a/astarte-dashboard/cypress/fixtures/pipeline.sample-computation.json b/astarte-dashboard/cypress/fixtures/pipeline.sample-computation.json new file mode 100644 index 0000000000..c458fdbab7 --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/pipeline.sample-computation.json @@ -0,0 +1,8 @@ +{ + "data": { + "description": "Sample computation", + "name": "sample-computation", + "schema": {}, + "source": "http_source\n| http_sink" + } +} diff --git a/astarte-dashboard/cypress/fixtures/pipeline.test-calculation.json b/astarte-dashboard/cypress/fixtures/pipeline.test-calculation.json new file mode 100644 index 0000000000..ec4becc3c9 --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/pipeline.test-calculation.json @@ -0,0 +1,8 @@ +{ + "data": { + "description": "", + "name": "test-calculation", + "schema": {}, + "source": "http_source\n| http_sink" + } +} diff --git a/astarte-dashboard/cypress/fixtures/pipelines.json b/astarte-dashboard/cypress/fixtures/pipelines.json new file mode 100644 index 0000000000..006279ce59 --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/pipelines.json @@ -0,0 +1 @@ +{ "data": ["test-calculation", "sample-computation"] } diff --git a/astarte-dashboard/cypress/fixtures/realm.json b/astarte-dashboard/cypress/fixtures/realm.json new file mode 100644 index 0000000000..bb85cb2ee8 --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/realm.json @@ -0,0 +1,4 @@ +{ + "name": "testrealm", + "infinite_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhX2FlYSI6WyIuKjo6LioiXSwiYV9jaCI6WyJKT0lOOjouKiIsIldBVENIOjouKiJdLCJhX2YiOlsiLio6Oi4qIl0sImFfcGEiOlsiLio6Oi4qIl0sImFfcm1hIjpbIi4qOjouKiJdLCJpYXQiOjE2MDA3MDE5NDl9.WPZ9ttUAyjqnNfzYyqxl0T2mPBLXrEp9SJVIs_bH8GE" +} diff --git a/astarte-dashboard/cypress/fixtures/test.astarte.AggregatedObjectInterface.json b/astarte-dashboard/cypress/fixtures/test.astarte.AggregatedObjectInterface.json new file mode 100644 index 0000000000..4bf3f1bf5e --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/test.astarte.AggregatedObjectInterface.json @@ -0,0 +1,82 @@ +{ + "data": { + "interface_name": "test.astarte.AggregatedObjectInterface", + "version_major": 1, + "version_minor": 0, + "type": "datastream", + "ownership": "device", + "aggregation": "object", + "mappings": [ + { + "endpoint": "/sensors/%{sensor_id}/value/binaryblob", + "type": "binaryblob", + "explicit_timestamp": true + }, + { + "endpoint": "/sensors/%{sensor_id}/value/boolean", + "type": "boolean", + "explicit_timestamp": true + }, + { + "endpoint": "/sensors/%{sensor_id}/value/datetime", + "type": "datetime", + "explicit_timestamp": true + }, + { + "endpoint": "/sensors/%{sensor_id}/value/double", + "type": "double", + "explicit_timestamp": true + }, + { + "endpoint": "/sensors/%{sensor_id}/value/integer", + "type": "integer", + "explicit_timestamp": true + }, + { + "endpoint": "/sensors/%{sensor_id}/value/longinteger", + "type": "longinteger", + "explicit_timestamp": true + }, + { + "endpoint": "/sensors/%{sensor_id}/value/string", + "type": "string", + "explicit_timestamp": true + }, + { + "endpoint": "/sensors/%{sensor_id}/value/binaryblobarray", + "type": "binaryblobarray", + "explicit_timestamp": true + }, + { + "endpoint": "/sensors/%{sensor_id}/value/booleanarray", + "type": "booleanarray", + "explicit_timestamp": true + }, + { + "endpoint": "/sensors/%{sensor_id}/value/datetimearray", + "type": "datetimearray", + "explicit_timestamp": true + }, + { + "endpoint": "/sensors/%{sensor_id}/value/doublearray", + "type": "doublearray", + "explicit_timestamp": true + }, + { + "endpoint": "/sensors/%{sensor_id}/value/integerarray", + "type": "integerarray", + "explicit_timestamp": true + }, + { + "endpoint": "/sensors/%{sensor_id}/value/longintegerarray", + "type": "longintegerarray", + "explicit_timestamp": true + }, + { + "endpoint": "/sensors/%{sensor_id}/value/stringarray", + "type": "stringarray", + "explicit_timestamp": true + } + ] + } +} diff --git a/astarte-dashboard/cypress/fixtures/test.astarte.FirstInterface.json b/astarte-dashboard/cypress/fixtures/test.astarte.FirstInterface.json new file mode 100644 index 0000000000..f299614249 --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/test.astarte.FirstInterface.json @@ -0,0 +1,16 @@ +{ + "data": { + "interface_name": "test.astarte.FirstInterface", + "version_major": 0, + "version_minor": 1, + "type": "datastream", + "ownership": "device", + "mappings": [ + { + "endpoint": "/test", + "type": "double", + "explicit_timestamp": true + } + ] + } +} diff --git a/astarte-dashboard/cypress/fixtures/test.astarte.FirstTrigger.json b/astarte-dashboard/cypress/fixtures/test.astarte.FirstTrigger.json new file mode 100644 index 0000000000..6b2dcc9039 --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/test.astarte.FirstTrigger.json @@ -0,0 +1,21 @@ +{ + "data": { + "name": "Test trigger", + "action": { + "http_url": "http://www.example.com", + "ignore_ssl_errors": false, + "http_method": "post", + "http_static_headers": {} + }, + "simple_triggers": [ + { + "type": "data_trigger", + "interface_name": "test.astarte.FirstInterface", + "interface_major": 0, + "on": "incoming_data", + "match_path": "/*", + "value_match_operator": "*" + } + ] + } +} diff --git a/astarte-dashboard/cypress/fixtures/test.astarte.IndividualObjectInterface.json b/astarte-dashboard/cypress/fixtures/test.astarte.IndividualObjectInterface.json new file mode 100644 index 0000000000..9082ffa524 --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/test.astarte.IndividualObjectInterface.json @@ -0,0 +1,31 @@ +{ + "data": { + "interface_name": "test.astarte.IndividualObjectInterface", + "version_major": 1, + "version_minor": 0, + "type": "datastream", + "ownership": "device", + "mappings": [ + { + "endpoint": "/humidity/value/current", + "type": "double", + "explicit_timestamp": true + }, + { + "endpoint": "/sensors/%{sensor}/estimated", + "type": "double", + "explicit_timestamp": true + }, + { + "endpoint": "/temperature", + "type": "double", + "explicit_timestamp": true + }, + { + "endpoint": "/weekend/time", + "type": "boolean", + "explicit_timestamp": true + } + ] + } +} diff --git a/astarte-dashboard/cypress/fixtures/test.astarte.NoDefaultsInterface.json b/astarte-dashboard/cypress/fixtures/test.astarte.NoDefaultsInterface.json new file mode 100644 index 0000000000..bb0a6b31d6 --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/test.astarte.NoDefaultsInterface.json @@ -0,0 +1,36 @@ +{ + "data": { + "interface_name": "test.astarte.NoDefaultsInterface", + "version_major": 2, + "version_minor": 2, + "type": "datastream", + "ownership": "device", + "aggregation": "object", + "description": "Interface description", + "doc": "Interface documentation", + "mappings": [ + { + "endpoint": "/objects/boolean", + "type": "boolean", + "reliability": "guaranteed", + "retention": "volatile", + "expiry": 120, + "database_retention_policy": "use_ttl", + "database_retention_ttl": 120, + "explicit_timestamp": true + }, + { + "endpoint": "/objects/string", + "type": "string", + "reliability": "guaranteed", + "retention": "volatile", + "expiry": 120, + "database_retention_policy": "use_ttl", + "database_retention_ttl": 120, + "explicit_timestamp": true, + "description": "Mapping description", + "doc": "Mapping documentation" + } + ] + } +} diff --git a/astarte-dashboard/cypress/fixtures/test.astarte.PropertiesInterface.json b/astarte-dashboard/cypress/fixtures/test.astarte.PropertiesInterface.json new file mode 100644 index 0000000000..ee0afa052f --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/test.astarte.PropertiesInterface.json @@ -0,0 +1,23 @@ +{ + "data": { + "interface_name": "test.astarte.PropertiesInterface", + "version_major": 1, + "version_minor": 0, + "type": "properties", + "ownership": "device", + "mappings": [ + { + "endpoint": "/%{room}/heating/active", + "type": "boolean" + }, + { + "endpoint": "/lights/bath", + "type": "booleanarray" + }, + { + "endpoint": "/lights/kitchen", + "type": "boolean" + } + ] + } +} diff --git a/astarte-dashboard/cypress/fixtures/test.astarte.SpecifiedDefaultsInterface.json b/astarte-dashboard/cypress/fixtures/test.astarte.SpecifiedDefaultsInterface.json new file mode 100644 index 0000000000..960960bf2b --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/test.astarte.SpecifiedDefaultsInterface.json @@ -0,0 +1,34 @@ +{ + "data": { + "interface_name": "test.astarte.SpecifiedDefaultsInterface", + "version_major": 0, + "version_minor": 1, + "type": "datastream", + "ownership": "device", + "aggregation": "individual", + "description": "Interface description", + "doc": "Interface documentation", + "mappings": [ + { + "endpoint": "/objects/boolean", + "type": "boolean", + "reliability": "unreliable", + "retention": "discard", + "database_retention_policy": "no_ttl", + "explicit_timestamp": false + }, + { + "endpoint": "/objects/string", + "type": "string", + "reliability": "unreliable", + "retention": "volatile", + "expiry": 0, + "database_retention_policy": "use_ttl", + "database_retention_ttl": 60, + "explicit_timestamp": false, + "description": "Mapping description", + "doc": "Mapping documentation" + } + ] + } +} diff --git a/astarte-dashboard/cypress/fixtures/test_aggregated_object_interface_linearized_values.json b/astarte-dashboard/cypress/fixtures/test_aggregated_object_interface_linearized_values.json new file mode 100644 index 0000000000..e782bd6da3 --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/test_aggregated_object_interface_linearized_values.json @@ -0,0 +1,338 @@ +[ + { + "endpoint": "/sensors/sensor-1/value/binaryblob", + "timestamp": "2020-09-28T13:38:32+0000", + "value": "", + "type": "binaryblob" + }, + { + "endpoint": "/sensors/sensor-1/value/boolean", + "timestamp": "2020-09-28T13:38:32+0000", + "value": null, + "type": "boolean" + }, + { + "endpoint": "/sensors/sensor-1/value/datetime", + "timestamp": "2020-09-28T13:38:32+0000", + "value": null, + "type": "datetime" + }, + { + "endpoint": "/sensors/sensor-1/value/double", + "timestamp": "2020-09-28T13:38:32+0000", + "value": 0, + "type": "double" + }, + { + "endpoint": "/sensors/sensor-1/value/integer", + "timestamp": "2020-09-28T13:38:32+0000", + "value": 0, + "type": "integer" + }, + { + "endpoint": "/sensors/sensor-1/value/longinteger", + "timestamp": "2020-09-28T13:38:32+0000", + "value": null, + "type": "longinteger" + }, + { + "endpoint": "/sensors/sensor-1/value/string", + "timestamp": "2020-09-28T13:38:32+0000", + "value": "", + "type": "string" + }, + { + "endpoint": "/sensors/sensor-1/value/binaryblobarray", + "timestamp": "2020-09-28T13:38:32+0000", + "value": [], + "type": "binaryblobarray" + }, + { + "endpoint": "/sensors/sensor-1/value/booleanarray", + "timestamp": "2020-09-28T13:38:32+0000", + "value": [], + "type": "booleanarray" + }, + { + "endpoint": "/sensors/sensor-1/value/datetimearray", + "timestamp": "2020-09-28T13:38:32+0000", + "value": [], + "type": "datetimearray" + }, + { + "endpoint": "/sensors/sensor-1/value/doublearray", + "timestamp": "2020-09-28T13:38:32+0000", + "value": [], + "type": "doublearray" + }, + { + "endpoint": "/sensors/sensor-1/value/integerarray", + "timestamp": "2020-09-28T13:38:32+0000", + "value": [1, 2], + "type": "integerarray" + }, + { + "endpoint": "/sensors/sensor-1/value/longintegerarray", + "timestamp": "2020-09-28T13:38:32+0000", + "value": [], + "type": "longintegerarray" + }, + { + "endpoint": "/sensors/sensor-1/value/stringarray", + "timestamp": "2020-09-28T13:38:32+0000", + "value": [], + "type": "stringarray" + }, + { + "endpoint": "/sensors/sensor-1/value/binaryblob", + "timestamp": "2020-09-28T13:38:33+0000", + "value": "binaryblob1", + "type": "binaryblob" + }, + { + "endpoint": "/sensors/sensor-1/value/boolean", + "timestamp": "2020-09-28T13:38:33+0000", + "value": false, + "type": "boolean" + }, + { + "endpoint": "/sensors/sensor-1/value/datetime", + "timestamp": "2020-09-28T13:38:33+0000", + "value": "2020-01-01T12:13:14+0000", + "type": "datetime" + }, + { + "endpoint": "/sensors/sensor-1/value/double", + "timestamp": "2020-09-28T13:38:33+0000", + "value": 1.2, + "type": "double" + }, + { + "endpoint": "/sensors/sensor-1/value/integer", + "timestamp": "2020-09-28T13:38:33+0000", + "value": 1, + "type": "integer" + }, + { + "endpoint": "/sensors/sensor-1/value/longinteger", + "timestamp": "2020-09-28T13:38:33+0000", + "value": "987654321", + "type": "longinteger" + }, + { + "endpoint": "/sensors/sensor-1/value/string", + "timestamp": "2020-09-28T13:38:33+0000", + "value": "string", + "type": "string" + }, + { + "endpoint": "/sensors/sensor-1/value/binaryblobarray", + "timestamp": "2020-09-28T13:38:33+0000", + "value": ["binaryblobarray1", "binaryblobarray2"], + "type": "binaryblobarray" + }, + { + "endpoint": "/sensors/sensor-1/value/booleanarray", + "timestamp": "2020-09-28T13:38:33+0000", + "value": [false, true], + "type": "booleanarray" + }, + { + "endpoint": "/sensors/sensor-1/value/datetimearray", + "timestamp": "2020-09-28T13:38:33+0000", + "value": ["2020-01-01T12:13:14+0000", "2020-01-01T12:13:14+0000"], + "type": "datetimearray" + }, + { + "endpoint": "/sensors/sensor-1/value/doublearray", + "timestamp": "2020-09-28T13:38:33+0000", + "value": [1.1, 2.2], + "type": "doublearray" + }, + { + "endpoint": "/sensors/sensor-1/value/integerarray", + "timestamp": "2020-09-28T13:38:33+0000", + "value": [1, 2], + "type": "integerarray" + }, + { + "endpoint": "/sensors/sensor-1/value/longintegerarray", + "timestamp": "2020-09-28T13:38:33+0000", + "value": ["1234", "5678"], + "type": "longintegerarray" + }, + { + "endpoint": "/sensors/sensor-1/value/stringarray", + "timestamp": "2020-09-28T13:38:33+0000", + "value": ["stringarray1", "stringarray2"], + "type": "stringarray" + }, + { + "endpoint": "/sensors/sensor-1/value/binaryblob", + "timestamp": "2020-09-28T13:38:34+0000", + "value": "binaryblob2", + "type": "binaryblob" + }, + { + "endpoint": "/sensors/sensor-1/value/boolean", + "timestamp": "2020-09-28T13:38:34+0000", + "value": true, + "type": "boolean" + }, + { + "endpoint": "/sensors/sensor-1/value/datetime", + "timestamp": "2020-09-28T13:38:34+0000", + "value": "2020-01-01T12:13:15+0000", + "type": "datetime" + }, + { + "endpoint": "/sensors/sensor-1/value/double", + "timestamp": "2020-09-28T13:38:34+0000", + "value": 1.3, + "type": "double" + }, + { + "endpoint": "/sensors/sensor-1/value/integer", + "timestamp": "2020-09-28T13:38:34+0000", + "value": 2, + "type": "integer" + }, + { + "endpoint": "/sensors/sensor-1/value/longinteger", + "timestamp": "2020-09-28T13:38:34+0000", + "value": "98765", + "type": "longinteger" + }, + { + "endpoint": "/sensors/sensor-1/value/string", + "timestamp": "2020-09-28T13:38:34+0000", + "value": "string2", + "type": "string" + }, + { + "endpoint": "/sensors/sensor-1/value/binaryblobarray", + "timestamp": "2020-09-28T13:38:34+0000", + "value": ["binaryblobarray3", "binaryblobarray4"], + "type": "binaryblobarray" + }, + { + "endpoint": "/sensors/sensor-1/value/booleanarray", + "timestamp": "2020-09-28T13:38:34+0000", + "value": [true, true, false, false], + "type": "booleanarray" + }, + { + "endpoint": "/sensors/sensor-1/value/datetimearray", + "timestamp": "2020-09-28T13:38:34+0000", + "value": ["2020-01-01T12:13:15+0000"], + "type": "datetimearray" + }, + { + "endpoint": "/sensors/sensor-1/value/doublearray", + "timestamp": "2020-09-28T13:38:34+0000", + "value": [3.3, 4.4], + "type": "doublearray" + }, + { + "endpoint": "/sensors/sensor-1/value/integerarray", + "timestamp": "2020-09-28T13:38:34+0000", + "value": [3, 4], + "type": "integerarray" + }, + { + "endpoint": "/sensors/sensor-1/value/longintegerarray", + "timestamp": "2020-09-28T13:38:34+0000", + "value": ["4321", "8765"], + "type": "longintegerarray" + }, + { + "endpoint": "/sensors/sensor-1/value/stringarray", + "timestamp": "2020-09-28T13:38:34+0000", + "value": ["stringarray3", "stringarray4"], + "type": "stringarray" + }, + { + "endpoint": "/sensors/sensor-2/value/binaryblob", + "timestamp": "2020-09-28T13:38:32+0000", + "value": "binaryblob1", + "type": "binaryblob" + }, + { + "endpoint": "/sensors/sensor-2/value/boolean", + "timestamp": "2020-09-28T13:38:32+0000", + "value": false, + "type": "boolean" + }, + { + "endpoint": "/sensors/sensor-2/value/datetime", + "timestamp": "2020-09-28T13:38:32+0000", + "value": "2020-01-01T12:13:14+0000", + "type": "datetime" + }, + { + "endpoint": "/sensors/sensor-2/value/double", + "timestamp": "2020-09-28T13:38:32+0000", + "value": 1.2, + "type": "double" + }, + { + "endpoint": "/sensors/sensor-2/value/integer", + "timestamp": "2020-09-28T13:38:32+0000", + "value": 1, + "type": "integer" + }, + { + "endpoint": "/sensors/sensor-2/value/longinteger", + "timestamp": "2020-09-28T13:38:32+0000", + "value": "987654321", + "type": "longinteger" + }, + { + "endpoint": "/sensors/sensor-2/value/string", + "timestamp": "2020-09-28T13:38:32+0000", + "value": "string", + "type": "string" + }, + { + "endpoint": "/sensors/sensor-2/value/binaryblobarray", + "timestamp": "2020-09-28T13:38:32+0000", + "value": ["binaryblobarray1", "binaryblobarray2"], + "type": "binaryblobarray" + }, + { + "endpoint": "/sensors/sensor-2/value/booleanarray", + "timestamp": "2020-09-28T13:38:32+0000", + "value": [false, true], + "type": "booleanarray" + }, + { + "endpoint": "/sensors/sensor-2/value/datetimearray", + "timestamp": "2020-09-28T13:38:32+0000", + "value": ["2020-01-01T12:13:14+0000", "2020-01-01T12:13:14+0000"], + "type": "datetimearray" + }, + { + "endpoint": "/sensors/sensor-2/value/doublearray", + "timestamp": "2020-09-28T13:38:32+0000", + "value": [1.1, 2.2], + "type": "doublearray" + }, + { + "endpoint": "/sensors/sensor-2/value/integerarray", + "timestamp": "2020-09-28T13:38:32+0000", + "value": [1, 2], + "type": "integerarray" + }, + { + "endpoint": "/sensors/sensor-2/value/longintegerarray", + "timestamp": "2020-09-28T13:38:32+0000", + "value": ["1234", "5678"], + "type": "longintegerarray" + }, + { + "endpoint": "/sensors/sensor-2/value/stringarray", + "timestamp": "2020-09-28T13:38:32+0000", + "value": ["stringarray1", "stringarray2"], + "type": "stringarray" + } +] diff --git a/astarte-dashboard/cypress/fixtures/test_aggregated_object_interface_values.json b/astarte-dashboard/cypress/fixtures/test_aggregated_object_interface_values.json new file mode 100644 index 0000000000..0470f2cb37 --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/test_aggregated_object_interface_values.json @@ -0,0 +1,82 @@ +{ + "data": { + "sensors": { + "sensor-1": { + "value": [ + { + "binaryblob": "", + "boolean": null, + "datetime": null, + "double": 0, + "integer": 0, + "longinteger": null, + "string": "", + "binaryblobarray": [], + "booleanarray": [], + "datetimearray": [], + "doublearray": [], + "integerarray": [1, 2], + "longintegerarray": [], + "stringarray": [], + "timestamp": "2020-09-28T13:38:32+0000" + }, + { + "binaryblob": "binaryblob1", + "boolean": false, + "datetime": "2020-01-01T12:13:14+0000", + "double": 1.2, + "integer": 1, + "longinteger": "987654321", + "string": "string", + "binaryblobarray": ["binaryblobarray1", "binaryblobarray2"], + "booleanarray": [false, true], + "datetimearray": ["2020-01-01T12:13:14+0000", "2020-01-01T12:13:14+0000"], + "doublearray": [1.1, 2.2], + "integerarray": [1, 2], + "longintegerarray": ["1234", "5678"], + "stringarray": ["stringarray1", "stringarray2"], + "timestamp": "2020-09-28T13:38:33+0000" + }, + { + "binaryblob": "binaryblob2", + "boolean": true, + "datetime": "2020-01-01T12:13:15+0000", + "double": 1.3, + "integer": 2, + "longinteger": "98765", + "string": "string2", + "binaryblobarray": ["binaryblobarray3", "binaryblobarray4"], + "booleanarray": [true, true, false, false], + "datetimearray": ["2020-01-01T12:13:15+0000"], + "doublearray": [3.3, 4.4], + "integerarray": [3, 4], + "longintegerarray": ["4321", "8765"], + "stringarray": ["stringarray3", "stringarray4"], + "timestamp": "2020-09-28T13:38:34+0000" + } + ] + }, + "sensor-2": { + "value": [ + { + "binaryblob": "binaryblob1", + "boolean": false, + "datetime": "2020-01-01T12:13:14+0000", + "double": 1.2, + "integer": 1, + "longinteger": "987654321", + "string": "string", + "binaryblobarray": ["binaryblobarray1", "binaryblobarray2"], + "booleanarray": [false, true], + "datetimearray": ["2020-01-01T12:13:14+0000", "2020-01-01T12:13:14+0000"], + "doublearray": [1.1, 2.2], + "integerarray": [1, 2], + "longintegerarray": ["1234", "5678"], + "stringarray": ["stringarray1", "stringarray2"], + "timestamp": "2020-09-28T13:38:32+0000" + } + ] + } + } + } +} diff --git a/astarte-dashboard/cypress/fixtures/test_individual_object_interface_linearized_values.json b/astarte-dashboard/cypress/fixtures/test_individual_object_interface_linearized_values.json new file mode 100644 index 0000000000..a4639ac048 --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/test_individual_object_interface_linearized_values.json @@ -0,0 +1,32 @@ +[ + { + "endpoint": "/humidity/value/current", + "timestamp": "2020-10-14T12:26:36.492Z", + "type": "double", + "value": 70 + }, + { + "endpoint": "/sensors/light/estimated", + "timestamp": "2020-10-14T12:27:13.200Z", + "type": "double", + "value": 82 + }, + { + "endpoint": "/sensors/proximity/estimated", + "timestamp": "2020-10-14T12:26:54.305Z", + "type": "double", + "value": -11 + }, + { + "endpoint": "/temperature", + "timestamp": "2020-10-14T12:26:29.797Z", + "type": "double", + "value": 23 + }, + { + "endpoint": "/weekend/time", + "timestamp": "2020-10-14T12:27:31.017Z", + "type": "boolean", + "value": true + } +] diff --git a/astarte-dashboard/cypress/fixtures/test_individual_object_interface_path_values.json b/astarte-dashboard/cypress/fixtures/test_individual_object_interface_path_values.json new file mode 100644 index 0000000000..83247c8aeb --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/test_individual_object_interface_path_values.json @@ -0,0 +1,14 @@ +{ + "data": [ + { + "reception_timestamp": "2020-10-14T12:27:02.331Z", + "timestamp": "2020-10-14T12:27:02.331Z", + "value": 81.0 + }, + { + "reception_timestamp": "2020-10-14T12:27:13.200Z", + "timestamp": "2020-10-14T12:27:13.200Z", + "value": 82.0 + } + ] +} diff --git a/astarte-dashboard/cypress/fixtures/test_individual_object_interface_values.json b/astarte-dashboard/cypress/fixtures/test_individual_object_interface_values.json new file mode 100644 index 0000000000..a9793a553e --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/test_individual_object_interface_values.json @@ -0,0 +1,41 @@ +{ + "data": { + "humidity": { + "value": { + "current": { + "reception_timestamp": "2020-10-14T12:26:36.492Z", + "timestamp": "2020-10-14T12:26:36.492Z", + "value": 70.0 + } + } + }, + "sensors": { + "light": { + "estimated": { + "reception_timestamp": "2020-10-14T12:27:13.200Z", + "timestamp": "2020-10-14T12:27:13.200Z", + "value": 82.0 + } + }, + "proximity": { + "estimated": { + "reception_timestamp": "2020-10-14T12:26:54.305Z", + "timestamp": "2020-10-14T12:26:54.305Z", + "value": -11.0 + } + } + }, + "temperature": { + "reception_timestamp": "2020-10-14T12:26:29.797Z", + "timestamp": "2020-10-14T12:26:29.797Z", + "value": 23.0 + }, + "weekend": { + "time": { + "reception_timestamp": "2020-10-14T12:27:31.017Z", + "timestamp": "2020-10-14T12:27:31.017Z", + "value": true + } + } + } +} diff --git a/astarte-dashboard/cypress/fixtures/test_properties_interface_linearized_values.json b/astarte-dashboard/cypress/fixtures/test_properties_interface_linearized_values.json new file mode 100644 index 0000000000..cfd113981b --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/test_properties_interface_linearized_values.json @@ -0,0 +1,7 @@ +[ + { "endpoint": "/bathroom/heating/active", "value": false, "type": "boolean" }, + { "endpoint": "/bedroom/heating/active", "value": true, "type": "boolean" }, + { "endpoint": "/kitchen/heating/active", "value": true, "type": "boolean" }, + { "endpoint": "/lights/bath", "value": [false, false], "type": "booleanarray" }, + { "endpoint": "/lights/kitchen", "value": false, "type": "boolean" } +] diff --git a/astarte-dashboard/cypress/fixtures/test_properties_interface_values.json b/astarte-dashboard/cypress/fixtures/test_properties_interface_values.json new file mode 100644 index 0000000000..5ec9fa96b5 --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/test_properties_interface_values.json @@ -0,0 +1,8 @@ +{ + "data": { + "bathroom": { "heating": { "active": false } }, + "bedroom": { "heating": { "active": true } }, + "kitchen": { "heating": { "active": true } }, + "lights": { "bath": [false, false], "kitchen": false } + } +} diff --git a/astarte-dashboard/cypress/fixtures/triggers.json b/astarte-dashboard/cypress/fixtures/triggers.json new file mode 100644 index 0000000000..e74e31fc51 --- /dev/null +++ b/astarte-dashboard/cypress/fixtures/triggers.json @@ -0,0 +1,6 @@ +{ + "data": [ + "test.astarte.FirstTrigger", + "test.astarte.SecondTrigger" + ] +} diff --git a/astarte-dashboard/cypress/support/e2e.js b/astarte-dashboard/cypress/support/e2e.js new file mode 100644 index 0000000000..25fc544449 --- /dev/null +++ b/astarte-dashboard/cypress/support/e2e.js @@ -0,0 +1,105 @@ +import websocketMock from './websocket'; + +// TODO: we're defining a dynamicIntercept command since we cannot override interceptors +// For more details see issue: https://github.com/cypress-io/cypress/issues/9302 +Cypress.Commands.add('dynamicIntercept', (alias, method, url, response) => { + const key = `${alias}-${method}-${url}`; + const intercepts = Cypress.config('intercepts'); + if (!(key in intercepts)) { + cy.intercept(method, url, (req) => { + return req.reply(intercepts[key]); + }).as(alias); + } + intercepts[key] = response; +}); + +// This hook runs before each test of every test suite +// So this query will be already mocked in every test +beforeEach(() => { + // Reset cached intercept responses + Cypress.config('intercepts', {}); + // unless overwritten, test expecting https connections + cy.fixture('config/https').then((userConfig) => { + cy.dynamicIntercept('getUserConfig', 'GET', '/user-config/config.json', { body: userConfig }); + }); +}); + +Cypress.Commands.add('login', () => { + cy.fixture('realm').then((realm) => { + const session = { + _version: 1, + realm: realm.name, + token: realm.infinite_token, + }; + cy.setCookie('session', JSON.stringify(session)) + }); +}); + +Cypress.Commands.add('dragOnto', { prevSubject: 'element' }, (subject, targetSelector) => { + const dataTransfer = new DataTransfer(); + cy.wrap(subject.get(0)).trigger('dragstart', { dataTransfer }); + cy.get(targetSelector).trigger('drop', { dataTransfer, force: true }); +}); + +Cypress.Commands.add('moveTo', { prevSubject: 'element' }, (subject, diffX, diffY) => { + return cy + .wrap(subject.get(0)) + .trigger('mousedown', { button: 0 }, { force: true }) + .trigger('mousemove', diffX, diffY, { force: true }) + .trigger('mouseup', { force: true }); +}); + +Cypress.Commands.add('moveOnto', { prevSubject: 'element' }, (subject, targetSelector) => { + cy.get(targetSelector).then((target) => { + const targetRect = target.get(0).getBoundingClientRect(); + const subjectRect = subject.get(0).getBoundingClientRect(); + const diffX = targetRect.left - subjectRect.left; + const diffY = targetRect.top - subjectRect.top; + cy.wrap(subject.get(0)) + .trigger('mousedown', { button: 0 }, { force: true }) + .trigger('mousemove', diffX, diffY, { force: true }); + cy.wrap(target.get(0)).trigger('mouseup', { force: true }); + }); +}); + +Cypress.Commands.add('mockWebSocket', ({ url }) => { + cy.on('window:before:load', (win) => { + websocketMock.injectMock(win, url); + }); +}); + +Cypress.Commands.add('sendWebSocketDeviceConnected', ({ deviceId, deviceIpAddress }) => { + cy.window().then((win) => { + websocketMock.sendDeviceConnected(win, { deviceId, deviceIpAddress }); + }); +}); + +Cypress.Commands.add('sendWebSocketDeviceDisconnected', ({ deviceId }) => { + cy.window().then((win) => { + websocketMock.sendDeviceDisconnected(win, { deviceId }); + }); +}); + +Cypress.Commands.add('sendWebSocketDeviceEvent', ({ deviceId, event }) => { + cy.window().then((win) => { + websocketMock.sendDeviceEvent(win, { deviceId, event }); + }); +}); + +Cypress.Commands.add( + 'paste', + { + prevSubject: true, + element: true, + }, + ($element, text = '') => { + cy.get($element) + .click() + .then(() => { + $element.text(text); + $element.val(text); + const sampleCharacter = text.length > 0 ? text[text.length - 1] : 'a'; + cy.get($element).type(`${sampleCharacter}{backspace}{movetoend}`); + }); + }, +); diff --git a/astarte-dashboard/cypress/support/websocket.js b/astarte-dashboard/cypress/support/websocket.js new file mode 100644 index 0000000000..aca7bf1ec9 --- /dev/null +++ b/astarte-dashboard/cypress/support/websocket.js @@ -0,0 +1,127 @@ +import { WebSocket, Server } from 'mock-socket'; + +const CHANNEL_EVENTS = { + close: 'phx_close', + error: 'phx_error', + join: 'phx_join', + reply: 'phx_reply', + leave: 'phx_leave', +}; + +const CHANNEL_CUSTOM_EVENTS = { + watch: 'watch', + watchAdded: 'watch_added', + newEvent: 'new_event', +}; + +const decodeMessage = (messageString) => { + const [joinRef, ref, topic, event, payload] = JSON.parse(messageString); + return { joinRef, ref, topic, event, payload }; +}; + +const encodeMessage = (message) => { + const { joinRef, ref, topic, event, payload } = message; + return JSON.stringify([joinRef, ref, topic, event, payload]); +}; + +const computeMessageAck = (message) => { + const { joinRef, ref, topic } = message; + const messageAck = { + joinRef, + ref, + topic, + event: CHANNEL_EVENTS.reply, + payload: { response: {}, status: 'ok' }, + }; + return messageAck; +}; + +const computeMessageReply = (message) => { + const { topic, event, payload } = message; + switch (event) { + case CHANNEL_CUSTOM_EVENTS.watch: + return { + joinRef: null, + ref: null, + topic, + event: CHANNEL_CUSTOM_EVENTS.watchAdded, + payload, + }; + default: + return null; + } +}; + +const generateDeviceMessage = (context, { deviceId, event }) => { + if (!context.currentTopic || !deviceId || !event) { + return null; + } + const message = { + joinRef: null, + ref: null, + topic: context.currentTopic, + event: CHANNEL_CUSTOM_EVENTS.newEvent, + payload: { + device_id: deviceId, + event, + timestamp: new Date().toISOString(), + }, + }; + return message; +}; + +const sendMessage = (context, message) => { + if (!message || !context.mockedSocket) { + return; + } + context.mockedSocket.send(encodeMessage(message)); +}; + +const injectMock = (context, url) => { + if (!url) { + return; + } + context.WebSocket = WebSocket; + if (context.mockedServer) { + context.mockedServer.stop(); + context.mockedServer = null; + context.mockedSocket = null; + context.currentTopic = null; + } + context.mockedServer = new Server(url); + context.mockedServer.on('connection', (socket) => { + context.mockedSocket = socket; + context.mockedSocket.on('message', (messageString) => { + const message = decodeMessage(messageString); + context.currentTopic = message.topic; + const messageAck = computeMessageAck(message); + const messageReply = computeMessageReply(message); + sendMessage(context, messageAck); + sendMessage(context, messageReply); + }); + }); +}; + +const sendDeviceConnected = (context, { deviceId, deviceIpAddress }) => { + const event = { device_ip_address: deviceIpAddress || '1.1.1.1', type: 'device_connected' }; + const message = generateDeviceMessage(context, { deviceId, event }); + sendMessage(context, message); +}; + +const sendDeviceDisconnected = (context, { deviceId }) => { + const event = { type: 'device_disconnected' }; + const message = generateDeviceMessage(context, { deviceId, event }); + sendMessage(context, message); +}; + +const sendDeviceEvent = (context, { deviceId, event }) => { + const message = generateDeviceMessage(context, { deviceId, event }); + sendMessage(context, message); +}; + +export default { + injectMock, + sendDeviceConnected, + sendDeviceDisconnected, + sendDeviceEvent, +}; diff --git a/astarte-dashboard/default.conf b/astarte-dashboard/default.conf new file mode 100644 index 0000000000..411e5e5538 --- /dev/null +++ b/astarte-dashboard/default.conf @@ -0,0 +1,18 @@ +server { + listen 80; + server_name localhost; + + location / { + root /usr/share/nginx/html; + index index.html index.htm; + # Make sure we craft SPA requests correctly + try_files $uri $uri/ /index.html; + } + + # redirect server error pages to the static page /50x.html + # + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + } +} diff --git a/astarte-dashboard/index.html b/astarte-dashboard/index.html new file mode 100644 index 0000000000..57deb29514 --- /dev/null +++ b/astarte-dashboard/index.html @@ -0,0 +1,15 @@ + + + + + + + + + Astarte - Dashboard + + +
+ + + diff --git a/astarte-dashboard/package-lock.json b/astarte-dashboard/package-lock.json new file mode 100644 index 0000000000..ac71f0c5b1 --- /dev/null +++ b/astarte-dashboard/package-lock.json @@ -0,0 +1,12438 @@ +{ + "name": "astarte-dashboard", + "version": "1.3.0-rc.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "astarte-dashboard", + "version": "1.3.0-rc.1", + "license": "Apache-2.0", + "dependencies": { + "@astarte-platform/react-bootstrap": "^5.15.0", + "@emotion/core": "^11.0.0", + "@emotion/react": "^11.14.0", + "@emotion/styled": "^11.14.0", + "@fortawesome/fontawesome-free": "^6.7.2", + "@projectstorm/react-canvas-core": "^7.0.2", + "@projectstorm/react-diagrams": "^7.0.4", + "@reduxjs/toolkit": "^2.5.0", + "@rjsf/core": "^5.23.2", + "@rjsf/validator-ajv8": "^5.23.2", + "@testing-library/react": "^14.3.1", + "@testing-library/user-event": "^14.5.2", + "@types/color": "^3.0.6", + "@types/js-cookie": "^3.0.6", + "@types/jsrsasign": "^10.5.15", + "@types/lodash": "^4.17.13", + "@types/phoenix": "^1.6.6", + "@types/react": "^18.3.18", + "@types/react-datepicker": "^4.19.6", + "@types/react-dom": "^18.3.5", + "@types/react-redux": "^7.1.34", + "@types/react-syntax-highlighter": "^15.5.13", + "@types/semver": "^7.5.8", + "@types/uuid": "^9.0.8", + "@types/yup": "^0.29.14", + "@vitejs/plugin-react": "^4.3.4", + "ajv": "^8.17.1", + "axios": "^1.7.9", + "bootstrap": "^5.3.3", + "chart.js": "^4.4.7", + "closest": "^0.0.1", + "color": "^4.2.3", + "dagre": "^0.8.5", + "dayjs": "^1.11.13", + "eslint-config-prettier": "^9.1.0", + "eslint-config-react-app": "^7.0.1", + "eslint-plugin-cypress": "^2.15.2", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-testing-library": "^6.5.0", + "history": "^5.3.0", + "js-cookie": "^3.0.5", + "jsdom": "^24.1.3", + "jsrsasign": "^11.1.0", + "lodash": "^4.17.21", + "mock-socket": "^9.3.1", + "pathfinding": "^0.4.18", + "paths-js": "^0.4.11", + "phoenix": "^1.7.18", + "react": "^18.3.1", + "react-bootstrap": "^2.10.7", + "react-chartjs-2": "^5.2.0", + "react-datepicker": "^6.9.0", + "react-dom": "^18.3.1", + "react-redux": "^9.2.0", + "react-router-dom": "^6.28.1", + "react-syntax-highlighter": "^15.6.1", + "resize-observer-polyfill": "^1.5.1", + "sass": "^1.83.0", + "semver": "^6.3.1", + "typescript": "^5.7.2", + "uuid": "^9.0.1", + "vite": "^5.4.14", + "vite-plugin-eslint": "^1.8.1", + "vite-tsconfig-paths": "^4.3.2", + "vitest": "^1.6.1", + "yup": "^0.29.3" + }, + "devDependencies": { + "cypress": "^13.17.0", + "prettier": "^3.4.2" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@astarte-platform/react-bootstrap": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@astarte-platform/react-bootstrap/-/react-bootstrap-5.15.0.tgz", + "integrity": "sha512-+aladR1tYXTrIhfW7rP0fGFbqLW4LbeeD/apm0elnhBTLV4sqn171A1xlgq5dXqIKFM6nioyNCxZpbvuOGR9zw==", + "license": "MIT", + "dependencies": { + "@react-icons/all-files": "^4.1.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@rjsf/core": "^5.12.x", + "@rjsf/utils": "^5.12.x", + "react": "^16.14.0 || >=17", + "react-bootstrap": "^2.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.3.tgz", + "integrity": "sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", + "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.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.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "node_modules/@babel/eslint-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.25.9.tgz", + "integrity": "sha512-5UXfgpK0j0Xr/xIdgdLEhOFxaDZ0bRPWJJchRpqOSur/3rZoPbqqki5mm0p4NE2cs28krBEiSM2MB7//afRSQQ==", + "license": "MIT", + "dependencies": { + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0", + "eslint": "^7.5.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, + "node_modules/@babel/generator": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.3.tgz", + "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.26.3", + "@babel/types": "^7.26.3", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", + "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", + "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", + "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/traverse": "^7.25.9", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz", + "integrity": "sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "regexpu-core": "^6.2.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz", + "integrity": "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==", + "license": "MIT", + "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" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", + "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", + "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", + "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz", + "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-wrap-function": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz", + "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", + "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz", + "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", + "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz", + "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.26.3" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz", + "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz", + "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz", + "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz", + "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.25.9.tgz", + "integrity": "sha512-smkNLL/O1ezy9Nhy4CNosc4Va+1wo5w4gzSZeLe6y6dM4mmHfYOCPolXQPHQxonZCF+ZyebxN9vqOolkYrSn5g==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-syntax-decorators": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", + "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead.", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.25.9.tgz", + "integrity": "sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-flow": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.26.0.tgz", + "integrity": "sha512-B+O2DnPc0iG+YXFqOxv2WNuNU97ToWjOomUQ78DouOENWUaM5sVrmet9mcomUGQFwpJd//gvUagXBSdzO1fRKg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz", + "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", + "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", + "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz", + "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz", + "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz", + "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz", + "integrity": "sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz", + "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz", + "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz", + "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz", + "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/traverse": "^7.25.9", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz", + "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/template": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz", + "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz", + "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz", + "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz", + "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz", + "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz", + "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.25.9.tgz", + "integrity": "sha512-/VVukELzPDdci7UUsWQaSkhgnjIWXnIyRpM02ldxaVoFK96c41So8JcKT3m0gYjyv7j5FNPGS5vfELrWalkbDA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-syntax-flow": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz", + "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz", + "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz", + "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz", + "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz", + "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz", + "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz", + "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz", + "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz", + "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz", + "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz", + "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz", + "integrity": "sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz", + "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz", + "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz", + "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz", + "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz", + "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz", + "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz", + "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz", + "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.9.tgz", + "integrity": "sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz", + "integrity": "sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-syntax-jsx": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.9.tgz", + "integrity": "sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==", + "license": "MIT", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz", + "integrity": "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz", + "integrity": "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.9.tgz", + "integrity": "sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz", + "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz", + "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz", + "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.9.tgz", + "integrity": "sha512-nZp7GlEl+yULJrClz0SwHPqir3lc0zsPrDHQUcxGspSL7AKrexNSEfTbfqnDNJUO13bgKyfuOLMF8Xqtu8j3YQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.6", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz", + "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz", + "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz", + "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz", + "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz", + "integrity": "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.26.3.tgz", + "integrity": "sha512-6+5hpdr6mETwSKjmJUdYw0EIkATiQhnELWlE3kJFBwSg/BGIVwVaVbX+gOXBCdc7Ln1RXZxyWGecIXhUfnl7oA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-syntax-typescript": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz", + "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz", + "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz", + "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz", + "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.0.tgz", + "integrity": "sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.26.0", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.26.0", + "@babel/plugin-syntax-import-attributes": "^7.26.0", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.25.9", + "@babel/plugin-transform-async-generator-functions": "^7.25.9", + "@babel/plugin-transform-async-to-generator": "^7.25.9", + "@babel/plugin-transform-block-scoped-functions": "^7.25.9", + "@babel/plugin-transform-block-scoping": "^7.25.9", + "@babel/plugin-transform-class-properties": "^7.25.9", + "@babel/plugin-transform-class-static-block": "^7.26.0", + "@babel/plugin-transform-classes": "^7.25.9", + "@babel/plugin-transform-computed-properties": "^7.25.9", + "@babel/plugin-transform-destructuring": "^7.25.9", + "@babel/plugin-transform-dotall-regex": "^7.25.9", + "@babel/plugin-transform-duplicate-keys": "^7.25.9", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-dynamic-import": "^7.25.9", + "@babel/plugin-transform-exponentiation-operator": "^7.25.9", + "@babel/plugin-transform-export-namespace-from": "^7.25.9", + "@babel/plugin-transform-for-of": "^7.25.9", + "@babel/plugin-transform-function-name": "^7.25.9", + "@babel/plugin-transform-json-strings": "^7.25.9", + "@babel/plugin-transform-literals": "^7.25.9", + "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", + "@babel/plugin-transform-member-expression-literals": "^7.25.9", + "@babel/plugin-transform-modules-amd": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.25.9", + "@babel/plugin-transform-modules-systemjs": "^7.25.9", + "@babel/plugin-transform-modules-umd": "^7.25.9", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-new-target": "^7.25.9", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.9", + "@babel/plugin-transform-numeric-separator": "^7.25.9", + "@babel/plugin-transform-object-rest-spread": "^7.25.9", + "@babel/plugin-transform-object-super": "^7.25.9", + "@babel/plugin-transform-optional-catch-binding": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9", + "@babel/plugin-transform-private-methods": "^7.25.9", + "@babel/plugin-transform-private-property-in-object": "^7.25.9", + "@babel/plugin-transform-property-literals": "^7.25.9", + "@babel/plugin-transform-regenerator": "^7.25.9", + "@babel/plugin-transform-regexp-modifiers": "^7.26.0", + "@babel/plugin-transform-reserved-words": "^7.25.9", + "@babel/plugin-transform-shorthand-properties": "^7.25.9", + "@babel/plugin-transform-spread": "^7.25.9", + "@babel/plugin-transform-sticky-regex": "^7.25.9", + "@babel/plugin-transform-template-literals": "^7.25.9", + "@babel/plugin-transform-typeof-symbol": "^7.25.9", + "@babel/plugin-transform-unicode-escapes": "^7.25.9", + "@babel/plugin-transform-unicode-property-regex": "^7.25.9", + "@babel/plugin-transform-unicode-regex": "^7.25.9", + "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.6", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.38.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.26.3.tgz", + "integrity": "sha512-Nl03d6T9ky516DGK2YMxrTqvnpUW63TnJMOMonj+Zae0JiPC5BC9xPMSL6L8fiSpA5vP88qfygavVQvnLp+6Cw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-transform-react-display-name": "^7.25.9", + "@babel/plugin-transform-react-jsx": "^7.25.9", + "@babel/plugin-transform-react-jsx-development": "^7.25.9", + "@babel/plugin-transform-react-pure-annotations": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.26.0.tgz", + "integrity": "sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-syntax-jsx": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.25.9", + "@babel/plugin-transform-typescript": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.26.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.4.tgz", + "integrity": "sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.3", + "@babel/parser": "^7.26.3", + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.3", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", + "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@cypress/request": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.7.tgz", + "integrity": "sha512-LzxlLEMbBOPYB85uXrDqvD4MgcenjRBLIns3zyhx7vTPj/0u2eQhzXvPiGcaJrV38Q9dbkExWp6cOHPJ+EtFYg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~4.0.0", + "http-signature": "~1.4.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "performance-now": "^2.1.0", + "qs": "6.13.1", + "safe-buffer": "^5.1.2", + "tough-cookie": "^5.0.0", + "tunnel-agent": "^0.6.0", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@cypress/request/node_modules/tough-cookie": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.0.0.tgz", + "integrity": "sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tldts": "^6.1.32" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@cypress/request/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@cypress/xvfb": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.1.0", + "lodash.once": "^4.1.1" + } + }, + "node_modules/@cypress/xvfb/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@emotion/babel-plugin": { + "version": "11.13.5", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz", + "integrity": "sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/serialize": "^1.3.3", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/cache": { + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.14.0.tgz", + "integrity": "sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==", + "license": "MIT", + "dependencies": { + "@emotion/memoize": "^0.9.0", + "@emotion/sheet": "^1.4.0", + "@emotion/utils": "^1.4.2", + "@emotion/weak-memoize": "^0.4.0", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/core": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/@emotion/core/-/core-11.0.0.tgz", + "integrity": "sha512-w4sE3AmHmyG6RDKf6mIbtHpgJUSJ2uGvPQb8VXFL7hFjMPibE8IiehG8cMX3Ztm4svfCQV6KqusQbeIOkurBcA==", + "license": "MIT" + }, + "node_modules/@emotion/hash": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", + "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==", + "license": "MIT" + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz", + "integrity": "sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==", + "license": "MIT", + "dependencies": { + "@emotion/memoize": "^0.9.0" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", + "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==", + "license": "MIT" + }, + "node_modules/@emotion/react": { + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz", + "integrity": "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.13.5", + "@emotion/cache": "^11.14.0", + "@emotion/serialize": "^1.3.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", + "@emotion/utils": "^1.4.2", + "@emotion/weak-memoize": "^0.4.0", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.3.tgz", + "integrity": "sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==", + "license": "MIT", + "dependencies": { + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/unitless": "^0.10.0", + "@emotion/utils": "^1.4.2", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/sheet": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz", + "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==", + "license": "MIT" + }, + "node_modules/@emotion/styled": { + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.14.0.tgz", + "integrity": "sha512-XxfOnXFffatap2IyCeJyNov3kiDQWoR08gPUQxvbL7fxKryGBKUZUkG6Hz48DZwVrJSVh9sJboyV1Ds4OW6SgA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.13.5", + "@emotion/is-prop-valid": "^1.3.0", + "@emotion/serialize": "^1.3.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", + "@emotion/utils": "^1.4.2" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/unitless": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz", + "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==", + "license": "MIT" + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz", + "integrity": "sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.2.tgz", + "integrity": "sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==", + "license": "MIT" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", + "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==", + "license": "MIT" + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "license": "MIT", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT", + "peer": true + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "license": "(MIT OR CC0-1.0)", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "license": "MIT", + "peer": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.8.tgz", + "integrity": "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.8" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.12", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.12.tgz", + "integrity": "sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.8" + } + }, + "node_modules/@floating-ui/react": { + "version": "0.26.28", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.28.tgz", + "integrity": "sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.1.2", + "@floating-ui/utils": "^0.2.8", + "tabbable": "^6.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", + "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz", + "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==", + "license": "MIT" + }, + "node_modules/@fortawesome/fontawesome-free": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.7.2.tgz", + "integrity": "sha512-JUOtgFW6k9u4Y+xeIaEiLr3+cjoUPiAuLXoyKOJSia6Duzb7pq+A76P9ZdPDoAoxHdHzq6gE9/jKBGXlZT8FbA==", + "license": "(CC-BY-4.0 AND OFL-1.1 AND MIT)", + "engines": { + "node": ">=6" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@kurkle/color": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.4.tgz", + "integrity": "sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==", + "license": "MIT" + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "license": "MIT", + "dependencies": { + "eslint-scope": "5.1.1" + } + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.0.tgz", + "integrity": "sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.0", + "@parcel/watcher-darwin-arm64": "2.5.0", + "@parcel/watcher-darwin-x64": "2.5.0", + "@parcel/watcher-freebsd-x64": "2.5.0", + "@parcel/watcher-linux-arm-glibc": "2.5.0", + "@parcel/watcher-linux-arm-musl": "2.5.0", + "@parcel/watcher-linux-arm64-glibc": "2.5.0", + "@parcel/watcher-linux-arm64-musl": "2.5.0", + "@parcel/watcher-linux-x64-glibc": "2.5.0", + "@parcel/watcher-linux-x64-musl": "2.5.0", + "@parcel/watcher-win32-arm64": "2.5.0", + "@parcel/watcher-win32-ia32": "2.5.0", + "@parcel/watcher-win32-x64": "2.5.0" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz", + "integrity": "sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz", + "integrity": "sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz", + "integrity": "sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz", + "integrity": "sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz", + "integrity": "sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz", + "integrity": "sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz", + "integrity": "sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz", + "integrity": "sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz", + "integrity": "sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.0.tgz", + "integrity": "sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.0.tgz", + "integrity": "sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.0.tgz", + "integrity": "sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.0.tgz", + "integrity": "sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@projectstorm/geometry": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@projectstorm/geometry/-/geometry-7.0.3.tgz", + "integrity": "sha512-cwQ9IiOcLhMwVh9NsX0srcACGkpasXY1NA6659Tc9PeSYtAGySH5XC8DfL/nvPMXEdrBYS0S5zAdPC3RPcewog==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.21" + } + }, + "node_modules/@projectstorm/react-canvas-core": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@projectstorm/react-canvas-core/-/react-canvas-core-7.0.3.tgz", + "integrity": "sha512-Vm19AprUGx3ea0uWSMPFfpTRclaEW/7s1/hbnRDFu9WSF1VScYhw2f/cVC95qfiedip/usn4YMsg3Av6M84d0g==", + "license": "MIT", + "dependencies": { + "@emotion/react": "^11.11.1", + "@emotion/styled": "^11.11.0", + "@projectstorm/geometry": "7.0.3", + "lodash": "^4.17.21", + "react": "^18.2.0" + } + }, + "node_modules/@projectstorm/react-diagrams": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@projectstorm/react-diagrams/-/react-diagrams-7.0.4.tgz", + "integrity": "sha512-GJLpo3zhJzjcmx3PfztNDTS7jpePj9TPjXV2CgJmCDZAPHDU8q/f4AyXoJfqvoWlmVnjrzQgtcOU2KbUlNu3dQ==", + "license": "MIT", + "dependencies": { + "@projectstorm/react-canvas-core": "7.0.3", + "@projectstorm/react-diagrams-core": "7.0.3", + "@projectstorm/react-diagrams-defaults": "7.1.3", + "@projectstorm/react-diagrams-routing": "7.1.3" + } + }, + "node_modules/@projectstorm/react-diagrams-core": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@projectstorm/react-diagrams-core/-/react-diagrams-core-7.0.3.tgz", + "integrity": "sha512-sbCy5Bk4OLfEvTtYrFK/qDc1WdgMhZzVY1rxmToVnCMP6bYiThHdopYNBX59fPHqKQebAHYER0vmlWyepqEZLQ==", + "license": "MIT", + "dependencies": { + "@emotion/styled": "^11.11.0", + "@projectstorm/geometry": "7.0.3", + "@projectstorm/react-canvas-core": "7.0.3", + "lodash": "^4.17.21", + "react": "^18.2.0", + "resize-observer-polyfill": "^1.5.1" + } + }, + "node_modules/@projectstorm/react-diagrams-defaults": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@projectstorm/react-diagrams-defaults/-/react-diagrams-defaults-7.1.3.tgz", + "integrity": "sha512-T4KGgKiy4sUiH4pIq8VjR7Q+iM5SMDnVWyiwzpVFsx3D98V6r2w9qzWt3+9St/uZOKLrXj8VSCy73lmmkfNomQ==", + "license": "MIT", + "dependencies": { + "@emotion/react": "^11.11.1", + "@emotion/styled": "^11.*", + "@projectstorm/geometry": "7.0.3", + "@projectstorm/react-canvas-core": "7.0.3", + "@projectstorm/react-diagrams-core": "7.0.3", + "lodash": "^4.17.21", + "react": "^18.2.0" + } + }, + "node_modules/@projectstorm/react-diagrams-routing": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@projectstorm/react-diagrams-routing/-/react-diagrams-routing-7.1.3.tgz", + "integrity": "sha512-/Gbc7+8zoKQ3int6vVxoYMZ4hnqhIFwgulXUCuzYs21M7llnlaeOjOBEoifa3cNH6f8M4ht8xMhvEgg/gHiLiw==", + "license": "MIT", + "dependencies": { + "@projectstorm/geometry": "7.0.3", + "@projectstorm/react-canvas-core": "7.0.3", + "@projectstorm/react-diagrams-core": "7.0.3", + "@projectstorm/react-diagrams-defaults": "7.1.3", + "dagre": "^0.8.5", + "lodash": "^4.17.21", + "pathfinding": "^0.4.18", + "paths-js": "^0.4.11", + "react": "^18.2.0" + } + }, + "node_modules/@react-aria/ssr": { + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.7.tgz", + "integrity": "sha512-GQygZaGlmYjmYM+tiNBA5C6acmiDWF52Nqd40bBp0Znk4M4hP+LTmI0lpI1BuKMw45T8RIhrAsICIfKwZvi2Gg==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-icons/all-files": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@react-icons/all-files/-/all-files-4.1.0.tgz", + "integrity": "sha512-hxBI2UOuVaI3O/BhQfhtb4kcGn9ft12RWAFVMUeNjqqhLsHvFtzIkFaptBJpFDANTKoDfdVoHTKZDlwKCACbMQ==", + "license": "MIT", + "peerDependencies": { + "react": "*" + } + }, + "node_modules/@reduxjs/toolkit": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.5.0.tgz", + "integrity": "sha512-awNe2oTodsZ6LmRqmkFhtb/KH03hUhxOamEQy411m3Njj3BbFvoBovxo4Q1cBWnV1ErprVj9MlF0UPXkng0eyg==", + "license": "MIT", + "dependencies": { + "immer": "^10.0.3", + "redux": "^5.0.1", + "redux-thunk": "^3.1.0", + "reselect": "^5.1.0" + }, + "peerDependencies": { + "react": "^16.9.0 || ^17.0.0 || ^18 || ^19", + "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-redux": { + "optional": true + } + } + }, + "node_modules/@remix-run/router": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.21.0.tgz", + "integrity": "sha512-xfSkCAchbdG5PnbrKqFWwia4Bi61nH+wm8wLEqfHDyp7Y3dZzgqS2itV8i4gAq9pC2HsTpwyBC6Ds8VHZ96JlA==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@restart/hooks": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.16.tgz", + "integrity": "sha512-f7aCv7c+nU/3mF7NWLtVVr0Ra80RqsO89hO72r+Y/nvQr5+q0UFGkocElTH6MJApvReVh6JHUFYn2cw1WdHF3w==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.3" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@restart/ui": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@restart/ui/-/ui-1.9.2.tgz", + "integrity": "sha512-MWWqJqSyqUWWPBOOiRQrX57CBc/9CoYONg7sE+uag72GCAuYrHGU5c49vU5s4BUSBgiKNY6rL7TULqGDrouUaA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@popperjs/core": "^2.11.8", + "@react-aria/ssr": "^3.5.0", + "@restart/hooks": "^0.5.0", + "@types/warning": "^3.0.3", + "dequal": "^2.0.3", + "dom-helpers": "^5.2.0", + "uncontrollable": "^8.0.4", + "warning": "^4.0.3" + }, + "peerDependencies": { + "react": ">=16.14.0", + "react-dom": ">=16.14.0" + } + }, + "node_modules/@restart/ui/node_modules/@restart/hooks": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.5.0.tgz", + "integrity": "sha512-wS+h6IusJCPjTkmOOrRZxIPICD/mtFA3PRZviutoM23/b7akyDGfZF/WS+nIFk27u7JDhPE2+0GBdZxjSqHZkg==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.3" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@restart/ui/node_modules/uncontrollable": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-8.0.4.tgz", + "integrity": "sha512-ulRWYWHvscPFc0QQXvyJjY6LIXU56f0h8pQFvhxiKk5V1fcI8gp9Ht9leVAhrVjzqMw0BgjspBINx9r6oyJUvQ==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.14.0" + } + }, + "node_modules/@rjsf/core": { + "version": "5.23.2", + "resolved": "https://registry.npmjs.org/@rjsf/core/-/core-5.23.2.tgz", + "integrity": "sha512-jSz3X8SOZ1xL3wMPhBt01j/cA4FszhdGTLBhHfncM9nme4SpbQ6GRAiePOBakEVhT89GAM11ML1DA888YTZfmg==", + "license": "Apache-2.0", + "dependencies": { + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "markdown-to-jsx": "^7.4.1", + "nanoid": "^3.3.7", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@rjsf/utils": "^5.23.x", + "react": "^16.14.0 || >=17" + } + }, + "node_modules/@rjsf/utils": { + "version": "5.23.2", + "resolved": "https://registry.npmjs.org/@rjsf/utils/-/utils-5.23.2.tgz", + "integrity": "sha512-CDpZTroRE1O2lkZBNYsWCRj7moF3fqnwIo/Vf3flhoS7rGwb8kWlIHakOOBZxlqorKZB1UPzhQZn+FcwhzNldw==", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "json-schema-merge-allof": "^0.8.1", + "jsonpointer": "^5.0.1", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "react-is": "^18.2.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": "^16.14.0 || >=17" + } + }, + "node_modules/@rjsf/validator-ajv8": { + "version": "5.23.2", + "resolved": "https://registry.npmjs.org/@rjsf/validator-ajv8/-/validator-ajv8-5.23.2.tgz", + "integrity": "sha512-EHOTZ/YxTcFHpCj2p42PD3daxJyozZ5gkIVCfbtIXgTtubt/pOMFvM2OxNcQ6OBQ+ulo96OmnDxYGsNPpZZVaw==", + "license": "Apache-2.0", + "dependencies": { + "ajv": "^8.12.0", + "ajv-formats": "^2.1.1", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@rjsf/utils": "^5.23.x" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "license": "MIT", + "dependencies": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.29.1.tgz", + "integrity": "sha512-ssKhA8RNltTZLpG6/QNkCSge+7mBQGUqJRisZ2MDQcEGaK93QESEgWK2iOpIDZ7k9zPVkG5AS3ksvD5ZWxmItw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.29.1.tgz", + "integrity": "sha512-CaRfrV0cd+NIIcVVN/jx+hVLN+VRqnuzLRmfmlzpOzB87ajixsN/+9L5xNmkaUUvEbI5BmIKS+XTwXsHEb65Ew==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.29.1.tgz", + "integrity": "sha512-2ORr7T31Y0Mnk6qNuwtyNmy14MunTAMx06VAPI6/Ju52W10zk1i7i5U3vlDRWjhOI5quBcrvhkCHyF76bI7kEw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.29.1.tgz", + "integrity": "sha512-j/Ej1oanzPjmN0tirRd5K2/nncAhS9W6ICzgxV+9Y5ZsP0hiGhHJXZ2JQ53iSSjj8m6cRY6oB1GMzNn2EUt6Ng==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.29.1.tgz", + "integrity": "sha512-91C//G6Dm/cv724tpt7nTyP+JdN12iqeXGFM1SqnljCmi5yTXriH7B1r8AD9dAZByHpKAumqP1Qy2vVNIdLZqw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.29.1.tgz", + "integrity": "sha512-hEioiEQ9Dec2nIRoeHUP6hr1PSkXzQaCUyqBDQ9I9ik4gCXQZjJMIVzoNLBRGet+hIUb3CISMh9KXuCcWVW/8w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.29.1.tgz", + "integrity": "sha512-Py5vFd5HWYN9zxBv3WMrLAXY3yYJ6Q/aVERoeUFwiDGiMOWsMs7FokXihSOaT/PMWUty/Pj60XDQndK3eAfE6A==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.29.1.tgz", + "integrity": "sha512-RiWpGgbayf7LUcuSNIbahr0ys2YnEERD4gYdISA06wa0i8RALrnzflh9Wxii7zQJEB2/Eh74dX4y/sHKLWp5uQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.29.1.tgz", + "integrity": "sha512-Z80O+taYxTQITWMjm/YqNoe9d10OX6kDh8X5/rFCMuPqsKsSyDilvfg+vd3iXIqtfmp+cnfL1UrYirkaF8SBZA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.29.1.tgz", + "integrity": "sha512-fOHRtF9gahwJk3QVp01a/GqS4hBEZCV1oKglVVq13kcK3NeVlS4BwIFzOHDbmKzt3i0OuHG4zfRP0YoG5OF/rA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.29.1.tgz", + "integrity": "sha512-5a7q3tnlbcg0OodyxcAdrrCxFi0DgXJSoOuidFUzHZ2GixZXQs6Tc3CHmlvqKAmOs5eRde+JJxeIf9DonkmYkw==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.29.1.tgz", + "integrity": "sha512-9b4Mg5Yfz6mRnlSPIdROcfw1BU22FQxmfjlp/CShWwO3LilKQuMISMTtAu/bxmmrE6A902W2cZJuzx8+gJ8e9w==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.29.1.tgz", + "integrity": "sha512-G5pn0NChlbRM8OJWpJFMX4/i8OEU538uiSv0P6roZcbpe/WfhEO+AT8SHVKfp8qhDQzaz7Q+1/ixMy7hBRidnQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.29.1.tgz", + "integrity": "sha512-WM9lIkNdkhVwiArmLxFXpWndFGuOka4oJOZh8EP3Vb8q5lzdSCBuhjavJsw68Q9AKDGeOOIHYzYm4ZFvmWez5g==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.29.1.tgz", + "integrity": "sha512-87xYCwb0cPGZFoGiErT1eDcssByaLX4fc0z2nRM6eMtV9njAfEE6OW3UniAoDhX4Iq5xQVpE6qO9aJbCFumKYQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.29.1.tgz", + "integrity": "sha512-xufkSNppNOdVRCEC4WKvlR1FBDyqCSCpQeMMgv9ZyXqqtKBfkw1yfGMTUTs9Qsl6WQbJnsGboWCp7pJGkeMhKA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.29.1.tgz", + "integrity": "sha512-F2OiJ42m77lSkizZQLuC+jiZ2cgueWQL5YC9tjo3AgaEw+KJmVxHGSyQfDUoYR9cci0lAywv2Clmckzulcq6ig==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.29.1.tgz", + "integrity": "sha512-rYRe5S0FcjlOBZQHgbTKNrqxCBUmgDJem/VQTCcTnA2KCabYSWQDrytOzX7avb79cAAweNmMUb/Zw18RNd4mng==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.29.1.tgz", + "integrity": "sha512-+10CMg9vt1MoHj6x1pxyjPSMjHTIlqs8/tBztXvPAx24SKs9jwVnKqHJumlH/IzhaPUaj3T6T6wfZr8okdXaIg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "license": "MIT" + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz", + "integrity": "sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==", + "license": "MIT" + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "license": "MIT" + }, + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@testing-library/dom": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz", + "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.3.0", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@testing-library/react": { + "version": "14.3.1", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-14.3.1.tgz", + "integrity": "sha512-H99XjUhWQw0lTgyMN05W3xQG1Nh4lq574D8keFf1dDoNTJgp66VbJozRaczoF+wsiaPJNt/TcnfpLGufGxSrZQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@testing-library/dom": "^9.0.0", + "@types/react-dom": "^18.0.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@testing-library/react/node_modules/@testing-library/dom": { + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.4.tgz", + "integrity": "sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.1.3", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@testing-library/react/node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "license": "Apache-2.0", + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/@testing-library/user-event": { + "version": "14.5.2", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz", + "integrity": "sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==", + "license": "MIT", + "engines": { + "node": ">=12", + "npm": ">=6" + }, + "peerDependencies": { + "@testing-library/dom": ">=7.21.4" + } + }, + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "license": "MIT" + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/color": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/color/-/color-3.0.6.tgz", + "integrity": "sha512-NMiNcZFRUAiUUCCf7zkAelY8eV3aKqfbzyFQlXpPIEeoNDbsEHGpb854V3gzTsGKYj830I5zPuOwU/TP5/cW6A==", + "license": "MIT", + "dependencies": { + "@types/color-convert": "*" + } + }, + "node_modules/@types/color-convert": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/color-convert/-/color-convert-2.0.4.tgz", + "integrity": "sha512-Ub1MmDdyZ7mX//g25uBAoH/mWGd9swVbt8BseymnaE18SU4po/PjmCrHxqIIRjBo3hV/vh1KGr0eMxUhp+t+dQ==", + "license": "MIT", + "dependencies": { + "@types/color-name": "^1.1.0" + } + }, + "node_modules/@types/color-name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.5.tgz", + "integrity": "sha512-j2K5UJqGTxeesj6oQuGpMgifpT5k9HprgQd8D1Y0lOFqKHl3PJu5GMeS4Y5EgjS55AE6OQxf8mPED9uaGbf4Cg==", + "license": "MIT" + }, + "node_modules/@types/eslint": { + "version": "8.56.12", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.12.tgz", + "integrity": "sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==", + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "license": "MIT" + }, + "node_modules/@types/hast": { + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz", + "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.6.tgz", + "integrity": "sha512-lPByRJUer/iN/xa4qpyL0qmL11DqNW81iU/IG1S3uvRUq4oKagz8VCxZjiWkumgt66YT3vOdDgZ0o32sGKtCEw==", + "license": "MIT", + "dependencies": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, + "node_modules/@types/js-cookie": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-3.0.6.tgz", + "integrity": "sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==", + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "license": "MIT" + }, + "node_modules/@types/jsrsasign": { + "version": "10.5.15", + "resolved": "https://registry.npmjs.org/@types/jsrsasign/-/jsrsasign-10.5.15.tgz", + "integrity": "sha512-3stUTaSRtN09PPzVWR6aySD9gNnuymz+WviNHoTb85dKu+BjaV4uBbWWGykBBJkfwPtcNZVfTn2lbX00U+yhpQ==", + "license": "MIT" + }, + "node_modules/@types/lodash": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.13.tgz", + "integrity": "sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.10.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", + "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "undici-types": "~6.20.0" + } + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "license": "MIT" + }, + "node_modules/@types/phoenix": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.6.tgz", + "integrity": "sha512-PIzZZlEppgrpoT2QgbnDU+MMzuR6BbCjllj0bM70lWoejMeNJAxCchxnv7J3XFkI8MpygtRpzXrIlmWUBclP5A==", + "license": "MIT" + }, + "node_modules/@types/prop-types": { + "version": "15.7.14", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", + "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==", + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "18.3.18", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.18.tgz", + "integrity": "sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==", + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-datepicker": { + "version": "4.19.6", + "resolved": "https://registry.npmjs.org/@types/react-datepicker/-/react-datepicker-4.19.6.tgz", + "integrity": "sha512-uH5fzxt9eXxnc+hDCy/iRSFqU2+9lR/q2lAmaG4WILMai1o3IOdpcV+VSypzBFJLTEC2jrfeDXcdol0CJVMq4g==", + "license": "MIT", + "dependencies": { + "@popperjs/core": "^2.9.2", + "@types/react": "*", + "date-fns": "^2.0.1", + "react-popper": "^2.2.5" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.5", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.5.tgz", + "integrity": "sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==", + "license": "MIT", + "peerDependencies": { + "@types/react": "^18.0.0" + } + }, + "node_modules/@types/react-redux": { + "version": "7.1.34", + "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.34.tgz", + "integrity": "sha512-GdFaVjEbYv4Fthm2ZLvj1VSCedV7TqE5y1kNwnjSdBOTXuRSgowux6J8TAct15T3CKBr63UMk+2CO7ilRhyrAQ==", + "license": "MIT", + "dependencies": { + "@types/hoist-non-react-statics": "^3.3.0", + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0", + "redux": "^4.0.0" + } + }, + "node_modules/@types/react-redux/node_modules/redux": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", + "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.9.2" + } + }, + "node_modules/@types/react-syntax-highlighter": { + "version": "15.5.13", + "resolved": "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-15.5.13.tgz", + "integrity": "sha512-uLGJ87j6Sz8UaBAooU0T6lWJ0dBmjZgN1PZTrj05TNql2/XpC6+4HhMT5syIdFUUt+FASfCeLLv4kBygNU+8qA==", + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-transition-group": { + "version": "4.4.12", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.12.tgz", + "integrity": "sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "license": "MIT" + }, + "node_modules/@types/sinonjs__fake-timers": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", + "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/sizzle": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.9.tgz", + "integrity": "sha512-xzLEyKB50yqCUPUJkIsrVvoWNfFUbIZI+RspLWt8u+tIW/BetMBZtgV2LY/2o+tYH8dRvQ+eoPf3NdhQCcLE2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, + "node_modules/@types/use-sync-external-store": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.6.tgz", + "integrity": "sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==", + "license": "MIT" + }, + "node_modules/@types/uuid": { + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", + "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", + "license": "MIT" + }, + "node_modules/@types/warning": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.3.tgz", + "integrity": "sha512-D1XC7WK8K+zZEveUPY+cf4+kgauk8N4eHr/XIHXGlGYkHLud6hK9lYfZk1ry1TNh798cZUCgb6MqGEG8DkJt6Q==", + "license": "MIT" + }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yup": { + "version": "0.29.14", + "resolved": "https://registry.npmjs.org/@types/yup/-/yup-0.29.14.tgz", + "integrity": "sha512-Ynb/CjHhE/Xp/4bhHmQC4U1Ox+I2OpfRYF3dnNgQqn1cHa6LK3H1wJMNPT02tSVZA6FYuXE2ITORfbnb6zBCSA==", + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/experimental-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz", + "integrity": "sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "license": "BSD-2-Clause", + "dependencies": { + "@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", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@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" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.1.tgz", + "integrity": "sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==", + "license": "ISC", + "peer": true + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz", + "integrity": "sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.26.0", + "@babel/plugin-transform-react-jsx-self": "^7.25.9", + "@babel/plugin-transform-react-jsx-source": "^7.25.9", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.14.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0" + } + }, + "node_modules/@vitest/expect": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.6.1.tgz", + "integrity": "sha512-jXL+9+ZNIJKruofqXuuTClf44eSpcHlgj3CiuNihUF3Ioujtmc0zIa3UJOW5RjDK1YLBJZnWBlPuqhYycLioog==", + "license": "MIT", + "dependencies": { + "@vitest/spy": "1.6.1", + "@vitest/utils": "1.6.1", + "chai": "^4.3.10" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.6.1.tgz", + "integrity": "sha512-3nSnYXkVkf3mXFfE7vVyPmi3Sazhb/2cfZGGs0JRzFsPFvAMBEcrweV1V1GsrstdXeKCTXlJbvnQwGWgEIHmOA==", + "license": "MIT", + "dependencies": { + "@vitest/utils": "1.6.1", + "p-limit": "^5.0.0", + "pathe": "^1.1.1" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner/node_modules/p-limit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", + "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vitest/runner/node_modules/yocto-queue": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", + "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vitest/snapshot": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.1.tgz", + "integrity": "sha512-WvidQuWAzU2p95u8GAKlRMqMyN1yOJkGHnx3M1PL9Raf7AQ1kwLKg04ADlCa3+OXUZE7BceOhVZiuWAbzCKcUQ==", + "license": "MIT", + "dependencies": { + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "pretty-format": "^29.7.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@vitest/snapshot/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@vitest/spy": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.6.1.tgz", + "integrity": "sha512-MGcMmpGkZebsMZhbQKkAf9CX5zGvjkBTqf8Zx3ApYWXr3wG+QvEu2eXWfnIIWYSJExIp4V9FCKDEeygzkYrXMw==", + "license": "MIT", + "dependencies": { + "tinyspy": "^2.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.6.1.tgz", + "integrity": "sha512-jOrrUvXM4Av9ZWiG1EajNto0u96kWAhJ1LmPmJhXXQx/32MecEKd10pOLYgS2BQx1TgkGhloPU1ArDW2vvaY6g==", + "license": "MIT", + "dependencies": { + "diff-sequences": "^29.6.3", + "estree-walker": "^3.0.3", + "loupe": "^2.3.7", + "pretty-format": "^29.7.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@vitest/utils/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/@vitest/utils/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/acorn": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0", + "peer": true + }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "license": "MIT" + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true, + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", + "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==", + "dev": true, + "license": "MIT" + }, + "node_modules/axe-core": { + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.2.tgz", + "integrity": "sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==", + "license": "MPL-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/axios": { + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", + "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.12", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz", + "integrity": "sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.3", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", + "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.2", + "core-js-compat": "^3.38.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz", + "integrity": "sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.3" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", + "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==", + "license": "MIT" + }, + "node_modules/babel-preset-react-app": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz", + "integrity": "sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.16.0", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-decorators": "^7.16.4", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-transform-flow-strip-types": "^7.16.0", + "@babel/plugin-transform-react-display-name": "^7.16.0", + "@babel/plugin-transform-runtime": "^7.16.4", + "@babel/preset-env": "^7.16.4", + "@babel/preset-react": "^7.16.0", + "@babel/preset-typescript": "^7.16.0", + "@babel/runtime": "^7.16.3", + "babel-plugin-macros": "^3.1.0", + "babel-plugin-transform-react-remove-prop-types": "^0.4.24" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/blob-util": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", + "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/bootstrap": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", + "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "license": "MIT", + "peerDependencies": { + "@popperjs/core": "^2.11.8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.3.tgz", + "integrity": "sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cachedir": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz", + "integrity": "sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", + "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", + "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001690", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz", + "integrity": "sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/chai": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", + "license": "MIT", + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chart.js": { + "version": "4.4.7", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.7.tgz", + "integrity": "sha512-pwkcKfdzTMAU/+jNosKhNL2bHtJc/sSmYgVbuGTEDhzkrhmyihmP7vUc/5ZK9WopidMDHNe3Wm7jOd/WhuHWuw==", + "license": "MIT", + "dependencies": { + "@kurkle/color": "^0.3.0" + }, + "engines": { + "pnpm": ">=8" + } + }, + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/check-more-types": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", + "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ci-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.1.0.tgz", + "integrity": "sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/classnames": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==", + "license": "MIT" + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-table3": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/closest": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/closest/-/closest-0.0.1.tgz", + "integrity": "sha512-HafRXTAiWp5nf6kxOy2EoIGSsJMn0zew9E5zp3Dy/8CXdp8GvVjZn1TSMEVdDxSP/acXZcWJWiIgF83Di7M1Ew==", + "license": "MIT", + "dependencies": { + "matches-selector": "0.0.1" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/comma-separated-tokens": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", + "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/compute-gcd": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/compute-gcd/-/compute-gcd-1.2.1.tgz", + "integrity": "sha512-TwMbxBNz0l71+8Sc4czv13h4kEqnchV9igQZBi6QUaz09dnz13juGnnaWWJTRsP3brxOoxeB4SA2WELLw1hCtg==", + "peer": true, + "dependencies": { + "validate.io-array": "^1.0.3", + "validate.io-function": "^1.0.2", + "validate.io-integer-array": "^1.0.0" + } + }, + "node_modules/compute-lcm": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/compute-lcm/-/compute-lcm-1.1.2.tgz", + "integrity": "sha512-OFNPdQAXnQhDSKioX8/XYT6sdUlXwpeMjfd6ApxMJfyZ4GxmLR1xvMERctlYhlHwIiz6CSpBc2+qYKjHGZw4TQ==", + "peer": true, + "dependencies": { + "compute-gcd": "^1.2.1", + "validate.io-array": "^1.0.3", + "validate.io-function": "^1.0.2", + "validate.io-integer-array": "^1.0.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "license": "MIT" + }, + "node_modules/confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "license": "MIT" + }, + "node_modules/core-js-compat": { + "version": "3.39.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.39.0.tgz", + "integrity": "sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.24.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssstyle": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.1.0.tgz", + "integrity": "sha512-h66W1URKpBS5YMI/V8PyXvTMFT8SupJ1IzoIV8IeBC/ji8WVmrO8dGlTi+2dh6whmdk6BiKJLD/ZBkhWbcg6nA==", + "license": "MIT", + "dependencies": { + "rrweb-cssom": "^0.7.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" + }, + "node_modules/cypress": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.17.0.tgz", + "integrity": "sha512-5xWkaPurwkIljojFidhw8lFScyxhtiFHl/i/3zov+1Z5CmY4t9tjIdvSXfu82Y3w7wt0uR9KkucbhkVvJZLQSA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@cypress/request": "^3.0.6", + "@cypress/xvfb": "^1.2.4", + "@types/sinonjs__fake-timers": "8.1.1", + "@types/sizzle": "^2.3.2", + "arch": "^2.2.0", + "blob-util": "^2.0.2", + "bluebird": "^3.7.2", + "buffer": "^5.7.1", + "cachedir": "^2.3.0", + "chalk": "^4.1.0", + "check-more-types": "^2.24.0", + "ci-info": "^4.0.0", + "cli-cursor": "^3.1.0", + "cli-table3": "~0.6.1", + "commander": "^6.2.1", + "common-tags": "^1.8.0", + "dayjs": "^1.10.4", + "debug": "^4.3.4", + "enquirer": "^2.3.6", + "eventemitter2": "6.4.7", + "execa": "4.1.0", + "executable": "^4.1.1", + "extract-zip": "2.0.1", + "figures": "^3.2.0", + "fs-extra": "^9.1.0", + "getos": "^3.2.1", + "is-installed-globally": "~0.4.0", + "lazy-ass": "^1.6.0", + "listr2": "^3.8.3", + "lodash": "^4.17.21", + "log-symbols": "^4.0.0", + "minimist": "^1.2.8", + "ospath": "^1.2.2", + "pretty-bytes": "^5.6.0", + "process": "^0.11.10", + "proxy-from-env": "1.0.0", + "request-progress": "^3.0.0", + "semver": "^7.5.3", + "supports-color": "^8.1.1", + "tmp": "~0.2.3", + "tree-kill": "1.2.2", + "untildify": "^4.0.0", + "yauzl": "^2.10.0" + }, + "bin": { + "cypress": "bin/cypress" + }, + "engines": { + "node": "^16.0.0 || ^18.0.0 || >=20.0.0" + } + }, + "node_modules/cypress/node_modules/proxy-from-env": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", + "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", + "dev": true, + "license": "MIT" + }, + "node_modules/cypress/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cypress/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/dagre": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/dagre/-/dagre-0.8.5.tgz", + "integrity": "sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==", + "license": "MIT", + "dependencies": { + "graphlib": "^2.1.8", + "lodash": "^4.17.15" + } + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "license": "BSD-2-Clause" + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dev": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/data-urls": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", + "license": "MIT", + "dependencies": { + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/date-fns": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.21.0" + }, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/dayjs": { + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "license": "MIT" + }, + "node_modules/deep-eql": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", + "license": "MIT", + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "license": "MIT", + "peer": true + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "license": "Apache-2.0", + "optional": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "license": "MIT" + }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.76", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.76.tgz", + "integrity": "sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==", + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enquirer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.23.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.7.tgz", + "integrity": "sha512-OygGC8kIcDhXX+6yAZRGLqwi2CmEXCbLQixeGUgYeR+Qwlppqmo7DIDr8XibtEBZp+fJcoYpoatp5qwLMEdcqQ==", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.2.6", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-regex": "^1.2.1", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.0", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "regexp.prototype.flags": "^1.5.3", + "safe-array-concat": "^1.1.3", + "safe-regex-test": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.18" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", + "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.6", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.4", + "safe-array-concat": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "license": "MIT", + "peer": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-config-react-app": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz", + "integrity": "sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.16.0", + "@babel/eslint-parser": "^7.16.3", + "@rushstack/eslint-patch": "^1.1.0", + "@typescript-eslint/eslint-plugin": "^5.5.0", + "@typescript-eslint/parser": "^5.5.0", + "babel-preset-react-app": "^10.0.1", + "confusing-browser-globals": "^1.0.11", + "eslint-plugin-flowtype": "^8.0.3", + "eslint-plugin-import": "^2.25.3", + "eslint-plugin-jest": "^25.3.0", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.27.1", + "eslint-plugin-react-hooks": "^4.3.0", + "eslint-plugin-testing-library": "^5.0.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "eslint": "^8.0.0" + } + }, + "node_modules/eslint-config-react-app/node_modules/eslint-plugin-testing-library": { + "version": "5.11.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.1.tgz", + "integrity": "sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "^5.58.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0", + "npm": ">=6" + }, + "peerDependencies": { + "eslint": "^7.5.0 || ^8.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", + "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-cypress": { + "version": "2.15.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-2.15.2.tgz", + "integrity": "sha512-CtcFEQTDKyftpI22FVGpx8bkpKyYXBlNge6zSo0pl5/qJvBAnzaD76Vu2AsP16d6mTj478Ldn2mhgrWV+Xr0vQ==", + "license": "MIT", + "dependencies": { + "globals": "^13.20.0" + }, + "peerDependencies": { + "eslint": ">= 3.2.1" + } + }, + "node_modules/eslint-plugin-cypress/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-plugin-cypress/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-plugin-flowtype": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz", + "integrity": "sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==", + "license": "BSD-3-Clause", + "dependencies": { + "lodash": "^4.17.21", + "string-natural-compare": "^3.0.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@babel/plugin-syntax-flow": "^7.14.5", + "@babel/plugin-transform-react-jsx": "^7.14.9", + "eslint": "^8.1.0" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", + "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.8", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-jest": { + "version": "25.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz", + "integrity": "sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/experimental-utils": "^5.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^4.0.0 || ^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", + "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", + "license": "MIT", + "dependencies": { + "aria-query": "^5.3.2", + "array-includes": "^3.1.8", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "^4.10.0", + "axobject-query": "^4.1.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "hasown": "^2.0.2", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.1" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.37.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.3.tgz", + "integrity": "sha512-DomWuTQPFYZwF/7c9W2fkKkStqZmBd3uugfqBYLdkZ3Hii23WzZuOLUskGxB8qkSKqftxEeGL1TB2kMhrce0jA==", + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-testing-library": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-6.5.0.tgz", + "integrity": "sha512-Ls5TUfLm5/snocMAOlofSOJxNN0aKqwTlco7CrNtMjkTdQlkpSMaeTCDHCuXfzrI97xcx2rSCNeKeJjtpkNC1w==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "^5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0", + "npm": ">=6" + }, + "peerDependencies": { + "eslint": "^7.5.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "license": "MIT", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT", + "peer": true + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "license": "(MIT OR CC0-1.0)", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter2": { + "version": "6.4.7", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", + "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", + "dev": true, + "license": "MIT" + }, + "node_modules/execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "license": "MIT", + "peer": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "license": "MIT", + "peer": true + }, + "node_modules/fast-uri": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz", + "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==", + "license": "BSD-3-Clause" + }, + "node_modules/fastq": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", + "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fault": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", + "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==", + "license": "MIT", + "dependencies": { + "format": "^0.2.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "license": "MIT", + "peer": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "license": "MIT" + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "license": "MIT", + "peer": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "license": "MIT", + "peer": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "license": "ISC", + "peer": true + }, + "node_modules/fn-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-3.0.0.tgz", + "integrity": "sha512-eNMNr5exLoavuAMhIUVsOKF79SWd/zG104ef6sxBTSw+cZc6BXdQXDvYcGvp0VbxVVSp1XDUNoz7mg1xMtSznA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC", + "peer": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.6.tgz", + "integrity": "sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "dunder-proto": "^1.0.0", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "function-bind": "^1.1.2", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/getos": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", + "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "async": "^3.2.0" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "peer": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "license": "ISC", + "peer": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "license": "MIT" + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "license": "MIT" + }, + "node_modules/graphlib": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", + "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.15" + } + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", + "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz", + "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==", + "license": "MIT", + "dependencies": { + "@types/hast": "^2.0.0", + "comma-separated-tokens": "^1.0.0", + "hast-util-parse-selector": "^2.0.0", + "property-information": "^5.0.0", + "space-separated-tokens": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/heap": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.5.tgz", + "integrity": "sha512-G7HLD+WKcrOyJP5VQwYZNC3Z6FcQ7YYjEFiFoIj8PfEr73mu421o8B1N5DKUcc8K37EsJ2XXWA8DtrDz/2dReg==" + }, + "node_modules/highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "license": "BSD-3-Clause", + "engines": { + "node": "*" + } + }, + "node_modules/highlightjs-vue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/highlightjs-vue/-/highlightjs-vue-1.0.0.tgz", + "integrity": "sha512-PDEfEF102G23vHmPhLyPboFCD+BkMGu+GuJe2d9/eH4FsCwvgBpnc9n0pGE+ffKdph38s6foEZiEjdgHdzp+IA==", + "license": "CC0-1.0" + }, + "node_modules/history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.6" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/html-encoding-sniffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^3.1.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/http-signature": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.4.0.tgz", + "integrity": "sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^2.0.2", + "sshpk": "^1.18.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immer": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/immer/-/immer-10.1.1.tgz", + "integrity": "sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/immutable": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.0.3.tgz", + "integrity": "sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==", + "license": "MIT" + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", + "peer": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC", + "peer": true + }, + "node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-arguments": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.1.tgz", + "integrity": "sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "license": "MIT" + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.0.tgz", + "integrity": "sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/iterator.prototype": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.4.tgz", + "integrity": "sha512-x4WH0BWmrMmg4oHHl+duwubhrvczGlyuGAZu3nvrf0UXOfPu8IhZObFEr7DE/iv01YgVZrsOiRcqw2srkKEDIA==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "reflect.getprototypeof": "^1.0.8", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "license": "MIT", + "peer": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsdom": { + "version": "24.1.3", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-24.1.3.tgz", + "integrity": "sha512-MyL55p3Ut3cXbeBEG7Hcv0mVM8pp8PBNWxRqchZnSfAiES1v1mRnMeFfaHWIPULpwsYfvO+ZmMZz5tGCnjzDUQ==", + "license": "MIT", + "dependencies": { + "cssstyle": "^4.0.1", + "data-urls": "^5.0.0", + "decimal.js": "^10.4.3", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.5", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.12", + "parse5": "^7.1.2", + "rrweb-cssom": "^0.7.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.4", + "w3c-xmlserializer": "^5.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0", + "ws": "^8.18.0", + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "canvas": "^2.11.2" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "license": "MIT", + "peer": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "license": "MIT" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true, + "license": "(AFL-2.1 OR BSD-3-Clause)" + }, + "node_modules/json-schema-compare": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/json-schema-compare/-/json-schema-compare-0.2.2.tgz", + "integrity": "sha512-c4WYmDKyJXhs7WWvAWm3uIYnfyWFoIp+JEoX34rctVvEkMYCPGhXtvmFFXiffBbxfZsvQ0RNnV5H7GvDF5HCqQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "lodash": "^4.17.4" + } + }, + "node_modules/json-schema-merge-allof": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/json-schema-merge-allof/-/json-schema-merge-allof-0.8.1.tgz", + "integrity": "sha512-CTUKmIlPJbsWfzRRnOXz+0MjIqvnleIXwFTzz+t9T86HnYX/Rozria6ZVGLktAU9e+NygNljveP+yxqtQp/Q4w==", + "license": "MIT", + "peer": true, + "dependencies": { + "compute-lcm": "^1.1.2", + "json-schema-compare": "^0.2.2", + "lodash": "^4.17.20" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "license": "MIT", + "peer": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true, + "license": "ISC" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jsprim": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", + "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "node_modules/jsrsasign": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-11.1.0.tgz", + "integrity": "sha512-Ov74K9GihaK9/9WncTe1mPmvrO7Py665TUfUKvraXBpu+xcTWitrtuOwcjf4KMU9maPaYn0OuaWy0HOzy/GBXg==", + "license": "MIT", + "funding": { + "url": "https://github.com/kjur/jsrsasign#donations" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "license": "MIT", + "peer": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", + "license": "CC0-1.0" + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "license": "MIT", + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/lazy-ass": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "> 0.8" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, + "node_modules/listr2": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", + "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.5.1", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + }, + "peerDependenciesMeta": { + "enquirer": { + "optional": true + } + } + }, + "node_modules/local-pkg": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.1.tgz", + "integrity": "sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==", + "license": "MIT", + "dependencies": { + "mlly": "^1.7.3", + "pkg-types": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "license": "MIT", + "peer": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "license": "MIT", + "peer": true + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.1" + } + }, + "node_modules/lowlight": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.20.0.tgz", + "integrity": "sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==", + "license": "MIT", + "dependencies": { + "fault": "^1.0.0", + "highlight.js": "~10.7.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "license": "MIT", + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/markdown-to-jsx": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.7.2.tgz", + "integrity": "sha512-N3AKfYRvxNscvcIH6HDnDKILp4S8UWbebp+s92Y8SwIq0CuSbLW4Jgmrbjku3CWKjTQO0OyIMS6AhzqrwjEa3g==", + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "peerDependencies": { + "react": ">= 0.14.0" + } + }, + "node_modules/matches-selector": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/matches-selector/-/matches-selector-0.0.1.tgz", + "integrity": "sha512-Bm8wuvuNGPY3j1Mo23PxieRQAmQQe2qVcqgmpHOp1BEBNgb4dqzn2Dcgu5bYltMosjGi6LD7GPW72zboSdyJQg==", + "license": "MIT" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mlly": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.3.tgz", + "integrity": "sha512-xUsx5n/mN0uQf4V548PKQ+YShA4/IW0KI1dZhrNrPCLG+xizETbHTkOa1f8/xut9JRPp8kQuMnz0oqwkTiLo/A==", + "license": "MIT", + "dependencies": { + "acorn": "^8.14.0", + "pathe": "^1.1.2", + "pkg-types": "^1.2.1", + "ufo": "^1.5.4" + } + }, + "node_modules/mock-socket": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/mock-socket/-/mock-socket-9.3.1.tgz", + "integrity": "sha512-qxBgB7Qa2sEQgHFjj0dSigq7fX4k6Saisd5Nelwp2q8mlbAFh5dHV9JTTlF8viYJLSSWgMCZFUom8PJcMNBoJw==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "license": "MIT", + "peer": true + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "license": "MIT" + }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "license": "MIT", + "optional": true + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "license": "MIT" + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nwsapi": { + "version": "2.2.16", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.16.tgz", + "integrity": "sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==", + "license": "MIT" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "license": "MIT", + "peer": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ospath": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", + "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", + "dev": true, + "license": "MIT" + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "license": "MIT", + "peer": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "license": "MIT", + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse5": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", + "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", + "license": "MIT", + "dependencies": { + "entities": "^4.5.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "license": "MIT" + }, + "node_modules/pathfinding": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/pathfinding/-/pathfinding-0.4.18.tgz", + "integrity": "sha512-R0TGEQ9GRcFCDvAWlJAWC+KGJ9SLbW4c0nuZRcioVlXVTlw+F5RvXQ8SQgSqI9KXWC1ew95vgmIiyaWTlCe9Ag==", + "dependencies": { + "heap": "0.2.5" + } + }, + "node_modules/paths-js": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/paths-js/-/paths-js-0.4.11.tgz", + "integrity": "sha512-3mqcLomDBXOo7Fo+UlaenG6f71bk1ZezPQy2JCmYHy2W2k5VKpP+Jbin9H0bjXynelTbglCqdFhSEkeIkKTYUA==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.11.0" + } + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true, + "license": "MIT" + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true, + "license": "MIT" + }, + "node_modules/phoenix": { + "version": "1.7.18", + "resolved": "https://registry.npmjs.org/phoenix/-/phoenix-1.7.18.tgz", + "integrity": "sha512-Qo+V9+knfEd+R1pzCe+XJlj3GPSxWz4PNwzFl7GgssuTVYPoh/he3mbPQJ+NEDdqulxAbBtWCNYGPB3WplS5Mg==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pkg-types": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.0.tgz", + "integrity": "sha512-kS7yWjVFCkIw9hqdJBoMxDdzEngmkr5FXeWZZfQ6GoYacjVnsW6l2CcYW/0ThD0vF4LPJgVYnrg4d0uuhwYQbg==", + "license": "MIT", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.3", + "pathe": "^1.1.2" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", + "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/pretty-format/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "license": "MIT" + }, + "node_modules/prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types-extra": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz", + "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==", + "license": "MIT", + "dependencies": { + "react-is": "^16.3.2", + "warning": "^4.0.0" + }, + "peerDependencies": { + "react": ">=0.14.0" + } + }, + "node_modules/prop-types-extra/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/property-expr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.6.tgz", + "integrity": "sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==", + "license": "MIT" + }, + "node_modules/property-information": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", + "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", + "license": "MIT", + "dependencies": { + "xtend": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/psl": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", + "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "funding": { + "url": "https://github.com/sponsors/lupomontero" + } + }, + "node_modules/pump": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.13.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.1.tgz", + "integrity": "sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "license": "MIT" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-bootstrap": { + "version": "2.10.7", + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.10.7.tgz", + "integrity": "sha512-w6mWb3uytB5A18S2oTZpYghcOUK30neMBBvZ/bEfA+WIF2dF4OGqjzoFVMpVXBjtyf92gkmRToHlddiMAVhQqQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.24.7", + "@restart/hooks": "^0.4.9", + "@restart/ui": "^1.9.2", + "@types/prop-types": "^15.7.12", + "@types/react-transition-group": "^4.4.6", + "classnames": "^2.3.2", + "dom-helpers": "^5.2.1", + "invariant": "^2.2.4", + "prop-types": "^15.8.1", + "prop-types-extra": "^1.1.0", + "react-transition-group": "^4.4.5", + "uncontrollable": "^7.2.1", + "warning": "^4.0.3" + }, + "peerDependencies": { + "@types/react": ">=16.14.8", + "react": ">=16.14.0", + "react-dom": ">=16.14.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-chartjs-2": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/react-chartjs-2/-/react-chartjs-2-5.2.0.tgz", + "integrity": "sha512-98iN5aguJyVSxp5U3CblRLH67J8gkfyGNbiK3c+l1QI/G4irHMPQw44aEPmjVag+YKTyQ260NcF82GTQ3bdscA==", + "license": "MIT", + "peerDependencies": { + "chart.js": "^4.1.1", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-datepicker": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-6.9.0.tgz", + "integrity": "sha512-QTxuzeem7BUfVFWv+g5WuvzT0c5BPo+XTCNbMTZKSZQLU+cMMwSUHwspaxuIcDlwNcOH0tiJ+bh1fJ2yxOGYWA==", + "license": "MIT", + "dependencies": { + "@floating-ui/react": "^0.26.2", + "clsx": "^2.1.0", + "date-fns": "^3.3.1", + "prop-types": "^15.7.2", + "react-onclickoutside": "^6.13.0" + }, + "peerDependencies": { + "react": "^16.9.0 || ^17 || ^18", + "react-dom": "^16.9.0 || ^17 || ^18" + } + }, + "node_modules/react-datepicker/node_modules/date-fns": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", + "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-fast-compare": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==", + "license": "MIT" + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, + "node_modules/react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==", + "license": "MIT" + }, + "node_modules/react-onclickoutside": { + "version": "6.13.1", + "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.13.1.tgz", + "integrity": "sha512-LdrrxK/Yh9zbBQdFbMTXPp3dTSN9B+9YJQucdDu3JNKRrbdU+H+/TVONJoWtOwy4II8Sqf1y/DTI6w/vGPYW0w==", + "license": "MIT", + "funding": { + "type": "individual", + "url": "https://github.com/Pomax/react-onclickoutside/blob/master/FUNDING.md" + }, + "peerDependencies": { + "react": "^15.5.x || ^16.x || ^17.x || ^18.x", + "react-dom": "^15.5.x || ^16.x || ^17.x || ^18.x" + } + }, + "node_modules/react-popper": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.3.0.tgz", + "integrity": "sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==", + "license": "MIT", + "dependencies": { + "react-fast-compare": "^3.0.1", + "warning": "^4.0.2" + }, + "peerDependencies": { + "@popperjs/core": "^2.0.0", + "react": "^16.8.0 || ^17 || ^18", + "react-dom": "^16.8.0 || ^17 || ^18" + } + }, + "node_modules/react-redux": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz", + "integrity": "sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==", + "license": "MIT", + "dependencies": { + "@types/use-sync-external-store": "^0.0.6", + "use-sync-external-store": "^1.4.0" + }, + "peerDependencies": { + "@types/react": "^18.2.25 || ^19", + "react": "^18.0 || ^19", + "redux": "^5.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "redux": { + "optional": true + } + } + }, + "node_modules/react-refresh": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", + "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-router": { + "version": "6.28.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.28.1.tgz", + "integrity": "sha512-2omQTA3rkMljmrvvo6WtewGdVh45SpL9hGiCI9uUrwGGfNFDIvGK4gYJsKlJoNVi6AQZcopSCballL+QGOm7fA==", + "license": "MIT", + "dependencies": { + "@remix-run/router": "1.21.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.28.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.28.1.tgz", + "integrity": "sha512-YraE27C/RdjcZwl5UCqF/ffXnZDxpJdk9Q6jw38SZHjXs7NNdpViq2l2c7fO7+4uWaEfcwfGCv3RSg4e1By/fQ==", + "license": "MIT", + "dependencies": { + "@remix-run/router": "1.21.0", + "react-router": "6.28.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/react-syntax-highlighter": { + "version": "15.6.1", + "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-15.6.1.tgz", + "integrity": "sha512-OqJ2/vL7lEeV5zTJyG7kmARppUjiB9h9udl4qHQjjgEos66z00Ia0OckwYfRxCSFrW8RJIBnsBwQsHZbVPspqg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.3.1", + "highlight.js": "^10.4.1", + "highlightjs-vue": "^1.0.0", + "lowlight": "^1.17.0", + "prismjs": "^1.27.0", + "refractor": "^3.6.0" + }, + "peerDependencies": { + "react": ">= 0.14.0" + } + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/readdirp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", + "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", + "license": "MIT", + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/redux": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", + "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", + "license": "MIT" + }, + "node_modules/redux-thunk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-3.1.0.tgz", + "integrity": "sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==", + "license": "MIT", + "peerDependencies": { + "redux": "^5.0.0" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.9.tgz", + "integrity": "sha512-r0Ay04Snci87djAsI4U+WNRcSw5S4pOH7qFjd/veA5gC7TbqESR3tcj28ia95L/fYUDw11JKP7uqUKUAfVvV5Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "dunder-proto": "^1.0.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/refractor": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/refractor/-/refractor-3.6.0.tgz", + "integrity": "sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==", + "license": "MIT", + "dependencies": { + "hastscript": "^6.0.0", + "parse-entities": "^2.0.0", + "prismjs": "~1.27.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/refractor/node_modules/prismjs": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz", + "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", + "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.0", + "regjsgen": "^0.8.0", + "regjsparser": "^0.12.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.0.2" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/request-progress": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "throttleit": "^1.0.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "license": "MIT" + }, + "node_modules/reselect": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz", + "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==", + "license": "MIT" + }, + "node_modules/resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==", + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "peer": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.29.1.tgz", + "integrity": "sha512-RaJ45M/kmJUzSWDs1Nnd5DdV4eerC98idtUOVr6FfKcgxqvjwHmxc5upLF9qZU9EpsVzzhleFahrT3shLuJzIw==", + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.29.1", + "@rollup/rollup-android-arm64": "4.29.1", + "@rollup/rollup-darwin-arm64": "4.29.1", + "@rollup/rollup-darwin-x64": "4.29.1", + "@rollup/rollup-freebsd-arm64": "4.29.1", + "@rollup/rollup-freebsd-x64": "4.29.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.29.1", + "@rollup/rollup-linux-arm-musleabihf": "4.29.1", + "@rollup/rollup-linux-arm64-gnu": "4.29.1", + "@rollup/rollup-linux-arm64-musl": "4.29.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.29.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.29.1", + "@rollup/rollup-linux-riscv64-gnu": "4.29.1", + "@rollup/rollup-linux-s390x-gnu": "4.29.1", + "@rollup/rollup-linux-x64-gnu": "4.29.1", + "@rollup/rollup-linux-x64-musl": "4.29.1", + "@rollup/rollup-win32-arm64-msvc": "4.29.1", + "@rollup/rollup-win32-ia32-msvc": "4.29.1", + "@rollup/rollup-win32-x64-msvc": "4.29.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/rrweb-cssom": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz", + "integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==", + "license": "MIT" + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/sass": { + "version": "1.83.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.83.0.tgz", + "integrity": "sha512-qsSxlayzoOjdvXMVLkzF84DJFc2HZEL/rFyGIKbbilYtAvlCxyuzUeff9LawTn4btVnLKg75Z8MMr1lxU1lfGw==", + "license": "MIT", + "dependencies": { + "chokidar": "^4.0.0", + "immutable": "^5.0.2", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" + } + }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "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" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "license": "ISC" + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "license": "MIT" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "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==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/sshpk": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "license": "MIT" + }, + "node_modules/std-env": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.0.tgz", + "integrity": "sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==", + "license": "MIT" + }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string-natural-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", + "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==", + "license": "MIT" + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/string.prototype.includes": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", + "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "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==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-literal": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.1.tgz", + "integrity": "sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^9.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/strip-literal/node_modules/js-tokens": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "license": "MIT" + }, + "node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==", + "license": "MIT" + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "license": "MIT" + }, + "node_modules/synchronous-promise": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.17.tgz", + "integrity": "sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g==", + "license": "BSD-3-Clause" + }, + "node_modules/tabbable": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", + "license": "MIT" + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "license": "MIT", + "peer": true + }, + "node_modules/throttleit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.1.tgz", + "integrity": "sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "license": "MIT" + }, + "node_modules/tinypool": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.4.tgz", + "integrity": "sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz", + "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tldts": { + "version": "6.1.70", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.70.tgz", + "integrity": "sha512-/W1YVgYVJd9ZDjey5NXadNh0mJXkiUMUue9Zebd0vpdo1sU+H4zFFTaJ1RKD4N6KFoHfcXy6l+Vu7bh+bdWCzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tldts-core": "^6.1.70" + }, + "bin": { + "tldts": "bin/cli.js" + } + }, + "node_modules/tldts-core": { + "version": "6.1.70", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.70.tgz", + "integrity": "sha512-RNnIXDB1FD4T9cpQRErEqw6ZpjLlGdMOitdV+0xtbsnwr4YFka1zpc7D4KD+aAn8oSG5JyFrdasZTE04qDE9Yg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tmp": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.14" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toposort": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", + "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==", + "license": "MIT" + }, + "node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/tr46": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", + "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "license": "MIT", + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/tsconfck": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.4.tgz", + "integrity": "sha512-kdqWFGVJqe+KGYvlSO9NIaWn9jT1Ny4oKVzAJsKii5eoE9snzTJzL4+MMVOMn+fikWGFmKEylcXL710V/kIPJQ==", + "license": "MIT", + "bin": { + "tsconfck": "bin/tsconfck.js" + }, + "engines": { + "node": "^18 || >=20" + }, + "peerDependencies": { + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "license": "MIT", + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true, + "license": "Unlicense" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "license": "MIT", + "peer": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", + "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ufo": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", + "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==", + "license": "MIT" + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/uncontrollable": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", + "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.6.3", + "@types/react": ">=16.9.11", + "invariant": "^2.2.4", + "react-lifecycles-compat": "^3.0.4" + }, + "peerDependencies": { + "react": ">=15.0.0" + } + }, + "node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "license": "MIT", + "optional": true + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", + "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/use-sync-external-store": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz", + "integrity": "sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/validate.io-array": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/validate.io-array/-/validate.io-array-1.0.6.tgz", + "integrity": "sha512-DeOy7CnPEziggrOO5CZhVKJw6S3Yi7e9e65R1Nl/RTN1vTQKnzjfvks0/8kQ40FP/dsjRAOd4hxmJ7uLa6vxkg==", + "license": "MIT", + "peer": true + }, + "node_modules/validate.io-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/validate.io-function/-/validate.io-function-1.0.2.tgz", + "integrity": "sha512-LlFybRJEriSuBnUhQyG5bwglhh50EpTL2ul23MPIuR1odjO7XaMLFV8vHGwp7AZciFxtYOeiSCT5st+XSPONiQ==", + "peer": true + }, + "node_modules/validate.io-integer": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/validate.io-integer/-/validate.io-integer-1.0.5.tgz", + "integrity": "sha512-22izsYSLojN/P6bppBqhgUDjCkr5RY2jd+N2a3DCAUey8ydvrZ/OkGvFPR7qfOpwR2LC5p4Ngzxz36g5Vgr/hQ==", + "peer": true, + "dependencies": { + "validate.io-number": "^1.0.3" + } + }, + "node_modules/validate.io-integer-array": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/validate.io-integer-array/-/validate.io-integer-array-1.0.0.tgz", + "integrity": "sha512-mTrMk/1ytQHtCY0oNO3dztafHYyGU88KL+jRxWuzfOmQb+4qqnWmI+gykvGp8usKZOM0H7keJHEbRaFiYA0VrA==", + "peer": true, + "dependencies": { + "validate.io-array": "^1.0.3", + "validate.io-integer": "^1.0.4" + } + }, + "node_modules/validate.io-number": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/validate.io-number/-/validate.io-number-1.0.3.tgz", + "integrity": "sha512-kRAyotcbNaSYoDnXvb4MHg/0a1egJdLwS6oJ38TJY7aw9n93Fl/3blIXdyYvPOp55CNxywooG/3BcrwNrBpcSg==", + "peer": true + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/vite": { + "version": "5.4.14", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.14.tgz", + "integrity": "sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==", + "license": "MIT", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.6.1.tgz", + "integrity": "sha512-YAXkfvGtuTzwWbDSACdJSg4A4DZiAqckWe90Zapc/sEX3XvHcw1NdurM/6od8J207tSDqNbSsgdCacBgvJKFuA==", + "license": "MIT", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.3.4", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "vite": "^5.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vite-plugin-eslint": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/vite-plugin-eslint/-/vite-plugin-eslint-1.8.1.tgz", + "integrity": "sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==", + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^4.2.1", + "@types/eslint": "^8.4.5", + "rollup": "^2.77.2" + }, + "peerDependencies": { + "eslint": ">=7", + "vite": ">=2" + } + }, + "node_modules/vite-plugin-eslint/node_modules/rollup": { + "version": "2.79.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz", + "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==", + "license": "MIT", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/vite-tsconfig-paths": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-4.3.2.tgz", + "integrity": "sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==", + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "globrex": "^0.1.2", + "tsconfck": "^3.0.3" + }, + "peerDependencies": { + "vite": "*" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/vitest": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.6.1.tgz", + "integrity": "sha512-Ljb1cnSJSivGN0LqXd/zmDbWEM0RNNg2t1QW/XUhYl/qPqyu7CsqeWtqQXHVaJsecLPuDoak2oJcZN2QoRIOag==", + "license": "MIT", + "dependencies": { + "@vitest/expect": "1.6.1", + "@vitest/runner": "1.6.1", + "@vitest/snapshot": "1.6.1", + "@vitest/spy": "1.6.1", + "@vitest/utils": "1.6.1", + "acorn-walk": "^8.3.2", + "chai": "^4.3.10", + "debug": "^4.3.4", + "execa": "^8.0.1", + "local-pkg": "^0.5.0", + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "std-env": "^3.5.0", + "strip-literal": "^2.0.0", + "tinybench": "^2.5.1", + "tinypool": "^0.8.3", + "vite": "^5.0.0", + "vite-node": "1.6.1", + "why-is-node-running": "^2.2.2" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/node": "^18.0.0 || >=20.0.0", + "@vitest/browser": "1.6.1", + "@vitest/ui": "1.6.1", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/vitest/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/vitest/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vitest/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/vitest/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vitest/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vitest/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vitest/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vitest/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vitest/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/vitest/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", + "license": "MIT", + "dependencies": { + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-url": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.1.0.tgz", + "integrity": "sha512-jlf/foYIKywAt3x/XWKZ/3rz8OSJPiWktjmk891alJUEjiVxKX9LEO92qH3hv4aJ0mN3MWPvGMCy8jQi95xK4w==", + "license": "MIT", + "dependencies": { + "tr46": "^5.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", + "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", + "license": "Apache-2.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "license": "MIT" + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yup": { + "version": "0.29.3", + "resolved": "https://registry.npmjs.org/yup/-/yup-0.29.3.tgz", + "integrity": "sha512-RNUGiZ/sQ37CkhzKFoedkeMfJM0vNQyaz+wRZJzxdKE7VfDeVKH8bb4rr7XhRLbHJz5hSjoDNwMEIaKhuMZ8gQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.10.5", + "fn-name": "~3.0.0", + "lodash": "^4.17.15", + "lodash-es": "^4.17.11", + "property-expr": "^2.0.2", + "synchronous-promise": "^2.0.13", + "toposort": "^2.0.2" + }, + "engines": { + "node": ">=10" + } + } + } +} diff --git a/astarte-dashboard/package.json b/astarte-dashboard/package.json new file mode 100644 index 0000000000..17b5c908b3 --- /dev/null +++ b/astarte-dashboard/package.json @@ -0,0 +1,126 @@ +{ + "type": "module", + "name": "astarte-dashboard", + "version": "1.3.0-rc.1", + "description": "Astarte dashboard", + "keywords": [ + "astarte", + "dashboard", + "iot" + ], + "contributors": [ + { + "name": "Mattia Pavinati", + "email": "mattia.pavinati@secomind.com", + "url": "https://secomind.com/" + }, + { + "name": "Davide Briani", + "email": "davide.briani@secomind.com", + "url": "https://secomind.com/" + } + ], + "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "https://github.com/astarte-platform/astarte.git" + }, + "scripts": { + "start": "vite", + "build": "tsc && vite build", + "serve": "vite preview", + "lint": "eslint --fix src --ext .js,.jsx,.ts,.tsx", + "check-lint": "eslint src --ext .js,.jsx,.ts,.tsx", + "format": "prettier --write src", + "check-format": "prettier --check src", + "check-types": "tsc --noEmit", + "check-types:watch": "npm run check-types -- --watch", + "test": "vitest", + "cypress:test": "cypress run", + "cypress:open": "cypress open" + }, + "devDependencies": { + "cypress": "^13.17.0", + "prettier": "^3.4.2" + }, + "dependencies": { + "@astarte-platform/react-bootstrap": "^5.15.0", + "@emotion/core": "^11.0.0", + "@emotion/react": "^11.14.0", + "@emotion/styled": "^11.14.0", + "@fortawesome/fontawesome-free": "^6.7.2", + "@projectstorm/react-canvas-core": "^7.0.2", + "@projectstorm/react-diagrams": "^7.0.4", + "@reduxjs/toolkit": "^2.5.0", + "@rjsf/core": "^5.23.2", + "@rjsf/validator-ajv8": "^5.23.2", + "@testing-library/react": "^14.3.1", + "@testing-library/user-event": "^14.5.2", + "@types/color": "^3.0.6", + "@types/js-cookie": "^3.0.6", + "@types/jsrsasign": "^10.5.15", + "@types/lodash": "^4.17.13", + "@types/phoenix": "^1.6.6", + "@types/react": "^18.3.18", + "@types/react-datepicker": "^4.19.6", + "@types/react-dom": "^18.3.5", + "@types/react-redux": "^7.1.34", + "@types/react-syntax-highlighter": "^15.5.13", + "@types/semver": "^7.5.8", + "@types/uuid": "^9.0.8", + "@types/yup": "^0.29.14", + "@vitejs/plugin-react": "^4.3.4", + "ajv": "^8.17.1", + "axios": "^1.7.9", + "bootstrap": "^5.3.3", + "chart.js": "^4.4.7", + "closest": "^0.0.1", + "color": "^4.2.3", + "dagre": "^0.8.5", + "dayjs": "^1.11.13", + "eslint-config-prettier": "^9.1.0", + "eslint-config-react-app": "^7.0.1", + "eslint-plugin-cypress": "^2.15.2", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-testing-library": "^6.5.0", + "history": "^5.3.0", + "js-cookie": "^3.0.5", + "jsdom": "^24.1.3", + "jsrsasign": "^11.1.0", + "lodash": "^4.17.21", + "mock-socket": "^9.3.1", + "pathfinding": "^0.4.18", + "paths-js": "^0.4.11", + "phoenix": "^1.7.18", + "react": "^18.3.1", + "react-bootstrap": "^2.10.7", + "react-chartjs-2": "^5.2.0", + "react-datepicker": "^6.9.0", + "react-dom": "^18.3.1", + "react-redux": "^9.2.0", + "react-router-dom": "^6.28.1", + "react-syntax-highlighter": "^15.6.1", + "resize-observer-polyfill": "^1.5.1", + "sass": "^1.83.0", + "semver": "^6.3.1", + "typescript": "^5.7.2", + "uuid": "^9.0.1", + "vite": "^5.4.14", + "vite-plugin-eslint": "^1.8.1", + "vite-tsconfig-paths": "^4.3.2", + "vitest": "^1.6.1", + "yup": "^0.29.3" + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + } +} diff --git a/astarte-dashboard/public/favicon.ico b/astarte-dashboard/public/favicon.ico new file mode 100644 index 0000000000..694d0771f6 Binary files /dev/null and b/astarte-dashboard/public/favicon.ico differ diff --git a/astarte-dashboard/public/manifest.json b/astarte-dashboard/public/manifest.json new file mode 100644 index 0000000000..162c1ff4fb --- /dev/null +++ b/astarte-dashboard/public/manifest.json @@ -0,0 +1,15 @@ +{ + "short_name": "Astarte Dashboard", + "name": "Astarte Dashboard", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/astarte-dashboard/public/robots.txt b/astarte-dashboard/public/robots.txt new file mode 100644 index 0000000000..e9e57dc4d4 --- /dev/null +++ b/astarte-dashboard/public/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/astarte-dashboard/public/static/img/background-login-bottom.svg b/astarte-dashboard/public/static/img/background-login-bottom.svg new file mode 100644 index 0000000000..aab083e3da --- /dev/null +++ b/astarte-dashboard/public/static/img/background-login-bottom.svg @@ -0,0 +1,38283 @@ + + + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 +s3p1RsxFD9JaJbfQ12mRTWM3empSsiFlFqEYOUtzZnlDq9iDkk2Rn0n263lN8tDZB/Fiz6TdWeFN +yOw4R1L44MGdW2XTmrI+INs9glmnmVj25zRCoWxZiZCONmLh0Aj+3iNZlZOqnHSrllA588pVWDt6 +gLeaOaPbfKm5zdHzUyFzWq2utG/TXOtGVymZyM1LknMuCalsNp2Zs8hsdObPCZGkzDckLJ/qd/Ly +9OhGlp5NRhpCE2a6acShY3qk0KbnTSUPZ3oj8+tSUpVfUyKX67odrNF3xd40yWm89OrBOo2tfkUm +VtturKTqpu3E5+vEWrOhPHkflNPYGnJZ1dTtCsXojC6T7pyxrCOWJMvDeTW7V8fkqFqHd/cj6d/o +k0VC5sKxsknPWe6BJV09iSyu6/wN7bZWWOcD213Sp+qtIandOauq2vLG7KWs12ep8Ulae7CmKzOS +s4tsTylyMz/1yZsQGQ/LreOgickutO9oVXeT5LXhlNkJjtHuY3uZT57FsamaXxQb44Oac6li9qEL +6/MhSXtQHV7RdUZzP5k6sYySY62ns6R0phwxZprxg667XPJPDaXTeU7LX/b1oaq0qtKk3OvpLKfz +uqdSOq6qJJcu9qDQbiT1OxvWJHYklq53mkzpVZmNb3wvYmXsfoYjWTRlv9qlWappDs3cOXxgHqm5 +T+lRZabdZ/jCKpuH6pKo7r/KvPmwKutKh7aj5eVeZDWxB9e/6jWGgrXVEdFydVr9yFV2oxbSpK+e +WXe1VabU6EZWu6u0NtfKe7p4iVQmMrPD/Fkny3WyLMKWjpOf1pWtzburSUVjls+yVvTvkIwvU3rS +fdnZcjbr9lbMsCZ/iUVGh4XTGrP9LLsr1vqmvTU61aY8ay/RRzZGM7KqyQ/Wn8UjsiWSGdbwTGku +ybztZet6Rki/vKXdrqiwYzdTaHk5d2VHxDFXzfc90yzLL/xdpZrk5JxxUrLjVHkzptVImTEna3hU +pLqu8u5HQ5koJQ/rK0RjdySrJBEeDl6wfp22O0OUNlrdGdPGcaJ8jDxCg58a5cC8K8+Eh/h03l31 +VNngofyWRHPzu2XabDENXs/qPjaaLEkaWKvm+XL0s0uOBiK9g+gsdA4KIVmeqUgdd2Uqnj559+ru +Wklzp+DN3clUc3dPPXcnG/pvR0W73XPqqijJrgqp5FPSyLyruiK6KhlD3xGrBKuZr6G7wrKhS0sj +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 +M3QQEh6ypXO1wsNkxqSFKzQKADLu5bXfaHiCYg+5zRY7OG18GyRQKDqgCGerCpNerQSBlhC2FvwN +AxpjbnJDMAEoTmOK8zzP8520bTdp27ZtF7yvK602dpdrSYNbskR2eh2qVMmN9TYtrWRC2CMt0iml +lFLinCgCosYoieu0uyfB/E0GSQaWBxMy3D40T5OQEy73xRprrLGeOlcDSIvxpGJ2ZXfmrG/1vSfF +ZOCb69NtbQUSU6TPJNK2EDMm2Czecdazap3dvza1tVpbaba1WlvvReVMxk8p9Xov/3v/+mmrTN5/ +qS+L7ctb7+N7f/pIG69Qy4w0i6c3z/s1X0vau3omOf1Nyk7xdEzSFUlaO69fr6+XT2/Wd7pf+uLX +XqEktrbi19bmmVmvUDibLq/biTV9fKdXpFrtrjKt9Z6WTml/umfXvsyYTlyR8v5566XxzNil7fS7 +K/3sGZZf5qy9XlLrmie9pE+Xd3r+zKvUwhhqmPxA/H6d1+6q7X6/JLpOLDd9PevWNeM6ZaYud73z +vcKkvdXWjKe95L+e1queT11qr7rCqn+t00q/dVqJsU8rL6V11tezyirrS7w3rbJSPQ== + + + PWc9n06759Wazteu9c96Sfx+nc6/vELJvPesnAqj1Sul2W2u2zG9E1/SX9fpl7R5/7zV0pmlT5df +s7Qa0zqv1LjmmSXOdlrp/5+p/Zl/0zu3y1yt/kon9gqT+mnGNtu5s1u/OevPE1co+fXmKrWQL0yZ +9uul3n59vrwzV2qnFlmdyOqezuzSXtrurOmsflWd1JW6lk+vrE7vvfZnllpjv/OvqpOX3rrnXy8r +vvK+zhNf8yW9M19VJzH2fUnPd/+7/Knrz+wWz+xXCoQUaluI6rvznm5l3XtWr7D8tfreW2b8Wbul +0z3XaTHGl6yv99V545+4yjatTFVWYXLjq/F8qWXWfzOd9dr0Ypyl+/Zrp0vt9qqyaivpzyyvxm+z +d9d10oznlrpqPhdjiBFRlxNRFW0dKeRIEtkgNZ+LTCKjUpH2W7kr0t5uSXj7lpVe0ma5dSgEqtqx +Kqs6Wav9O13mv7zaO6+c4c+wZ1eFyqpMXoy6+bNsaaWRdATTriF1ndflf0W6sgq7rM54X303zTlP +jcl8yXz1tu/2p8XZ3rjifMl3bR3Pi5Jb770v+e7v2uXjarK2k5/JCiX/knfqr46z43csu2hm7lzv +pvT/whdnlOo7Nb1XYxJfLKlfV+usJXXsU1fUrlf1Iekl3S+9K0xm6T51zeTU13V9rbX6kNT6gxfg +R3Gt3Y6t3vXqXJ1K6/va+pfc+/X8/I+rW6d/Sez6qrJM6uuSOD9+bG39S/u1Kyb1pS99SZzp65JY +Yqnlb5sx9Zml1vuqsgqTWG655b55S1xhckt8yW2t3Ne+bt5XviSuUHJf8uKJTfw6TNRtnkaxse95 +t724zqy3zdd1n+asQtGvRIzclanK5KVVJqul/1Tn+9Wrnv6UToqpnv64ZvLa6vPrrnnaSivq8+gs +y7Isw7IMy7Asw7IMy7IsyzKRVWEiq8oyLBNZGEprmmWYyBJZVWqhAAAAAABq1hTTKvfLDklxlmVY +VmEZKsuybL7b/fP9ZrViz3luu+e2WYW5P/WvMHd3r7Aqq7AKczpzlXmFaV1hVVZhFfYVz6qpnrXK +dNZOp60wSuel2S9WZRVWYbnaSTHVetIK80dln7/pzXn+dVVZnX9VGHY73T3L+/We93I971VleN6r +wnB2PG3G1E5b3Zqyqy+rrwp7zyhrZ760qcqwCnO5P/v8vf3KnGLulWZ95fvUL7/wy6y11Xhj/Pm+ +pZN+po/p1HT/lt7nYSTSRQRsEaLSNhJu4miCk9+YwsgPRiKyRJbIElkiy9pRRmSJLJFVoS5cvmh/ +MBLp0I00kdNQMkTWSdQkJAEFFJDiyC07TY4hRkqkc0rexpMhsipt1DQlb2NZIosABCgAAAAAAAAQ +oAAEAEAAPhlVfuqyQRs1jWWJrIpKKq208jWVFCRDvvwqv8oO6bj+tSGyKixDEsCNbJpKJ0O6nEhE +VhVuo6iBGraO44is6kNSSwYIch02htuI99lOHpedRE2iwqlIGYnr1ptOvzVnpLU5/9t3x9Mvxm8r +1fm+pvq9QmUkplljLPN79cfWVq395rfzXlJTvR1jmuv8jbHcN1unM+t6b607W/q1znv1pT7fbnoz +nRVjrLHf+pe0ltZ7sZ6eNcb3qdX3tfu0n/9xpW+tU3r1dKf4ymS9sqtrrT4ktakFVMdxXObqdNqs +q5JWWa1QftmfVF6s3+qMfb/V1FZ/SvH2ba/Of62sltpdMa610rfU3b5nS9/dvueaZutAlCY2jDjq +G8UUaaTBQWSNNM5PpK+TiCyGcQuF2ohEZHEjkeUghtqISPQSJKPIqir7PxhrEuqIRpHLdobifWvX +2bHneve/60y3darxu/2r3/eln1/KasnI/e6TatdOcc07f9367Wuafd9M37PN2q3O+d9pvvOx29f7 +6a0Y27dk5Nu3ZCSl9fem+ebXk7q2fyl2fd0zHWnpb0qr9tcWW+r6t96Pafa79dOvv/POnnP+bW+1 +dNec77XU6or39XyttVhX3/vrxZvqv17t10lpdfp1vr9bQJJ/6vZimnV9bTX+Oum+Wlv7Futd7743 +Z0tG5mzpyJxxvdVrvnvfnLOd1DWm9y/Vuv6lfuvG15KRfi0giSUj8f/1a7G+mDrWr+1fXS/G1Klr +uy0ZSUHZQSUlUVThhkKlQhL5FUjGK83+2mpaNa05b3rt651txTZrfbd+a+lIvL/q/e614u3Z2lo1 +9urT/Sd1v3VXbf3uaivFuGq3t3p1jPX//ppfY89/984UZ/t/ccXZ961Oa87262u3dCTGVXum+lJt +N32/1D6+ml5bd/5N8dX5ut30fedsNZ2a3mz3vZk+zdfuz/SxJSM9Wzqy6q/03vtv76YVS3f9br3a +O6nW12Zdr61XWzJyb0tHXq/uO7+tdOuq6d+tH2uabb61umON9bXW3ZKRtrqlIyuVuOqqqftTt/rW +i3/nWvXeOGPrjqnVrqnW1VZ3/Plx9VzrY0v//WumONNJf99a937XV89K72dNNbV7Z/x6T/r56k23 +JSOppSP19XofY9/4M9b53dbHVdNrfdv7N2Ot396s/15r6cinnqul2i+tlFJqLc3196QXU3wzpW7J +SPqbvn91z9U6ttbSkdjS/0uvvRpjjW+2d+tt6XvNWrslI6v/WzLSs1tAknzdkpEb25z31jTbf5yx +u630HdO9Nd4534xrvteSkZZSvam9V+fX9h9X7a51rnbja6+uX/PrvPPWG1u/9977OF//rHet2H9P +ivWu1qv+nd3qabMlI13f+vlx1pPSrfF/da/ZM95u6Uhqvbp1nOnVWVd9q9u/9rPXjDXdeua/lNb6 +s9a3dOQ//lvr/qs33teSkTi7pSP9avpSV/yuLXX6OtNqychs3dKR2b4FJKE1a033pFJr6ja/00u3 +pSPdXmrr1fqzxhdXS0bqt3Rkrp/fJ33flfrFWGt7897UZk2tpfhaS0buaunIut0Ckuynfvf9THOu +/trpzr//vq1ZY99SXUbne63TfHPVdWsEYN62hR2cb61Y24tdo+5dc/2/ru2ls7SBZKYDkpxIWpeR +VFoGiaKqCsgYUWzjuHUaRcnbVKpSpXUgigt1jF1KM22aDd+4Wuw7e8UaW3up3jRbXat+urWtVlKZ +s50uKcQ2wkHc/0xGYv24SpcPjl4IiutQtmKQk1E0fflvnfTiSCQtHKVG4kxc6ZMAGTUKkFGjkPbr +vTs//VodX0ytP9b3ytf2/s2e6bvXO+l2+3RSkEQ6SNkgTRsoZDTRqVQMcrIrBjm5FtsIN2rdBtq6 +Dw9DQKhhhNu4oTROQyfEkreBm0YUN4+CfHAeuaG+EAT7fP9ztrfSq2/NtOa6c3V8H7t2qul9jCm2 +FlebKdXV36vVTq/Tv1XvWye17r5v3dvdUvoZP8YV42rrpJneu+3Vm37O/rL6pvhef401xfpn/V2z +db/ZP9N/p5ROq3HGlmr8NtenOs/fudZ6cfZ/fGuttuKbdZXaVoxdT4onfdfU5puv1fvqx1Zja+u/ +/XsnrUB+sUsI6Tvji2nO+dL7+7rdVvtnB3nfVkBuqS5T8esN0hrpM4ny88Jv9D5MezdyFhU54Uat +5H3jF4aa5Lrvw8NIKgbZcZyKnICgNidiuHnhh8lM2hJsKlXlUHFQdtjreWK9aZU4T9+QVE50Hcep +lCa8bWSziRddx3FGLlXyPmwMNYqKrBykRFayocIQTnS/nb5wDJE4UcucSNoY6kacyGFUpFcMsiI9 +rkGWvFRlG+FG0obSClTkJNQRNUhvgM+LqFTippK6rFSopLKSZUW+pJpIqslLKlL5W9It76h1nEur +rFRSTSTVRKKnnFQ6juRtFPKSnfaRQg0EAyGlvhFEBCGlPotR6zhyjqC81CXVJSeVkpf6QHKOoKyy +IkthlULIVMkFLC4ElY/SxRU1TEYYHWGH6BCGVrUZYRa862QL29EKChQXhIbPJpSownitasDAqiYQ +T+IIL0QHCZtBKBzg7DvoUJAEN2E1gBwD0aoqMhYcyqFht8lBIxzgAQ+UQzlACCMJwvRIheCHoCAm +GAw4YaxtPW5Ai6FV/aWB8Ai7GEU6Qo/wVCuuVWnwRceEJ5ToQsMb2AOUjhaxTRSyFSqhmXSEGaJD +GIqZRiOhRLvOvVBGHhqpt6qOFiszoaBzoaR0Vqfd0DhCEAyy5FNGhXIaG4ZiVkD8MpRvqBhgrYal +QsEJVnCtqrM8PBQUshUKYrATDUuFcplxUtCduEnBLYkYCjYIMBgKtMljUhCaJEqBvvRV8EGAwVBg +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 +4WXCgxMBHQ5ONBAFBwcmJRsV9oFko8I6TE4oVDQNNjAI2cCAQYiHwYmGikittHRSVlo4KSstpaEk +xDOhIlIdEhAZBRcZI5qRDhQYJhmIIx00AlRGAsmG16mPeHOhz60V/zK2Rk7tp2vcRj6NtE63TTWl +7jHpLReXpiLbdmrdO0sj1E1b24+0EFPZr/U/Jm5uTtppnFzmzjSEPhhZ/rpoWozJx7ulp75+etWn +mj6vt/xx5mZdYu2hz3Kqburc7z7aNU3KSXvfxuc38u75ufyIExVrqx/1+fqR/X3os/92d+ldUuws +jax0kfOpU99sadn0MI+mmz9qpfptqnOsKq7aRtubmninrae6x5fXdZnOKqVqtGuWtG+WqKnR8jXp +O5W577CtS0uNg7ePOs3S65n4u8KOOjc7q1O1E7KmFqY3ripyJubZl/W4bJt5VE3P1N8m29RHyGxZ ++2gvJd5e7qHPqe5T9T5STj7i+RFvp+7M6kd2Z+xbZvejKk199upkXBplXVqXViUu00v7U2p0pilV +a3u1jyPrDKPUNY1Q8U71lvy0qP2+bMR7amrU1khLOTUVm2LhB4sNjXU7jwuflkv1qD9NLK3Twl7c +fnREVkzuRk1NTJo/TXwZa6pNS6h66FOMfS9OCn0yq1m19VDHnj7a76ndtLFQM49sXVucjtOM9Wu1 +v8594XLuozNvQuMvKz863qCP7o2j72OpcXj7EZ4aB/rc2bU0urTKxO7tVuVi3NZ8vTT61maZFhpq +qkZsZqlSzdieplGf2mmrGUdSrYY0nETdnTDvltOZ8jRKRTNOqJ0c9dav7BsZdyVMNQ5j5VNvEZ90 +UyNO3UqbqdAnM6WlXjGq4eKmTHz1dVVaRI1M7Qo1OsRKp2qc2lPok1D1NDpT41id9tU4qqZ9KRVN +I7t0afZKW91NvC3934hoF+Vywnchcy+bMW+fOV3770dd2Un1i8mqn5uyMuWZrbsuWutevMS2m5xm +0WFeYs1SfZRpm8lPusrp8Kyi/5l+xZb6iK+yT9+pj57GUdTr61T1ka2lYv1mStZHinep2fbMiem4 +hz7M+T1z8u45jYPFnZbIx+RHm8x9lX5+ZH/i5UdVZTdOXj/CvDH2O28ce59vnJTaj/paU5caZ/sR +N+arn1fjpJVG3Vd31wmz9KWKahz8cSuvGl5a1mwzjc72/rakaLqnplFjm0IaUu8UoQ== + + + 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 +pelKl/t92tfrtZLllhqnlekWp8wztWJk+9kU1ZCfqnVae8iamcmBZ0jDSaSYpaqpr0c8RFKI57Mk +QU0szEJOp3c9nkacmm2mWmpr3XpqeHbjTdf8H/TRzdfmm3Wf+3vV74o39fuL1JLT8iw583q9p5X9 +EIni64c6FM91sz9S+2+vf9gyU6P99K6rmZWYxsHLxH1kubaPWDt5t45/xkbctGe3fde5q0qzrhSx +tItLNauru7rMVE0jhjSornGgXmSpeon6PUPOzU0tRtVvL9tpZMfKrKlpulmm3ZuYpZGeWsLq3H/t +335k9vvrOq8vz3mN187VSoZdq52a+vnVr0b20jS0Oia+7OjyBZH8UWf+0dk+uVPzz5fbf5T40kMf +1K60uJiqqar6KPN7S38ms2peZ12T94m2l+8+5kfvzHr11Z6t+e3v+fSYq3pctavRYl4z1VTT1ily +fDgKI75WG+PqXarNY3N/DfeOVzRGVStGLsWyS35lMm89rbOuk2qeH+nVWXWqa6S5uWurhz7NmNfX +xPtHh5nY1C7Veb/X+u3czb1aFX+rU3H7Ws/LryfttGSNb76OXq2J+axPak/UKruq7jW2cxR3UuTm +VHnLtFQ1y0Jj3sSpVsnH2lyLf92UF5OpVe/VoXLedtlaMTm6FyaqVVUh61/HxNZqzk22w+aMrpk5 +WTm1dnk5FdM4bJZnlviIeVU5tZZzj5ybvZf8SNWYi6+diZ33hHbr7/e4/VOr0ryV3vcKS6FPGit2 +6Ts9v9d+85oix27KrC7Eq1mpKb9vE+rp/czOaI0aLWen7yn0yev3piHipSXD4kzluirdP6O7L5fV +O/GMMzH3U5+riXbYZttcy6qVd6dHvO13dv+RpVovXt9qvKyv3Vsd7iPNpJvGYd5HP1ZOZ/xojfn8 +iMssXd042fz3b5zbVcp3v6vKGkvXGDX6O1FVlTU5tiK7PU7FbFZJVfGKqBEyd9JKtUnRFqEP8jV3 +tzjtLqZaWm46tdRMTLNN+lM81Wu6am9kV07jKrS103Pl1r2reDd66yXu5DJrvadWS7vK47TKTFzs +Ln2EmbWlL9NnIm7i81ifxrnaVE+03GfrnrOQjc99zce6tjPjJsPr3+dSxOqEW12tXYqWrIych6ZV +fK1TtaTIga+GNJwcZhb0ud4/4Z8aYWVlYvVpdFTo03VqV97UuzQtvWKlPnsTaiZu9vFoyml8s067 +tGzdpaVXp3ll5zK9WVVZ0uTb0kfZmarH1dunbnUmMys/yusm3H2ny9tpvzD5p1aKlYyPi3vzabvX +ttiZ+NrGcbVJEe0QUbObf1SDPtvW935qdK2d9iw1arTUhYp9baV3faLeui3v8DrP+EmzO1WXWpWm +HvazNLLSS7rfZnxep1Unrxqu2rFLEW1vX8m9r7RG1MRLu8gyn+6neFY3y1RnXMunJc1MrldqXZ+t +euPE1h/TOFl7vDfNvcXS3ZembVpdTeMwcyfEuj02M+VH18nKhz4XXdOsH92No/vtn5VCn2Np1KtP +nVmapdBnm9OpcSJzaXGX1g81VerPFJPqWXL0q2+20S17TaNzWxbvZisaNp8hPjVK7qSNupoylbGY +T1M12uexqSkamt2ZU27E79SFhYqoWBpl6qZbvTPbpz7uR6ut0Ae1rNeaM7rWKadxijthKqbMRMub +NXdiJ1xM00dnvN2ZqClP2yxx5mrmpUTNTLy9um2q2nfb9v602pL352TN5EfYWZfO/OP30lof+uie +L3H2S1v7fbqLrZXwvFiq9dLSaF9tiVUv1bX0Zaqm18oKfVr7lnzT4s1kmLp9t6bPFM/NxCvcy191 +IpYl72Ulq+pqWtem7e9597jdjJvH5+v3Nw31irXVorutq9NV5NhVxTbtNLx+f3///VWL2/dutOLa +aiw7V5W+uL971eslNyJ3Uj5rbdXvavNl17GuruZ/Zsb/+DKvmrmr/+5V83K1Nos5U3Of6jIW87H5 +rFV5TtWMLEsjzTJTPCts5rgz91+ses1Uldr6pHxqV1P91RDxLO2lydZ3vCY0vj7JduS5j2W2jL3n +PqfxK9OubU9/p+/MUmXu7rS94mojL++XtxOb0c743j9tnu0q94ptmF1tvd11N76+TTVckYMr966I +l7oQL8o2tLK9Tq46VLPN/jvL+lD7dbRe097O6+4+o345ebU3j/u8piqmlRZqPxvtiU/FeGx/Nzaf +ctqZop7xieveuHe9Qx9Urk2ofHlNzP+Q0X7m9HviGyvxDBtT+2ulmal5mUxTr62syvpoOd+vq8TP +//bPzf3zmrx8/Btbc28/ukq83id39a370V8vtdPV6+orq+TEtTM9rN5qU+bKX9sWq57Oent8mtUM +fVATte0wtVEPre52Pd/+cN91mbyIVthXvMJ65lOrsZr5tvP9xetqr+bylpraj3nMJ9a7r9WMi6i2 +ePzt8udONcQbp1Lx0GeNN2kt1vX6EitZnfHX35+P9BrrX9XTOypeat3fr9J7lyVfr5FqqunWqqUq +rmZub2Z1cvGxlw993slcv+ut/F7p1bQUsYu3q8p6WTNTs9m0yvgcx7aceDetq57e7T3S+jYraiGa +oeq5zzZXdbFNz/VaO+Le9Yu9nZoc4VNRM7kxszSxU2XW2v//aH/hzf78GZ/3fWo+Wj0vnxcX1RQz +70mvDxPxUe5y4v7yYtLGR3tXy0dYx0e3eN589DxzVirEv3Dv9kvdj7576HOrN1NkRs2qZdvFfbS5 +aXyafP2bk/v69w2r7RCf2X0O49TC0wivqP/H7GWf/CFq1KpoXduGpfwn/239PnP1Plq7S6ipZZm0 +FTWR8RrvzP9+j5j97zZGach4ZrTfKpe5k7+Lt9P/0EdP9Xaff99ZHzX/v2s+6u+m8l5uId5WG14j +J+P/zb8eofXxb89N5aO+MbUL1RLV2rTtmXzYh5rXZeYrW2d2aja3td353zpULrPadNXV5jjNXFON +eo9Vf09c3MTCxitUVj19slXj8NnUFNFs8WpW3VcsPr7ejdm5u3tYuL9O0yq9U8U1rg== + + + 4kTOTKmR5l3Czf+uWZr56O4V5Z0R8XoaXarlX3u6fIf4SPfGifrGYUvMfJSV32ua/pbcXNqdqvh7 +QtvUa7c+2jLM3j3z9jF2NnLyWao6P63teC2t65ahpusujlo+ToQavfL+hH0afRExz3p6Lz09a0xU +zD39dVMTdfFfvrxU3KTJbVx7TKtFRO700n3fWiPu1X4+MxEXn8hftX1iZqoqXmtldl5HeqnPPO7e +LPUWqzHd7tBHb/t+L/7wom8e6z1CbL7rI/syPvoppubt/nyUm8Z52Rd/X8xMiItvxlf+0e+52b39 +q0zE6+tXf5r67OTbXX1uoSIen0+XrZcfXfE0vRATcrfyaWmWKVa2Jt2f5c9seT6N+vfDhjSUciQu +5EStt3i01qyr1WY1RTsrqqJpo6Umc/+lZ4hJ/+ru+lk/ymNONjZGzv2mTcXbO0zltz2xap2W9q+1 +z6i79P62PDLnbu6v/TPq+26TT3UTHzUu9s/4W9TczUddq4c+t49Y2/aLa/pHu1honMPfouWfKSv/ +qFe/N7XU2ZaKlVVpOaGPKuPTTFVrv5j72mPd6vepvI/SsBqZOfvSNqfD3LM9al9/NO3l35hTUxu5 +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 + + + \ No newline at end of file diff --git a/astarte-dashboard/public/static/img/background-login-top.svg b/astarte-dashboard/public/static/img/background-login-top.svg new file mode 100644 index 0000000000..bb53f58884 --- /dev/null +++ b/astarte-dashboard/public/static/img/background-login-top.svg @@ -0,0 +1,38360 @@ + + + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 +tiy18yequzZSdqEnZwrJThuRnmS825nZky4kLN9qigxPdZ09ySZ/RzyeNFaO/ysrq+2oLsmy7wWh +/EFMQffKCu82lJI2ahXvODgydNR7YU+lpPL1ivTeWMcVod0dsySmWuDAoBhXRoO9yTOy25m02nPq +8srpWcdfcxoPx+5lM0lURXL5jk7XOftN815ZlnMHtY5uz7M0uzz4bF5dymsrlfc9bZOrDuPzPpl2 +VJnl3c1jKXWcSh5s+5xXiDrybPCu1HJTPq5OnslAKFqorszSlevO2dWrZdK69poZ8Yue2glC3U+f +cfvL19NVks2qufdJdGMva4m9dUh9ncaJeDV1VY39u+563lLMxpOpPpYnZRs9jYrs2wmxbsaUG1ds +XNOkldGUiPX7T25MOINZT7wRGiO19TGyk9VIZV02ZHaTL4fFKfbsdi8hLI1h1Q4T7XbjjMz1d3dz +ZvUhauXV05zuvUxxtRBpakFq9erq6nKqlvXIysqZc3a7UgibSHNlvxmUY9Nkv8+lstSSfTonlrUX +3XLZOSNVKGujMfthk/obbM1PaS/iSV09SE0UuybaXc1+RIht2at80uyV7TlWyWztpY70vdG09p6Z +0Hv1I5Pca4b310s2ki8VS2On38m9nbEc/MxJrK1BLIQbNPLZaKpEr8P6nOljh2/6eZY4pjvVLXVi +vaasKx3RRR/V7CmJxssT3t3xm+fRE5vy8kAP3u8zNzKuOeXPHMephy5UeEdHHz+l5smBYyXPqhF/ +ZKZrepFJffTIPnR8SQg9OvdkviqIZrUt002PG1fqks+qEU7H+VdpmfvwCvNssOjjXUkxqc6epxJj +7SSEvZyZs9Ngx7fBT1tybaVteT4q+716JuNm3fNethS7ZnvlnVqyqtkHzQSxbx3ZnWNC2cQ6mbOE +ZC47XY40eywx7CsL0fAQj3kmaH2niM6qc/fWlqJSjtQtfrA1Sx4nT/p6UDDxVzI/IvFbSrEXyd15 +KffXmPhIFnr6Qq93rvCTZDJTm43PpJRP63zeW4li9xa7w2OUpn+3vEndzxANvlkl2JKVfiPWPo9F +h/Xh776fvLVXZd4HTUIu1lx55d4Wc6+IzvsVmphrhR+8oXzZ7N7X6IREVbeS6I5Ul6rinVt3qhlx +1TYlPFpNdU+TpdXENKM72SxVvSGZYBWrYlanUaL9bi53to/4diYEwcwM80pTWSw7M57dHZJih+Gd +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 + + + 8NiOGiu55GbK7LA13p4awzsrVpUGz4ludqrQlbZ5KL5WPVfG+qGd4WfGsmfSK941l+k4e4gyU1dS +rDGesk6m9e00V1LDMX6avZ3d5LgmY9Y8KWKLaks73ltpM36ucMqTdkhUwqrN0W7TyT2R8GmGQtNR +SyMafyvLT1VN6s7kH5f3+iTZ1dxdntSz5dvC+6rE0+v5ykw8reEUvtYTz2Dv1TTpUU6djrA3U3WG +Jak1e3XosjGx97EzfdT12Ktd/Lmb7XKWr1ov8zk0FSwLNcuXRHasHVL9vqIglVAO5+WHcti9KE2w +FsqRNOb8GNkOiXIUcWz3MaMgVY7jnjQluWkWbUsTA+/k0mj5lSTarZgWw1G+46TFKobDanX09mzE +qE6YaWfUssyYYXdiJmGafU/ZE3GwHjCZNWd5e3PPfIp5yHgGAUQ4gQQHXDBhsQDByeTS2JPeAgcG +CJiC/1Vq2vmU8Zi1fDojTXSJ81ipPKKLJRkJ5k3KbjGzwIEBAhlSR9A+RUGzDF06UlQ5onvK9cUT +RJ8kybj1CWHFg/YMagSv96HC237SKWZha+LrpSWWBsWZZWhJTKEzrJKqOrKJyUf5zJBJWYwy73JZ +Jjep813FSJiCd90+LYm3HC1wYIBQJJNJlCaKc2QuOe3dzzQ3hLepk5vi9VV4K7zMFE+OhVcqyTuP +3EbIKllzqUJEsTLBuu9ys19il06SQRmkoxASWppCOXKZ0jTRiOXhOI9GljEENLJXj0I+kVViCUt2 +pCMxqtvlzeANX5Jllb+ky2XNM3V2epoYy7LszBCmOXhkdPpZf29/9pqZDJXw7Jho8szvU2OJdqxT +zknWtCfWiUHIm/KLmPdeT8hINDV5Z5npey3t91fqBN1JRCRjkd2IIZRck9WUmo7KTpI3RHUal1+0 +/+jKzP59wrQ9DwshJLZkyHQteW4ymxT5sFJmk2fX+atCWVViCGhTpqTdbzR29aIZmQ8rK99+Z7Ib +lDE06Qcl3hyx5A7LNHTMOTTBIjses0I5Dj32tHKlLJajys6fseG9XCY58j7YEYRws/J7lVQ7UpX4 +Ppr9yoR3IrNQJuXd44LgV7H11ihDdqJ16FJq3eeViVOuyVP38UlsSTRthWoPJKt/x7mEYLMrnViV ++hm6N11y1fQ1zUW5z34vIpJB59TvxQ/mXTmraE8eZd46vXY7BPxcxzeWvaleHtGl1Z1/6PaSzant +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 +EGKO6qVz6/mVdaL1E2VQjgIdUAwLdWRqNNZCKSC3jesdHDB88x98zlLWMHgPhQB1pxGE4Xkw5A0D +emJSckMwAShOY4rzPM/znbRtN2nbtm0XvK8rrTZ2l2tJg1uyRHZ6HapUyY31Ni2tZELYIy3SKaWU +UuKcKAKixiiJ67S7J8H8SwZHBpQH24fmaRJywuW+WGONNdZT52oAaTGeVMyu7M6c9a2+96SYDHxz +fbqtrUBiivSZRNoWYsYEm8U7znpWrbP716a2VmsrzbZWa+u9qJzJ+CmlXu/lf+9fP22Vyfsv9WWx +fXnrfXzvTx9p4xVqmZFm8fTmeb/ma0l7V88kp79J2Smejkm6Iklr5/Xr9fXy6c36TvdLX/zaK5TE +1lb82to8M+sVCmfT5XU7saaP7/SKVKvdVaa13tPSKe1P9+zalxnTiStS3j9vvTSeGbu0nX53pZ89 +w/LLnLXXS2pd86SX9OnyTs+feZVaGEMNkx+I36/z2l213e+XRNeJ5aavZ926ZlynzNTlrne+V5i0 +t9qa8bSX/NfTetXzqUvtVVdY9a91Wum3Tisx9mnlpbTO+npWWWV9ifemVVaqp+es5w== + + + 02n3vFrT+dq1/lkvid+v0/mXVyiZ956VU2G0eqU0u811O6Z34kv66zr9kjbvn7daOrP06fJrllZj +WueVGtc8s8TZTiv9/zO1P/Nveud2mavVX+nEXmFSP83YZjt3dus3Z/154golv95cpRbyhSnTfr3U +26/Pl3fmSu3UIqsTWd3TmV3aS9udNZ3Vr6qTulLX8umV1em91/7MUmvsd/5VdfLSW/f862XFV97X +eeJrvqR35qvqJMa+L+n57n+XP3X9md3imf1KgZBCbQtRfXfe062se8/qFZa/Vt97y4w/a7d0uuc6 +Lcb4kvX1vjpv/BNX2aaVqcoqTG58NZ4vtcz6b6azXptejLN0337tdKndXlVWbSX9meXV+G327rpO +mvHcUlfN52IMMSLqciKqoq0jhRxJIhuk5nORSWRUKtJ+K3dF2tstCW/fstJL2iy3DoVAVTtWZVUn +a7V/p8v8l1d755Uz/Bn27KpQWZXJi1E3f5YtrTSSjmDaNaSu87r8r0hXVmGX1Rnvq++mOeepMZkv +ma/e9t3+tDjbG1ecL/mureN5UXLrvfcl3/1du3xcTdZ28jNZoeRf8k791XF2/I5lF83MnevdlP5f ++OKMUn2npvdqTOKLJfXrap21pI596ora9ao+JL2k+6V3hcks3aeumZz6uq6vtVYfklp/8AL8KK61 +27HVu16dq1NpfV9b/5J7v56f/3F16/QviV1fVZZJfV0S58ePra1/ab92xaS+9KUviTN9XRJLLLX8 +bTOmPrPUel9VVmESyy233DdviStMbokvua2V+9rXzfvKl8QVSu5LXjyxiV+HibrN0yg29j3vthfX +mfW2+bru05xVKPqViJG7MlWZvLTKZLX0n+p8v3rV05/SSTHV0x/XTF5bfX7dNU9baUV9Hp1lWZZl +WJZhGZZlWJZhWZZlWSayKkxkVVmGZSILQ2lNswwTWSKrSi0UAAAAAEDNmmJa5X7ZISnOsgzLKixD +ZVmWzXe7f77frFbsOc9t99w2qzD3p/4V5u7uFVZlFVZhTmeuMq8wrSusyiqswr7iWTXVs1aZztrp +tBVG6bw0+8WqrMIqLFc7KaZaT1ph/qjs8ze9Oc+/riqr868Kw26nu2d5v97zXq7nvaoMz3tVGM6O +p82Y2mmrW1N29WX1VWHvGWXtzJc2VRlWYS73Z5+/t1+ZU8y90qyvfJ/65Rd+mbW2Gm+MP9+3dNLP +9DGdmu7f0vs8jES6iIAtQlTaRsJNHE1w8htTGPnBSESWyBJZIktkWTvKiCyRJbIq1IXLF+0PRiId +upEmchpKhsg6iZqEJKCAAlIcuWWnyTHESIl0TsnbeDJEVqWNmqbkbSxLZBGAAAUAAAAAAAACFIAA +AAjAJ6PKT102aKOmsSyRVVFJpZVWvqaSgmTIl1/lV9khHde/NkRWhWVIAriRTVPpZEiXE4nIqsJt +FDVQw9ZxHJFVfUhqyQBBrsPGcBvxPtvJ47KTqElUOBUpI3HdetPpt+aMtDbnf/vuePrF+G2lOt/X +VL9XqIzENGuMZX6v/tjaqrXf/HbeS2qqt2NMc52/MZb7Zut0Zl3vrXVnS7/Wea++1OfbTW+ms2KM +NfZb/5LW0nov1tOzxvg+tfq+dp/28z+u9K11Sq+e7hRfmaxXdnWt1YekNrWA6jiOy1ydTpt1VdIq +qxXKL/uTyov1W52x77ea2upPKd6+7dX5r5XVUrsrxrVW+pa62/ds6bvb9xya2DDiqG8UU6SRBgeR +NdI4P5G+TiKyGMYtFGojEpHFjUSWgxhqIyLRS5CMIquq7P9grEmoIxpFLtsZivetXWfHnuvd/64z +3dapxu/2r37fl35+KaslI/e7T6pdO8U17/x167evafZ9M33PNmu3Oud/p/nOx25f76e3YmzfkpFv +35KRlNbfm+abX0/q2v6l2PV1z3Skpb8prdpfW2yp6996P6bZ79ZPv/7OO3vO+be91dJdc77XUqsr +3tfztdZiXX3vrxdvqv96tV8npdXp1/n+bgFJ/qnbi2nW9bXV+Ouk+2pt7Vusd7373pwtGZmzpSNz +xvVWr/nufXPOdlLXmN6/VOv6l/qtG19LRvq1gCSWjMT/16/F+mLqWL+2f3W9GFOnru22ZCQFZQeV +lERRhRsKlQpJ5FcgGa80+2uradW05rzpta93thXbrPXd+q2lI/H+qve714q3Z2tr1dirT/ef1P3W +XbX1u6utFOOq3d7q1THW//trfo09/907U5zt/8UVZ9+3Oq0526+v3dKRGFftmepLtd30/VL7+Gp6 +bd35N8VX5+t20/eds9V0anqz3fdm+jRfuz/Tx5aM9GzpyKq/0nvvv72bVizd9bv1au+kWl+bdb22 +Xm3JyL0tHXm9uu/8ttKtq6Z/t36sabb51uqONdbXWndLRtrqlo6sVOKqq6buT93qWy/+nWvVe+OM +rTumVrumWldb3fHnx9VzrY8t/fevmeJMJ/19a937XV89K72fNdXU7p3x6z3p56s33ZaMpJaO1Nfr +fYx9489Y53dbH1dNr/Vt79+MtX57s/57raUjn3qulmq/tFJKqbU019+TXkzxzZS6JSPpb/r+1T1X +69haS0diS/8vvfZqjDW+2d6tt6XvNWvtloys/m/JSM9uAUnydUtGbmxz3lvTbP9xxu620ndM99Z4 +53wzrvleS0ZaSvWm9l6dX9t/XLW71rnaja+9un7Nr/POW29s/d577+N8/bPetWL/PSnWu1qv+nd2 +q6fNlox0fevnx1lPSrfG/9W9Zs94u6UjqfXq1nGmV2dd9a1u/9rPXjPWdOuZ/1Ja689a39KR//hv +rfuv3nhfS0bi7JaO9KvpS13xu7bU6etMqyUjs3VLR2b7FpCE1qw13ZNKranb/E4v3ZaOdHuprVfr +zxpfXC0Zqd/Skbl+fp/0fVfqF2Ot7c17U5s1tZbiay0ZuaulI+t2C0iyn/rd9zPNufprpzv//vu2 +Zo19S3UZne+1TvPNVdetEYB52xZ2cL61Ym0vdo26d831/7q2l87SBpKZDkhyImldRlJpGSSKqiog +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 +BycCOhycaCAKDg5MSjYq7APJRoV1mJxQqGgabGAQsoEBgxAPgxMNFZFaaemkrLRwUlZaSkNJiGdC +RaQ6JCAyCi4yRjQjHSgwTDIQRzpoBKiMBHid+og3F/rcWvEvY2vk1H66xm3k00jrdNtUU+oek95y +cWkqsm2n1r2zNELdtLX9SAsxlf1a/2Pi5uakncbJ5XdyZxpCH4wsf100Lcbk493SU18/vepTTZ/X +W/44c7MusfbQZzlVN3Xudx/tmiblpL1v4/Mbeff8XH7EiYq11Y/6fP3I/j702X+7u/QuKXaWRla6 +yPnUqW+2tGx6mEfTzR+1Uv021TlWFVdto+1NTbzT1lPd48vrukxnlVI12jVL2jdL1NRo+Zr0ncrc +d9jWpaXGwdtHnWbp9Uz8XWFHnZud1anaCVlTC9MbVxU5E/Psy3pcts08qqZn6m+TbeojZLasfbSX +Em8v99DnVPepeh8pJx/x/Ii3U3dm9SO7M/Yts/tRlaY+e3UyLo2yLq1LqxKX6aX9KTU605Sqtb3a +x5F1hlHqmkaoeKd6S35a7PdlI95TU6O2Rlq4yqmp2BQLP1hsaKzbeVz4tFyqR/1pYmmdFvbi9qMj +smJyN2pqYtL8aeLLWFNtWkLVQ59i7HtxUuiTWc2qrYc69vTRfk/tpo2Fmnlk69ridJxmrF+r/XXu +C5dzH515Exp/WfnR8QZ9dG8cfR9LjcPbj/DUONDnzq6l0aVVJnZvtyoX47bm66XRtzbLtNBQUzVi +M0uVasb2NI361E5bzTiSajWk4STq7oR5t5zOlKdRKppxQu3kqLd+Zd/IuCthqnEYK596i/ikmxpx +6lbaTIU+mSkt9YpRDRc3ZeKrr6vSImpkaleo0SFWOlXj1J5Cn4Sqp9GZGsfqtK/GUTXtS6loGtml +S7NX2upu4m3p/0ZEuyiXE74LmXvZjHn7zOnafz/qyk6qX0xW/dyUlSnPbN110Vr34iW23eQ0iw7z +EmuW6qNM20x+0lVOh2cV/c/0K7bUR3yVffpOffQ0jqJeX6eqj2wtFes3U7I+UrxLzbZnTkzHPfRh +zu+Zk3fPaRws7rREPiY/2mTuq/TzI/sTLz+qKrtx8voR5o2x33nj2Pt846TUftTXmrrUONuPuDFf +/bwaJ6006r66u06YpS9VVOPgj1t51fDSsmabaXS297clRdM9NY0a2xTSkHqnCH1Qjg== + + + DwczcnardznK0AWOKK9nzuW0+ii5jBPZasRsvcuXq3/lE+NGmMo/ZUzXxCtEEqEe6ujU6Lf21EiR +Mx2iWr8S7ynfXqHP2zTS7rdpKvR5qnGqTSMs06hTjYPvY0u16MzUtvUw9V1shVxpuTTCLU1Nqsr2 +lC/FzOiwM9UxCy2xNErmvirTfmp8X+rUzW1d+o2YDaFPduZVd1pG1KivpZxy+zJXO/f6yDgVIom2 +tVMn49npIzS0dE/jnP6Yl476SDP1dUyY+jROdPoq1CdrfdS5l7jTOHl76BNdb0+5+8iuNGHe3jr5 +0Oes/Kg7jRNt8yPGGyfCPvSJbm+caLUfXakd91NhpV5phC+NLLN6U6ZqJX2ZlkZvNU60W5pcGmnx +uzS6YkubugnLFPqkZerlpkZPNY6eKfSJDv+UqcY5mkbIqRFjr0IaUqeaGhr0sREVtIEkoliZgFge +wbQIYIUEqrDhI8UM8gyAgwYSoAHAhIIQz+Yo9+RJBgGNBjEaCx4ZRDREULzgIRmY8GFpY6PCOhII +CKAQATHJQJZHyAsuLLfiwuHwRoVZSIAVSyYuv8DSKQ8aRDACx1k4CLBiFh4TPsxiAcsKCYuKBsIG +Jx8KChUSOK43bDTY6DCyGDpUBggw2ei4wDDRMoHQWQBBAyUA0ZQAwqYARYqguIgNDTLwpKRTxhKD +crWgpFMWiaSkUx84BUo6teko2XyjwipBSIeCBuKAhFDYaIRQXISQeDQQioYHZSI9Iil1WFS4xLRM +iIhwUk44DgKGxE3QELFCQYOBezas4SGJpA4LZUGRwCIjkj6bjAaKwGFOJkIb4GQwWIjcs+m0BKCl +4kBFxYSKigoKMadggodEhmICBQXFyQQKCBQUBzYUGyAkCwMPkZqAJiY0EMrExMmEBupIHNh0SuLA +JiTAiklAWKBhgISExASKvEiQsTIxoUADLU40UAIJHyYwiPHgcCweDmkCgUmGCmeJQblNAJeKl5VO +aSAKl5NO1QUKITbRkqBTy6GB4iRSQBhIKIAcLqAEgokGCBgGLsJLCcsHjcqBD/oCoYFEniwNOh6M +VPhggLG5k1xMKjAQjkgAKCBURCg6Qij0hSPERopEA3VGTCxsZIPh6ZRJhYkOnhEEDjIMfAyIwM2F +BQA6AjycAKBTgMAHlLNIHRYKJaMhcRwgULQEoKVePB48GwmRieS8rHRgULEx4cMgYHT6bDIeDiQ6 +nEyDCikWGQkAwGCR8bh4NpmSiw+bjAGJDicj0uHFImPycRaZEvaIaBCCUnEXJAdRJ4pyz+abEAO1 +MSkCsDUHVEAOBOA42AEeigoQBx6eAfhUsBUPnZrQsBArCh4+Jx46JSBpIIbgDBwJQBRDhwUKCi0D +VIPm5YDKpWCGwrFgBRcPSYbEsRgFl05poJLgcuLSKc4Cl05lBVxh6RSHK9Ceo8BiElg6RVGAhMXq +hKVjwtIpDWSRgGUlVyBSMlA0sBMIGYwKBTwatEhogIRwK2ADFOrZaCBW6dgQYMWaJAD5QQDERGLD +hQsBBFY6HpwIKiQQNNAGJZR0KkxKOmXxjQrrJCjpFEyCACvGJBeTzIIBgA5Hy4QPqwAp6VSKRknG +JAMpbEFIpz4EIAblKCaccFyFhYAKlQqEULDoCKFQgRFCwRJ4OgUyTCJwHKcDoyNixTYYHhSKbQ8r +IoVSBe7hwsRCknAmLixsRO7ZbF4kLJTIPRsNNJGy0lKdNFHlQUNHYArg4rlwwcI6MOBQkgIywDoq +bMMvK52CgXipOAkABotMBPaIKMENTobExZOAPSIyHhMRNhkFnM8mQwJyFgIQtLTAgHCosMFkAGQR +daKjKuQZwAaJipgGcuGAkTHC8uqQhBRLDMpxQEI2GiEpAEmIcbA4yMjg0hGogVASiGfkng1nQ2Jh +EipQ+LCJC8/FxESFSunplIKTCpXZtcqtjy5Zec+pxZ2VCquhjzLzrYzrdf2tG+fFT+U+op7VJdtK +u+/SquzGKlVdXVOOI0MaTm6PE+3ZNd+XzTaVU08jvmrErIa6e3rmtdRUvmtVvc7zW1X3tlndZ1ta +pcXvTrjv2+beafKZJWTkZM6rPuXia3NCn7OrMjL0WUbGtGRnmPYIVzvtJvQ5vC2e+XWIJDr2/y8+ +Oiws/KO0zEecl3556JONtz/aut0ZjfP7GX9u/PIfMaKlzCp94WXmL69cbdW3lMbG+2PlZc5kPm/K +L9/6rv03dn+1sLS11CpN8/dLvSrndv/s9Ht2bY4PxxNTLTOk4WQvI9vSMv1p32ljZmNHuq1l1aqI +qdAnZSPmkfuuV7seV2c+S//crjpNdZyaXLhlvN1aevy1czutO/v7TTz9JvJmJhv3ZeuPmH3Xo/0Q +IztnPi9vmRR/tT+qr+ahTyflfNSG+L7/Uf4ScS31Nq96zLre2keceInv7+6hD3f3XvnVeJ3na+c2 +31CvdLnfp329XitZbqlxWplucco8UytGtp9NUQ35qVqntYesmZkceIY0nESKWaqa+nrEQySFeD5L +EtTEwizkdHrX42nEqdlmqqW21q2nhmc33nTNf3Slm6/NN+s+9/eq3xVv6vcXqSWn5Vly5vV6Tyv7 +IRLF1w91KJ7rZn+k9t9e/7Blpkb76V1XMysxjYOXifvIcm0fsXbybh3/jI24ac9u+65zV5VmXSli +aReXalZXd3WZqZpGDGlQXeNAvchS9RL1e4acm5tajKrfXrbTyI6VWVPTtLNMuzcxSyM9tYTVuf/a +v/3I7PfXdV5fnvMar52rlQy7Vjs19fOrX43spWlodUx82dHlCyL5o878o7N9cqfmny+3/yjxpYc+ +qF1pcTFVU1X1Ueb3lv5MZtW8zrom7xNtL999zI/emfXqqz1b89vf8+kxV/W4alejxbxmqqmmrVPk ++HAURnytNsbVu1Sbx+b+Gu4dr2iMqlaMXIpll/zKZN56WmddJ9U8P9Krs+pU10hzc9dWD32aMa9v +mnj/6DATm9pzv9f67dzNvVoVf6tTcftaz8uvJ+20ZI1vvo5erYn5rE9qT9Qqu6ruNbZzIDenytsz +LVXNstCYN3GqVfKxNtfiXzflxWRq1Xt1qJy3XbZWTI7uhYlqVVXI+tcxsbWac5PtsDmja2ZOVk6t +XV5OxTQOm+WZJT5iXlVOreXcI+dm7yU/UjXuLL52JnbeE9qtv9/j9k+tSvNWet8rLIU+aazYpe/0 +/CamNq8pcuymzOpCvJqVmvL7NqGe3s/sjNao0XJ2+p5Cn7x+bxoiXloyLM5UrqvS/TO6+3JZvRPP +OBNzP/W5mmiHbbbNtayplXenR7ztd3b/kaVaL17farysr91bHe4jzaSbxmHeRz9WTmf8aI35/IjL +LF3dONn892+c21XKd7+ryhpL1xg1+jtRVZU1ObYiuz1OxWxWSVXxiqgRMnfSSrVJ0RahD/K1Gbc4 +7S6mWlpuOrXUTEyzTfpTPNVrumqvXTmNq9DWTs+VW/eu4t3orZe4k8us9Z5aLe0qj9MqM3Gxu/QR +ZtaWvkyfibiJz2N9GudqUz3Rcp+te85CNj73NR/r2s6Mmwyvf59LEasTbnW1dilasjJyHpoWX+tU +LSly4KshDSeH+YI+1/sn/FMjrKxMrD6Njgp9uk7typt6l6alV6zUZ29CzcTNPh5NOY1v1mmXlq27 +tPTqNK/sXKY3qypLmnxb+ig7U/W4evvUrc5kZuVHed2Eu+90eTvtFyb/1EqxkvFxcW8+bffaFjsT +X9s4rjYpoh0ianbzj2rQZ+/91OhaO+1ZatRoqQsV+9pK7/pEvXVb3uE1n/GTZneqLrUqTT3sZ2lk +pZd0v834vE6rTl41XLVjlyLa3r6Se19pjaiJl3aRZT7dT/GsbpapzriWT0uamVyv1Lo+W/XGia0/ +pnGy9nhvmnuLpbsvTdu0uprGYeZOiHV7bGbKj66TlQ99LrqmWT+6G0f32z8rhT7H0qhXnzqzNEuh +zzanU+NE5tLiLq0faqrUnykm1bPk6FffbKNb9ppG57Ys3s1WNGw+Q3xqlNxJG3U1ZSpjMd+marTP +Y1NTNDS7M6fciN+pCwsVUbE0ytRNt3pntk993I9WW6EPalmvNWd0rVNO4xR3wlRMmYmWN2vuxE64 +mKaPzni7M1FTnrZZ4szVzEuJmpl4e3XbVLXvtu39abUl78/JmsmPsLMunfnH76W1PvTRPV/i7Je2 +9vt0F1sr4XmxVOulpdG+2hKrXqpr6ctUTa+VFfq09i35psWbyTB1+25NnynZAvXnZuIV7uWvOhHL +kveyklV1Na1r0/b3vHvcbsbN4/P1+5uGesXaatHd1tXpKnLsqmKbdhpev7+///6qxe17N1pxbTWW +natKX9zfver1khuROymftbbqd7X5sutYV1fzPzPjf3yZV83c1X/3qnm5WpvFnKm5T3UZi/nYfNaq +PKdqRpalkWaZKZ4V9jLHnbn/YtVrpqrU1iflU7ua6q+GiGdpL022vuM1ofH1SbYjz30ss2XsPfc5 +jV+Zdm17+jt9Z5Yqc3en7RVXG3l5v7yd2Ix2xvf+afNsV7lXbMPsauvtrrvx9W2q4YocXLl3RbzU +hXhRtqGV7XVy1aGabfbfWdaH2q+j9Zr2dl539xn1y8mrvXnc5zVVMa20UPvZaE98KsZj+7ux+ZTT +zhT1jE9c98a96x36oHJtQuXLa2L+h4z2M6ffE99YiWfYmNpfK81MzctkmnptZVXWR8v5fl0lfv63 +f27un9fk5ePf2Jp7+9FV4vW+uvrW/eivl9rp6nX1lVVy4tqZHlZvtSlz5a9ti1VPZ709Ps1qhj6o +idp2mNqoh1Z3u55vf7jvukxeRCvsK15hPfOp1VjNfNv5/uJ1tVdzeUtN7cc85hPr3ddqxkXURV08 +/nb5c6ca4o1TqXjos8abtBbren2JlazO+Ovvz0d6jfWv6ukdFS+17u9X6b3Lkq/XSDXVdGvVUhVX +M7c3szq5+NjLhz7vZK7f9VZ+r/RqWorYxdtVZdnLmpmazaZVxuc4tuXEu2ld9fRu75HWt1lRC9EM +Vc99trmqi216rtfaEfeuX+zt1OQIn4qayY2ZpYmdKrPW/v9H+wtv9ufP+LzvU/PR6nn5vLiopph5 +T3p9mIiPcpcT95cXkzY+2rtaPsI6PrrF8+aj55mzUiH+hXu3X+p+9N1Dn1u9mSIzalYt2y7uo81N +49Pk69+c3Ne/b1hth/jM7nMYpxaeRnhF/T9mL/vkD1GjVkXr2jYs5T/5b+v3mav30dpdQk0ty6St +qImM13hn/vd7xOx/tzFKQ8Yzo/1Wucyd/F28nf6HPnqqt/v8+876qPn/XfNRfzeV93IL8bba8Bo5 +Gf9v/vUIrY9/e24qH/WNqV2olqjWpm3P5MM+1LwuM1/ZOrNTs7mt7c7/1qFymdWmq642x2nmmmrU +e6z6e+LiJhY2XqGy6umTrRqHz6amiGaLV7PqvmLx8fVuzM7d3cPC/XWaVumdKq5xFQ== + + + J3JmSo007xJu/nfN0sxHd68o74yI19PoUi3/2tPlO8RHujdO1DcOW2Lmo6z8XtP0t+Tm0u5Uxd8T +2qZeu/XRlmH27pm3j7GzkZPPUtX5aW3Ha2ldtww1XXdx1PJxItTolfcn7NPoi4h51tN76elZY6Ji +7umvm5q6+C9fXipu0uQ2rj2m1SIid3rpvm+tEfdqP5+ZiItP5K/aPjEzVRWvtTI7ryO91Gced2+W +eovVmG536KO3fb8Xf3jRN4/1HiE23/WRfRkf/RRT83Z/PspN47zsi78vZibExTfjK//o99zs3v5V +JuL19as/TX128u2uPrdQEY/Pp8vWy4+ueJpeiAm5W/m0NMsUK1uT7s/yfGbL82nUvx82pKGUI3Eh +J2q9xaO1Zl2tNqsp2llRFU0bLTWZ+y89Q0z6V3fXz/pRHnOysTFy7jdtKt7eYSq/7YlV67S0f619 +Rt2lx7U8Mudu7q/9M+r7bpNPdRMfNS72z/hb1NzNR12rhz63j1jb9otr+ke7WGicw9+i5Z8pK/+o +V783tdTZloqVWZU2K/XQR5XxaaaqtV/Mfe2xbvX7VN5HaViNzJx9aZvTYe7Zvh/lovb1R9Ne/o05 +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 +MA== + + + \ No newline at end of file diff --git a/astarte-dashboard/public/static/img/login.svg b/astarte-dashboard/public/static/img/login.svg new file mode 100644 index 0000000000..4c1e064724 --- /dev/null +++ b/astarte-dashboard/public/static/img/login.svg @@ -0,0 +1,338 @@ + +image/svg+xml \ No newline at end of file diff --git a/astarte-dashboard/public/static/img/logo.png b/astarte-dashboard/public/static/img/logo.png new file mode 100644 index 0000000000..04e00847db Binary files /dev/null and b/astarte-dashboard/public/static/img/logo.png differ diff --git a/astarte-dashboard/public/static/img/mascotte-computer.svg b/astarte-dashboard/public/static/img/mascotte-computer.svg new file mode 100644 index 0000000000..79f633a6da --- /dev/null +++ b/astarte-dashboard/public/static/img/mascotte-computer.svg @@ -0,0 +1,38367 @@ + + + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 +d3lJClAzwtSQpqqSLJxHwjAhByNtRU2QCAQNAlMA56EYHqTngRpkg8CCmOnggPZ3c/E9bhB44MxQ +uGVRhrxrYV6LMvvL9ixS+NS1e+NejIOTsj9Ch/zwLcdBV1eJ0r3tSpZt3zVeyy5Fud83fkO33Xop ++v45qy9by1K4nTHXbFtkBpk9Zkx9I1uKe/tMIbtrvhrH+pg+Xs36Om6Qpff6WpRZQqbs2u5ZW2+y +16KSKYwrvSXTdu6g4+fkL0vxft4kt3zP3C7b82q4V25bXguvRf15w8bM2MWNzTFl+vF9N8marUY+ +N3PM1EHXqFz5PHYz5X9xmzdTZttMo+zmpShTds00wpbc35YpR2cKl/WZrUjdW1+Mg/bCXQjZ7XfL +dfbt1xtKXJYXLRbay7FYjoOybmNCk0oyFA0FTTQILAMRNT0eMDAUijMdamqmg2pacEALvEWzkN68 +mXxP3XZHyWw9LHR5dZf4olxucS2RKexdyoNSsu5dbpGtKEZeSlyLXJayzOBbC0O2lCeZRvf+sSVS +3nXtqWSJhMmBTNSCby+ie08dvnbITB1CBboMUSgzPy/GQSW3fdnuouNfydBB5+7c9w== + + + O/f/vhZ1t6Ld7t3u7X+m8Ld7RevL6+vO7Ltx153Z1y1kuu7M/v65c3duwc4d3jVm/fT1Wx9bX/xy +9PfUnT6mkenLx48p05e+v+7+3S6ae6b87JgpM3XPrUUd08eYuqVA/z2okK1Inz4I16KP6XsMxrbu +tyP39kJ/z7mMz/3ML3pblg8j87b89g40nwSzYhZW4+vjZWFrYZKZbMbWoq0NI10Luop2s7cUZdqt +zaBk2mwtbEWv26EYRavHmZTCrpF1n77r+Fx8j+l2o8uMLQXS5aWZ5DVAgbVY6K7H96JZKEPXTDsK +i3uohJUrg9YxGpIAAAlTEgBASEQUGAmlUkHVhBIfFAADXUQmUDI4LhgOhUNicUgUDgSF4TFwAASA +gcHAcAyiMApDMAyruxoAgAfCRNZI67PwUxI0BAbhTnHCA+MmwYYWJwmO2c4jjnQ6CqyYDBSkFIAh +zHzRMhzUuKhM4uhCI7BYlscNVxRZhPfvoqHi0RkdMlb3aYfwtblGnvTgkVvmy2NehrbXrZ52oYcL +HFBkmoJ+dIohhM9w2PO7lNmQT0f5fYgf9Ad/RqHMeDHTotAtW3PksULBQ4bGCAQf37taocRTZa2K +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 +W2I+DGCWn7gqVyl+DOpnpeRz1M+mL3oiS8ADa9tTopXtx3YDWz5QHfKrQWtFv5d42t0qxfmXBxGI +hLM0EGKOmqVz6/zKuqD1kzKojQIdKIYKdWQ3GmtDKZDbxuUdHHB88wd8zlDWMHgPhQC6sxF0mPUr +h8Md1AJEDgMqYkpyQzABKE5jivM8z/OdtG03adu2bRe8ryutNnaXa0mDW7JEdnodqlTJjfU2La1k +QtgjLdIppZRS4pwoAqLGKInrtLsnwfxLBkcGkwfbh+ZpEnLC5b5YY4011lPnagBpMZ5UzK7szpz1 +rb73pJgMfHN9uq2tQGKK9JlE2hZixgSbxTvOelats/vXprZWayvNtlZr672onMn4KaVe7+V/718/ +bZXJ+y/1ZbF9eet9fO9PH2njFWqZkWbx9OZ5v+ZrSXtXzySnv0nZKZ6OSboiSWvn9ev19fLpzfpO +90tf/NorlMTWVvza2jwz6xUKZ9PldTuxpo/v9IpUq91VprXe09Ip7U/37NqXGdOJK1LeP2+9NJ4Z +u7Sdfnelnz3D8suctddLal3zpJf06fJOz595lVoYQw2TH4jfr/PaXbXd75dE14nlpg== + + + r2fdumZcp8zU5a53vleYtLfamvG0l/zX03rV86lL7VVXWPWvdVrpt04rMfZp5aW0zvp6VlllfYn3 +plVWqqfnrOfTafe8WtP52rX+WS+J36/T+ZdXKJn3npVTYbR6pTS7zXU7pnfiS/rrOv2SNu+ft1o6 +s/Tp8muWVmNa55Ua1zyzxNlOK/3/M7U/829653aZq9Vf6cReYVI/zdhmO3d26zdn/XniCiW/3lyl +FvKFKdN+vdTbr8+Xd+ZK7dQiqxNZ3dOZXdpL2501ndWvqpO6Utfy6ZXV6b3X/sxSa+x3/lV18tJb +9/zrZcVX3td54mu+pHfmq+okxr4v6fnuf5c/df2Z3eKZ/UqBkEJtC1F9d97Trax7z+oVlr9W33vL +jD9rt3S65zotxviS9fW+Om/8E1fZppWpyipMbnw1ni+1zPpvprNem16Ms3Tffu10qd1eVVZtJf2Z +5dX4bfbuuk6a8dxSV83nYgwxIupyIqqirSOFHEkiG6Tmc5FJZFQq0n4rd0Xa2y0Jb9+y0kvaLLcO +hUBVO1ZlVSdrtX+ny/yXV3vnlTP8GfbsqlBZlcmLUTd/li2tNJKOYNo1pK7zuvyvSFdWYZfVGe+r +76Y556kxmS+Zr9723f60ONsbV5wv+a6t43lRcuu99yXf/V27fFxN1nbyM1mh5F/yTv3VcXb8jmUX +zcyd692U/l/44oxSfaem92pM4osl9etqnbWkjn3qitr1qj4kvaT7pXeFySzdp66ZnPq6rq+1Vh+S +Wn/wAvworrXbsdW7Xp2rU2l9X1v/knu/np//cXXr9C+JXV9Vlkl9XRLnx4+trX9pv3bFpL70pS+J +M31dEksstfxtM6Y+s9R6X1VWYRLLLbfcN2+JK0xuiS+5rZX72tfN+8qXxBVK7ktePLGJX4eJus3T +KDb2Pe+2F9eZ9bb5uu7TnFUo+pWIkbsyVZm8tMpktfSf6ny/etXTn9JJMdXTH9dMXlt9ft01T1tp +RX0enWVZlmVYlmEZlmVYlmFZlmVZJrIqTGRVWYZlIgtDaU2zDBNZIqtKLRQAAAAAQM2aYlrlftkh +Kc6yDMsqLENlWZbNd7t/vt+sVuw5z2333DarMPen/hXm7u4VVmUVVmFOZ64yrzCtK6zKKqzCvuJZ +NdWzVpnO2um0FUbpvDT7xaqswiosVzspplpPWmH+qOzzN705z7+uKqvzrwrDbqe7Z3m/3vNerue9 +qgzPe1UYzo6nzZjaaatbU3b1ZfVVYRll7cyXNlUZVmEu92efv7dfmVPMvdKsr3yf+uUXfpm1thpv +jD/ft3TSz/QxnZru39L7PIxEuoiALUJU2kbCTRxNcPIbUxj5wUhElsgSWSJLZFk7yogskSWyKtSF +yxftD0YiHbqRJnIaSobIOomahCSggAJSHLllp8kxxEiJdE7J23gyRFaljZqm5G0sS2QRgAAFAAAA +AAAAAhSAAAAIwCejyk9dNmijprEskVVRSaWVVr6mkoJkyJdf5VfZIR3XvzZEVoVlSAK4kU1T6WRI +lxOJyKrCbRQ1UMPWcRyRVX1IaskAQa7DxnAb8T7byeOyk6hJVDgVKSNx3XrT6bfmjLQ253/77nj6 +xfhtpTrf11S/V6iMxDRrjGV+r/7Y2qq13/x23ktqqrdjTHOdvzGW+2brdGZd7611Z0u/1nmvvtTn +201vprNijDX2W/+S1tJ6L9bTs8b4PrX6vnaf9vM/rvStdUqvnu4UX5msV3Z1rdWHpDa1gOo4jstc +nU6bdVXSKqsVyi/7k8qL9Vudse+3mtrqTynevu3V+a+V1VK7K8a1VvqWutv3bOm72/esBR2I0sSG +EUd9o5gijTQ4iKyRxvmJ9HUSkcUwbqFQG5GILG4kshzEUBsRiV6CZBRZVWXb/2Csn4Q6olHksgzF ++9aus2PP9e5/15lu61Tjd/tXv+9LP7+U1ZKR+90n1a6d4pp3/rr129c0+76ZvmebtVud87/TfOdj +t6/301sxtm/JyLdvyUhK6+9N882vJ3Vt/1Ls+rpnOtLS35RW7a8tttT1b70f0+x366dff+edPef8 +295q6a4532up1RXv6/laa7GuvvfXizfVf73ar5PS6vTrfH+3gCT/1O3FNOv62mr8ddJ9tbb2Lda7 +3n1vzpaMzNnSkTnjeqvXfPe+OWc7qWtM71+qdf1L/daNryUj/VpAEktG4v/r12J9MXWsX9u/ul6M +qVPXdlsykoKyg0pKoqjCDYVKhSTyK5CMV5r9tdW0alpz3vTa1zvbim3W+m791tKReH/V+91rxduz +tbVq7NWn+0/qfuuu2vrd1VaKcdVub/XqGOv//TW/xp7/7p0pzvb/4oqz71ud1pzt19du6UiMq/ZM +9aWavl9qH19Nr607/6b46nzdbvq+c7aaTk1vtvveTJ/ma/dn+tiSkZ4tHVn1V3rv/bd304qlu363 +Xu2dVOtrs67X1qstGbm3pSOvV/ed31a6ddX079aPNc0231rdscb6WutuyUhb3dKRlUpcddXU/alb +fevFv3Otem+csXXH1GrXVOtqqzv+/Lh6rvWxpf/+NVOc6aS/b617v+urZ6X3s6aa2r0zfr0n/Xz1 +ptuSkdTSkfp6vY+xb/wZ6/xu6+Oq6bW+7f2bsdZvb9Z/r7V05FPP1VLtl1ZKKbWW5vp70ospvplS +t2Qk/U3fv7rnah1ba+lIbOn/pddejbHGN9u79bb0vWat3ZKR1f8tGenZLSBJvm7JyI1tzntrmu0/ +ztjdVvqO6d4a75xvxjXfa8lIS6neVOfX9h9X7a51rnbja6+uX/PrvPPWG1u/9977OF//rHet2H9P +ivWu1qv+nd3qabMlI13f+vlx1pPSrfF/da/ZM95u6Uhqvbp1nOnVWVd9q9u/9rPXjDXdeua/lNb6 +s9a3dOQ//lvr/qs33teSkTi7pSP9avpSV/yuLXX6OtNqychs3dKR2b4FJKE1a033pFJr6ja/00u3 +pSPdXmrr1fqzxhdXS0bqt3Rkrp/fJ33flfrFWGt7897UZk2tpfhaS0buaunIut0Ckuynfvf9THOu +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 +el19ZZWcuHamh9WmzJW/ti1WPZ319vg0qxn6oCZq22Fqox5a3e16vv3hvvMyeRGtsK94hfXMp1Zj +NfNt5/uL19VezeUtNbUf85hPrHdfqxkXURd18XhNdvlzpxrijVOpeOizxpu0Fut6fYmVrM746+/P +R3qN9a/q6R0VL7Xu71fpvcuSr9dINdV0a9VSFVcztzezOrn42MuHPu9krt/1Vn6v9GpaitjF21Vl +2cuamZrNppnY+BzHtpx4N62rnt7tPdL6NitqIZqh6rnPNld1sU3P9Vo74t71i72dmhzhU1EzuTGz +NLFTZdba//9of+HN/vwZn/d9aj5aPS+fFxfVFDPvSa8PE/FR7nLi/vJi0sZHe1fLR1jHR7d43nz0 +PHNWKsS/cO/2S92Pvnvoc6s3U2RGzapl28V9tLlpfJp8/ZuT+/r3DavtEJ/ZfQ7j1MLTCK+o/8fs +ZZ/8IWrUqmhd24al/Cf/bf0+c/U+WrtLqKll2Ze0FTWR8RrvzP9+j5j97zZGach4ZrTfKpe5k7+L +t9P/0EdP9Xaff99ZHzX/v2s+6u+m8l5uId5WG14jJ+P/s9z86xFaH//23FQ+6htTuw== + + + UC1RrU3bnsmHfah5XWa+snVmp2ZzW9ud/61D5TKrTVddbY7TzDXVqPdY9ffExU0sbLxCZdXTJ1s1 +Dp9NTRHNFq9m1X3F4uPr3Zidu7uHhfvrNK3SO1Vc4ypO5MyUGmneJdz875qlmY/uXlHeGRGvp9Gl +Wv61p8t3iI90b5yobxy2xMxHWfm9pulvyc2l3amKvye0Tb1266Mtw+zdM28fY2cjJ5+lqj+t7Xgt +reuWoabrLo5aPk6EGr3y/oR9Gn0RMc96ei89PWtMVMw9/XVTUxf/5ctLxU2a3Ma1x7RaROROL933 +rTXiXu3nMxNx8Yn8VdsnZqaqYv5aK7PzOtJLfeZx92apt1iN6XaHPnrb93vxhxd981jvEWLzXR/Z +l/HRTzE1b/fno9w0zsu++PtiZkJcfDO+8o9+z83u7V9lIl5fv/rT1Gcn3+7qcwsV8fh8umy9/OiK +p+mFmJC7lU9Ls0yxsjXp/ix/ZsvzadS/HzakoZQjcSEnar3Fo7VmXa02qynaWVEVTRstNZn7Lz1D +TPpXd9fP+lEec7KxMXLuN20q3t5hKr/tiVXrtLR/rX1G3aXHtTwy527u3z+jvu82+VQ38VHjYv+M +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 +EHCOLon9XDhqS7SPqJ+8FWJDdYFB + + + \ No newline at end of file diff --git a/astarte-dashboard/public/static/img/mascotte-repair.svg b/astarte-dashboard/public/static/img/mascotte-repair.svg new file mode 100644 index 0000000000..05fb34dd24 --- /dev/null +++ b/astarte-dashboard/public/static/img/mascotte-repair.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/astarte-dashboard/public/user-config/config.json b/astarte-dashboard/public/user-config/config.json new file mode 100644 index 0000000000..c821c38877 --- /dev/null +++ b/astarte-dashboard/public/user-config/config.json @@ -0,0 +1,13 @@ +{ + "astarte_api_url": "http://api.astarte.localhost", + "default_auth": "token", + "enable_flow_preview": false, + "auth": [ + { + "type": "token" + } + ], + "ui": { + "hideSidebar": false + } +} diff --git a/astarte-dashboard/src/AlertManager.tsx b/astarte-dashboard/src/AlertManager.tsx new file mode 100644 index 0000000000..ed6c83e0cf --- /dev/null +++ b/astarte-dashboard/src/AlertManager.tsx @@ -0,0 +1,259 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { + createContext, + useCallback, + useEffect, + useContext, + useMemo, + useRef, + useState, +} from 'react'; +import { v4 as uuidv4 } from 'uuid'; +import { Alert, Row, Col } from 'react-bootstrap'; + +import useRelativeTime from './hooks/useRelativeTime'; + +import type { TimestampMilliseconds, UUIDv4 } from './types'; + +interface HookConfig { + timeout?: number; +} + +interface IAlertOptions { + onClose?: () => void; + onOpen?: () => void; + timeout?: number; + variant?: 'info' | 'danger' | 'warning' | 'success'; +} + +interface IAlert { + id: UUIDv4; + message: string; + options: IAlertOptions; + timestamp: TimestampMilliseconds; + close: () => void; +} + +type IAlertsState = IAlert[]; + +type AlertsController = { + close: (alert: IAlert) => void; + closeAll: () => void; + showSuccess: (message: string, options?: IAlertOptions) => void; + showWarning: (message: string, options?: IAlertOptions) => void; + showError: (message: string, options?: IAlertOptions) => void; + showInfo: (message: string, options?: IAlertOptions) => void; +}; + +const useAlerts: (config?: HookConfig) => [IAlertsState, AlertsController] = ({ timeout } = {}) => { + const timersId = useRef([]); + const [alerts, setAlerts] = useState([]); + + useEffect(() => { + const timersIdRef = timersId.current; + return () => timersIdRef.forEach(clearTimeout); + }, []); + + const close = useCallback( + (alert: IAlert) => { + setAlerts((currentAlerts) => { + const lengthBeforeRemove = currentAlerts.length; + const filteredAlerts = currentAlerts.filter((a) => a.id !== alert.id); + if (lengthBeforeRemove > filteredAlerts.length && alert.options.onClose) { + alert.options.onClose(); + } + return filteredAlerts; + }); + }, + [setAlerts], + ); + + const closeAll = useCallback(() => { + alerts.forEach(close); + }, [alerts, close]); + + const show = useCallback( + (message: string, options: IAlertOptions) => { + const alert: IAlert = { + id: uuidv4(), + message, + options: { + ...options, + }, + timestamp: Date.now(), + close: () => close(alert), + }; + if (alert.options.timeout) { + const timerId = window.setTimeout(() => { + close(alert); + timersId.current.splice(timersId.current.indexOf(timerId), 1); + }, alert.options.timeout); + timersId.current.push(timerId); + } + setAlerts((state) => state.concat(alert)); + if (alert.options.onOpen) { + alert.options.onOpen(); + } + return alert; + }, + [close, setAlerts], + ); + + const showSuccess = useCallback( + (message: string, options: IAlertOptions = {}) => { + const opts: IAlertOptions = { + ...options, + variant: 'success', + timeout: timeout || 0, + }; + return show(message, opts); + }, + [show, timeout], + ); + + const showWarning = useCallback( + (message: string, options: IAlertOptions = {}) => { + const opts: IAlertOptions = { + ...options, + variant: 'warning', + timeout: timeout || 0, + }; + return show(message, opts); + }, + [show, timeout], + ); + + const showError = useCallback( + (message: string, options: IAlertOptions = {}) => { + const opts: IAlertOptions = { + ...options, + variant: 'danger', + timeout: timeout || 0, + }; + return show(message, opts); + }, + [show, timeout], + ); + + const showInfo = useCallback( + (message: string, options: IAlertOptions = {}) => { + const opts: IAlertOptions = { + ...options, + variant: 'info', + timeout: timeout || 0, + }; + return show(message, opts); + }, + [show, timeout], + ); + + const controller = useMemo( + () => ({ + close, + closeAll, + showSuccess, + showWarning, + showError, + showInfo, + }), + [close, closeAll, showSuccess, showWarning, showError, showInfo], + ); + + return [alerts, controller]; +}; + +const GlobalAlertsUtilsContext = createContext | null>(null); +const GlobalAlertsStateContext = createContext([]); + +interface GlobalAlertsProviderProps { + children: React.ReactNode; +} + +const GlobalAlertsProvider = ({ + children, + ...props +}: GlobalAlertsProviderProps): React.ReactElement => { + const alertUtilsContext = useRef(null); + const [alerts, alertsController] = useAlerts({ + timeout: 5000, + }); + + alertUtilsContext.current = alertsController; + + return ( + + + {children} + + + ); +}; + +interface AlertBannerProps { + alert: IAlert; +} + +const AlertBanner = ({ alert }: AlertBannerProps) => { + const alertRelativeTime = useRelativeTime(alert.timestamp); + return ( + + + {alert.message} +
{alertRelativeTime}
+
+ + ); +}; + +interface AlertsBannerProps { + alerts: IAlert[]; +} + +const AlertsBanner = ({ alerts }: AlertsBannerProps) => { + if (!alerts.length) { + return null; + } + + return ( + + {alerts.map((alert) => ( + + ))} + + ); +}; + +const useGlobalAlerts = (): AlertsController => { + const alertContext = useContext(GlobalAlertsUtilsContext) as React.RefObject; + return useMemo(() => alertContext.current, [alertContext]) as AlertsController; +}; + +const useGlobalAlertsState = (): IAlertsState => useContext(GlobalAlertsStateContext); + +export type { IAlert }; + +export { AlertsBanner, useAlerts, useGlobalAlerts, useGlobalAlertsState }; + +export default GlobalAlertsProvider; diff --git a/astarte-dashboard/src/App.tsx b/astarte-dashboard/src/App.tsx new file mode 100644 index 0000000000..b3f34b38a1 --- /dev/null +++ b/astarte-dashboard/src/App.tsx @@ -0,0 +1,158 @@ +/* + This file is part of Astarte. + + Copyright 2020-2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useMemo } from 'react'; +import { BrowserRouter as RouterProvider } from 'react-router-dom'; +import { Col, Container, Row } from 'react-bootstrap'; +import { Provider as ReduxProvider } from 'react-redux'; + +import AlertsProvider from './AlertManager'; +import ConfigProvider, { useConfig } from './ConfigManager'; +import InterfaceEditorPage from './InterfaceEditorPage'; +import Sidebar from './Sidebar'; +import PageRouter from './Router'; +import AstarteProvider, { useAstarte } from './AstarteManager'; +import type { DashboardConfig } from './types'; +import Snackbar from './ui/Snackbar'; +import createReduxStore from './store'; + +const DashboardSidebar = () => { + const config = useConfig(); + const astarte = useAstarte(); + const { triggerDeliveryPoliciesSupported } = useAstarte(); + const isSidebarHidden = config.ui.hideSidebar; + + if (!astarte.isAuthenticated || isSidebarHidden) { + return null; + } + + return ( + + + + + + {astarte.token?.can('realmManagement', 'GET', '/interfaces') && ( + + )} + {astarte.token?.can('realmManagement', 'GET', '/triggers') && ( + + )} + {triggerDeliveryPoliciesSupported && + astarte.token?.can('realmManagement', 'GET', '/policies') && ( + + )} + {(astarte.token?.can('realmManagement', 'GET', '/interfaces') || + astarte.token?.can('realmManagement', 'GET', '/triggers') || + astarte.token?.can('realmManagement', 'GET', '/policies')) && } + {astarte.token?.can('appEngine', 'GET', '/devices') && ( + + )} + {astarte.token?.can('appEngine', 'GET', '/groups') && ( + + )} + {(astarte.token?.can('appEngine', 'GET', '/devices') || + astarte.token?.can('appEngine', 'GET', '/groups')) && } + {config.features.flow && ( + <> + {astarte.token?.can('flow', 'GET', '/flows') && ( + + )} + {astarte.token?.can('flow', 'GET', '/pipelines') && ( + + )} + {astarte.token?.can('flow', 'GET', '/blocks') && ( + + )} + {(astarte.token?.can('flow', 'GET', '/flows') || + astarte.token?.can('flow', 'GET', '/pipelines') || + astarte.token?.can('flow', 'GET', '/blocks')) && } + + )} + {astarte.token?.can('realmManagement', 'GET', '/config') && ( + <> + + + + )} + + + + + + + ); +}; + +const Dashboard = () => { + const astarte = useAstarte(); + const reduxStore = useMemo(() => createReduxStore(astarte.client), [astarte.client]); + return ( + + + + + + + + + + + ); +}; + +const StandaloneEditor = () => ( + + + + + + + + + + + + + +); + +interface Props { + config: DashboardConfig | null; +} + +export default ({ config }: Props): React.ReactElement => ( + + + {config ? ( + + + + + + ) : ( + + )} + + + +); diff --git a/astarte-dashboard/src/AstarteManager.tsx b/astarte-dashboard/src/AstarteManager.tsx new file mode 100644 index 0000000000..0e5e2f8e95 --- /dev/null +++ b/astarte-dashboard/src/AstarteManager.tsx @@ -0,0 +1,244 @@ +/* + This file is part of Astarte. + + Copyright 2020-2024 SECO Mind Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react'; +import AstarteClient, { AstarteToken } from 'astarte-client'; +import _ from 'lodash'; +import semver from 'semver'; + +import type { DashboardConfig } from './types'; +import Cookies from 'js-cookie'; + +const parseAstarteApiUrls = (params: DashboardConfig) => { + const { astarteApiUrl } = params; + let appEngineApiUrl: URL; + let realmManagementApiUrl: URL; + let pairingApiUrl: URL; + let flowApiUrl: URL; + + if (astarteApiUrl === 'localhost') { + appEngineApiUrl = new URL('http://localhost:4002'); + realmManagementApiUrl = new URL('http://localhost:4000'); + pairingApiUrl = new URL('http://localhost:4003'); + flowApiUrl = new URL('http://localhost:4009'); + } else { + appEngineApiUrl = new URL('appengine/', astarteApiUrl); + realmManagementApiUrl = new URL('realmmanagement/', astarteApiUrl); + pairingApiUrl = new URL('pairing/', astarteApiUrl); + flowApiUrl = new URL('flow/', astarteApiUrl); + } + + if (params.appEngineApiUrl) { + appEngineApiUrl = new URL(params.appEngineApiUrl); + } + if (params.realmManagementApiUrl) { + realmManagementApiUrl = new URL(params.realmManagementApiUrl); + } + if (params.pairingApiUrl) { + pairingApiUrl = new URL(params.pairingApiUrl); + } + if (params.flowApiUrl) { + flowApiUrl = new URL(params.flowApiUrl); + } + + return { + appEngineApiUrl: appEngineApiUrl.toString(), + realmManagementApiUrl: realmManagementApiUrl.toString(), + pairingApiUrl: pairingApiUrl.toString(), + flowApiUrl: flowApiUrl.toString(), + }; +}; + +type Session = { + realm: string; + token: string; + authUrl: string | null; +}; + +const SESSION_VERSION = 1; + +function saveSession(session?: Session | null, persistent: boolean = false): void { + if (!session) { + Cookies.remove('session'); + } else { + const cookieOptions = persistent ? { expires: 365 } : undefined; + Cookies.set( + 'session', + JSON.stringify({ ...session, _version: SESSION_VERSION }), + cookieOptions, + ); + } +} + +function loadSession(): Session | null { + let session: Session | null = null; + try { + session = JSON.parse(`${Cookies.get('session')}`); + } catch { + session = null; + } + if (session && _.get(session, '_version') === SESSION_VERSION) { + const tokenValidation = AstarteToken.validate(session.token); + if (tokenValidation === 'valid') { + return _.omit(session, '_version'); + } + } + return null; +} + +type AstarteContextValue = { + client: AstarteClient; + realm: string | null; + token: AstarteToken | null; + isAuthenticated: boolean; + login: ( + params: { realm: string; token: string; authUrl: string | null }, + persistent: boolean, + ) => boolean; + logout: () => void; + triggerDeliveryPoliciesSupported: boolean; +}; + +const AstarteContext = createContext(null); + +interface AstarteProviderProps { + children: React.ReactNode; + config: DashboardConfig; +} + +const astarteVersionWithTriggerDeliveryPoliciesSupport = '1.1.1'; + +const AstarteProvider = ({ + children, + config, + ...props +}: AstarteProviderProps): React.ReactElement => { + const [session, setSession] = useState(loadSession()); + const [realmManagementVersion, setRealmManagementVersion] = useState(null); + + const client = useMemo(() => { + const apiConfig = parseAstarteApiUrls(config); + const authConfig = _.pick(session, ['realm', 'token']); + const clientConfig = _.merge({}, apiConfig, authConfig); + return new AstarteClient(clientConfig); + }, [config]); + + const updateSession = useCallback( + (newSession: Session | null, persistent: boolean = false) => { + if (newSession) { + client.setCredentials({ + realm: newSession.realm, + token: newSession.token, + }); + } else { + client.setCredentials(null); + } + setSession(newSession); + saveSession(newSession, persistent); + }, + [client], + ); + + const login = useCallback( + ( + params: { realm: string; token: string; authUrl: string | null }, + persistent: boolean = false, + ) => { + const { realm, token, authUrl } = params; + if (!realm || !token) { + return false; + } + if (session?.authUrl === authUrl && session.realm === realm && session.token === token) { + return true; + } + updateSession({ realm, token, authUrl }, persistent); + return true; + }, + [session, updateSession], + ); + + const logout = useCallback(() => updateSession(null), [updateSession]); + + useEffect(() => { + client + .getUnauthenticatedRealmManagementVersion() + .then((version) => setRealmManagementVersion(version)) + .catch(() => + client + .getRealmManagementVersion() + .then((version) => setRealmManagementVersion(version)) + .catch(() => setRealmManagementVersion(null)), + ); + Promise.allSettled([ + client.getRealmManagementVersion(), + client.getAppEngineVersion(), + client.getPairingVersion(), + ]).then((results) => { + const hasUnauthorized = results.some( + (result) => result.status === 'rejected' && result.reason?.response?.status === 401, + ); + + const allForbidden = results.every( + (result) => result.status === 'rejected' && result.reason?.response?.status === 403, + ); + + if (hasUnauthorized || allForbidden) { + // This prevents the "Cannot update a component while rendering a different component" warning. + setTimeout(() => logout(), 0); + } + }); + }, [client, logout]); + + const triggerDeliveryPoliciesSupported = useMemo( + () => + realmManagementVersion != null && + semver.gte(realmManagementVersion, astarteVersionWithTriggerDeliveryPoliciesSupport), + [realmManagementVersion], + ); + + const contextValue = useMemo( + () => ({ + client, + realm: session && session.realm, + token: session && new AstarteToken(session.token), + isAuthenticated: session != null, + login, + logout, + triggerDeliveryPoliciesSupported, + }), + [client, login, logout, session, triggerDeliveryPoliciesSupported], + ); + + return ( + + {children} + + ); +}; + +const useAstarte = (): AstarteContextValue => { + const contextValue = useContext(AstarteContext); + if (contextValue == null) { + throw new Error('AstarteContext has not been Provided'); + } + return contextValue; +}; + +export { useAstarte }; + +export default AstarteProvider; diff --git a/astarte-dashboard/src/Base64.test.ts b/astarte-dashboard/src/Base64.test.ts new file mode 100644 index 0000000000..23398d9b5b --- /dev/null +++ b/astarte-dashboard/src/Base64.test.ts @@ -0,0 +1,25 @@ +import { byteArrayToUrlSafeBase64, urlSafeBase64ToByteArray } from './Base64'; + +/* + const uuid = "a717f8d6-5952-4064-add0-008d780879a9"; + const bytes = uuid.replace(/-/g, '').match(/.{2}/g).map((b) => parseInt(b, 16)); +*/ +const UUID_TO_BYTES = [167, 23, 248, 214, 89, 82, 64, 100, 173, 208, 0, 141, 120, 8, 121, 169]; +const DEVICE_ID = 'pxf41llSQGSt0ACNeAh5qQ'; + +describe('Unit Test Base64 utility scripts', () => { + it('uuid to device id', () => { + expect(byteArrayToUrlSafeBase64(UUID_TO_BYTES)).toBe(DEVICE_ID); + }); + + it('is valid uuid', () => { + const byteArray = urlSafeBase64ToByteArray(DEVICE_ID); + + const isValidDeviceId = byteArray.length === 17 && byteArray[16] === 0; + expect(isValidDeviceId).toBe(true); + + for (let i = 0; i < 16; i += 1) { + expect(byteArray[i]).toBe(UUID_TO_BYTES[i]); + } + }); +}); diff --git a/astarte-dashboard/src/Base64.ts b/astarte-dashboard/src/Base64.ts new file mode 100644 index 0000000000..74020b9fff --- /dev/null +++ b/astarte-dashboard/src/Base64.ts @@ -0,0 +1,66 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +const charset = (() => { + const newCharset = []; + let baseCode; + let i; + + baseCode = 'A'.charCodeAt(0); + for (i = 0; i < 26; i += 1) { + newCharset.push(String.fromCharCode(baseCode + i)); + } + + baseCode = 'a'.charCodeAt(0); + for (i = 0; i < 26; i += 1) { + newCharset.push(String.fromCharCode(baseCode + i)); + } + + baseCode = '0'.charCodeAt(0); + for (i = 0; i < 10; i += 1) { + newCharset.push(String.fromCharCode(baseCode + i)); + } + + newCharset.push('-'); + newCharset.push('_'); + + return newCharset; +})(); + +export function byteArrayToUrlSafeBase64(bytes: number[]): string { + const binaryArray = bytes.map((b) => b.toString(2)); + + const padding = '0'.padEnd(6 - ((bytes.length * 8) % 6), '0'); + const binaryString = binaryArray.map((b) => b.padStart(8, '0')).join('') + padding; + const octects = binaryString.match(/.{6}/g) || []; + + return octects.map((b) => charset[parseInt(b, 2)]).join(''); +} + +export function urlSafeBase64ToByteArray(base64string: string): number[] { + let binaryString = ''; + for (let i = 0; i < base64string.length; i += 1) { + binaryString += charset.indexOf(base64string[i]).toString(2).padStart(6, '0'); + } + + const octects = binaryString.match(/.{1,8}/g); + if (octects) { + return octects.map((b) => parseInt(b, 2)); + } + return []; +} diff --git a/astarte-dashboard/src/BlockSourcePage.tsx b/astarte-dashboard/src/BlockSourcePage.tsx new file mode 100644 index 0000000000..79afc2437e --- /dev/null +++ b/astarte-dashboard/src/BlockSourcePage.tsx @@ -0,0 +1,142 @@ +/* + This file is part of Astarte. + + Copyright 2020-2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useCallback, useEffect, useState } from 'react'; +import { useNavigate, useParams } from 'react-router-dom'; +import { Button, Col, Container, Row, Spinner } from 'react-bootstrap'; +import SyntaxHighlighter from 'react-syntax-highlighter'; +import { AstarteCustomBlock } from 'astarte-client'; +import _ from 'lodash'; + +import { actions, useStoreDispatch, useStoreSelector } from './store'; +import { AlertsBanner, useAlerts } from './AlertManager'; +import Empty from './components/Empty'; +import ConfirmModal from './components/modals/Confirm'; +import SingleCardPage from './ui/SingleCardPage'; +import WaitForData from './components/WaitForData'; +import { useAstarte } from 'AstarteManager'; + +const blockTypeToLabel = { + consumer: 'Consumer', + producer: 'Producer', + producer_consumer: 'Producer & Consumer', +}; + +export default (): React.ReactElement => { + const { blockId = '' } = useParams(); + const [showDeleteModal, setShowDeleteModal] = useState(false); + const [deletionAlerts, deletionAlertsController] = useAlerts(); + const navigate = useNavigate(); + const dispatch = useStoreDispatch(); + const blockData = useStoreSelector((selectors) => selectors.block(blockId)); + const blockStatus = useStoreSelector((selectors) => selectors.blockStatus(blockId)); + const isDeletingBlock = useStoreSelector((selectors) => selectors.isDeletingBlock(blockId)); + const astarte = useAstarte(); + + useEffect(() => { + dispatch(actions.blocks.get(blockId)); + }, [dispatch, blockId]); + + const deleteBlock = useCallback(() => { + dispatch(actions.blocks.delete(blockId)).then((action) => { + if (action.meta.requestStatus === 'fulfilled') { + navigate('/blocks'); + } else { + deletionAlertsController.showError( + `Couldn't delete block: ${_.get(action, 'error.message')}`, + ); + setShowDeleteModal(false); + } + }); + }, [dispatch, navigate, blockId, deletionAlertsController]); + + return ( + <> + + + + + + } + errorFallback={ + dispatch(actions.blocks.get(blockId))} + /> + } + > + {(block) => ( + + +
Name
+

{block.name}

+
Type
+

{blockTypeToLabel[block.type]}

+ {block instanceof AstarteCustomBlock && ( + <> +
Source
+ + {block.source} + + + )} +
Schema
+ + {JSON.stringify(block.schema, null, 2)} + + +
+ )} +
+
+ {blockStatus === 'ok' && blockData instanceof AstarteCustomBlock && ( +
+ +
+ )} + {showDeleteModal && ( + setShowDeleteModal(false)} + onConfirm={deleteBlock} + isConfirming={isDeletingBlock} + > +

+ Delete block {blockId}? +

+
+ )} + + ); +}; diff --git a/astarte-dashboard/src/BlocksPage.tsx b/astarte-dashboard/src/BlocksPage.tsx new file mode 100644 index 0000000000..40360b7de9 --- /dev/null +++ b/astarte-dashboard/src/BlocksPage.tsx @@ -0,0 +1,143 @@ +/* + This file is part of Astarte. + + Copyright 2020-2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useEffect } from 'react'; +import { useNavigate } from 'react-router-dom'; +import { Badge, Button, Card, Col, Container, Row, Spinner } from 'react-bootstrap'; +import { AstarteNativeBlock } from 'astarte-client'; +import type { AstarteBlock } from 'astarte-client'; + +import { actions, useStoreDispatch, useStoreSelector } from './store'; +import WaitForData from './components/WaitForData'; +import Empty from './components/Empty'; +import { useAstarte } from 'AstarteManager'; + +interface NewBlockCardProps { + onCreate: () => void; +} + +function NewBlockCard({ onCreate }: NewBlockCardProps) { + return ( + + New Block + + Create your custom block +
+ +
+
+
+ ); +} + +const blockTypeToLabel = { + consumer: 'Consumer', + producer: 'Producer', + producer_consumer: 'Producer & Consumer', +}; + +interface BlockCardProps { + block: AstarteBlock; + onShow: () => void; +} + +function BlockCard({ block, onShow }: BlockCardProps) { + const astarte = useAstarte(); + return ( + + + {astarte.token?.can('flow', 'GET', `/blocks/${block.name}`) ? ( + + ) : ( + block.name + )} + {block instanceof AstarteNativeBlock && ( + + native + + )} + + + {blockTypeToLabel[block.type]} +
+ +
+
+
+ ); +} + +export default (): React.ReactElement => { + const navigate = useNavigate(); + const dispatch = useStoreDispatch(); + const blocksData = useStoreSelector((selectors) => selectors.blocks()); + const blocksStatus = useStoreSelector((selectors) => selectors.blocksStatus()); + const astarte = useAstarte(); + + useEffect(() => { + dispatch(actions.blocks.getList()); + }, [dispatch]); + + return ( + +

Blocks

+ + {astarte.token?.can('flow', 'POST', '/blocks') && ( + + navigate('/blocks/new')} /> + + )} + + +
+ } + errorFallback={ + dispatch(actions.blocks.getList())} + /> + } + > + {(blocks) => ( + <> + {blocks.map((block) => ( + + navigate(`/blocks/${block.name}/edit`)} /> + + ))} + + )} + + + + ); +}; diff --git a/astarte-dashboard/src/ConfigManager.tsx b/astarte-dashboard/src/ConfigManager.tsx new file mode 100644 index 0000000000..fd4c1a5720 --- /dev/null +++ b/astarte-dashboard/src/ConfigManager.tsx @@ -0,0 +1,119 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { createContext, useContext, useMemo } from 'react'; + +import type { DashboardConfig } from './types'; + +type LoginType = keyof AuthOptions; + +interface TokenOptions { + enabled: boolean; +} + +interface OAuthOptions { + enabled: boolean; + oauthApiUrl?: string | null; +} + +interface AuthOptions { + token: TokenOptions; + oauth: OAuthOptions; +} + +type ConfigContextValue = { + auth: { + methods: AuthOptions; + defaultMethod: LoginType; + defaultRealm?: string; + }; + features: { + flow: boolean; + }; + ui: { + hideSidebar: boolean; + }; +}; + +const ConfigContext = createContext(null); + +interface ConfigProviderProps { + children: React.ReactNode; + config: DashboardConfig; +} + +const ConfigProvider = ({ + children, + config, + ...props +}: ConfigProviderProps): React.ReactElement => { + const contextValue = useMemo(() => { + const appConfig: ConfigContextValue = { + auth: { + methods: { + token: { + enabled: false, + }, + oauth: { + enabled: false, + oauthApiUrl: null, + }, + }, + defaultMethod: config.defaultAuth || 'token', + defaultRealm: config.defaultRealm, + }, + features: { + flow: !!config.enableFlowPreview, + }, + ui: { + hideSidebar: !!config.ui?.hideSidebar, + }, + }; + + config.auth.forEach((authOption) => { + if (authOption.type === 'token') { + appConfig.auth.methods.token.enabled = true; + } else if (authOption.type === 'oauth') { + appConfig.auth.methods.oauth.enabled = true; + appConfig.auth.methods.oauth.oauthApiUrl = authOption.oauth_api_url || null; + } + }); + + return appConfig; + }, [config]); + + return ( + + {children} + + ); +}; + +const useConfig = (): ConfigContextValue => { + const contextValue = useContext(ConfigContext); + if (contextValue == null) { + throw new Error('ConfigContext has not been Provided'); + } + return contextValue; +}; + +export { useConfig }; + +export type { AuthOptions, LoginType }; + +export default ConfigProvider; diff --git a/astarte-dashboard/src/DeviceDataStreamValues.tsx b/astarte-dashboard/src/DeviceDataStreamValues.tsx new file mode 100644 index 0000000000..6fd429d846 --- /dev/null +++ b/astarte-dashboard/src/DeviceDataStreamValues.tsx @@ -0,0 +1,308 @@ +/* + This file is part of Astarte. + + Copyright 2024 SECO Mind Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useEffect, useMemo, useState } from 'react'; +import { useParams } from 'react-router-dom'; +import { Card, Container, Table } from 'react-bootstrap'; +import { + AstarteDataTuple, + AstarteDataValue, + AstarteDatastreamIndividualData, + AstarteDatastreamObjectData, + AstarteInterface, + AstarteInterfaceValues, +} from 'astarte-client'; +import _ from 'lodash'; + +import BackButton from './ui/BackButton'; +import { useAstarte } from './AstarteManager'; +import { AlertsBanner, useAlerts } from 'AlertManager'; +import 'react-datepicker/dist/react-datepicker.css'; +import FiltersForm from 'components/FiltersForm'; +import useFetch from 'hooks/useFetch'; + +function formatAstarteData(data?: AstarteDataTuple): string { + if (data == null) { + return ''; + } + if (_.isArray(data)) { + return JSON.stringify(data); + } + if (_.isBoolean(data)) { + return data ? 'true' : 'false'; + } + if (_.isNumber(data)) { + return data.toString(); + } + if (_.isNull(data)) { + return ''; + } + return String(data); +} + +function mapValueToAstarteDataTuple(value: AstarteDataValue): AstarteDataTuple { + if (_.isNumber(value)) { + return { type: 'double', value }; + } else if (_.isBoolean(value)) { + return { type: 'boolean', value }; + } else if (_.isString(value)) { + return { type: 'string', value }; + } else if (_.isArray(value)) { + if (value.length > 0) { + if (_.isNumber(value[0])) { + return { type: 'doublearray', value: value as number[] }; + } else if (_.isBoolean(value[0])) { + return { type: 'booleanarray', value: value as boolean[] }; + } else if (_.isString(value[0])) { + return { type: 'stringarray', value: value as string[] }; + } + } + return { type: 'binaryblobarray', value: [] }; + } + return { type: 'binaryblob', value: null }; +} + +const transformAggregatedDatastreamInterfaceValues = ( + selectedPath: string, + fetchedData: AstarteInterfaceValues, +): AstarteDatastreamObjectData[] => { + const transformedAggregatedDatastreamValues: AstarteDatastreamObjectData[] = []; + + const handleAggregatedDatastreamValues = (aggregatedDatastreamData: any) => { + if (Array.isArray(aggregatedDatastreamData)) { + aggregatedDatastreamData.forEach(handleAggregatedDatastreamValues); + } else if (aggregatedDatastreamData && typeof aggregatedDatastreamData === 'object') { + if ('timestamp' in aggregatedDatastreamData) { + const { timestamp, ...valueData } = aggregatedDatastreamData; + transformedAggregatedDatastreamValues.push({ + endpoint: selectedPath, + timestamp, + value: valueData, + }); + } else { + Object.values(aggregatedDatastreamData).forEach(handleAggregatedDatastreamValues); + } + } + }; + + handleAggregatedDatastreamValues(fetchedData); + return transformedAggregatedDatastreamValues; +}; + +const transformIndividualDatastreamInterfaceValues = ( + selectedPath: string, + fetchedData: AstarteInterfaceValues, +): AstarteDatastreamIndividualData[] => { + const transformedIndividualDatastreamValues: AstarteDatastreamIndividualData[] = []; + + const handleIndividualDatastreamValues = (individualDatastreamData: any) => { + if (Array.isArray(individualDatastreamData)) { + individualDatastreamData.forEach((data) => { + if (data && typeof data === 'object' && 'timestamp' in data && 'value' in data) { + const { timestamp, value } = data; + transformedIndividualDatastreamValues.push({ + endpoint: selectedPath, + timestamp, + ...mapValueToAstarteDataTuple(value), + }); + } + }); + } else if (individualDatastreamData && typeof individualDatastreamData === 'object') { + Object.values(individualDatastreamData).forEach(handleIndividualDatastreamValues); + } + }; + + handleIndividualDatastreamValues(fetchedData); + return transformedIndividualDatastreamValues; +}; + +interface IndividualDatastreamTableProps { + data: AstarteDatastreamIndividualData[]; +} + +const IndividualDatastreamTable = ({ + data, +}: IndividualDatastreamTableProps): React.ReactElement => { + return ( + + + + + + + + + + {data.map((tree, index) => ( + + + + + + ))} + +
PathValueTimestamp
{tree.endpoint}{tree.value}{new Date(tree.timestamp).toLocaleString()}
+ ); +}; + +interface ObjectDatastreamTableProps { + data: AstarteDatastreamObjectData[]; +} + +const ObjectDatastreamTable = ({ data }: ObjectDatastreamTableProps): React.ReactElement => { + const objectProperties = Object.keys(data[0].value); + return ( + <> + + + + {objectProperties.map((property) => ( + + ))} + + + + + {data.map((tree) => ( + + {objectProperties.map((property) => ( + + ))} + + + ))} + +
{property}Timestamp
{formatAstarteData(tree.value[property])}{new Date(tree.timestamp).toLocaleString()}
+ + ); +}; + +interface InterfaceDataProps { + interfaceData: AstarteDatastreamIndividualData[] | AstarteDatastreamObjectData[]; + aggregation: AstarteInterface['aggregation']; +} + +const InterfaceData = ({ interfaceData, aggregation }: InterfaceDataProps): React.ReactElement => { + if (interfaceData.length === 0) { + return

No data in the selected timeframe.

; + } else if (aggregation === 'individual') { + return ; + } + return ; +}; + +export default (): React.ReactElement => { + const { interfaceName = '', deviceId = '', interfaceMajor } = useParams(); + const astarte = useAstarte(); + const [requestingData, setRequestingData] = useState(false); + const [fetchedData, setFetchedData] = useState(null); + const [formAlerts, formAlertsController] = useAlerts(); + const [interfaceData, setInterfaceData] = useState(null); + const [selectedPath, setSelectedPath] = useState(''); + + const deviceDataFetcher = useFetch(() => + astarte.client.getDeviceDataTree({ + deviceId, + interfaceName, + }), + ); + + const interfacePaths = useMemo(() => { + if (deviceDataFetcher.value == null) { + return []; + } else if (deviceDataFetcher.value.dataKind === 'datastream_individual') { + return deviceDataFetcher.value.toLinearizedData().map((data) => data.endpoint); + } else { + return deviceDataFetcher.value.getLeaves().map((data) => data.endpoint); + } + }, [deviceDataFetcher.value]); + + const fetchData = async (path: string, since?: string, to?: string) => { + setRequestingData(true); + setFetchedData(null); + astarte.client + .getDeviceData({ + deviceId, + interfaceName, + path, + since, + to, + }) + .then((data) => { + setSelectedPath(path); + setFetchedData(data); + }) + .catch((err) => { + formAlertsController.showError( + `Could not fetch data to interface: ${err.response.data.errors.detail}`, + ); + setFetchedData([]); + }) + .finally(() => { + setRequestingData(false); + }); + }; + + const transformedData = + interfaceData && fetchedData + ? interfaceData.aggregation === 'individual' + ? transformIndividualDatastreamInterfaceValues(selectedPath, fetchedData) + : transformAggregatedDatastreamInterfaceValues(selectedPath, fetchedData) + : []; + + useEffect(() => { + if (interfaceMajor) { + const major = parseInt(interfaceMajor, 10); + astarte.client + .getInterface({ interfaceName, interfaceMajor: major }) + .then((interfaceData) => { + setInterfaceData(interfaceData); + }); + } + }, []); + + return ( + +
+

+ + Interface Datastream Data +

+
+ + + + {deviceId} /{interfaceName} + + + + {fetchedData && ( + + )} + + +
+ ); +}; diff --git a/astarte-dashboard/src/DeviceInterfaceValues.tsx b/astarte-dashboard/src/DeviceInterfaceValues.tsx new file mode 100644 index 0000000000..4d1c0a96a4 --- /dev/null +++ b/astarte-dashboard/src/DeviceInterfaceValues.tsx @@ -0,0 +1,775 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { ChangeEvent, useEffect, useState } from 'react'; +import { Link, useParams } from 'react-router-dom'; +import { Button, Card, Col, Container, Form, Modal, Row, Spinner, Table } from 'react-bootstrap'; +import { + AstarteDataTuple, + AstarteDataTreeNode, + AstartePropertyData, + AstarteDatastreamIndividualData, + AstarteDatastreamObjectData, + AstarteInterface, + AstarteMapping, + AstarteDataValue, + AstarteDataType, +} from 'astarte-client'; +import _ from 'lodash'; + +import BackButton from './ui/BackButton'; +import Empty from './components/Empty'; +import WaitForData from './components/WaitForData'; +import useFetch from './hooks/useFetch'; +import { useAstarte } from './AstarteManager'; +import { AlertsBanner, useAlerts } from 'AlertManager'; +import * as yup from 'yup'; +import { getValidationSchema } from 'astarte-client/models/InterfaceValue'; +import DatePicker from 'react-datepicker'; +import 'react-datepicker/dist/react-datepicker.css'; + +const MAX_SHOWN_VALUES = 20; + +function formatAstarteData(data?: AstarteDataTuple): string { + const value = data?.value; + if (value == null) { + return ''; + } + if (_.isArray(value)) { + return JSON.stringify(value); + } + if (_.isBoolean(value)) { + return value ? 'true' : 'false'; + } + if (_.isNumber(value)) { + return value.toString(); + } + if (_.isNull(value)) { + return ''; + } + return String(value); +} + +interface PropertyTreeProps { + treeNode: AstarteDataTreeNode; +} + +const PropertyTree = ({ treeNode }: PropertyTreeProps): React.ReactElement => ( +
+    {JSON.stringify(treeNode.toLastValue(), null, 2)}
+  
+); + +interface IndividualDatastreamTableProps { + treeNode: AstarteDataTreeNode; +} + +const IndividualDatastreamTable = ({ + treeNode, +}: IndividualDatastreamTableProps): React.ReactElement => { + const dataValues = treeNode.toLinearizedData(); + + if (dataValues.length === 0) { + return

No data sent by the device.

; + } + + return ( + + + + + + + + + + {dataValues.map((dataValue) => ( + + + + + + ))} + +
PathLast valueLast timestamp
{dataValue.endpoint}{formatAstarteData(dataValue)}{new Date(dataValue.timestamp).toLocaleString()}
+ ); +}; + +interface ObjectDatastreamTableProps { + dataTreeNode: AstarteDataTreeNode; +} + +const ObjectDatastreamTable = ({ + dataTreeNode, +}: ObjectDatastreamTableProps): React.ReactElement => { + const treeData = dataTreeNode.toData(); + + if (treeData.length === 0) { + return

No data sent by the device.

; + } + + const objectProperties = Object.keys(treeData[0].value); + const orderedData = _.orderBy(treeData, 'timestamp', 'desc'); + + return ( + <> +
Path
+

{dataTreeNode.endpoint}

+ + + + {objectProperties.map((property) => ( + + ))} + + + + + {orderedData.slice(0, MAX_SHOWN_VALUES).map((data) => ( + + {objectProperties.map((property) => ( + + ))} + + + ))} + +
{property}Timestamp
{formatAstarteData(data.value[property])}{new Date(data.timestamp).toLocaleString()}
+ + ); +}; + +interface ObjectTableListProps { + treeNode: AstarteDataTreeNode; +} + +const ObjectTableList = ({ treeNode }: ObjectTableListProps): React.ReactElement => { + const dataTreeLeaves = treeNode.getLeaves(); + if (dataTreeLeaves.length === 0) { + return

No data sent by the device.

; + } + return ( + <> + {dataTreeLeaves.map((dataTreeLeaf) => ( + + ))} + + ); +}; + +interface InterfaceDataProps { + interfaceData: + | AstarteDataTreeNode + | AstarteDataTreeNode + | AstarteDataTreeNode; +} + +const InterfaceData = ({ interfaceData }: InterfaceDataProps): React.ReactElement => { + if (interfaceData.dataKind === 'properties') { + return } />; + } + if (interfaceData.dataKind === 'datastream_individual') { + return ( + } + /> + ); + } + return ( + } /> + ); +}; + +interface SendInterfaceDataModalProps { + showModal: boolean; + interfaceDefinition: AstarteInterface; + sendingData: boolean; + handleShowModal: () => void; + sendInterfaceData: (data: { endpoint: string; value: any }) => void; +} + +const SendInterfaceDataModal = ({ + showModal, + sendingData, + interfaceDefinition, + handleShowModal, + sendInterfaceData, +}: SendInterfaceDataModalProps) => { + const [selectedMapping, setSelectedMapping] = useState(null); + const [endpoint, setEndpoint] = useState(''); + const [endpointWithParams, setEndpointWithParams] = useState(''); + const [paramValues, setParamValues] = useState<{ [key: string]: string }>({}); + const [pathParams, setPathParams] = useState([]); + const [value, setValue] = useState(''); + const [parsedIndividualValue, setParsedIndividualValue] = useState(); + const [data, setData] = useState<{ [key: string]: string }>({}); + const [parsedObjectData, setParsedObjectData] = useState<{ [key: string]: AstarteDataValue }>({}); + const [errors, setErrors] = useState<{ [key: string]: string }>({}); + const [selectedDate, setSelectedDate] = useState(); + + const parseValidDateTimeValue = (datetime: string) => { + const date = new Date(datetime); + date.setMinutes(date.getMinutes() - date.getTimezoneOffset()); + return date.toISOString(); + }; + const parseValue = (type: AstarteDataType, value: string) => { + switch (type) { + case 'string': + case 'binaryblob': + return value; + case 'datetime': + return parseValidDateTimeValue(value); + case 'integer': + case 'longinteger': + return parseInt(value, 10); + case 'double': + return parseFloat(value); + case 'boolean': + return value.toLowerCase() === 'true'; + case 'doublearray': + case 'integerarray': + case 'booleanarray': + case 'longintegerarray': + case 'stringarray': + case 'binaryblobarray': + case 'datetimearray': + return JSON.parse(value); + } + }; + + const handleSelectedMapping = (e: ChangeEvent) => { + const selected = interfaceDefinition?.mappings.find( + (mapping) => mapping.endpoint === e.target.value, + ); + setSelectedMapping((selected as AstarteMapping) || null); + setEndpoint(e.target.value); + setValue(''); + setParamValues({}); + setErrors({}); + }; + + type FormControlElement = HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement; + + const handleValueChange = (e: ChangeEvent) => { + setValue(e.target.value); + setErrors({}); + }; + + const handleDateTimeChange = (selectedDate: Date) => { + setSelectedDate(selectedDate); + setValue(selectedDate.toISOString()); + setErrors({}); + }; + + const handleParamChange = (paramName: string, paramValue: string) => { + setParamValues((prevValues) => ({ ...prevValues, [paramName]: paramValue })); + }; + + const handleObjectData = (dataName: string, dataValue: string) => { + const mapping = interfaceDefinition?.mappings.find((m) => { + const segments = m.endpoint.split('/'); + return segments[segments.length - 1] === dataName; + }); + if (mapping) { + setData((prevValues) => ({ + ...prevValues, + [dataName]: dataValue, + })); + const schema = getValidationSchema(mapping.type); + schema + .validate(dataValue) + .then(() => { + setParsedObjectData((prevValues) => ({ + ...prevValues, + [dataName]: parseValue(mapping.type, dataValue), + })); + setErrors((prevErrors) => ({ ...prevErrors, [dataName]: '' })); + }) + .catch((err) => { + setErrors((prevErrors) => ({ ...prevErrors, [dataName]: err.message })); + }); + } + }; + + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault(); + + sendInterfaceData({ + endpoint: endpointWithParams, + value: + interfaceDefinition?.aggregation === 'object' ? parsedObjectData : parsedIndividualValue, + }); + }; + + useEffect(() => { + const pathParamsArray = AstarteMapping.getEndpointParameters(endpoint); + setPathParams(pathParamsArray); + }, [endpoint]); + + useEffect(() => { + let formattedEndpoint = endpoint; + pathParams.forEach((param) => { + formattedEndpoint = formattedEndpoint.replace(`%{${param}}`, paramValues[param] || ''); + }); + setEndpointWithParams(formattedEndpoint); + if (selectedMapping) { + const schema = yup.object().shape({ + value: getValidationSchema(selectedMapping.type), + }); + schema + .validate({ value }) + .then(() => { + setParsedIndividualValue(parseValue(selectedMapping.type, value)); + }) + .catch((err) => { + setErrors({ value: err.message }); + }); + } + if (interfaceDefinition?.aggregation === 'object') { + const endpoints: string[] = interfaceDefinition.mappings.map((mapping) => mapping.endpoint); + const endpointParts: string[][] = endpoints.map((endpoint) => endpoint.split('/')); + const commonParts: string[] = []; + for (let i = 0; i < endpointParts[0].length; i++) { + const currentPart: string = endpointParts[0][i]; + if (endpointParts.every((parts) => parts[i] === currentPart)) { + commonParts.push(currentPart); + } else { + break; + } + } + setEndpoint(commonParts.join('/')); + + interfaceDefinition.mappings.forEach((mapping) => { + const path: string = mapping.endpoint.split('/').pop() || ''; + data[path] = ''; + }); + } + }, [value, pathParams, paramValues]); + + return ( + +
+ + Publish data to interface + + + + {(interfaceDefinition?.aggregation === 'individual' || + interfaceDefinition?.type === 'properties') && ( + + + + {interfaceDefinition?.mappings.map((mapping, index) => ( + + ))} + + + )} + + {!!pathParams.length && ( + +

Please enter endpoint parameters:

+ {pathParams.map((param, index) => ( + + + handleParamChange(param, e.target.value)} + isInvalid={!paramValues[param]} + /> + + + ))} +
+ )} + + {selectedMapping && ( + + Please enter the value: + {selectedMapping.type === 'boolean' ? ( + + + + + + ) : selectedMapping.type === 'datetime' ? ( + <> + handleDateTimeChange(date)} + showTimeSelect + dateFormat="Pp" + className={`form-control ${!!errors.value ? 'is-invalid' : ''}`} + placeholderText="Select date and time" + /> + "(UTC)" + + ) : ( + + )} + {errors.value} + + )} + + {interfaceDefinition?.aggregation === 'object' && ( + +

Please enter values:

+ {Object.keys(data).map((param, index) => { + const paramType = interfaceDefinition.mappings[index].type; + return ( + + + {paramType === 'boolean' ? ( + handleObjectData(param, e.target.value)} + isInvalid={!!errors[param]} + > + + + + + ) : paramType === 'datetime' ? ( + <> + + handleObjectData(param, date ? date.toISOString() : '') + } + showTimeSelect + dateFormat="Pp" + className={`form-control ${!!errors[param] ? 'is-invalid' : ''}`} + placeholderText="Select date and time" + /> + "(UTC)" + + ) : ( + handleObjectData(param, e.target.value)} + isInvalid={!!errors[param]} + /> + )} + {errors[param]} + + + ); + })} +
+ )} +
+ + + + + +
+
+ ); +}; + +const matchMapping = (endpoint: string, mapping: AstarteMapping): boolean => { + const endpointPattern = mapping.endpoint.replace(/%\{[^}]+\}/g, '[^/]+'); + const endpointRegex = new RegExp(`^${endpointPattern}$`); + return endpointRegex.test(endpoint); +}; + +interface UnsetDataModalProps { + showUnsetModal: boolean; + interfaceDefinition: AstarteInterface; + unsettingData: boolean; + handleShowUnsetModal: () => void; + unsetInterfaceData: (endpoint: string) => void; + propertyData?: AstartePropertyData[]; +} + +const UnsetDataModal = ({ + showUnsetModal, + interfaceDefinition, + unsettingData, + handleShowUnsetModal, + unsetInterfaceData, + propertyData, +}: UnsetDataModalProps) => { + const [selectedEndpoint, setSelectedEndpoint] = useState(''); + const [endpointsToUnset, setEndpointsToUnset] = useState([]); + const [errors, setErrors] = useState(''); + + const handleEndpointChange = (e: ChangeEvent) => { + setSelectedEndpoint(e.target.value); + setErrors(''); + }; + + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault(); + if (!selectedEndpoint) { + setErrors('Please select an endpoint.'); + return; + } + unsetInterfaceData(selectedEndpoint); + }; + + useEffect(() => { + if (propertyData && interfaceDefinition) { + const mappingsWithUnsetAllowed = interfaceDefinition.mappings.filter( + (mapping) => mapping.allowUnset, + ); + + const validEndpoints = propertyData + .filter((property) => { + const hasValue = property.value !== null; + return ( + hasValue && + mappingsWithUnsetAllowed.some((mapping) => matchMapping(property.endpoint, mapping)) + ); + }) + .map((property) => property.endpoint); + + setEndpointsToUnset(validEndpoints); + } + }, [propertyData, interfaceDefinition]); + + return ( + +
+ + Unset Data + + + + + Select endpoint to unset + + + {endpointsToUnset.map((endpoint, index) => ( + + ))} + + {errors} + + + + + + + +
+
+ ); +}; + +export default (): React.ReactElement => { + const { deviceId = '', interfaceName = '' } = useParams(); + const astarte = useAstarte(); + const deviceDataFetcher = useFetch(() => + astarte.client.getDeviceDataTree({ + deviceId, + interfaceName, + }), + ); + const [showModal, setShowModal] = useState(false); + const [showUnsetModal, setShowUnsetModal] = useState(false); + const [sendingData, setSendingData] = useState(false); + const [unsettingData, setUnsettingData] = useState(false); + const [formAlerts, formAlertsController] = useAlerts(); + const iface = deviceDataFetcher.value?.interface as AstarteInterface; + const propertyData = deviceDataFetcher.value?.toLinearizedData(); + + const handleShowModal = () => { + setShowModal(!showModal); + }; + + const handleShowUnsetModal = () => { + setShowUnsetModal(!showUnsetModal); + }; + + const sendInterfaceData = (data: { endpoint: string; value: AstarteDataValue }) => { + setSendingData(true); + astarte.client + .sendDataToInterface({ deviceId, interfaceName, path: data.endpoint, data: data.value }) + .then(() => { + handleShowModal(); + deviceDataFetcher.refresh(); + }) + .catch((err) => { + formAlertsController.showError( + `Could not send data to interface: ${err.response.data.errors.detail}`, + ); + handleShowModal(); + }) + .finally(() => { + setSendingData(false); + }); + }; + + const unsetInterfaceData = (endpoint: string) => { + setUnsettingData(true); + astarte.client + .unsetProperty({ deviceId, interfaceName, path: endpoint }) + .then(() => { + handleShowUnsetModal(); + deviceDataFetcher.refresh(); + }) + .catch((err) => { + formAlertsController.showError( + `Could not unset data from interface: ${err.response.data.errors.detail}`, + ); + handleShowUnsetModal(); + }) + .finally(() => { + setUnsettingData(false); + }); + }; + + return ( + +
+

+ + Interface Data +

+
+ {astarte.token?.can( + 'appEngine', + 'POST', + `devices/${deviceId}/interfaces/${interfaceName}`, + ) && + iface?.ownership === 'server' && ( + <> + + {iface.mappings.some((mapping) => mapping.allowUnset) && ( + + )} + + )} + {iface?.type === 'datastream' && ( + + Filter Data + + )} +
+
+ + + + {deviceId} /{interfaceName} + + + + +
+ } + errorFallback={ + + } + > + {(data) => } + + + + {showModal && ( + + )} + {showUnsetModal && ( + + )} + + ); +}; diff --git a/astarte-dashboard/src/DeviceStatusPage/AddToGroupModal.tsx b/astarte-dashboard/src/DeviceStatusPage/AddToGroupModal.tsx new file mode 100644 index 0000000000..672d2235de --- /dev/null +++ b/astarte-dashboard/src/DeviceStatusPage/AddToGroupModal.tsx @@ -0,0 +1,85 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useState } from 'react'; +import { Button, Modal, Spinner } from 'react-bootstrap'; + +import Icon from '../components/Icon'; + +interface AddToGroupModalProps { + onCancel: () => void; + onConfirm: (groupName: string) => void; + groups: string[]; + isAddingToGroup: boolean; +} + +const AddToGroupModal = ({ + onCancel, + onConfirm, + groups, + isAddingToGroup, +}: AddToGroupModalProps): React.ReactElement => { + const [selectedGroup, setSelectedGroup] = useState(null); + + return ( + + + Select Existing Group + + +
    + {groups.map((groupName) => ( +
  • + setSelectedGroup(groupName)}> + + {groupName} + +
  • + ))} +
+
+ + {onCancel && ( + + )} + + +
+ ); +}; + +export default AddToGroupModal; diff --git a/astarte-dashboard/src/DeviceStatusPage/AliasesCard.tsx b/astarte-dashboard/src/DeviceStatusPage/AliasesCard.tsx new file mode 100644 index 0000000000..764d3bde52 --- /dev/null +++ b/astarte-dashboard/src/DeviceStatusPage/AliasesCard.tsx @@ -0,0 +1,122 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React from 'react'; +import { Button, Card, Table } from 'react-bootstrap'; + +import type { AstarteDevice } from 'astarte-client'; +import FullHeightCard from '../components/FullHeightCard'; +import Icon from '../components/Icon'; +import { useAstarte } from 'AstarteManager'; + +interface AliasKeyValuePair { + key: string; + value: string; +} + +interface AliasesTableProps { + deviceId: string; + aliases: Map; + onEditAliasClick: (key: string) => void; + onRemoveAliasClick: ({ key, value }: AliasKeyValuePair) => void; +} + +const AliasesTable = ({ + deviceId, + aliases, + onEditAliasClick, + onRemoveAliasClick, +}: AliasesTableProps): React.ReactElement => { + const astarte = useAstarte(); + return ( + + + + + + + + + + {Array.from(aliases.entries()).map(([key, value]) => ( + + + + + + ))} + +
TagAliasActions
{key}{value} + {astarte.token?.can('appEngine', 'PATCH', `/devices/${deviceId}`) && ( + onEditAliasClick(key)} + /> + )} + {astarte.token?.can('appEngine', 'PATCH', `/devices/${deviceId}`) && ( + onRemoveAliasClick({ key, value })} /> + )} +
+ ); +}; + +interface AliasesCardProps { + device: AstarteDevice; + onNewAliasClick: () => void; + onEditAliasClick: (key: string) => void; + onRemoveAliasClick: ({ key, value }: AliasKeyValuePair) => void; +} + +const AliasesCard = ({ + device, + onNewAliasClick, + onEditAliasClick, + onRemoveAliasClick, +}: AliasesCardProps): React.ReactElement => { + const astarte = useAstarte(); + return ( + + Aliases + + {device.aliases.size > 0 ? ( + + ) : ( +

Device has no aliases

+ )} +
+ +
+
+
+ ); +}; + +export default AliasesCard; diff --git a/astarte-dashboard/src/DeviceStatusPage/AttributesCard.tsx b/astarte-dashboard/src/DeviceStatusPage/AttributesCard.tsx new file mode 100644 index 0000000000..e021cae7af --- /dev/null +++ b/astarte-dashboard/src/DeviceStatusPage/AttributesCard.tsx @@ -0,0 +1,122 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React from 'react'; +import { Button, Card, Table } from 'react-bootstrap'; +import type { AstarteDevice } from 'astarte-client'; + +import FullHeightCard from '../components/FullHeightCard'; +import Icon from '../components/Icon'; +import { useAstarte } from 'AstarteManager'; + +interface AttributeKeyValuePair { + key: string; + value: string; +} + +interface AttributesTableProps { + deviceId: string; + attributes: Map; + onEditAttributeClick: (key: string) => void; + onRemoveAttributeClick: ({ key, value }: AttributeKeyValuePair) => void; +} + +const AttributesTable = ({ + deviceId, + attributes, + onEditAttributeClick, + onRemoveAttributeClick, +}: AttributesTableProps): React.ReactElement => { + const astarte = useAstarte(); + return ( + + + + + + + + + + {Array.from(attributes.entries()).map(([key, value]) => ( + + + + + + ))} + +
FieldValueActions
{key}{value} + {astarte.token?.can('appEngine', 'PATCH', `/devices/${deviceId}`) && ( + onEditAttributeClick(key)} + /> + )} + {astarte.token?.can('appEngine', 'PATCH', `/devices/${deviceId}`) && ( + onRemoveAttributeClick({ key, value })} /> + )} +
+ ); +}; + +interface AttributesCardProps { + device: AstarteDevice; + onNewAttributeClick: () => void; + onEditAttributeClick: (key: string) => void; + onRemoveAttributeClick: ({ key, value }: AttributeKeyValuePair) => void; +} + +const AttributesCard = ({ + device, + onNewAttributeClick, + onEditAttributeClick, + onRemoveAttributeClick, +}: AttributesCardProps): React.ReactElement => { + const astarte = useAstarte(); + return ( + + Attributes + + {device.attributes.size > 0 ? ( + + ) : ( +

Device has no attribute

+ )} +
+ +
+
+
+ ); +}; + +export default AttributesCard; diff --git a/astarte-dashboard/src/DeviceStatusPage/DeviceInfoCard.tsx b/astarte-dashboard/src/DeviceStatusPage/DeviceInfoCard.tsx new file mode 100644 index 0000000000..951b6dcfb6 --- /dev/null +++ b/astarte-dashboard/src/DeviceStatusPage/DeviceInfoCard.tsx @@ -0,0 +1,138 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React from 'react'; +import { Button, Card } from 'react-bootstrap'; + +import type { AstarteDevice } from 'astarte-client'; +import FullHeightCard from '../components/FullHeightCard'; +import Icon from '../components/Icon'; +import { useAstarte } from 'AstarteManager'; + +interface DeviceStatusProps { + status: AstarteDevice['deviceStatus']; +} + +const DeviceStatus = ({ status }: DeviceStatusProps): React.ReactElement => { + let statusString; + let icon; + + switch (status) { + case 'connected': + statusString = 'Connected'; + icon = 'statusConnected' as const; + break; + + case 'disconnected': + statusString = 'Disconnected'; + icon = 'statusDisconnected' as const; + break; + + case 'in_deletion': + statusString = 'In deletion'; + icon = 'statusInDeletion' as const; + break; + + case 'never_connected': + default: + statusString = 'Never connected'; + icon = 'statusNeverConnected' as const; + break; + } + + return ( + <> + + {statusString} + + ); +}; + +interface DeviceInfoCardProps { + device: AstarteDevice; + onInhibitCredentialsClick: () => void; + onEnableCredentialsClick: () => void; + onWipeCredentialsClick: () => void; + onDeleteDeviceClick: () => void; +} + +const DeviceInfoCard = ({ + device, + onInhibitCredentialsClick, + onEnableCredentialsClick, + onWipeCredentialsClick, + onDeleteDeviceClick, +}: DeviceInfoCardProps): React.ReactElement => { + const astarte = useAstarte(); + return ( + + Device Info + +
Device ID
+

{device.id}

+
Device name
+

{device.hasNameAlias ? device.name : 'No name alias set'}

+
Status
+

+ +

+
Credentials inhibited
+

{device.hasCredentialsInhibited ? 'True' : 'False'}

+
+ {device.hasCredentialsInhibited ? ( + + ) : ( + + )} + + +
+
+
+ ); +}; + +export default DeviceInfoCard; diff --git a/astarte-dashboard/src/DeviceStatusPage/DeviceLiveEventsCard.tsx b/astarte-dashboard/src/DeviceStatusPage/DeviceLiveEventsCard.tsx new file mode 100644 index 0000000000..0a20361cdc --- /dev/null +++ b/astarte-dashboard/src/DeviceStatusPage/DeviceLiveEventsCard.tsx @@ -0,0 +1,462 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useCallback, useEffect, useState } from 'react'; +import { Badge, Card } from 'react-bootstrap'; +import _ from 'lodash'; + +import AstarteClient, { + AstarteDeviceEvent, + AstarteDeviceConnectedEvent, + AstarteDeviceDisconnectedEvent, + AstarteDeviceRegistrationEvent, + AstarteDeviceDeletionFinishedEvent, + AstarteDeviceDeletionStartedEvent, + AstarteDeviceErrorEvent, + AstarteDeviceIncomingDataEvent, + AstarteDeviceUnsetPropertyEvent, +} from 'astarte-client'; +import FullHeightCard from '../components/FullHeightCard'; + +interface SystemEvent { + level: 'error' | 'info'; + message: string; + timestamp: number; +} + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function isSystemEvent(arg: any): arg is SystemEvent { + return arg && arg.level && (arg.level === 'error' || arg.level === 'info'); +} + +type RenderableEvent = SystemEvent | AstarteDeviceEvent; + +interface WatchDeviceEventsParams { + astarte: AstarteClient; + deviceId: string; + onEventReceived: (event: AstarteDeviceEvent) => void; + onErrorMessage: (msg: string) => void; + onInfoMessage: (msg: string) => void; +} + +function watchDeviceEvents({ + astarte, + deviceId, + onEventReceived, + onErrorMessage, + onInfoMessage, +}: WatchDeviceEventsParams): void { + const salt = Math.floor(Math.random() * 10000); + const roomName = `dashboard_${deviceId}_${salt}`; + + astarte + .joinRoom(roomName) + .then(() => { + onInfoMessage(`Joined room for device ${deviceId}`); + + astarte.listenForEvents(roomName, (event) => onEventReceived(event)); + + const connectionTriggerPayload = { + name: `connectiontrigger-${deviceId}`, + device_id: deviceId, + simple_trigger: { + type: 'device_trigger', + on: 'device_connected', + device_id: deviceId, + }, + } as const; + + const disconnectionTriggerPayload = { + name: `disconnectiontrigger-${deviceId}`, + device_id: deviceId, + simple_trigger: { + type: 'device_trigger', + on: 'device_disconnected', + device_id: deviceId, + }, + } as const; + + const errorTriggerPayload = { + name: `errortrigger-${deviceId}`, + device_id: deviceId, + simple_trigger: { + type: 'device_trigger', + on: 'device_error', + device_id: deviceId, + }, + } as const; + + const dataTriggerPayload = { + name: `datatrigger-${deviceId}`, + device_id: deviceId, + simple_trigger: { + type: 'data_trigger', + on: 'incoming_data', + interface_name: '*', + value_match_operator: '*', + match_path: '/*', + }, + } as const; + + astarte + .registerVolatileTrigger(roomName, connectionTriggerPayload) + .then(() => { + onInfoMessage('Watching for device connection events'); + }) + .catch(() => { + onErrorMessage("Coulnd't watch for device connection events"); + }); + + astarte + .registerVolatileTrigger(roomName, disconnectionTriggerPayload) + .then(() => { + onInfoMessage('Watching for device disconnection events'); + }) + .catch(() => { + onErrorMessage("Coulnd't watch for device disconnection events"); + }); + + astarte + .registerVolatileTrigger(roomName, errorTriggerPayload) + .then(() => { + onInfoMessage('Watching for device error events'); + }) + .catch(() => { + onErrorMessage("Coulnd't watch for device error events"); + }); + + astarte + .registerVolatileTrigger(roomName, dataTriggerPayload) + .then(() => { + onInfoMessage('Watching for device data events'); + }) + .catch(() => { + onErrorMessage("Coulnd't watch for device data events"); + }); + }) + .catch(() => { + onErrorMessage(`Couldn't join device ${deviceId} room`); + }); +} + +interface TimestampProps { + children: Date; +} + +const Timestamp = ({ children }: TimestampProps): React.ReactElement => { + const formattedTimestamp = children.toISOString().substring(11, 23); + + return {`[${formattedTimestamp}]`}; +}; + +const deviceErrorNameToString = (errorName: string): string => { + switch (errorName) { + case 'write_on_server_owned_interface': + return 'Write on a server owned interface'; + + case 'invalid_interface': + return 'Invalid interface'; + + case 'invalid_path': + return 'Invalid path'; + + case 'mapping_not_found': + return 'Mapping not found'; + + case 'interface_loading_failed': + return 'Interface loading failed'; + + case 'ambiguous_path': + return 'Ambiguous path'; + + case 'undecodable_bson_payload': + return 'Undecodable BSON payload'; + + case 'unexpected_value_type': + return 'Unexpected value type'; + + case 'value_size_exceeded': + return 'Value size exceeded'; + + case 'unexpected_object_key': + return 'Unexpected object key'; + + case 'invalid_introspection': + return 'Invalid introspection'; + + case 'unexpected_control_message': + return 'Unexpected control message'; + + case 'device_session_not_found': + return 'Device session not found'; + + case 'resend_interface_properties_failed': + return 'Resend interface properties failed'; + + case 'empty_cache_error': + return 'Empty cache error'; + + default: + return ''; + } +}; + +const astarteDeviceEventBody = (event: AstarteDeviceEvent) => { + if (event instanceof AstarteDeviceConnectedEvent) { + return ( + <> + + device connected + + IP : {event.ip} + + ); + } + if (event instanceof AstarteDeviceDisconnectedEvent) { + return ( + <> + + device disconnected + + Device disconnected + + ); + } + if (event instanceof AstarteDeviceRegistrationEvent) { + return ( + <> + + device registered + + Device registered + + ); + } + + if (event instanceof AstarteDeviceDeletionStartedEvent) { + return ( + <> + + device deletion started + + Started Device deletion + + ); + } + + if (event instanceof AstarteDeviceDeletionFinishedEvent) { + return ( + <> + + device deletion finished + + Device deleted + + ); + } + + if (event instanceof AstarteDeviceIncomingDataEvent) { + return ( + <> + + incoming data + + {event.interfaceName} + {event.path} + {JSON.stringify(event.value)} + + ); + } + if (event instanceof AstarteDeviceUnsetPropertyEvent) { + return ( + <> + + unset property + + {event.interfaceName} + {event.path} + + ); + } + if (event instanceof AstarteDeviceErrorEvent) { + return ( + <> + + device error + + {deviceErrorNameToString(event.errorName)} + {event.metadata && ( + <> +
+
+ {Object.entries(event.metadata).map(([key, value]) => ( + + {key}:{value} + + ))} +
+ + )} + + ); + } + return <>; +}; + +interface AstarteDeviceEventDelegateProps { + event: AstarteDeviceEvent; +} + +const AstarteDeviceEventDelegate = ({ event }: AstarteDeviceEventDelegateProps) => ( +
  • + {new Date(event.timestamp)} + {astarteDeviceEventBody(event)} +
  • +); + +interface SystemEventDelegateProps { + event: SystemEvent; +} + +const SystemEventDelegate = ({ event }: SystemEventDelegateProps) => { + switch (event.level) { + case 'error': + return ( +
  • + {new Date(event.timestamp)} + + channel + + {event.message} +
  • + ); + + case 'info': + default: + return ( +
  • + {new Date(event.timestamp)} + + channel + + {event.message} +
  • + ); + } +}; + +interface EventDelegateProps { + event: RenderableEvent; +} + +const EventDelegate = ({ event }: EventDelegateProps) => { + if (isSystemEvent(event)) { + return ; + } + + return ; +}; + +interface DeviceLiveEventsViewProps { + astarte: AstarteClient; + deviceId: string; +} + +const DeviceLiveEventsView = ({ + astarte, + deviceId, +}: DeviceLiveEventsViewProps): React.ReactElement => { + const [deviceEvents, setDeviceEvents] = useState([]); + + const registerEvent = (event: RenderableEvent) => { + setDeviceEvents((oldEvents: RenderableEvent[]) => [...oldEvents, event]); + }; + + const sendErrorMessage = useCallback( + (errorMessage: string) => + registerEvent({ + message: errorMessage, + level: 'error', + timestamp: Date.now(), + }), + [], + ); + + const sendInfoMessage = useCallback( + (infoMessage: string) => + registerEvent({ + message: infoMessage, + level: 'info', + timestamp: Date.now(), + }), + [], + ); + + useEffect(() => { + const handleSocketError = () => sendErrorMessage('Astarte channels communication error'); + const handleSocketClose = () => sendErrorMessage('Lost connection with the Astarte channel'); + + astarte.addListener('socketError', handleSocketError); + astarte.addListener('socketClose', handleSocketClose); + + watchDeviceEvents({ + astarte, + deviceId, + onEventReceived: registerEvent, + onErrorMessage: sendErrorMessage, + onInfoMessage: sendInfoMessage, + }); + + return () => { + astarte.removeListener('socketError', handleSocketError); + astarte.removeListener('socketClose', handleSocketClose); + astarte.joinedRooms.forEach((room: string) => { + astarte.leaveRoom(room); + }); + }; + }, [deviceId, astarte, sendErrorMessage, sendInfoMessage]); + + return ( +
    +
      + {deviceEvents.map((event, index: number) => ( + + ))} +
    +
    + ); +}; + +interface DeviceLiveEventsCardProps { + astarte: AstarteClient; + deviceId: string; +} + +const DeviceLiveEventsCard = ({ + astarte, + deviceId, +}: DeviceLiveEventsCardProps): React.ReactElement => ( + + Device Live Events + + + + +); + +export default DeviceLiveEventsCard; diff --git a/astarte-dashboard/src/DeviceStatusPage/DeviceStatusEventsCard.tsx b/astarte-dashboard/src/DeviceStatusPage/DeviceStatusEventsCard.tsx new file mode 100644 index 0000000000..9ac095c59c --- /dev/null +++ b/astarte-dashboard/src/DeviceStatusPage/DeviceStatusEventsCard.tsx @@ -0,0 +1,54 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React from 'react'; +import { Card } from 'react-bootstrap'; + +import type { AstarteDevice } from 'astarte-client'; +import FullHeightCard from '../components/FullHeightCard'; + +interface DeviceStatusEventsCardProps { + device: AstarteDevice; +} + +const DeviceStatusEventsCard = ({ device }: DeviceStatusEventsCardProps): React.ReactElement => { + const propertyArray = [ + { label: 'Last seen IP', value: device.lastSeenIp }, + { label: 'Last credentials request IP', value: device.lastCredentialsRequestIp }, + { label: 'First credentials request', value: device.firstCredentialsRequest?.toLocaleString() }, + { label: 'First registration', value: device.firstRegistration?.toLocaleString() }, + { label: 'Last connection', value: device.lastConnection?.toLocaleString() }, + { label: 'Last disconnection', value: device.lastDisconnection?.toLocaleString() }, + ].filter(({ value }) => value !== undefined); + + return ( + + Device Status Events + + {propertyArray.map(({ label, value }) => ( + +
    {label}
    +

    {value}

    +
    + ))} +
    +
    + ); +}; + +export default DeviceStatusEventsCard; diff --git a/astarte-dashboard/src/DeviceStatusPage/EditAliasModal.tsx b/astarte-dashboard/src/DeviceStatusPage/EditAliasModal.tsx new file mode 100644 index 0000000000..9fe2fe66b0 --- /dev/null +++ b/astarte-dashboard/src/DeviceStatusPage/EditAliasModal.tsx @@ -0,0 +1,57 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React from 'react'; +import type { JSONSchema7 } from 'json-schema'; +import FormModal from '../components/modals/Form'; + +const aliasValueFormSchema: JSONSchema7 = { + type: 'object', + required: ['value'], + properties: { + value: { + title: 'Alias', + type: 'string', + }, + }, +}; + +interface EditAliasModalProps { + onCancel: () => void; + onConfirm: ({ value }: { value: string }) => void; + targetAlias: string; + isUpdatingAlias: boolean; +} + +const EditAliasModal = ({ + onCancel, + onConfirm, + targetAlias, + isUpdatingAlias, +}: EditAliasModalProps): React.ReactElement => ( + +); + +export default EditAliasModal; diff --git a/astarte-dashboard/src/DeviceStatusPage/EditAttributeModal.tsx b/astarte-dashboard/src/DeviceStatusPage/EditAttributeModal.tsx new file mode 100644 index 0000000000..545f824c61 --- /dev/null +++ b/astarte-dashboard/src/DeviceStatusPage/EditAttributeModal.tsx @@ -0,0 +1,57 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React from 'react'; +import type { JSONSchema7 } from 'json-schema'; +import FormModal from '../components/modals/Form'; + +const attributeValueFormSchema: JSONSchema7 = { + type: 'object', + required: ['value'], + properties: { + value: { + title: 'Attribute', + type: 'string', + }, + }, +}; + +interface EditAttributeModalProps { + onCancel: () => void; + onConfirm: ({ value }: { value: string }) => void; + targetAttribute: string; + isUpdatingAttribute: boolean; +} + +const EditAttributeModal = ({ + onCancel, + onConfirm, + targetAttribute, + isUpdatingAttribute, +}: EditAttributeModalProps): React.ReactElement => ( + +); + +export default EditAttributeModal; diff --git a/astarte-dashboard/src/DeviceStatusPage/ExchangedBytesCard.tsx b/astarte-dashboard/src/DeviceStatusPage/ExchangedBytesCard.tsx new file mode 100644 index 0000000000..dfff7f3cd6 --- /dev/null +++ b/astarte-dashboard/src/DeviceStatusPage/ExchangedBytesCard.tsx @@ -0,0 +1,141 @@ +/* + This file is part of Astarte. + + Copyright 2020-2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useMemo } from 'react'; +import { Card, Col, Row, Table } from 'react-bootstrap'; +import AstarteClient, { AstarteDevice, AstarteDeviceInterfaceStats } from 'astarte-client'; +import { getDeviceStats } from 'astarte-charts'; +import { PieChart } from 'astarte-charts/react'; + +import FullHeightCard from '../components/FullHeightCard'; + +const formatBytes = (bytes: number): string => { + if (bytes < 1024) { + return `${bytes}B`; + } + if (bytes < 1024 * 1024) { + return `${(bytes / 1024).toFixed(2)}KiB`; + } + return `${(bytes / (1024 * 1024)).toFixed(2)}MiB`; +}; + +type BytesAndMessagesStats = { + name: string; + bytes: number; + bytesPercent: number; + messages: number; + messagesPercent: number; +}; + +interface StatsTableRowProps { + stats: BytesAndMessagesStats; +} + +const StatsTableRow = ({ stats }: StatsTableRowProps): React.ReactElement => ( + + {stats.name} + {formatBytes(stats.bytes)} + {`${stats.bytesPercent.toFixed(2)}%`} + {stats.messages} + {`${stats.messagesPercent.toFixed(2)}%`} + +); + +interface ExchangedBytesCardProps { + astarte: AstarteClient; + device: AstarteDevice; +} + +const ExchangedBytesCard = ({ astarte, device }: ExchangedBytesCardProps): React.ReactElement => { + const deviceStatsProvider = useMemo( + () => getDeviceStats(astarte, { deviceId: device.id, stats: 'exchangedBytes' }), + [astarte, device.id], + ); + const fullList = Array.from(device.introspection.values()).concat(device.previousInterfaces); + const totalBytes = device.totalReceivedBytes; + const totalMessages = device.totalReceivedMessages; + + const computedStats: BytesAndMessagesStats[] = []; + let interfaceBytes = 0; + let interfaceMessages = 0; + fullList + .filter((interfaceStats: AstarteDeviceInterfaceStats) => interfaceStats.exchangedMessages > 0) + .forEach((interfaceStats: AstarteDeviceInterfaceStats) => { + interfaceBytes += interfaceStats.exchangedBytes; + interfaceMessages += interfaceStats.exchangedMessages; + + computedStats.push({ + name: `${interfaceStats.name} v${interfaceStats.major}.${interfaceStats.minor}`, + bytes: interfaceStats.exchangedBytes, + bytesPercent: interfaceBytes !== 0 ? (interfaceStats.exchangedBytes * 100) / totalBytes : 0, + messages: interfaceStats.exchangedMessages, + messagesPercent: + interfaceMessages !== 0 ? (interfaceStats.exchangedMessages * 100) / totalMessages : 0, + }); + }); + + computedStats.push({ + name: 'Other', + bytes: totalBytes - interfaceBytes, + bytesPercent: interfaceBytes !== 0 ? ((totalBytes - interfaceBytes) * 100) / totalBytes : 0, + messages: totalMessages - interfaceMessages, + messagesPercent: + interfaceMessages !== 0 ? ((totalMessages - interfaceMessages) * 100) / totalMessages : 0, + }); + + computedStats.push({ + name: 'Total', + bytes: totalBytes, + bytesPercent: 100, + messages: totalMessages, + messagesPercent: 100, + }); + + return ( + + Device Stats + + + + + + + + + + + + + + + {computedStats.map((stats) => ( + + ))} + +
    InterfaceBytesBytes (%)MessagesMessages (%)
    + + + + +
    +
    +
    + ); +}; + +export default ExchangedBytesCard; diff --git a/astarte-dashboard/src/DeviceStatusPage/GroupsCard.tsx b/astarte-dashboard/src/DeviceStatusPage/GroupsCard.tsx new file mode 100644 index 0000000000..9326caaa1b --- /dev/null +++ b/astarte-dashboard/src/DeviceStatusPage/GroupsCard.tsx @@ -0,0 +1,90 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React from 'react'; +import { Button, Card, Table } from 'react-bootstrap'; +import { Link } from 'react-router-dom'; + +import type { AstarteDevice } from 'astarte-client'; +import FullHeightCard from '../components/FullHeightCard'; +import { useAstarte } from 'AstarteManager'; + +interface GroupsTableProps { + groups: string[]; +} + +const GroupsTable = ({ groups }: GroupsTableProps): React.ReactElement => { + const astarte = useAstarte(); + return ( + + + + + + + + {groups.map((groupName, index) => { + const encodedGroupName = encodeURIComponent(groupName); + return ( + + + + ); + })} + +
    Name
    + {astarte.token?.can('appEngine', 'GET', `/groups/${groupName}/devices`) ? ( + {groupName} + ) : ( + groupName + )} +
    + ); +}; + +interface GroupsCardProps { + device: AstarteDevice; + showAddToGropButton: boolean; + onAddToGroupClick: () => void; +} + +const GroupsCard = ({ + device, + showAddToGropButton, + onAddToGroupClick, +}: GroupsCardProps): React.ReactElement => ( + + Groups + + {device.groups.length > 0 ? ( + + ) : ( +

    Device does not belong to any group

    + )} +
    + {showAddToGropButton && ( + + )} +
    +
    +
    +); + +export default GroupsCard; diff --git a/astarte-dashboard/src/DeviceStatusPage/IntrospectionCard.tsx b/astarte-dashboard/src/DeviceStatusPage/IntrospectionCard.tsx new file mode 100644 index 0000000000..5a2109d416 --- /dev/null +++ b/astarte-dashboard/src/DeviceStatusPage/IntrospectionCard.tsx @@ -0,0 +1,93 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React from 'react'; +import { Card, Table } from 'react-bootstrap'; +import { Link } from 'react-router-dom'; + +import type { AstarteDevice, AstarteDeviceInterfaceStats } from 'astarte-client'; +import FullHeightCard from '../components/FullHeightCard'; +import { useAstarte } from 'AstarteManager'; + +interface IntrospectionTableProps { + deviceId: string; + introspection: AstarteDeviceInterfaceStats[]; +} + +const IntrospectionTable = ({ + deviceId, + introspection, +}: IntrospectionTableProps): React.ReactElement => { + const astarte = useAstarte(); + + return ( + + + + + + + + + + {introspection.map((iface) => ( + + + + + + ))} + +
    NameMajorMinor
    + {astarte.token?.can( + 'appEngine', + 'GET', + `/devices/${deviceId}/interfaces/${iface.name}`, + ) ? ( + + {iface.name} + + ) : ( + iface.name + )} + {iface.major}{iface.minor}
    + ); +}; + +interface IntrospectionCardProps { + device: AstarteDevice; +} + +const IntrospectionCard = ({ device }: IntrospectionCardProps): React.ReactElement => { + const introspection = Array.from(device.introspection.values()); + + return ( + + Interfaces + + {introspection.length > 0 ? ( + + ) : ( +

    No introspection info

    + )} +
    +
    + ); +}; + +export default IntrospectionCard; diff --git a/astarte-dashboard/src/DeviceStatusPage/NewAliasModal.tsx b/astarte-dashboard/src/DeviceStatusPage/NewAliasModal.tsx new file mode 100644 index 0000000000..df4fe79d16 --- /dev/null +++ b/astarte-dashboard/src/DeviceStatusPage/NewAliasModal.tsx @@ -0,0 +1,64 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React from 'react'; +import type { JSONSchema7 } from 'json-schema'; +import FormModal from '../components/modals/Form'; + +const aliasFormSchema: JSONSchema7 = { + type: 'object', + required: ['key', 'value'], + properties: { + key: { + title: 'Tag', + type: 'string', + }, + value: { + title: 'Alias', + type: 'string', + }, + }, +}; + +interface AliasKeyValue { + key: string; + value: string; +} + +interface NewAliasModalProps { + onCancel: () => void; + onConfirm: ({ key, value }: AliasKeyValue) => void; + isAddingAlias: boolean; +} + +const NewAliasModal = ({ + onCancel, + onConfirm, + isAddingAlias, +}: NewAliasModalProps): React.ReactElement => ( + +); + +export default NewAliasModal; diff --git a/astarte-dashboard/src/DeviceStatusPage/NewAttributeModal.tsx b/astarte-dashboard/src/DeviceStatusPage/NewAttributeModal.tsx new file mode 100644 index 0000000000..0d3af410e8 --- /dev/null +++ b/astarte-dashboard/src/DeviceStatusPage/NewAttributeModal.tsx @@ -0,0 +1,64 @@ +/* + This file is part of Astarte. + + Copyright 2020-2024 SECO Mind Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React from 'react'; +import type { JSONSchema7 } from 'json-schema'; +import FormModal from '../components/modals/Form'; + +interface AttributeKeyValue { + key: string; + value: string; +} + +const attributeFormSchema: JSONSchema7 = { + type: 'object', + required: ['key', 'value'], + properties: { + key: { + title: 'Key', + type: 'string', + }, + value: { + title: 'Value', + type: 'string', + }, + }, +}; + +interface NewAttributeModalProps { + onCancel: () => void; + onConfirm: ({ key, value }: AttributeKeyValue) => void; + isAddingAttribute: boolean; +} + +const NewAttributeModal = ({ + onCancel, + onConfirm, + isAddingAttribute, +}: NewAttributeModalProps): React.ReactElement => ( + +); + +export default NewAttributeModal; diff --git a/astarte-dashboard/src/DeviceStatusPage/PreviousInterfacesCard.tsx b/astarte-dashboard/src/DeviceStatusPage/PreviousInterfacesCard.tsx new file mode 100644 index 0000000000..b2446d6412 --- /dev/null +++ b/astarte-dashboard/src/DeviceStatusPage/PreviousInterfacesCard.tsx @@ -0,0 +1,69 @@ +/* + This file is part of Astarte. + + Copyright 2020-2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React from 'react'; +import { Card, Table } from 'react-bootstrap'; + +import type { AstarteDevice, AstarteDeviceInterfaceStats } from 'astarte-client'; +import FullHeightCard from '../components/FullHeightCard'; + +interface PreviousInterfacesTableProps { + interfaces: AstarteDeviceInterfaceStats[]; +} + +const PreviousInterfacesTable = ({ + interfaces, +}: PreviousInterfacesTableProps): React.ReactElement => ( + + + + + + + + + + {interfaces.map((iface) => ( + + + + + + ))} + +
    NameMajorMinor
    {iface.name}{iface.major}{iface.minor}
    +); + +interface PreviousInterfacesCardProps { + device: AstarteDevice; +} + +const PreviousInterfacesCard = ({ device }: PreviousInterfacesCardProps): React.ReactElement => ( + + Previous Interfaces + + {device.previousInterfaces.length > 0 ? ( + + ) : ( +

    No previous interfaces info

    + )} +
    +
    +); + +export default PreviousInterfacesCard; diff --git a/astarte-dashboard/src/DeviceStatusPage/index.tsx b/astarte-dashboard/src/DeviceStatusPage/index.tsx new file mode 100644 index 0000000000..3c2302c941 --- /dev/null +++ b/astarte-dashboard/src/DeviceStatusPage/index.tsx @@ -0,0 +1,569 @@ +/* + This file is part of Astarte. + + Copyright 2020-2024 SECO Mind Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useCallback, useMemo, useState } from 'react'; +import { Col, Container, Form, Row, Spinner } from 'react-bootstrap'; +import { Link, useNavigate, useParams } from 'react-router-dom'; + +import type { AstarteDevice } from 'astarte-client'; +import BackButton from '../ui/BackButton'; +import Empty from '../components/Empty'; +import WaitForData from '../components/WaitForData'; +import useFetch from '../hooks/useFetch'; +import { AlertsBanner, useAlerts } from '../AlertManager'; +import { useAstarte } from '../AstarteManager'; + +import DeviceInfoCard from './DeviceInfoCard'; +import AliasesCard from './AliasesCard'; +import AttributesCard from './AttributesCard'; +import GroupsCard from './GroupsCard'; +import IntrospectionCard from './IntrospectionCard'; +import PreviousInterfacesCard from './PreviousInterfacesCard'; +import ExchangedBytesCard from './ExchangedBytesCard'; +import DeviceStatusEventsCard from './DeviceStatusEventsCard'; +import DeviceLiveEventsCard from './DeviceLiveEventsCard'; + +import AddToGroupModal from './AddToGroupModal'; +import NewAliasModal from './NewAliasModal'; +import EditAliasModal from './EditAliasModal'; +import NewAttributeModal from './NewAttributeModal'; +import EditAttributeModal from './EditAttributeModal'; +import ConfirmModal from '../components/modals/Confirm'; + +type WipeCredentialsModalT = { + kind: 'wipe_credentials_modal'; + isWipingCredentials: boolean; +}; + +type AddToGroupModalT = { + kind: 'add_to_group_modal'; + isAddingToGroup: boolean; +}; + +type NewAliasModalT = { + kind: 'new_alias_modal'; + isAddingAlias: boolean; +}; + +type EditAliasModalT = { + kind: 'edit_alias_modal'; + isUpdatingAlias: boolean; + targetAlias: string; +}; + +type DeleteAliasModalT = { + kind: 'delete_alias_modal'; + isDeletingAlias: boolean; + aliasKey: string; + aliasValue: string; +}; + +type NewAttributeModalT = { + kind: 'new_attribute_modal'; + isAddingAttribute: boolean; +}; + +type EditAttributeModalT = { + kind: 'edit_attribute_modal'; + isUpdatingAttribute: boolean; + targetAttribute: string; +}; + +type DeleteAttributeModalT = { + kind: 'delete_attribute_modal'; + isDeletingAttribute: boolean; + attributeKey: string; + attributeValue: string; +}; + +type ReregisterDeviceModalT = { + kind: 'reregister_device_modal'; +}; + +type DeleteDeviceModalT = { + kind: 'delete_device_modal'; + isDeletingDevice: boolean; +}; + +function isWipeCredentialsModal(modal: PageModal): modal is WipeCredentialsModalT { + return modal.kind === 'wipe_credentials_modal'; +} + +function isAddToGroupModal(modal: PageModal): modal is AddToGroupModalT { + return modal.kind === 'add_to_group_modal'; +} + +function isNewAliasModal(modal: PageModal): modal is NewAliasModalT { + return modal.kind === 'new_alias_modal'; +} + +function isEditAliasModal(modal: PageModal): modal is EditAliasModalT { + return modal.kind === 'edit_alias_modal'; +} + +function isDeleteAliasModal(modal: PageModal): modal is DeleteAliasModalT { + return modal.kind === 'delete_alias_modal'; +} + +function isNewAttributeModal(modal: PageModal): modal is NewAttributeModalT { + return modal.kind === 'new_attribute_modal'; +} + +function isEditAttributeModal(modal: PageModal): modal is EditAttributeModalT { + return modal.kind === 'edit_attribute_modal'; +} + +function isDeleteAttributeModal(modal: PageModal): modal is DeleteAttributeModalT { + return modal.kind === 'delete_attribute_modal'; +} + +function isDeviceReregistrationModal(modal: PageModal): modal is ReregisterDeviceModalT { + return modal.kind === 'reregister_device_modal'; +} + +function isDeleteDeviceModal(modal: PageModal): modal is DeleteDeviceModalT { + return modal.kind === 'delete_device_modal'; +} + +type PageModal = + | WipeCredentialsModalT + | AddToGroupModalT + | NewAliasModalT + | EditAliasModalT + | DeleteAliasModalT + | NewAttributeModalT + | EditAttributeModalT + | DeleteAttributeModalT + | ReregisterDeviceModalT + | DeleteDeviceModalT; + +const DeviceStatusPage = (): React.ReactElement => { + const { deviceId = '' } = useParams(); + const astarte = useAstarte(); + const navigate = useNavigate(); + const deviceFetcher = useFetch(() => astarte.client.getDeviceInfo(deviceId)); + const groupsFetcher = useFetch(() => astarte.client.getGroupList()); + const [devicePageAlers, devicePageAlersController] = useAlerts(); + const [activeModal, setActiveModal] = useState(null); + const [confirmString, setConfirmString] = useState(''); + const canDelete = confirmString === deviceId; + + const unjoinedGroups = useMemo(() => { + if (deviceFetcher.status === 'ok' && groupsFetcher.status === 'ok') { + const joinedGroups = new Set(deviceFetcher.value.groups); + return groupsFetcher.value.filter((groupName) => !joinedGroups.has(groupName)); + } + return []; + }, [deviceFetcher.status, groupsFetcher.status]); + + const canAddDeviceToGroups = unjoinedGroups.some((groupName) => + astarte.token?.can('appEngine', 'POST', `/groups/${groupName}/devices`), + ); + + const dismissModal = useCallback(() => { + setActiveModal(null); + }, []); + + const inhibitDeviceCredentialsRequests = useCallback( + (inhibit: boolean) => { + astarte.client + .inhibitDeviceCredentialsRequests(deviceId, inhibit) + .then(() => { + deviceFetcher.refresh(); + }) + .catch(() => { + devicePageAlersController.showError( + `Couldn't ${inhibit ? 'inhibit' : 'enable'} device credentials requests`, + ); + }); + }, + [astarte.client, deviceId, devicePageAlersController], + ); + + const wipeDeviceCredentials = useCallback(() => { + astarte.client + .wipeDeviceCredentials(deviceId) + .then(() => { + setActiveModal({ kind: 'reregister_device_modal' }); + }) + .catch(() => { + devicePageAlersController.showError(`Couldn't wipe the device credential secret`); + dismissModal(); + }); + }, [astarte.client, deviceId, dismissModal, devicePageAlersController]); + + const handleDeleteDevice = useCallback(() => { + astarte.client + .deleteDevice(deviceId) + .then(() => { + setActiveModal({ kind: 'delete_device_modal', isDeletingDevice: true }); + navigate('/devices'); + }) + .catch(() => { + devicePageAlersController.showError(`Couldn't delete the device`); + dismissModal(); + }); + }, [astarte.client, deviceId, dismissModal, devicePageAlersController, navigate]); + + const addDeviceToGroup = useCallback( + (groupName: string) => { + astarte.client + .addDeviceToGroup({ + groupName, + deviceId, + }) + .then(() => { + deviceFetcher.refresh(); + dismissModal(); + }) + .catch(() => { + devicePageAlersController.showError(`Couldn't add the device to the group`); + dismissModal(); + }); + }, + [astarte.client, deviceId, devicePageAlersController, dismissModal], + ); + + const handleAliasUpdate = useCallback( + (key: string, value: string) => { + astarte.client + .insertDeviceAlias(deviceId, key, value) + .then(() => { + dismissModal(); + deviceFetcher.refresh(); + }) + .catch(() => { + devicePageAlersController.showError(`Couldn't update the device alias`); + dismissModal(); + }); + }, + [astarte.client, deviceId, devicePageAlersController, dismissModal], + ); + + const handleAliasDeletion = useCallback( + (key: string) => { + astarte.client + .deleteDeviceAlias(deviceId, key) + .then(() => { + dismissModal(); + deviceFetcher.refresh(); + }) + .catch(() => { + devicePageAlersController.showError(`Couldn't delete the device alias`); + dismissModal(); + }); + }, + [astarte.client, deviceId, devicePageAlersController, dismissModal], + ); + + const handleAttributeUpdate = useCallback( + (key: string, value: string) => { + astarte.client + .insertDeviceAttribute(deviceId, key, value) + .then(() => { + dismissModal(); + deviceFetcher.refresh(); + }) + .catch(() => { + devicePageAlersController.showError(`Couldn't update the device attribute`); + dismissModal(); + }); + }, + [astarte.client, deviceId, devicePageAlersController, dismissModal], + ); + + const handleAttributeDeletion = useCallback( + (key: string) => { + astarte.client + .deleteDeviceAttribute(deviceId, key) + .then(() => { + dismissModal(); + deviceFetcher.refresh(); + }) + .catch(() => { + devicePageAlersController.showError(`Couldn't delete the device attribute`); + dismissModal(); + }); + }, + [astarte.client, deviceId, devicePageAlersController, dismissModal], + ); + + return ( + + + +

    + + Device +

    + +
    + + + +
    + } + errorFallback={ + + } + > + {(device: AstarteDevice) => { + const fullInterfaceList = Array.from(device.introspection.values()).concat( + device.previousInterfaces, + ); + + return ( + + inhibitDeviceCredentialsRequests(true)} + onEnableCredentialsClick={() => inhibitDeviceCredentialsRequests(false)} + onWipeCredentialsClick={() => + setActiveModal({ + kind: 'wipe_credentials_modal', + isWipingCredentials: false, + }) + } + onDeleteDeviceClick={() => + setActiveModal({ + kind: 'delete_device_modal', + isDeletingDevice: false, + }) + } + /> + + setActiveModal({ + kind: 'new_alias_modal', + isAddingAlias: false, + }) + } + onEditAliasClick={(alias) => + setActiveModal({ + kind: 'edit_alias_modal', + targetAlias: alias, + isUpdatingAlias: false, + }) + } + onRemoveAliasClick={({ key, value }) => + setActiveModal({ + kind: 'delete_alias_modal', + aliasKey: key, + aliasValue: value, + isDeletingAlias: false, + }) + } + /> + + setActiveModal({ + kind: 'new_attribute_modal', + isAddingAttribute: false, + }) + } + onEditAttributeClick={(attribute) => + setActiveModal({ + kind: 'edit_attribute_modal', + targetAttribute: attribute, + isUpdatingAttribute: false, + }) + } + onRemoveAttributeClick={({ key, value }) => + setActiveModal({ + kind: 'delete_attribute_modal', + attributeKey: key, + attributeValue: value, + isDeletingAttribute: false, + }) + } + /> + + setActiveModal({ + kind: 'add_to_group_modal', + isAddingToGroup: false, + }) + } + /> + + + {fullInterfaceList.length > 0 && ( + + )} + + + + ); + }} + + {activeModal && isWipeCredentialsModal(activeModal) && ( + { + setActiveModal({ ...activeModal, isWipingCredentials: true }); + wipeDeviceCredentials(); + }} + isConfirming={activeModal.isWipingCredentials} + > +

    + This will remove the current device credential secret from Astarte, forcing the device + to register again and store its new credentials secret. Continue? +

    +
    + )} + {activeModal && isDeleteDeviceModal(activeModal) && ( + { + setActiveModal({ ...activeModal, isDeletingDevice: true }); + handleDeleteDevice(); + }} + isConfirming={activeModal.isDeletingDevice} + disabled={!canDelete} + > +

    + You are going to permanently delete  + {deviceId} and the corresponding data. Deleted devices cannot be restored but a + new one can be registered instead. +

    +

    + Please type {deviceId} to proceed. +

    + + ) => + setConfirmString(e.target.value) + } + /> + +
    + )} + {activeModal && isAddToGroupModal(activeModal) && ( + { + setActiveModal({ ...activeModal, isAddingToGroup: true }); + addDeviceToGroup(groupName); + }} + groups={unjoinedGroups} + isAddingToGroup={activeModal.isAddingToGroup} + /> + )} + {activeModal && isNewAliasModal(activeModal) && ( + { + setActiveModal({ ...activeModal, isAddingAlias: true }); + handleAliasUpdate(key, value); + }} + isAddingAlias={activeModal.isAddingAlias} + /> + )} + {activeModal && isEditAliasModal(activeModal) && ( + { + setActiveModal({ ...activeModal, isUpdatingAlias: true }); + handleAliasUpdate(activeModal.targetAlias, value); + }} + targetAlias={activeModal.targetAlias} + isUpdatingAlias={activeModal.isUpdatingAlias} + /> + )} + {activeModal && isDeleteAliasModal(activeModal) && ( + { + setActiveModal({ ...activeModal, isDeletingAlias: true }); + handleAliasDeletion(activeModal.aliasKey); + }} + isConfirming={activeModal.isDeletingAlias} + > +

    {`Delete alias "${activeModal.aliasValue}"?`}

    +
    + )} + {activeModal && isNewAttributeModal(activeModal) && ( + { + setActiveModal({ ...activeModal, isAddingAttribute: true }); + handleAttributeUpdate(key, value); + }} + isAddingAttribute={activeModal.isAddingAttribute} + /> + )} + {activeModal && isEditAttributeModal(activeModal) && ( + { + setActiveModal({ ...activeModal, isUpdatingAttribute: true }); + handleAttributeUpdate(activeModal.targetAttribute, value); + }} + targetAttribute={activeModal.targetAttribute} + isUpdatingAttribute={activeModal.isUpdatingAttribute} + /> + )} + {activeModal && isDeleteAttributeModal(activeModal) && ( + { + setActiveModal({ ...activeModal, isDeletingAttribute: true }); + handleAttributeDeletion(activeModal.attributeKey); + }} + isConfirming={activeModal.isDeletingAttribute} + > +

    {`Do you want to delete ${activeModal.attributeKey} from attributes?`}

    +
    + )} + {activeModal && isDeviceReregistrationModal(activeModal) && ( + +

    + The device's credentials secret was wiped from Astarte. You can  + click here to register the + device again and retrieve its new credentials secret. +

    +
    + )} + + ); +}; + +export default DeviceStatusPage; diff --git a/astarte-dashboard/src/DevicesPage.tsx b/astarte-dashboard/src/DevicesPage.tsx new file mode 100644 index 0000000000..7ec1517420 --- /dev/null +++ b/astarte-dashboard/src/DevicesPage.tsx @@ -0,0 +1,577 @@ +/* + This file is part of Astarte. + + Copyright 2020-2022 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useCallback, useMemo, useState } from 'react'; +import { + Button, + Col, + Container, + Form, + ListGroup, + Pagination, + Row, + Spinner, + Stack, + Table, +} from 'react-bootstrap'; +import DatePicker from 'react-datepicker'; +import 'react-datepicker/dist/react-datepicker.css'; +import _ from 'lodash'; +import type { AstarteDevice } from 'astarte-client'; + +import { Link, useNavigate } from 'react-router-dom'; +import SingleCardPage from './ui/SingleCardPage'; +import Empty from './components/Empty'; +import Highlight from './components/Highlight'; +import Icon from './components/Icon'; +import WaitForData from './components/WaitForData'; +import useFetch from './hooks/useFetch'; +import { useAstarte } from './AstarteManager'; + +interface DeviceFilters { + deviceId?: AstarteDevice['id']; + showConnected?: boolean; + showDisconnected?: boolean; + showNeverConnected?: boolean; + attributeKey?: string; + attributeValue?: string; + activeSinceDate?: Date; + showDeletionInProgress?: boolean; +} + +const DEVICES_PER_PAGE = 20; +const DEVICES_PER_REQUEST = 100; +const MAX_SHOWN_PAGES = 10; + +const matchAttribute = ( + key: string, + value: string, + filterKey: string, + filterValue: string, +): boolean => { + if (filterKey !== '' && !key.includes(filterKey)) { + return false; + } + if (filterValue !== '' && !value.includes(filterValue)) { + return false; + } + return true; +}; + +interface MatchedAttributesProps { + filters: DeviceFilters; + attributes: AstarteDevice['attributes']; +} + +const MatchedAttributes = ({ + filters, + attributes, +}: MatchedAttributesProps): React.ReactElement | null => { + const { attributeKey = '', attributeValue = '' } = filters; + + if (attributeKey === '' && attributeValue === '') { + return null; + } + + return ( + <> + {Array.from(attributes) + .filter(([key, value]) => matchAttribute(key, value, attributeKey, attributeValue)) + .map(([key, value]) => ( +
    + {key} + {': '} + {value} +
    + ))} + + ); +}; + +interface DeviceRowProps { + device: AstarteDevice; + filters: DeviceFilters; +} + +const DeviceRow = ({ device, filters }: DeviceRowProps): React.ReactElement => { + let lastEvent; + let icon; + let iconTooltip; + let statusLabel; + + if (device.isConnected) { + icon = 'statusConnected' as const; + iconTooltip = 'Connected'; + statusLabel = 'Connected'; + lastEvent = `Connected on ${(device.lastConnection as Date).toLocaleString()}`; + } else if (device.lastConnection) { + icon = 'statusDisconnected' as const; + iconTooltip = 'Disconnected'; + statusLabel = 'Disconnected'; + lastEvent = `Disconnected on ${(device.lastDisconnection as Date).toLocaleString()}`; + } else { + icon = 'statusNeverConnected' as const; + iconTooltip = 'Never connected'; + statusLabel = 'Never connected'; + lastEvent = 'Never connected'; + } + + if (device.deletionInProgress) { + icon = 'statusInDeletion' as const; + iconTooltip = 'In deletion'; + statusLabel = 'In deletion'; + } + + return ( + + + + {statusLabel} + + + {device.name} + + + {lastEvent} + + ); +}; + +interface DeviceTableProps { + deviceList: AstarteDevice[]; + filters: DeviceFilters; +} + +const DeviceTable = ({ deviceList, filters }: DeviceTableProps): React.ReactElement => ( + + + + + + + + + + {deviceList.map((device) => ( + + ))} + +
    StatusDevice handleLast connection event
    +); + +const matchFilters = (device: AstarteDevice, filters: DeviceFilters) => { + const { + deviceId = '', + attributeKey = '', + attributeValue = '', + showConnected = true, + showDisconnected = true, + showNeverConnected = true, + showDeletionInProgress = true, + activeSinceDate, + } = filters; + + if ( + activeSinceDate != null && + !device.isConnected && + (device.lastDisconnection == null || device.lastDisconnection < activeSinceDate) + ) { + return false; + } + + if (!showConnected && device.isConnected) { + return false; + } + if (!showDisconnected && !device.isConnected && device.lastConnection) { + return false; + } + if (!showNeverConnected && !device.isConnected && !device.lastConnection) { + return false; + } + + if (!showDeletionInProgress && device.deletionInProgress) { + return false; + } + + if ( + (attributeKey !== '' || attributeValue !== '') && + !Array.from(device.attributes).some(([key, value]) => + matchAttribute(key, value, attributeKey, attributeValue), + ) + ) { + return false; + } + + if (deviceId === '') { + return true; + } + + const aliases = Array.from(device.aliases.values()); + return device.id.includes(deviceId) || aliases.some((alias) => alias.includes(deviceId)); +}; + +interface TablePaginationProps { + activePage: number; + canLoadMorePages: boolean; + isLoadingMorePages?: boolean; + lastPage: number; + onPageChange: (pageIndex: number) => void; +} + +const TablePagination = ({ + activePage, + canLoadMorePages, + isLoadingMorePages, + lastPage, + onPageChange, +}: TablePaginationProps): React.ReactElement | null => { + if (lastPage < 2 && !isLoadingMorePages) { + return null; + } + + let endPage = activePage + Math.floor((MAX_SHOWN_PAGES + 1) / 2); + if (endPage < MAX_SHOWN_PAGES) { + endPage = MAX_SHOWN_PAGES; + } + if (endPage > lastPage) { + endPage = lastPage; + } + + let startingPage = endPage - MAX_SHOWN_PAGES; + if (startingPage < 0) { + startingPage = 0; + } + + const items = []; + for (let number = startingPage; number < endPage; number += 1) { + items.push( + { + onPageChange(number); + }} + > + {number + 1} + , + ); + } + + return ( + + {startingPage > 0 && ( + { + onPageChange(activePage - 1); + }} + /> + )} + {items} + {(endPage < lastPage || canLoadMorePages) && ( + { + onPageChange(activePage + 1); + }} + > + {isLoadingMorePages && } + + )} + + ); +}; + +interface FilterFormProps { + filters: DeviceFilters; + onUpdateFilters: (filters: DeviceFilters) => void; +} + +const FilterForm = ({ filters, onUpdateFilters }: FilterFormProps): React.ReactElement => { + const { + deviceId = '', + showConnected = true, + showDisconnected = true, + showNeverConnected = true, + showDeletionInProgress = true, + attributeKey = '', + attributeValue = '', + activeSinceDate, + } = filters; + + return ( +
    + + + + Device ID/name + + ) => + onUpdateFilters({ ...filters, deviceId: e.target.value }) + } + /> + + + + Device status + + ) => + onUpdateFilters({ ...filters, showConnected: e.target.checked }) + } + /> + ) => + onUpdateFilters({ ...filters, showDisconnected: e.target.checked }) + } + /> + ) => + onUpdateFilters({ ...filters, showNeverConnected: e.target.checked }) + } + /> + ) => + onUpdateFilters({ ...filters, showDeletionInProgress: e.target.checked }) + } + /> + + + + Active since + +
    + + onUpdateFilters({ + ...filters, + activeSinceDate: date, + showConnected: true, + showDisconnected: true, + showNeverConnected: true, + }) + } + customInput={} + /> +
    +
    +
    + Attributes +
    + + Key + ) => + onUpdateFilters({ ...filters, attributeKey: e.target.value }) + } + /> + + + Value + ) => + onUpdateFilters({ ...filters, attributeValue: e.target.value }) + } + /> + +
    +
    + ); +}; + +interface ErrorRowProps { + onRetry: () => void; + errorMessage?: string; +} + +const ErrorRow = ({ onRetry, errorMessage }: ErrorRowProps): React.ReactElement => ( + + + +); + +export default (): React.ReactElement => { + const [activePage, setActivePage] = useState(0); + const [showSidebar, setShowSidebar] = useState(true); + const [filters, setFilters] = useState({}); + const navigate = useNavigate(); + const astarte = useAstarte(); + + const fetchDevices = useCallback( + async ( + params: { + fromToken?: string; + fetchAll?: boolean; + previousDevices?: AstarteDevice[]; + } = {}, + ): Promise<{ devices: AstarteDevice[]; nextToken: string | null }> => { + const { devices, nextToken } = await astarte.client.getDevices({ + details: true, + from: params.fromToken, + limit: DEVICES_PER_REQUEST, + }); + const updatedDevices = (params.previousDevices || []).concat(devices); + const pageCount = Math.ceil(updatedDevices.length / DEVICES_PER_PAGE); + const shouldLoadMore = pageCount < activePage + MAX_SHOWN_PAGES || !!params.fetchAll; + if (shouldLoadMore && nextToken) { + return fetchDevices({ + fromToken: nextToken, + fetchAll: params.fetchAll, + previousDevices: updatedDevices, + }); + } + return { devices: updatedDevices, nextToken }; + }, + [astarte.client, activePage], + ); + + const devicesFetcher = useFetch(fetchDevices, {}); + + const pagedDevices = useMemo(() => { + if (devicesFetcher.value == null) { + return _.chunk([], DEVICES_PER_PAGE); + } + const devices = devicesFetcher.value.devices.filter((device) => matchFilters(device, filters)); + return _.chunk(devices, DEVICES_PER_PAGE); + }, [devicesFetcher.value, filters]); + + const pageDevices = (activePage < pagedDevices.length && pagedDevices[activePage]) || []; + + const handlePageChange = (pageIndex: number) => { + const fromToken = devicesFetcher.value?.nextToken; + const previousDevices = devicesFetcher.value?.devices || []; + if (pageIndex > pagedDevices.length - MAX_SHOWN_PAGES && fromToken) { + devicesFetcher.refresh({ previousDevices, fromToken }); + } + setActivePage(pageIndex); + }; + + const handleFilterUpdate = (newFilters: DeviceFilters) => { + if (activePage !== 0) { + setActivePage(0); + } + const fromToken = devicesFetcher.value?.nextToken; + const previousDevices = devicesFetcher.value?.devices || []; + if (fromToken && devicesFetcher.status !== 'loading') { + devicesFetcher.refresh({ previousDevices, fromToken, fetchAll: true }); + } + setFilters(newFilters); + }; + + return ( + + + + + } + errorFallback={ + devicesFetcher.refresh({})} + errorMessage={devicesFetcher.error?.message} + /> + } + > + {({ devices, nextToken }) => + devices.length === 0 ? ( +

    No registered devices

    + ) : ( + <> + + + + {pageDevices.length === 0 ? ( +

    No device matches current filters

    + ) : ( + + )} + + +
    setShowSidebar(!showSidebar)}> + + {showSidebar && Filters} +
    + {showSidebar && ( + + )} + +
    + + + + + + + +
    + + ) + } +
    + +
    + ); +}; diff --git a/astarte-dashboard/src/FlowConfigurationPage.tsx b/astarte-dashboard/src/FlowConfigurationPage.tsx new file mode 100644 index 0000000000..fc5c586bad --- /dev/null +++ b/astarte-dashboard/src/FlowConfigurationPage.tsx @@ -0,0 +1,125 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useCallback, useMemo, useState } from 'react'; +import { useNavigate, useSearchParams } from 'react-router-dom'; +import { Button, Form, Spinner, Stack } from 'react-bootstrap'; + +import { AlertsBanner, useAlerts } from './AlertManager'; +import { useAstarte } from './AstarteManager'; +import SingleCardPage from './ui/SingleCardPage'; + +export default (): React.ReactElement => { + const [searchParams] = useSearchParams(); + const pipelineId = searchParams.get('pipelineId') || ''; + const [flow, setFlow] = useState({ + name: '', + config: '{}', + }); + const [isCreatingFlow, setIsCreatingFlow] = useState(false); + const navigate = useNavigate(); + const astarte = useAstarte(); + + const parsedFlowConfig = useMemo(() => { + try { + return JSON.parse(flow.config); + } catch { + return null; + } + }, [flow.config]); + + const [formAlerts, formAlertsController] = useAlerts(); + + const createFlow = useCallback(() => { + setIsCreatingFlow(true); + astarte.client + .createNewFlowInstance({ + name: flow.name, + config: parsedFlowConfig, + pipeline: pipelineId, + }) + .then(() => { + navigate('/flows'); + }) + .catch((err) => { + setIsCreatingFlow(false); + formAlertsController.showError(`Couldn't instantiate the Flow: ${err.message}`); + }); + }, [ + setIsCreatingFlow, + flow, + parsedFlowConfig, + pipelineId, + astarte.client, + navigate, + formAlertsController, + ]); + + const isValidFlowName = flow.name !== ''; + const isValidFlowConfig = parsedFlowConfig != null; + const isValidForm = isValidFlowName && isValidFlowConfig; + + const innerHTML = ( +
    + + + Name + setFlow({ ...flow, name: e.target.value })} + /> + + +

    + {pipelineId} +

    + + Flow config + setFlow({ ...flow, config: e.target.value })} + /> + +
    + +
    +
    +
    + ); + + return ( + + + {innerHTML} + + ); +}; diff --git a/astarte-dashboard/src/FlowDetailsPage.tsx b/astarte-dashboard/src/FlowDetailsPage.tsx new file mode 100644 index 0000000000..b3a877265e --- /dev/null +++ b/astarte-dashboard/src/FlowDetailsPage.tsx @@ -0,0 +1,60 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React from 'react'; +import { useParams } from 'react-router-dom'; +import { Container, Spinner } from 'react-bootstrap'; +import SyntaxHighlighter from 'react-syntax-highlighter'; + +import SingleCardPage from './ui/SingleCardPage'; +import Empty from './components/Empty'; +import WaitForData from './components/WaitForData'; +import useFetch from './hooks/useFetch'; +import { useAstarte } from './AstarteManager'; + +export default (): React.ReactElement => { + const { flowName = '' } = useParams(); + const astarte = useAstarte(); + const flowFetcher = useFetch(() => astarte.client.getFlowDetails(flowName)); + + return ( + + + + + } + errorFallback={ + + } + > + {(flow) => ( + <> +
    Flow configuration
    + + {JSON.stringify(flow, null, 4)} + + + )} +
    +
    + ); +}; diff --git a/astarte-dashboard/src/FlowInstancesPage.tsx b/astarte-dashboard/src/FlowInstancesPage.tsx new file mode 100644 index 0000000000..bfc470d2cb --- /dev/null +++ b/astarte-dashboard/src/FlowInstancesPage.tsx @@ -0,0 +1,187 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useCallback, useState } from 'react'; +import { Link, useNavigate } from 'react-router-dom'; +import { Button, Container, Spinner, Table } from 'react-bootstrap'; +import type { AstarteFlow } from 'astarte-client'; + +import { AlertsBanner, useAlerts } from './AlertManager'; +import Icon from './components/Icon'; +import ConfirmModal from './components/modals/Confirm'; +import SingleCardPage from './ui/SingleCardPage'; +import Empty from './components/Empty'; +import WaitForData from './components/WaitForData'; +import useFetch from './hooks/useFetch'; +import { useAstarte } from './AstarteManager'; + +interface TableRowProps { + instance: AstarteFlow; + onDelete: (instance: AstarteFlow) => void; +} + +const TableRow = ({ instance, onDelete }: TableRowProps): React.ReactElement => { + const astarte = useAstarte(); + return ( + + + + + + {astarte.token?.can('flow', 'GET', `/flows/${instance.name}`) ? ( + {instance.name} + ) : ( + instance.name + )} + + {instance.pipeline} + + {astarte.token?.can('flow', 'DELETE', `/flows/${instance.name}`) && ( + onDelete(instance)} + /> + )} + + + ); +}; + +interface InstancesTableProps { + instances: AstarteFlow[]; + onDelete: (instance: AstarteFlow) => void; +} + +const InstancesTable = ({ instances, onDelete }: InstancesTableProps): React.ReactElement => { + if (instances.length === 0) { + return

    No running flows

    ; + } + return ( + + + + + + + + + + + {instances.map((instance) => ( + + ))} + +
    StatusFlow NamePipelineActions
    + ); +}; + +export default (): React.ReactElement => { + const [flowToConfirmDelete, setFlowToConfirmDelete] = useState(null); + const [isDeletingFlow, setIsDeletingFlow] = useState(false); + const [deletionAlerts, deletionAlertsController] = useAlerts(); + const navigate = useNavigate(); + const astarte = useAstarte(); + + const fetchInstances = useCallback(async (): Promise => { + const instanceNames = await astarte.client.getFlowInstances(); + const instances = await Promise.all( + instanceNames.map((name) => astarte.client.getFlowDetails(name)), + ); + return instances; + }, [astarte.client]); + + const instancesFetcher = useFetch(fetchInstances); + + const handleDeleteFlow = useCallback( + (instance: AstarteFlow) => { + setFlowToConfirmDelete(instance.name); + }, + [setFlowToConfirmDelete], + ); + + const deleteFlow = useCallback(() => { + const flowName = flowToConfirmDelete as AstarteFlow['name']; + setIsDeletingFlow(true); + astarte.client + .deleteFlowInstance(flowName) + .then(() => { + setFlowToConfirmDelete(null); + setIsDeletingFlow(false); + instancesFetcher.refresh(); + }) + .catch((err) => { + setIsDeletingFlow(false); + deletionAlertsController.showError(`Could not delete flow instance: ${err.message}`); + }); + }, [ + astarte.client, + flowToConfirmDelete, + setFlowToConfirmDelete, + setIsDeletingFlow, + instancesFetcher.refresh, + deletionAlertsController, + ]); + + const handleModalCancel = useCallback(() => { + setFlowToConfirmDelete(null); + }, [setFlowToConfirmDelete]); + + return ( + + + + + + } + errorFallback={ + + } + > + {(instances) => } + + + {flowToConfirmDelete != null && ( + +

    + Delete flow {flowToConfirmDelete}? +

    +
    + )} +
    + ); +}; diff --git a/astarte-dashboard/src/GroupDevicesPage.tsx b/astarte-dashboard/src/GroupDevicesPage.tsx new file mode 100644 index 0000000000..76acdaf5e1 --- /dev/null +++ b/astarte-dashboard/src/GroupDevicesPage.tsx @@ -0,0 +1,213 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useState, useCallback } from 'react'; +import { Container, Spinner, Table } from 'react-bootstrap'; +import type { AstarteDevice } from 'astarte-client'; +import { Link, useNavigate, useParams } from 'react-router-dom'; + +import Empty from './components/Empty'; +import Icon from './components/Icon'; +import ConfirmModal from './components/modals/Confirm'; +import SingleCardPage from './ui/SingleCardPage'; +import WaitForData from './components/WaitForData'; +import useFetch from './hooks/useFetch'; +import { useAstarte } from './AstarteManager'; + +const DeviceTableRow = ( + device: AstarteDevice, + index: number, + groupName: string, + showModal: (d: AstarteDevice) => void, +) => { + let icon; + let iconTooltip; + let lastEvent; + let statusLabel; + const astarte = useAstarte(); + + if (device.isConnected) { + icon = 'statusConnected' as const; + iconTooltip = 'Connected'; + statusLabel = 'Connected'; + lastEvent = `Connected on ${(device.lastConnection as Date).toLocaleString()}`; + } else if (device.lastConnection) { + icon = 'statusDisconnected' as const; + iconTooltip = 'Disconnected'; + statusLabel = 'Disconnected'; + lastEvent = `Disconnected on ${(device.lastDisconnection as Date).toLocaleString()}`; + } else { + icon = 'statusNeverConnected' as const; + iconTooltip = 'Never connected'; + statusLabel = 'Never connected'; + lastEvent = 'Never connected'; + } + + if (device.deletionInProgress) { + icon = 'statusInDeletion' as const; + iconTooltip = 'In deletion'; + statusLabel = 'In deletion'; + } + + return ( + + + + {statusLabel} + + + {astarte.token?.can('appEngine', 'GET', `/devices/${device.id}`) ? ( + {device.name} + ) : ( + device.name + )} + + {lastEvent} + + {astarte.token?.can('appEngine', 'DELETE', `/groups/${groupName}/devices/${device.id}`) && ( + showModal(device)} + /> + )} + + + ); +}; + +const deviceTable = ( + deviceList: AstarteDevice[], + groupName: string, + showModal: (d: AstarteDevice) => void, +) => ( + + + + + + + + + + + {deviceList.map((device, index) => DeviceTableRow(device, index, groupName, showModal))} + +
    StatusDevice handleLast connection eventActions
    +); + +const GroupDevicesPage = (): React.ReactElement => { + const { groupName = '' } = useParams(); + const [selectedDevice, setSelectedDevice] = useState(null); + const [isModalVisible, setIsModalVisible] = useState(false); + const [isRemovingDevice, setIsRemovingDevice] = useState(false); + const navigate = useNavigate(); + const astarte = useAstarte(); + + const devicesFetcher = useFetch(() => + astarte.client.getDevicesInGroup({ + groupName, + details: true, + }), + ); + + const showModal = useCallback( + (device: AstarteDevice) => { + setSelectedDevice(device); + setIsModalVisible(true); + }, + [setSelectedDevice, setIsModalVisible], + ); + + const closeModal = useCallback(() => { + setIsModalVisible(false); + }, [setIsModalVisible]); + + const removeDevice = useCallback(() => { + if (!selectedDevice) { + return; + } + setIsRemovingDevice(true); + astarte.client + .removeDeviceFromGroup({ + groupName, + deviceId: selectedDevice.id, + }) + .finally(() => { + if (devicesFetcher.value != null && devicesFetcher.value.length === 1) { + navigate({ pathname: '/groups' }); + } else { + setIsRemovingDevice(false); + setIsModalVisible(false); + devicesFetcher.refresh(); + } + }); + }, [ + astarte.client, + setIsRemovingDevice, + setIsModalVisible, + devicesFetcher.refresh, + devicesFetcher.value, + groupName, + selectedDevice, + navigate, + ]); + + const selectedDeviceName = selectedDevice?.name as string; + + return ( + +
    {`Devices in group ${groupName}`}
    + + + + } + errorFallback={ + + } + > + {(devices) => deviceTable(devices, groupName, showModal)} + + {isModalVisible && ( + + {devicesFetcher.value != null && devicesFetcher.value.length === 1 && ( +

    This is the last device in the group. Removing this device will delete the group

    + )} +

    + Remove device {selectedDeviceName} from group {groupName}? +

    +
    + )} +
    + ); +}; + +export default GroupDevicesPage; diff --git a/astarte-dashboard/src/GroupsPage.tsx b/astarte-dashboard/src/GroupsPage.tsx new file mode 100644 index 0000000000..82c935c722 --- /dev/null +++ b/astarte-dashboard/src/GroupsPage.tsx @@ -0,0 +1,160 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useCallback } from 'react'; +import { Link, useNavigate } from 'react-router-dom'; +import { Button, Container, ListGroup, Spinner, Table } from 'react-bootstrap'; + +import SingleCardPage from './ui/SingleCardPage'; +import { AlertsBanner, useAlerts } from './AlertManager'; +import Empty from './components/Empty'; +import WaitForData from './components/WaitForData'; +import useFetch from './hooks/useFetch'; +import { useAstarte } from './AstarteManager'; + +interface GroupState { + name: string; + totalDevices: number; + connectedDevices: number; +} + +type GroupMap = Map; + +type GroupsTableProps = { + groupMap: GroupMap; +}; + +const GroupsTable = ({ groupMap }: GroupsTableProps) => { + const astarte = useAstarte(); + if (groupMap.size === 0) { + return

    No registered group

    ; + } + return ( + + + + + + + + + + {Array.from(groupMap.values()).map((group) => { + const encodedGroupName = encodeURIComponent(group.name); + return ( + + + + + + ); + })} + +
    Group nameConnected devicesTotal devices
    + {astarte.token?.can('appEngine', 'GET', `/groups/${group.name}`) ? ( + {group.name} + ) : ( + group.name + )} + {group.connectedDevices}{group.totalDevices}
    + ); +}; + +interface ErrorRowProps { + onRetry: () => void; + errorMessage?: string; +} + +const ErrorRow = ({ onRetry, errorMessage }: ErrorRowProps): React.ReactElement => ( + + + +); + +export default (): React.ReactElement => { + const astarte = useAstarte(); + const [pageAlerts, pageAlertsController] = useAlerts(); + const navigate = useNavigate(); + + const fetchGroups = useCallback(async (): Promise => { + pageAlertsController.closeAll(); + const groupNames = await astarte.client.getGroupList(); + const groupMap: GroupMap = new Map(); + const fetchGroupPromises = groupNames.map((groupName) => + astarte.client + .getDevicesInGroup({ + groupName, + details: true, + }) + .catch(() => { + pageAlertsController.showError(`Couldn't get the device list for group ${groupName}`); + return null; + }), + ); + const groupsDevices = await Promise.all(fetchGroupPromises); + groupNames.forEach((groupName, index) => { + const groupDevices = groupsDevices[index]; + if (groupDevices) { + groupMap.set(groupName, { + name: groupName, + totalDevices: groupDevices.length, + connectedDevices: groupDevices.filter((device) => device.isConnected).length, + }); + } + }); + return groupMap; + }, [astarte.client, pageAlertsController]); + + const groupsFetcher = useFetch(fetchGroups); + + return ( + + + + + + } + errorFallback={ + + } + > + {(groupMap) => } + + + + ); +}; diff --git a/astarte-dashboard/src/HomePage.tsx b/astarte-dashboard/src/HomePage.tsx new file mode 100644 index 0000000000..d4d97ca819 --- /dev/null +++ b/astarte-dashboard/src/HomePage.tsx @@ -0,0 +1,554 @@ +/* + This file is part of Astarte. + + Copyright 2020-2021 Ispirata Srl + Copyright 2022-2024 SECO Mind Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useCallback, useEffect, useMemo } from 'react'; +import { Link, useNavigate } from 'react-router-dom'; +import { Button, Col, Container, Card, Row, Spinner, Table } from 'react-bootstrap'; +import { getConnectedDevices, ChartProvider, ConnectedDevices } from 'astarte-charts'; +import { ConnectedDevicesChart } from 'astarte-charts/react'; + +import { useConfig } from './ConfigManager'; +import { useAstarte } from './AstarteManager'; +import useFetch from './hooks/useFetch'; +import Icon from './components/Icon'; +import WaitForData from './components/WaitForData'; + +type ServiceStatus = 'loading' | 'ok' | 'err' | 'warn'; + +interface ServiceStatusRowProps { + service: string; + version?: string | null; + status?: ServiceStatus; +} + +const ServiceStatusRow = ({ + service, + version, + status, +}: ServiceStatusRowProps): React.ReactElement => { + let messageCell; + + if (status === 'loading') { + messageCell = ( + + + + ); + } else if (status === 'ok') { + messageCell = ( + + + This service is operating normally + + ); + } else if (status === 'warn') { + messageCell = ( + + + Cannot query the service with the current token + + ); + } else { + messageCell = ( + + + This service appears offline + + ); + } + + return ( + + {service} + {version} + {messageCell} + + ); +}; + +interface ApiStatusCardProps { + appengine: ServiceStatus; + appengineVersion: string | null; + appengineAuth: string | null; + realmManagement: ServiceStatus; + realmManagementVersion: string | null; + realmManagementAuth: string | null; + pairing: ServiceStatus; + pairingVersion: string | null; + pairingAuth: string | null; + showFlowStatus: boolean; + flow: ServiceStatus | null; +} + +const ApiStatusCard = ({ + appengine, + appengineVersion, + appengineAuth, + realmManagement, + realmManagementVersion, + realmManagementAuth, + pairing, + pairingVersion, + pairingAuth, + showFlowStatus, + flow, +}: ApiStatusCardProps): React.ReactElement => ( + + API Status + + + + + + + + + + + + + + {showFlowStatus && flow && } + +
    ServiceVersionStatus
    +
    +
    +); + +interface DevicesCardProps { + connectedDevices: number; + totalDevices: number; + deviceRegistrationLimit: number | null; + connectedDevicesProvider: ChartProvider<'Object', ConnectedDevices>; +} + +const DevicesCard = ({ + connectedDevices, + totalDevices, + deviceRegistrationLimit, + connectedDevicesProvider, +}: DevicesCardProps): React.ReactElement => ( + + Devices + + + + + Connected devices + + {connectedDevices} / {totalDevices} + + Registered devices + + {deviceRegistrationLimit != null + ? `${totalDevices} / ${deviceRegistrationLimit}` + : totalDevices} + + + +
    + {totalDevices > 0 && } +
    + +
    +
    +
    +
    +); + +interface InterfaceListProps { + interfaces: string[]; + onInterfaceClick: ( + event: React.MouseEvent, + interfaceName: string, + ) => void; + maxShownInterfaces: number; +} + +const InterfaceList = ({ + interfaces, + onInterfaceClick, + maxShownInterfaces, +}: InterfaceListProps): React.ReactElement => { + const shownInterfaces = interfaces.slice(0, maxShownInterfaces); + const remainingInterfaces = interfaces.length - maxShownInterfaces; + const astarte = useAstarte(); + + return ( +
      + {shownInterfaces.map((interfaceName) => ( +
    • + {astarte.token?.can('realmManagement', 'GET', `/interfaces/${interfaceName}`) ? ( + { + onInterfaceClick(e, interfaceName); + }} + > + + {interfaceName} + + ) : ( + <> + + {interfaceName} + + )} +
    • + ))} + {remainingInterfaces > 0 && ( +
    • + {astarte.token?.can('realmManagement', 'GET', `/interfaces`) ? ( + + {`${remainingInterfaces} more installed ${ + remainingInterfaces > 1 ? 'interfaces' : 'interface' + }…`} + + ) : ( + <> + {`${remainingInterfaces} more installed ${ + remainingInterfaces > 1 ? 'interfaces' : 'interface' + }…`} + + )} +
    • + )} +
    + ); +}; + +interface InterfacesCardProps { + interfaceList: string[]; + onInterfaceClick: ( + event: React.MouseEvent, + interfaceName: string, + ) => void; + onInstallInterfaceClick: () => void; +} + +const InterfacesCard = ({ + interfaceList, + onInterfaceClick, + onInstallInterfaceClick, +}: InterfacesCardProps): React.ReactElement => { + const astarte = useAstarte(); + return ( + + Interfaces + + {interfaceList.length > 0 ? ( + + ) : ( + <> + + Interfaces defines how data is exchanged between Astarte and its peers. + + + + Learn more... + + + + )} + + + + ); +}; + +interface TriggerListProps { + triggers: string[]; + maxShownTriggers: number; +} + +const TriggerList = ({ triggers, maxShownTriggers }: TriggerListProps): React.ReactElement => { + const shownTriggers = triggers.slice(0, maxShownTriggers); + const remainingTriggers = triggers.length - maxShownTriggers; + const astarte = useAstarte(); + + return ( +
      + {shownTriggers.map((triggerName) => ( +
    • + {astarte.token?.can('realmManagement', 'GET', `/triggers/${triggerName}`) ? ( + + + {triggerName} + + ) : ( + <> + + {triggerName} + + )} +
    • + ))} + {remainingTriggers > 0 && ( +
    • + {astarte.token?.can('realmManagement', 'GET', `/triggers`) ? ( + + {`${remainingTriggers} more installed ${ + remainingTriggers > 1 ? 'triggers' : 'trigger' + }…`} + + ) : ( + <> + {`${remainingTriggers} more installed ${ + remainingTriggers > 1 ? 'triggers' : 'trigger' + }…`} + + )} +
    • + )} +
    + ); +}; + +interface TriggersCardProps { + triggerList: string[]; + onInstallTriggerClick: () => void; +} + +const TriggersCard = ({ + triggerList, + onInstallTriggerClick, +}: TriggersCardProps): React.ReactElement => { + const astarte = useAstarte(); + return ( + + Triggers + + {triggerList.length > 0 ? ( + + ) : ( + <> + + Triggers in Astarte are the go-to mechanism for generating push events. + + + Triggers allow users to specify conditions upon which a custom payload is delivered to + a recipient, using a specific action, which usually maps to a specific + transport/protocol, such as HTTP. + + + + Learn more... + + + + )} + + + + ); +}; + +const HomePage = (): React.ReactElement => { + const astarte = useAstarte(); + const config = useConfig(); + const canFetchRealmManagementVersion = astarte.token?.can('realmManagement', 'GET', '/version'); + const canFetchAppEngineVersion = astarte.token?.can('appEngine', 'GET', '/version'); + const canFetchPairingVersion = astarte.token?.can('pairing', 'GET', '/version'); + const canFetchInterfaces = astarte.token?.can('realmManagement', 'GET', '/interfaces'); + const canFetchTriggers = astarte.token?.can('realmManagement', 'GET', '/triggers'); + const canFetchDeviceStats = astarte.token?.can('appEngine', 'GET', '/stats/devices'); + const canFetchDeviceRegistrationLimit = astarte.token?.can( + 'realmManagement', + 'GET', + '/config/device_registration_limit', + ); + const devicesStats = useFetch( + canFetchDeviceStats + ? astarte.client.getDevicesStats + : async () => ({ connectedDevices: 0, totalDevices: 0 }), + ); + const interfaces = useFetch( + canFetchInterfaces ? astarte.client.getInterfaceNames : async () => [], + ); + const triggers = useFetch(canFetchTriggers ? astarte.client.getTriggerNames : async () => []); + const appEngineHealth = useFetch(astarte.client.getAppengineHealth); + const realmManagementHealth = useFetch(astarte.client.getRealmManagementHealth); + const pairingHealth = useFetch(astarte.client.getPairingHealth); + const realmManagementAuth = useFetch( + canFetchRealmManagementVersion ? astarte.client.getRealmManagementVersion : async () => null, + ); + const appengineAuth = useFetch( + canFetchAppEngineVersion ? astarte.client.getAppEngineVersion : async () => null, + ); + const pairingAuth = useFetch( + canFetchPairingVersion ? astarte.client.getPairingVersion : async () => null, + ); + const realmManagementVersion = useFetch(astarte.client.getUnauthenticatedRealmManagementVersion); + const appengineVersion = useFetch(astarte.client.getUnauthenticatedAppEngineVersion); + const pairingVersion = useFetch(astarte.client.getUnauthenticatedPairingVersion); + const flowHealth = useFetch(config.features.flow ? astarte.client.getFlowHealth : async () => {}); + const deviceRegistrationLimitFetcher = useFetch( + canFetchDeviceRegistrationLimit && canFetchDeviceStats + ? astarte.client.getDeviceRegistrationLimit + : async () => null, + ); + const navigate = useNavigate(); + + const connectedDevicesProvider = useMemo( + () => getConnectedDevices(astarte.client), + [astarte.client], + ); + + const refreshData = () => { + if (canFetchDeviceStats) { + devicesStats.refresh(); + } + if (canFetchInterfaces) { + interfaces.refresh(); + } + if (canFetchTriggers) { + triggers.refresh(); + } + appEngineHealth.refresh(); + realmManagementHealth.refresh(); + pairingHealth.refresh(); + if (config.features.flow) { + flowHealth.refresh(); + } + }; + + useEffect(() => { + const refreshTimer = setInterval(() => { + refreshData(); + }, 30000); + + return () => { + clearTimeout(refreshTimer); + }; + }, [astarte.client]); + + const redirectToLastInterface = useCallback((e: React.SyntheticEvent, interfaceName: string) => { + e.preventDefault(); + astarte.client.getInterfaceMajors(interfaceName).then((interfaceMajors) => { + const latestMajor = Math.max(...interfaceMajors); + navigate(`/interfaces/${interfaceName}/${latestMajor}/edit`); + }); + }, []); + + const cellSpacingClass = 'mb-3'; + + return ( + + + +

    Astarte Dashboard

    + + + + + {canFetchDeviceStats && ( + + {({ connectedDevices, totalDevices }) => ( + + + + )} + + )} + {canFetchInterfaces && ( + + {(interfaceList) => ( + + navigate('/interfaces/new')} + /> + + )} + + )} + {canFetchTriggers && ( + + {(triggerList) => ( + + navigate('/triggers/new')} + /> + + )} + + )} +
    +
    + ); +}; + +export default HomePage; diff --git a/astarte-dashboard/src/InterfaceEditorPage.tsx b/astarte-dashboard/src/InterfaceEditorPage.tsx new file mode 100644 index 0000000000..1b513bb430 --- /dev/null +++ b/astarte-dashboard/src/InterfaceEditorPage.tsx @@ -0,0 +1,31 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React from 'react'; +import { Container, Stack } from 'react-bootstrap'; + +import InterfaceEditor from './components/InterfaceEditor'; + +export default (): React.ReactElement => ( + +

    Interface Editor

    + + + +
    +); diff --git a/astarte-dashboard/src/InterfacePage.tsx b/astarte-dashboard/src/InterfacePage.tsx new file mode 100644 index 0000000000..230545e0cb --- /dev/null +++ b/astarte-dashboard/src/InterfacePage.tsx @@ -0,0 +1,289 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useCallback, useEffect, useState } from 'react'; +import { useNavigate, useParams } from 'react-router-dom'; +import { Button, Container, Form, Row, Spinner, Stack } from 'react-bootstrap'; +import { AstarteInterface } from 'astarte-client'; + +import { AlertsBanner, useAlerts } from './AlertManager'; +import { useAstarte } from './AstarteManager'; +import InterfaceEditor from './components/InterfaceEditor'; +import Empty from './components/Empty'; +import WaitForData from './components/WaitForData'; +import ConfirmModal from './components/modals/Confirm'; +import BackButton from './ui/BackButton'; +import useFetch from './hooks/useFetch'; + +interface DeleteModalProps { + interfaceName: string; + interfaceMajor: number; + onCancel: () => void; + onConfirm: () => void; + isDeletingInterface: boolean; +} + +const DeleteModal = ({ + interfaceName, + interfaceMajor, + onCancel, + onConfirm, + isDeletingInterface, +}: DeleteModalProps) => { + const [confirmString, setConfirmString] = useState(''); + + const canDelete = confirmString === interfaceName; + + return ( + +

    + You are going to delete  + + {interfaceName} v{interfaceMajor} + + . This might cause data loss, deleted interfaces cannot be restored. Are you sure? +

    +

    + Please type {interfaceName} to proceed. +

    + + ) => setConfirmString(e.target.value)} + /> + +
    + ); +}; + +export default (): React.ReactElement => { + const [interfaceDraft, setInterfaceDraft] = useState(null); + const [isValidInterface, setIsValidInterface] = useState(false); + const [isUpdatingInterface, setIsUpdatingInterface] = useState(false); + const [isDeletingInterface, setIsDeletingInterface] = useState(false); + const [isSourceVisible, setIsSourceVisible] = useState(true); + const [showDeleteModal, setShowDeleteModal] = useState(false); + const [showUpdateModal, setShowUpdateModal] = useState(false); + const [actionAlerts, actionAlertsController] = useAlerts(); + const astarte = useAstarte(); + const navigate = useNavigate(); + const pathParams = useParams(); + const { interfaceName = '' } = pathParams; + const interfaceMajor = parseInt(pathParams.interfaceMajor || '', 10); + + const interfaceFetcher = useFetch(() => + astarte.client.getInterface({ interfaceName, interfaceMajor }), + ); + + const handleToggleSourceVisibility = useCallback(() => { + setIsSourceVisible((isVisible) => !isVisible); + }, []); + + const showConfirmUpdateModal = useCallback(() => { + setShowUpdateModal(true); + }, []); + + const hideConfirmUpdateModal = useCallback(() => { + setShowUpdateModal(false); + }, []); + + const showConfirmDeleteModal = useCallback(() => { + setShowDeleteModal(true); + }, []); + + const hideConfirmDeleteModal = useCallback(() => { + setShowDeleteModal(false); + }, []); + + const handleInterfaceChange = useCallback( + (updatedInterface: AstarteInterface, isValid: boolean) => { + setInterfaceDraft(updatedInterface); + setIsValidInterface(isValid); + }, + [], + ); + + const handleConfirmUpdateInterface = useCallback(() => { + if (interfaceDraft == null) { + return; + } + setIsUpdatingInterface(true); + astarte.client + .updateInterface(new AstarteInterface(interfaceDraft)) + .then(() => { + actionAlertsController.showSuccess('Changes succesfully applied.'); + }) + .catch((err) => { + actionAlertsController.showError(`Could not update interface: ${err.message}`); + }) + .finally(() => { + setIsUpdatingInterface(false); + hideConfirmUpdateModal(); + }); + }, [astarte.client, interfaceDraft, actionAlertsController, hideConfirmUpdateModal]); + + const handleConfirmDeleteInterface = useCallback(() => { + setIsDeletingInterface(true); + astarte.client + .deleteInterface(interfaceName, interfaceMajor) + .then(() => { + navigate('/interfaces'); + }) + .catch((err) => { + actionAlertsController.showError(`Could not delete interface: ${err.message}`); + setIsDeletingInterface(false); + hideConfirmDeleteModal(); + }); + }, [ + astarte.client, + hideConfirmDeleteModal, + interfaceName, + interfaceMajor, + navigate, + actionAlertsController, + ]); + + useEffect(() => { + if (interfaceFetcher.value != null) { + setInterfaceDraft(interfaceFetcher.value); + } + }, [interfaceFetcher.value]); + + const canUpdateInterface = + interfaceFetcher.value != null && interfaceDraft != null && isValidInterface; + + return ( + +

    + + Interface Editor +

    + + + + +
    + } + errorFallback={ + + } + > + {(iface) => ( + <> + +
    + + {iface.major === 0 && ( + + )} + +
    + {showUpdateModal && ( + +

    + Update the interface {iface.name}? +

    +
    + )} + {showDeleteModal && ( + + )} + + )} + + + + ); +}; diff --git a/astarte-dashboard/src/InterfacesPage.tsx b/astarte-dashboard/src/InterfacesPage.tsx new file mode 100644 index 0000000000..65081d1d6c --- /dev/null +++ b/astarte-dashboard/src/InterfacesPage.tsx @@ -0,0 +1,174 @@ +/* + This file is part of Astarte. + Copyright 2020 Ispirata Srl + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useCallback } from 'react'; +import { Link, useNavigate } from 'react-router-dom'; +import { Badge, Button, Col, Container, ListGroup, Row, Spinner } from 'react-bootstrap'; +import _ from 'lodash'; + +import { useAstarte } from './AstarteManager'; +import Empty from './components/Empty'; +import Icon from './components/Icon'; +import WaitForData from './components/WaitForData'; +import useFetch from './hooks/useFetch'; +import useInterval from './hooks/useInterval'; + +interface InterfaceRowProps { + name: string; + majors: number[]; +} + +const InterfaceRow = ({ name, majors }: InterfaceRowProps): React.ReactElement => { + const astarte = useAstarte(); + return ( + + + + + {astarte.token?.can( + 'realmManagement', + 'GET', + `/interfaces/${name}/${Math.max(...majors)}`, + ) ? ( + + + {name} + + ) : ( + <> + + {name} + + )} + + + {majors.map((major) => + astarte.token?.can('realmManagement', 'GET', `/interfaces/${name}/${major}`) ? ( + + 0 ? 'primary' : 'secondary'} className="me-1 px-2 py-1"> + v{major} + + + ) : ( + 0 ? 'primary' : 'secondary'} className="me-1 px-2 py-1"> + v{major} + + ), + )} + + + + + ); +}; + +const LoadingRow = (): React.ReactElement => ( + + + + + +); + +interface ErrorRowProps { + onRetry: () => void; + errorMessage?: string; +} + +const ErrorRow = ({ onRetry, errorMessage }: ErrorRowProps): React.ReactElement => ( + + + +); + +interface InterfaceInfo { + name: string; + majors: number[]; +} + +export default (): React.ReactElement => { + const astarte = useAstarte(); + const navigate = useNavigate(); + + const fetchInterfacesInfo = useCallback(async (): Promise => { + const interfaceNames = await astarte.client.getInterfaceNames(); + const fetchedInterfaces = await Promise.all( + interfaceNames.map((interfaceName) => + astarte.client.getInterfaceMajors(interfaceName).then((interfaceMajors) => ({ + name: interfaceName, + majors: interfaceMajors.sort().reverse(), + })), + ), + ); + const sortedInterfaces = _.sortBy(fetchedInterfaces, ['name']); + return sortedInterfaces; + }, [astarte.client]); + + const interfacesInfoFetcher = useFetch(fetchInterfacesInfo); + + useInterval(interfacesInfoFetcher.refresh, 30000); + + return ( + + + +

    Interfaces

    + +
    + + + + + + + } + errorFallback={ + + } + > + {(interfaces) => ( + <> + {interfaces.map(({ name, majors }) => ( + + ))} + + )} + + + + +
    + ); +}; diff --git a/astarte-dashboard/src/LoginPage.tsx b/astarte-dashboard/src/LoginPage.tsx new file mode 100644 index 0000000000..45270b8763 --- /dev/null +++ b/astarte-dashboard/src/LoginPage.tsx @@ -0,0 +1,332 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useMemo, useState } from 'react'; +import { useNavigate } from 'react-router-dom'; +import { Button, Col, Container, Form, Row, Stack } from 'react-bootstrap'; +import { AstarteRealm, AstarteToken } from 'astarte-client'; +import type { AuthOptions, LoginType } from 'ConfigManager'; +import { useAstarte } from 'AstarteManager'; + +function isValidUrl(urlString: string): boolean { + try { + // eslint-disable-next-line no-new + new URL(urlString); + return true; + } catch (error) { + return false; + } +} + +function tokenValidationFeedback( + tokenValidation: 'expired' | 'noAstarteClaims' | 'valid' | 'invalid', +): React.ReactElement { + let message = null; + switch (tokenValidation) { + case 'valid': + return <>; + case 'expired': { + message = 'Provided JWT token has expired.'; + break; + } + case 'noAstarteClaims': { + message = 'Provided JWT token has no usable Astarte claims.'; + break; + } + case 'invalid': + default: + message = 'Invalid JWT token.'; + } + return {message}; +} + +interface TokenFormProps { + canSwitchLoginType: boolean; + defaultRealm: string; + onSwitchLoginType: (loginType: LoginType) => void; +} + +const TokenForm = ({ + canSwitchLoginType, + defaultRealm, + onSwitchLoginType, +}: TokenFormProps): React.ReactElement => { + const navigate = useNavigate(); + const [realm, setRealm] = useState(defaultRealm); + const [jwt, setJwt] = useState(''); + const [keepMeLoggedIn, setKeepMeLoggedIn] = useState(false); + const { login } = useAstarte(); + + const isValidRealm = AstarteRealm.isValidName(realm); + + const tokenValidation = useMemo(() => AstarteToken.validate(jwt), [jwt]); + + const canSubmitForm = isValidRealm && tokenValidation === 'valid'; + + const handleTokenLogin = (event: React.FormEvent) => { + event.preventDefault(); + event.stopPropagation(); + const successfulLogin = login({ realm, token: jwt, authUrl: null }, keepMeLoggedIn); + if (successfulLogin) { + navigate('/', { replace: true }); + } + }; + + const AstartectlLink = () => ( + + astartectl + + ); + + return ( +
    + + + Realm + { + setRealm(e.target.value); + }} + isValid={realm !== '' && isValidRealm} + isInvalid={realm !== '' && !isValidRealm} + required + /> + + + Token + { + setJwt(e.target.value.trim()); + }} + isValid={jwt !== '' && tokenValidation === 'valid'} + isInvalid={jwt !== '' && tokenValidation !== 'valid'} + required + /> + {tokenValidationFeedback(tokenValidation)} + + + setKeepMeLoggedIn(e.target.checked)} + /> + + + {canSwitchLoginType && ( +
    + +
    + )} +
    + A valid JWT token should be used, you can use to generate one: +
    + $ astartectl utils gen-jwt all-realm-apis -k your_key.pem +
    +
    +
    + ); +}; + +interface OAuthFormProps { + canSwitchLoginType: boolean; + defaultRealm: string; + defaultOAuthURL: string; + onSwitchLoginType: (loginType: LoginType) => void; +} + +const OAuthForm = ({ + canSwitchLoginType, + onSwitchLoginType, + defaultRealm, + defaultOAuthURL = '', +}: OAuthFormProps): React.ReactElement => { + const [realm, setRealm] = useState(defaultRealm); + const [providerUrl, setProviderUrl] = useState(defaultOAuthURL); + const isValidRealm = AstarteRealm.isValidName(realm); + const isValidProviderUrl = isValidUrl(providerUrl); + + const handleOAuthLogin = (event: React.FormEvent) => { + event.preventDefault(); + event.stopPropagation(); + + const dashboardLoginUrl = new URL('auth', window.location.toString()); + dashboardLoginUrl.search = new URLSearchParams({ + realm, + authUrl: providerUrl, + }).toString(); + const oauthLoginUrl = new URL(providerUrl); + oauthLoginUrl.search = new URLSearchParams({ + client_id: 'astarte-dashboard', + response_type: 'token', + redirect_uri: dashboardLoginUrl.toString(), + }).toString(); + window.location.href = oauthLoginUrl.toString(); + }; + + return ( +
    + + + Realm + { + setRealm(e.target.value); + }} + isValid={realm !== '' && isValidRealm} + isInvalid={realm !== '' && !isValidRealm} + required + /> + + {!defaultOAuthURL && ( + + OAuth provider URL + { + setProviderUrl(e.target.value); + }} + isValid={providerUrl !== '' && isValidProviderUrl} + isInvalid={providerUrl !== '' && !isValidProviderUrl} + required + /> + + )} + + {canSwitchLoginType && ( +
    + +
    + )} +
    +
    + ); +}; + +const LeftColumn = (): React.ReactElement => ( + +
    + Background visual spacer + Background visual spacer + Astarte logo + Astarte mascotte +
    + +); + +interface RightColumnProps { + authOptions: AuthOptions; + defaultRealm: string; + defaultAuth: LoginType; +} + +const RightColumn = ({ + authOptions, + defaultRealm, + defaultAuth, +}: RightColumnProps): React.ReactElement => { + const [loginType, setLoginType] = useState(defaultAuth); + const handleLoginTypeSwitch = (newLoginType: LoginType) => { + setLoginType(newLoginType); + }; + const canSwitchLoginType = authOptions.token.enabled && authOptions.oauth.enabled; + + return ( + +

    Sign In

    + {loginType === 'oauth' ? ( + + ) : ( + + )} + + ); +}; + +interface Props { + authOptions: AuthOptions; + defaultRealm: string; + defaultAuth: keyof AuthOptions; +} + +export default ({ authOptions, defaultAuth, defaultRealm }: Props): React.ReactElement => ( + + + + + + +); diff --git a/astarte-dashboard/src/NewBlockPage.tsx b/astarte-dashboard/src/NewBlockPage.tsx new file mode 100644 index 0000000000..5b6dc47f81 --- /dev/null +++ b/astarte-dashboard/src/NewBlockPage.tsx @@ -0,0 +1,160 @@ +/* + This file is part of Astarte. + + Copyright 2020-2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useCallback, useState } from 'react'; +import { useNavigate } from 'react-router-dom'; +import { Button, Form, Spinner, Stack } from 'react-bootstrap'; +import { AstarteCustomBlock } from 'astarte-client'; +import _ from 'lodash'; + +import { actions, useStoreDispatch, useStoreSelector } from './store'; +import { AlertsBanner, useAlerts } from './AlertManager'; +import SingleCardPage from './ui/SingleCardPage'; + +const isJSON = (string: string) => { + try { + JSON.parse(string); + return true; + } catch { + return false; + } +}; + +interface BlockState { + name: AstarteCustomBlock['name']; + source: AstarteCustomBlock['source']; + type: AstarteCustomBlock['type']; + schema: string; +} + +export default (): React.ReactElement => { + const [block, setBlock] = useState({ + name: '', + source: '', + type: 'producer', + schema: '', + }); + const [isValidated, setIsValidated] = useState(false); + const [creationAlerts, creationAlertsController] = useAlerts(); + const navigate = useNavigate(); + const dispatch = useStoreDispatch(); + const isRegisteringBlock = useStoreSelector((selectors) => + selectors.isRegisteringBlock(block.name), + ); + + const createBlock = useCallback(() => { + const newBlock = new AstarteCustomBlock({ + ...block, + schema: JSON.parse(block.schema.trim()), + }); + dispatch(actions.blocks.register(newBlock)).then((action) => { + if (action.meta.requestStatus === 'fulfilled') { + navigate('/blocks'); + } else { + creationAlertsController.showError( + `Couldn't create block: ${_.get(action, 'error.message')}`, + ); + } + }); + }, [dispatch, block, creationAlertsController, navigate]); + + const isValidBlockName = /^[a-zA-Z][a-zA-Z0-9-_]*$/.test(block.name); + const isValidBlockSource = block.source !== ''; + const isValidBlockType = ['producer', 'consumer', 'producer_consumer'].includes(block.type); + const isValidBlockSchema = isJSON(block.schema.trim()); + const isValidBlock = + isValidBlockName && isValidBlockSource && isValidBlockType && isValidBlockSchema; + + const handleSubmit = useCallback(() => { + setIsValidated(true); + if (isValidBlock) { + createBlock(); + } + }, [setIsValidated, createBlock, isValidBlock]); + + return ( + <> + + +
    + + + Name + setBlock({ ...block, name: e.target.value })} + isValid={isValidated && isValidBlockName} + isInvalid={isValidated && !isValidBlockName} + /> + + + Type + + setBlock({ ...block, type: e.target.value as AstarteCustomBlock['type'] }) + } + isValid={isValidated && isValidBlockType} + isInvalid={isValidated && !isValidBlockType} + > + + + + + + + Source + setBlock({ ...block, source: e.target.value })} + isValid={isValidated && isValidBlockSource} + isInvalid={isValidated && !isValidBlockSource} + /> + + + Schema + setBlock({ ...block, schema: e.target.value })} + isValid={isValidated && isValidBlockSchema} + isInvalid={isValidated && !isValidBlockSchema} + /> + + +
    +
    +
    + +
    + + ); +}; diff --git a/astarte-dashboard/src/NewGroupPage.tsx b/astarte-dashboard/src/NewGroupPage.tsx new file mode 100644 index 0000000000..492e17a370 --- /dev/null +++ b/astarte-dashboard/src/NewGroupPage.tsx @@ -0,0 +1,196 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useState } from 'react'; +import { useNavigate } from 'react-router-dom'; +import { Button, Container, Form, InputGroup, Spinner, Stack } from 'react-bootstrap'; +import type { AstarteDevice } from 'astarte-client'; + +import { AlertsBanner, useAlerts } from './AlertManager'; +import { useAstarte } from './AstarteManager'; +import Empty from './components/Empty'; +import Icon from './components/Icon'; +import WaitForData from './components/WaitForData'; +import useFetch from './hooks/useFetch'; +import SingleCardPage from './ui/SingleCardPage'; +import CheckableDeviceTable from './ui/CheckableDeviceTable'; + +interface GroupNameFormGroupProps { + groupName: string; + onGroupNameChange: (groupName: string) => void; +} + +const GroupNameFormGroup = ({ + groupName, + onGroupNameChange, +}: GroupNameFormGroupProps): React.ReactElement => { + const isValidGroupName = !groupName.startsWith('@') && !groupName.startsWith('~'); + return ( + + Group name + onGroupNameChange(e.target.value.trim())} + autoComplete="off" + required + isValid={groupName !== '' && isValidGroupName} + isInvalid={groupName !== '' && !isValidGroupName} + /> + {!isValidGroupName && ( + + The group name cannot start with ~ or @. + + )} + + ); +}; + +interface FilterInputBoxProps { + filter: string; + onFilterChange: (filter: string) => void; +} + +const FilterInputBox = ({ filter, onFilterChange }: FilterInputBoxProps): React.ReactElement => ( + + Table filter + + + + + onFilterChange(e.target.value)} + placeholder="Device ID/alias" + /> + + +); + +export default (): React.ReactElement => { + const [groupName, setGroupName] = useState(''); + const [deviceFilter, setDeviceFilter] = useState(''); + const [selectedDevices, setSelectedDevices] = useState>(new Set()); + const [isCreatingGroup, setIsCreatingGroup] = useState(false); + const astarte = useAstarte(); + + const devicesFetcher = useFetch(() => + astarte.client.getDevices({ details: true }).then(({ devices }) => devices), + ); + const [formAlerts, formAlertsController] = useAlerts(); + const navigate = useNavigate(); + + const createGroup = (event: React.FormEvent) => { + event.preventDefault(); + setIsCreatingGroup(true); + astarte.client + .createGroup({ + groupName, + deviceIds: Array.from(selectedDevices), + }) + .then(() => { + navigate({ pathname: '/groups' }); + }) + .catch((err) => { + formAlertsController.showError(`Could not create group: ${err.message}`); + setIsCreatingGroup(false); + }); + }; + + const handleDeviceToggle = (deviceId: string, checked: boolean) => { + setSelectedDevices((previousSelection) => { + const newSelection = new Set(previousSelection); + if (checked) { + newSelection.add(deviceId); + } else { + newSelection.delete(deviceId); + } + return newSelection; + }); + }; + + const selectedDeviceCount = selectedDevices.size; + const isValidGroupName = + groupName !== '' && !groupName.startsWith('@') && !groupName.startsWith('~'); + const isValidForm = isValidGroupName && selectedDeviceCount > 0; + + return ( + + + + + + } + errorFallback={ + + } + > + {(devices) => ( +
    + + +
    + + {selectedDeviceCount > 0 + ? `${selectedDeviceCount} ${ + selectedDeviceCount === 1 ? 'device' : 'devices' + } selected.` + : 'Please select at least one device.'} + +
    + +
    +
    + +
    + +
    +
    +
    + )} +
    +
    + ); +}; diff --git a/astarte-dashboard/src/NewInterfacePage.tsx b/astarte-dashboard/src/NewInterfacePage.tsx new file mode 100644 index 0000000000..b6725d2a45 --- /dev/null +++ b/astarte-dashboard/src/NewInterfacePage.tsx @@ -0,0 +1,165 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useCallback, useState } from 'react'; +import { useNavigate } from 'react-router-dom'; +import { Button, Container, Spinner, Stack } from 'react-bootstrap'; +import { AstarteInterface } from 'astarte-client'; +import _ from 'lodash'; + +import { AlertsBanner, useAlerts } from './AlertManager'; +import { useAstarte } from './AstarteManager'; +import InterfaceEditor from './components/InterfaceEditor'; +import ConfirmModal from './components/modals/Confirm'; +import BackButton from './ui/BackButton'; + +interface InstallModalProps { + interfaceName: string; + isDraft: boolean; + onCancel: () => void; + onConfirm: () => void; + isInstallingInterface: boolean; +} + +const InstallModal = ({ + interfaceName, + isDraft, + onCancel, + onConfirm, + isInstallingInterface, +}: InstallModalProps) => ( + +

    + You are about to install the interface {interfaceName}. +

    + {isDraft ? ( +

    + As its major version is 0, this is a draft interface, which can be deleted. +
    + In such a case, any data sent through this interface will be lost. +
    + Draft Interfaces should be used for development and testing purposes only. +

    + ) : ( +

    + Interface major is greater than zero, that means you will not be able to change already + installed mappings. +

    + )} +

    Are you sure you want to continue?

    +
    +); + +export default (): React.ReactElement => { + const [interfaceDraft, setInterfaceDraft] = useState(null); + const [isValidInterface, setIsValidInterface] = useState(false); + const [isInstallingInterface, setIsInstallingInterface] = useState(false); + const [showInstallModal, setShowInstallModal] = useState(false); + const [isSourceVisible, setIsSourceVisible] = useState(true); + const [installationAlerts, installationAlertsController] = useAlerts(); + const astarte = useAstarte(); + const navigate = useNavigate(); + + const handleToggleSourceVisibility = useCallback(() => { + setIsSourceVisible((isVisible) => !isVisible); + }, []); + + const handleInterfaceChange = useCallback( + (updatedInterface: AstarteInterface, isValid: boolean) => { + setInterfaceDraft(updatedInterface); + setIsValidInterface(isValid); + }, + [], + ); + + const showConfirmInstallModal = useCallback(() => { + setShowInstallModal(true); + }, []); + + const hideConfirmInstallModal = useCallback(() => { + setShowInstallModal(false); + }, []); + + const handleConfirmInstallInterface = useCallback(() => { + if (interfaceDraft == null || isInstallingInterface) { + return; + } + setIsInstallingInterface(true); + astarte.client + .installInterface(new AstarteInterface(interfaceDraft)) + .then(() => { + navigate({ pathname: '/interfaces' }); + }) + .catch((err) => { + installationAlertsController.showError(`Could not install interface: ${err.message}`); + setIsInstallingInterface(false); + hideConfirmInstallModal(); + }); + }, [ + astarte.client, + interfaceDraft, + isInstallingInterface, + navigate, + hideConfirmInstallModal, + installationAlertsController, + ]); + + return ( + +

    + + Interface Editor +

    + + + +
    + + +
    +
    + {showInstallModal && ( + + )} +
    + ); +}; diff --git a/astarte-dashboard/src/NewPipelinePage.tsx b/astarte-dashboard/src/NewPipelinePage.tsx new file mode 100644 index 0000000000..c632086037 --- /dev/null +++ b/astarte-dashboard/src/NewPipelinePage.tsx @@ -0,0 +1,281 @@ +/* + This file is part of Astarte. + + Copyright 2020-2024 SECO Mind Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useCallback, useEffect, useMemo, useState } from 'react'; +import { useNavigate } from 'react-router-dom'; +import { Button, Form, Spinner, Stack } from 'react-bootstrap'; +import Ajv from 'ajv'; +import { AstartePipeline } from 'astarte-client'; +import type { AstarteBlock } from 'astarte-client'; +import _ from 'lodash'; + +import { AlertsBanner, useAlerts } from './AlertManager'; +import { useAstarte } from './AstarteManager'; +import FormModal from './components/modals/Form'; +import VisualFlowEditor, { getNewModel, nodeModelToSource } from './components/VisualFlowEditor'; +import type NativeBlockModel from './models/NativeBlockModel'; +import SingleCardPage from './ui/SingleCardPage'; + +const ajv = new Ajv(); + +interface CommandRowProps { + className?: string; + children: React.ReactNode; +} + +const CommandRow = ({ className = '', children }: CommandRowProps): React.ReactElement => ( +
    {children}
    +); + +const NewPipelinePage = (): React.ReactElement => { + const [editorModel] = useState(getNewModel()); + const [isCreatingPipeline, setIsCreatingPipeline] = useState(false); + const [blocks, setBlocks] = useState([]); + const [activeModal, setActiveModal] = useState(null); + const [pipeline, setPipeline] = useState({ + name: '', + description: '', + source: '', + schema: '', + }); + const [formAlerts, formAlertsController] = useAlerts(); + const astarte = useAstarte(); + const navigate = useNavigate(); + + useEffect(() => { + let mounted = true; + astarte.client + .getBlocks() + .then((astarteBlocks) => { + if (!mounted) { + return; + } + const containerBlock = astarteBlocks.find( + (block) => block.name === 'container' && block.type === 'producer_consumer', + ); + if (!containerBlock) { + setBlocks(astarteBlocks); + } else { + const container = _.merge({}, containerBlock); + _.unset(container, 'schema.properties.type'); + const containerProducer = _.merge({}, container, { type: 'producer' }); + const containerConsumer = _.merge({}, container, { type: 'consumer' }); + const parsedBlocks = astarteBlocks + .filter((b) => b.name !== 'container') + .concat([container, containerConsumer, containerProducer]); + setBlocks(parsedBlocks); + } + }) + .catch((error) => { + mounted && + formAlertsController.showError(`Couldn't retrieve block descriptions: ${error.message}`); + }); + + return () => { + mounted = false; + }; + }, [astarte.client, formAlertsController]); + + const schemaObject = useMemo(() => { + if (pipeline.schema === '') { + return undefined; + } + try { + const schema = JSON.parse(pipeline.schema); + return schema; + } catch (e) { + return undefined; + } + }, [pipeline.schema]); + + const createPipeline = useCallback(() => { + setIsCreatingPipeline(true); + astarte.client + .registerPipeline( + new AstartePipeline({ + name: pipeline.name, + source: pipeline.source, + description: pipeline.description, + schema: schemaObject || {}, + }), + ) + .then(() => navigate('/pipelines')) + .catch((err) => { + setIsCreatingPipeline(false); + formAlertsController.showError(`Couldn't create pipeline: ${err.message}`); + }); + }, [ + astarte.client, + navigate, + setIsCreatingPipeline, + formAlertsController, + pipeline, + schemaObject, + ]); + + const isValidSchema = useMemo(() => { + if (!schemaObject) { + return false; + } + try { + ajv.compile(schemaObject); + return true; + } catch (e) { + return false; + } + }, [schemaObject]); + + const blockSettingsClickHandler = useCallback( + (node: NativeBlockModel) => { + const blockDefinition = blocks.find( + (block) => node.name === block.name && node.blockType === block.type, + ); + if (!blockDefinition) { + return; + } + + editorModel.setLocked(true); + + setActiveModal( + { + setActiveModal(null); + editorModel.setLocked(false); + }} + onConfirm={(props) => { + node.setProperties(props); + setActiveModal(null); + editorModel.setLocked(false); + }} + />, + ); + }, + [blocks, editorModel], + ); + + const sourceConversionHandler = () => { + try { + const pipelineSource = nodeModelToSource(editorModel); + setPipeline({ ...pipeline, source: pipelineSource }); + } catch (error: any) { + formAlertsController.showError(error.message); + } + }; + + const isValidPipelineName = pipeline.name !== ''; + const isValidSource = pipeline.source !== ''; + const isValidForm = isValidPipelineName && isValidSource; + + return ( + + +
    + + + Name + setPipeline({ ...pipeline, name: e.target.value })} + /> + + {pipeline.source === '' ? ( + <> + + + + + + + + ) : ( + <> + + Source + setPipeline({ ...pipeline, source: e.target.value })} + /> + + + Schema + setPipeline({ ...pipeline, schema: e.target.value })} + /> + + + Description + setPipeline({ ...pipeline, description: e.target.value })} + /> + + + + + + )} + +
    + {activeModal} +
    + ); +}; + +export default NewPipelinePage; diff --git a/astarte-dashboard/src/NewTriggerDeliveryPolicyPage.tsx b/astarte-dashboard/src/NewTriggerDeliveryPolicyPage.tsx new file mode 100644 index 0000000000..a95b4da927 --- /dev/null +++ b/astarte-dashboard/src/NewTriggerDeliveryPolicyPage.tsx @@ -0,0 +1,118 @@ +/* +This file is part of Astarte. + +Copyright 2023 SECO Mind Srl + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +/* eslint-disable camelcase */ + +import React, { useCallback, useState } from 'react'; +import { useNavigate } from 'react-router-dom'; +import { Button, Container, Spinner, Stack } from 'react-bootstrap'; +import { AstarteTriggerDeliveryPolicyDTO } from 'astarte-client/types/dto'; + +import { AlertsBanner, useAlerts } from './AlertManager'; +import { useAstarte } from './AstarteManager'; +import BackButton from './ui/BackButton'; +import TriggerDeliveryPolicyEditor from './components/TriggerDeliveryPolicyEditor'; + +const parsedErrorMessage = (status: number): string => { + switch (status) { + case 400: + return 'Bad request'; + case 401: + return 'Authorization information is missing or invalid.'; + case 403: + return 'Authorization failed for the resource. This could also result from unexisting resources.'; + case 409: + return 'A trigger delivery policy with this name already exists.'; + case 422: + return 'The provided trigger delivery policy is not valid.'; + default: + return 'Not found'; + } +}; + +export default (): React.ReactElement => { + const [policyDraft, setPolicyDraft] = useState(); + const [isValidPolicy, setIsValidPolicy] = useState(false); + const [isInstallingPolicy, setIsInstallingPolicy] = useState(false); + const [isSourceVisible, setIsSourceVisible] = useState(true); + const [installationAlerts, installationAlertsController] = useAlerts(); + const astarte = useAstarte(); + const navigate = useNavigate(); + + const handleToggleSourceVisibility = useCallback(() => { + setIsSourceVisible((isVisible) => !isVisible); + }, []); + + const handlePolicyChange = useCallback( + (updatedPolicy: AstarteTriggerDeliveryPolicyDTO, isValid: boolean) => { + setPolicyDraft(updatedPolicy); + setIsValidPolicy(isValid); + }, + [], + ); + + const handleInstallPolicy = useCallback(() => { + if (policyDraft == null || isInstallingPolicy) { + return; + } + setIsInstallingPolicy(true); + astarte.client + .installTriggerDeliveryPolicy(policyDraft) + .then(() => { + navigate({ pathname: '/trigger-delivery-policies' }); + }) + .catch((err) => { + installationAlertsController.showError( + `Could not install policy: ${parsedErrorMessage(err.response.status)}`, + ); + setIsInstallingPolicy(false); + }); + }, [astarte.client, policyDraft, isInstallingPolicy, navigate, installationAlertsController]); + + return ( + +

    + + Trigger Delivery Policy Editor +

    + + + +
    + + +
    +
    +
    + ); +}; diff --git a/astarte-dashboard/src/NewTriggerPage.tsx b/astarte-dashboard/src/NewTriggerPage.tsx new file mode 100644 index 0000000000..79c9a1a986 --- /dev/null +++ b/astarte-dashboard/src/NewTriggerPage.tsx @@ -0,0 +1,112 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useCallback, useState } from 'react'; +import { useNavigate } from 'react-router-dom'; +import { Button, Container, Spinner, Stack } from 'react-bootstrap'; +import { AstarteTrigger } from 'astarte-client'; + +import { AlertsBanner, useAlerts } from './AlertManager'; +import { useAstarte } from './AstarteManager'; +import TriggerEditor from './components/TriggerEditor'; +import BackButton from './ui/BackButton'; + +export default (): React.ReactElement => { + const [triggerDraft, setTriggerDraft] = useState(null); + const [isValidTrigger, setIsValidTrigger] = useState(false); + const [isInstallingTrigger, setIsInstallingTrigger] = useState(false); + const [isSourceVisible, setIsSourceVisible] = useState(true); + const [installationAlerts, installationAlertsController] = useAlerts(); + const astarte = useAstarte(); + const { triggerDeliveryPoliciesSupported } = astarte; + const navigate = useNavigate(); + + const fetchPoliciesName = triggerDeliveryPoliciesSupported + ? astarte.client.getPolicyNames + : undefined; + + const handleToggleSourceVisibility = useCallback(() => { + setIsSourceVisible((isVisible) => !isVisible); + }, []); + + const handleTriggerChange = useCallback((updatedTrigger: AstarteTrigger, isValid: boolean) => { + setTriggerDraft(updatedTrigger); + setIsValidTrigger(isValid); + }, []); + + const handleInstallTrigger = useCallback(() => { + if (triggerDraft == null || isInstallingTrigger) { + return; + } + setIsInstallingTrigger(true); + astarte.client + .installTrigger(new AstarteTrigger(triggerDraft)) + .then(() => { + navigate({ pathname: '/triggers' }); + }) + .catch((err) => { + installationAlertsController.showError(`Could not install trigger: ${err.message}`); + setIsInstallingTrigger(false); + }); + }, [astarte.client, triggerDraft, isInstallingTrigger, navigate, installationAlertsController]); + + const handleTriggerEditorError = useCallback( + (message: string) => { + installationAlertsController.showError(message); + }, + [installationAlertsController], + ); + + return ( + +

    + + Trigger Editor +

    + + + +
    + + +
    +
    +
    + ); +}; diff --git a/astarte-dashboard/src/PipelineSourcePage.tsx b/astarte-dashboard/src/PipelineSourcePage.tsx new file mode 100644 index 0000000000..6e6b6f12e0 --- /dev/null +++ b/astarte-dashboard/src/PipelineSourcePage.tsx @@ -0,0 +1,129 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useCallback, useState } from 'react'; +import { useNavigate, useParams } from 'react-router-dom'; +import { Button, Col, Container, Row, Spinner } from 'react-bootstrap'; +import SyntaxHighlighter from 'react-syntax-highlighter'; +import _ from 'lodash'; + +import { AlertsBanner, useAlerts } from './AlertManager'; +import { useAstarte } from './AstarteManager'; +import SingleCardPage from './ui/SingleCardPage'; +import Empty from './components/Empty'; +import ConfirmModal from './components/modals/Confirm'; +import WaitForData from './components/WaitForData'; +import useFetch from './hooks/useFetch'; + +export default (): React.ReactElement => { + const { pipelineId = '' } = useParams(); + const astarte = useAstarte(); + const pipelineFetcher = useFetch(() => astarte.client.getPipeline(pipelineId)); + const [showDeleteModal, setShowDeleteModal] = useState(false); + const [isDeletingPipeline, setIsDeletingPipeline] = useState(false); + const [deletionAlerts, deletionAlertsController] = useAlerts(); + const navigate = useNavigate(); + + const deletePipeline = useCallback(() => { + setIsDeletingPipeline(true); + astarte.client + .deletePipeline(pipelineId) + .then(() => navigate('/pipelines')) + .catch((err) => { + deletionAlertsController.showError(`Couldn't delete pipeline: ${err.message}`); + setIsDeletingPipeline(false); + setShowDeleteModal(false); + }); + }, [astarte.client, pipelineId, navigate, deletionAlertsController]); + + return ( + <> + + + + + + } + errorFallback={ + + } + > + {(pipeline) => ( + + +
    Name
    +

    {pipeline.name}

    + {pipeline.description && ( + <> +
    Description
    +

    {pipeline.description}

    + + )} +
    Source
    + + {pipeline.source} + + {!_.isEmpty(pipeline.schema) && ( + <> +
    Schema
    + + {JSON.stringify(pipeline.schema, null, 2)} + + + )} + +
    + )} +
    +
    + {pipelineFetcher.status === 'ok' && ( +
    + +
    + )} + {showDeleteModal && ( + setShowDeleteModal(false)} + onConfirm={deletePipeline} + isConfirming={isDeletingPipeline} + > +

    + Delete pipeline {pipelineId}? +

    +
    + )} + + ); +}; diff --git a/astarte-dashboard/src/PipelinesPage.tsx b/astarte-dashboard/src/PipelinesPage.tsx new file mode 100644 index 0000000000..ab3946bbf4 --- /dev/null +++ b/astarte-dashboard/src/PipelinesPage.tsx @@ -0,0 +1,129 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React from 'react'; +import { Link, useNavigate } from 'react-router-dom'; +import { Button, Card, Col, Container, Row, Spinner } from 'react-bootstrap'; +import type { AstartePipeline } from 'astarte-client'; + +import { useAstarte } from './AstarteManager'; +import Empty from './components/Empty'; +import WaitForData from './components/WaitForData'; +import useFetch from './hooks/useFetch'; + +interface NewPipelineCardProps { + onCreate: () => void; +} + +const NewPipelineCard = ({ onCreate }: NewPipelineCardProps): React.ReactElement => ( + + New Pipeline + + Create your custom pipeline +
    + +
    +
    +
    +); + +interface PipelineCardProps { + pipeline: AstartePipeline; + onInstantiate: () => void; + showLink: string; +} + +const PipelineCard = ({ + pipeline, + onInstantiate, + showLink, +}: PipelineCardProps): React.ReactElement => { + const astarte = useAstarte(); + return ( + + + {astarte.token?.can('flow', 'GET', `/pipelines/${pipeline.name}`) ? ( + {pipeline.name} + ) : ( + pipeline.name + )} + + + {pipeline.description} +
    + +
    +
    +
    + ); +}; + +export default (): React.ReactElement => { + const astarte = useAstarte(); + const pipelinesFetcher = useFetch(astarte.client.getPipelines); + const navigate = useNavigate(); + + return ( + +

    Pipelines

    + + {astarte.token?.can('flow', 'POST', '/pipelines') && ( + + navigate('/pipelines/new')} /> + + )} + + +
    + } + errorFallback={ + + } + > + {(pipelines) => ( + <> + {pipelines.map((pipeline) => ( + + { + navigate(`/flows/new?pipelineId=${pipeline.name}`); + }} + showLink={`/pipelines/${pipeline.name}/edit`} + /> + + ))} + + )} + + + + ); +}; diff --git a/astarte-dashboard/src/RealmSettingsPage.tsx b/astarte-dashboard/src/RealmSettingsPage.tsx new file mode 100644 index 0000000000..a24b869234 --- /dev/null +++ b/astarte-dashboard/src/RealmSettingsPage.tsx @@ -0,0 +1,198 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useCallback, useState } from 'react'; +import { useNavigate } from 'react-router-dom'; +import { Button, Container, Form, ListGroup, Spinner, Stack } from 'react-bootstrap'; + +import Empty from './components/Empty'; +import ConfirmModal from './components/modals/Confirm'; +import SingleCardPage from './ui/SingleCardPage'; +import { AlertsBanner, useAlerts } from './AlertManager'; +import { useAstarte } from './AstarteManager'; + +import WaitForData from './components/WaitForData'; +import useFetch from './hooks/useFetch'; + +type RealmSettings = { + publicKey: string; +}; + +interface RealmSettingsFormProps { + initialValues: RealmSettings; + onSubmit: (values: RealmSettings) => void; + isUpdatingSettings: boolean; +} + +const RealmSettingsForm = ({ + initialValues, + onSubmit, + isUpdatingSettings, +}: RealmSettingsFormProps) => { + const [values, setValues] = useState(initialValues); + const canSubmit = values.publicKey.trim() !== '' && values.publicKey !== initialValues.publicKey; + const astarte = useAstarte(); + + return ( +
    + + + Public key + setValues({ ...values, publicKey: e.target.value })} + /> + +
    + +
    +
    +
    + ); +}; + +interface ErrorRowProps { + onRetry: () => void; + errorMessage?: string; +} + +const ErrorRow = ({ onRetry, errorMessage }: ErrorRowProps): React.ReactElement => ( + + + +); + +export default (): React.ReactElement => { + const [draftRealmSettings, setDraftRealmSettings] = useState(null); + const [isModalVisible, setIsModalVisible] = useState(false); + const [isUpdatingSettings, setIsUpdatingSettings] = useState(false); + const [formAlerts, formAlertsController] = useAlerts(); + const astarte = useAstarte(); + const navigate = useNavigate(); + + const authConfigFetcher = useFetch(astarte.client.getConfigAuth); + const deviceRegistrationLimitFetcher = useFetch( + astarte.token?.can('realmManagement', 'GET', '/config/device_registration_limit') + ? astarte.client.getDeviceRegistrationLimit + : async () => null, + ); + + const showModal = useCallback(() => setIsModalVisible(true), [setIsModalVisible]); + + const dismissModal = useCallback(() => setIsModalVisible(false), [setIsModalVisible]); + + const handleFormSubmit = useCallback( + (realmSettings: RealmSettings) => { + setDraftRealmSettings(realmSettings); + showModal(); + }, + [setDraftRealmSettings, showModal], + ); + + const applyNewSettings = useCallback(() => { + if (draftRealmSettings == null) { + return; + } + setIsUpdatingSettings(true); + astarte.client + .updateConfigAuth({ publicKey: draftRealmSettings.publicKey }) + .then(() => { + navigate('/logout'); + }) + .catch((err) => { + setIsUpdatingSettings(false); + dismissModal(); + formAlertsController.showError(err.message); + }); + }, [ + setIsUpdatingSettings, + astarte.client, + draftRealmSettings, + navigate, + dismissModal, + formAlertsController, + ]); + + return ( + + + + Device registration limit + + + + + + } + errorFallback={ + + } + > + {({ publicKey }) => ( + + )} + + {isModalVisible && ( + +

    + Realm public key will be changed, users will not be able to make further API calls using + their current auth token. Confirm? +

    +
    + )} +
    + ); +}; diff --git a/astarte-dashboard/src/RegisterDevicePage.tsx b/astarte-dashboard/src/RegisterDevicePage.tsx new file mode 100644 index 0000000000..c4e32d17d6 --- /dev/null +++ b/astarte-dashboard/src/RegisterDevicePage.tsx @@ -0,0 +1,556 @@ +/* + This file is part of Astarte. + + Copyright 2020-2024 SECO Mind Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/* @global document */ + +import React, { useCallback, useEffect, useState } from 'react'; +import { useLocation, useNavigate } from 'react-router-dom'; +import { v4 as uuidv4, v5 as uuidv5 } from 'uuid'; +import { Button, Col, Form, Row, Spinner, Stack, Table } from 'react-bootstrap'; +import type { AstarteDevice, AstarteInterfaceDescriptor } from 'astarte-client'; +import semver from 'semver'; + +import Icon from './components/Icon'; +import ConfirmModal from './components/modals/Confirm'; +import FormModal from './components/modals/Form'; +import SingleCardPage from './ui/SingleCardPage'; +import { byteArrayToUrlSafeBase64, urlSafeBase64ToByteArray } from './Base64'; +import { AlertsBanner, useAlerts } from './AlertManager'; +import { useAstarte } from './AstarteManager'; + +/* TODO use clipboard API + * Right now the 'clipboard-write' is supported + * only on chromium browser. + * document.execCommand("copy") is deprecated but + * for now it's the only reliable way to copy to clipboard + */ +function pasteSecret() { + const secretCode = document.querySelector('#secret-code'); + if (secretCode == null) { + return; + } + const selection = window.getSelection(); + if (selection == null) { + return; + } + if (selection.rangeCount > 0) { + selection.removeAllRanges(); + } + const range = document.createRange(); + range.selectNode(secretCode); + selection.addRange(range); + document.execCommand('copy'); +} + +type ColNoLabelProps = React.ComponentProps; + +const ColNoLabel = ({ children, ...otherProps }: ColNoLabelProps): React.ReactElement => ( + + + {children} + +); + +interface InterfaceIntrospectionRowProps { + interfaceDescriptor: AstarteInterfaceDescriptor; + onRemove: () => void; +} + +const ChangeSource = { + SelectOptions: 'selectOptions', + Input: 'input', +}; + +const InterfaceIntrospectionRow = ({ + interfaceDescriptor, + onRemove, +}: InterfaceIntrospectionRowProps): React.ReactElement => ( + + {interfaceDescriptor.name} + {interfaceDescriptor.major} + {interfaceDescriptor.minor} + + + + +); + +interface IntrospectionControlRowProps { + onAddInterface: (interfaceDescriptor: AstarteInterfaceDescriptor) => void; + interfaces: Map; +} + +const IntrospectionControlRow = ({ + onAddInterface, + interfaces, +}: IntrospectionControlRowProps): React.ReactElement => { + const initialState: AstarteInterfaceDescriptor = { + name: '', + major: 0, + minor: 1, + }; + const astarte = useAstarte(); + const [selectedInterfaceOption, setSelectedInterfaceOption] = useState(''); + const [interfaceOptions, setInterfaceOptions] = useState<{ value: string; label: string }[]>([]); + const [interfaceDescriptor, setInterfaceDescriptor] = + useState(initialState); + const [selectedInterfaceData, setSelectedInterfaceData] = useState( + [], + ); + const [greaterRealmManagementVersion, setGreaterRealmManagementVersion] = useState(false); + const [hasSelectedInterface, setSelectedInterface] = useState(false); + const [disableVersionInput, setDisableVersionInput] = useState(false); + const [loadingInterfaceData, setLoadingInterfaceData] = useState(true); + const canShowInterfaceMinorAndMajor = hasSelectedInterface || !greaterRealmManagementVersion; + + const handleNameChange = (value: string, from: string) => { + if (value != '') { + setSelectedInterface(true); + } + if (from === ChangeSource.SelectOptions) { + const selectedInterface = selectedInterfaceData[Number(value)]; + if (selectedInterface) { + setInterfaceDescriptor({ + name: selectedInterface.name, + major: selectedInterface.major, + minor: selectedInterface.minor, + }); + setSelectedInterfaceOption(value.toString()); + } + } else { + setInterfaceDescriptor((state) => ({ ...state, name: value })); + } + }; + + const handleMajorChange = (e: React.ChangeEvent) => { + const { value } = e.target; + setInterfaceDescriptor((state) => ({ + ...state, + major: parseInt(value, 10) || 0, + })); + }; + + const handleMinorChange = (e: React.ChangeEvent) => { + const { value } = e.target; + setInterfaceDescriptor((state) => ({ + ...state, + minor: parseInt(value, 10) || 0, + })); + }; + + const isValidInterfaceData = (interfacesData: any): interfacesData is Array => + Array.isArray(interfacesData) && interfacesData.every((detail) => typeof detail === 'object'); + + const mapInterfacesData = (interfacesData: any[]): AstarteInterfaceDescriptor[] => + interfacesData.map((interfaceDetail: any) => ({ + name: interfaceDetail.interface_name, + major: interfaceDetail.version_major, + minor: interfaceDetail.version_minor, + })); + + const fetchInterfacesInfo = useCallback(async () => { + setLoadingInterfaceData(true); + + try { + const realmManagementVersion = await astarte.client.getRealmManagementVersion(); + const interfacesData = await astarte.client.getInterfaces(); + + const isRealmVersionValid = semver.satisfies(realmManagementVersion, '>=1.3.*', { + includePrerelease: true, + }); + const isInterfaceDataValid = isValidInterfaceData(interfacesData); + + if (isRealmVersionValid && isInterfaceDataValid) { + const fetchedInterfaces = mapInterfacesData(interfacesData); + setGreaterRealmManagementVersion(true); + setSelectedInterfaceData(fetchedInterfaces); + setDisableVersionInput(true); + + return fetchedInterfaces; + } else { + setGreaterRealmManagementVersion(false); + setDisableVersionInput(false); + } + } finally { + setLoadingInterfaceData(false); + } + return []; + }, [astarte.client]); + + useEffect(() => { + const loadOptions = async () => { + const interfaces = await fetchInterfacesInfo(); + if (interfaces) { + const interfaceOptions = interfaces.map((iface) => ({ + value: iface.name, + label: `${iface.name} (v${iface.major}.${iface.minor})`, + })); + setInterfaceOptions(interfaceOptions); + } + }; + loadOptions(); + }, [fetchInterfacesInfo]); + + const handleAddIntrospectionInterfaces = (interfaceDescriptor: AstarteInterfaceDescriptor) => { + onAddInterface(interfaceDescriptor); + setInterfaceDescriptor(initialState); + setSelectedInterfaceOption(''); + }; + + const selectedInterfaceIsDisabled = (label: string): boolean => { + return Array.from(interfaces.values()).some((descriptor: AstarteInterfaceDescriptor) => { + const fullName = `${descriptor.name} (v${descriptor.major}.${descriptor.minor})`; + return fullName == label; + }); + }; + + return ( + + + {greaterRealmManagementVersion ? ( + + handleNameChange((e.target.selectedIndex - 1).toString(), ChangeSource.SelectOptions) + } + className="form-control" + > + + {interfaceOptions.map((option, index) => ( + + ))} + + ) : ( + handleNameChange(e.target.value, ChangeSource.Input)} + /> + )} + + {interfaceDescriptor.name !== '' && canShowInterfaceMinorAndMajor && !loadingInterfaceData ? ( + <> + + + + + + + + + + + ) : ( + + )} + + ); +}; + +interface InstrospectionTableProps { + interfaces: Map; + onAddInterface: (interfaceDescriptor: AstarteInterfaceDescriptor) => void; + onRemoveInterface: (interfaceDescriptor: AstarteInterfaceDescriptor) => void; +} + +const InstrospectionTable = ({ + interfaces, + onAddInterface, + onRemoveInterface, +}: InstrospectionTableProps): React.ReactElement => ( + + + + + + + + + + + {Array.from(interfaces).map(([key, interfaceDescriptor]) => ( + onRemoveInterface(interfaceDescriptor)} + /> + ))} + + +
    Interface nameMajorMinor
    +); + +interface NamespaceModalProps { + onCancel: () => void; + onConfirm: (deviceId: string) => void; +} + +const NamespaceModal = ({ onCancel, onConfirm }: NamespaceModalProps) => { + const handleConfirm = useCallback( + (formData: { userNamespace: string; userString?: string }) => { + const newUUID = uuidv5(formData.userString || '', formData.userNamespace).replace(/-/g, ''); + const bytes = (newUUID.match(/.{2}/g) as RegExpMatchArray).map((b) => parseInt(b, 16)); + const deviceId = byteArrayToUrlSafeBase64(bytes); + onConfirm(deviceId); + }, + [onConfirm], + ); + + return ( + + errors.map((error) => { + if (error.property === '.userNamespace' && error.name === 'pattern') { + return { ...error, message: 'The namespace must be a valid UUID' }; + } + return error; + }) + } + /> + ); +}; + +export default (): React.ReactElement => { + const searchQuery = new URLSearchParams(useLocation().search); + const initialDeviceId = searchQuery.get('deviceId') || ''; + const [deviceId, setDeviceId] = useState(initialDeviceId); + const [deviceSecret, setDeviceSecret] = useState(''); + const [shouldSendIntrospection, setShouldSendIntrospection] = useState(false); + const [introspectionInterfaces, setIntrospectionInterfaces] = useState< + Map + >(new Map()); + const [isRegisteringDevice, setRegisteringDevice] = useState(false); + const [showNamespaceModal, setShowNamespaceModal] = useState(false); + const [showCredentialSecretModal, setShowCredentialSecretModal] = useState(false); + const [registrationAlerts, registrationAlertsController] = useAlerts(); + const astarte = useAstarte(); + const navigate = useNavigate(); + + const byteArray = urlSafeBase64ToByteArray(deviceId); + const isValidDeviceId = byteArray.length === 17 && byteArray[16] === 0; + + const generateRandomUUID = useCallback(() => { + const newUUID = uuidv4().replace(/-/g, ''); + const bytes = (newUUID.match(/.{2}/g) as RegExpMatchArray).map((b) => parseInt(b, 16)); + const newDeviceID = byteArrayToUrlSafeBase64(bytes); + setDeviceId(newDeviceID); + }, []); + + const registerDevice = (e: React.FormEvent) => { + e.preventDefault(); + const deviceIntrospection = Object.fromEntries(introspectionInterfaces); + const params = { + deviceId, + introspection: shouldSendIntrospection ? deviceIntrospection : undefined, + }; + setRegisteringDevice(true); + astarte.client + .registerDevice(params) + .then(({ credentialsSecret }) => { + setRegisteringDevice(false); + setDeviceSecret(credentialsSecret); + setShowCredentialSecretModal(true); + }) + .catch((err) => { + const deviceRegistrationLimitReached = + err?.response?.data?.errors?.error_name?.[0] === 'device_registration_limit_reached'; + const errorMessage = deviceRegistrationLimitReached + ? `The device registration limit was reached and there are too many registered devices already.` + : err.message; + setRegisteringDevice(false); + registrationAlertsController.showError(`Could not register the device. ${errorMessage}`); + }); + }; + + const addInterfaceToIntrospection = (interfaceDescriptor: AstarteInterfaceDescriptor) => { + const introspection = new Map(introspectionInterfaces); + introspection.set(interfaceDescriptor.name, interfaceDescriptor); + setIntrospectionInterfaces(introspection); + }; + + const removeIntrospectionInterface = (interfaceDescriptor: AstarteInterfaceDescriptor) => { + const introspection = new Map(introspectionInterfaces); + introspection.delete(interfaceDescriptor.name); + setIntrospectionInterfaces(introspection); + }; + + return ( + + +
    + + + + Device ID + ) => setDeviceId(e.target.value)} + autoComplete="off" + required + isValid={deviceId !== '' && isValidDeviceId} + isInvalid={deviceId !== '' && !isValidDeviceId} + /> + + Device ID must be a unique 128 bit URL-encoded base64 (without padding) string. + + + + + + + + + + + ) => + setShouldSendIntrospection(e.target.checked) + } + /> + + {shouldSendIntrospection && ( + + )} +
    + +
    +
    +
    + {showNamespaceModal && ( + setShowNamespaceModal(false)} + onConfirm={(newDeviceId: string) => { + setShowNamespaceModal(false); + setDeviceId(newDeviceId); + }} + /> + )} + {showCredentialSecretModal && ( + navigate('/devices')} + > + The device credential secret is +
    +            
    +              {deviceSecret}
    +            
    +            
    +          
    + + Please don't share the Credentials Secret, and ensure it is transferred securely to + your Device. +
    + Once the Device pairs for the first time, the Credentials Secret will be associated + permanently to the Device and it won't be changeable anymore. +
    +
    + )} +
    + ); +}; diff --git a/astarte-dashboard/src/Router.tsx b/astarte-dashboard/src/Router.tsx new file mode 100644 index 0000000000..7ca687b1d9 --- /dev/null +++ b/astarte-dashboard/src/Router.tsx @@ -0,0 +1,162 @@ +/* + This file is part of Astarte. + + Copyright 2020-2022 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React from 'react'; +import { Navigate, RouteObject, useLocation, useRoutes } from 'react-router-dom'; + +import LoginPage from './LoginPage'; +import HomePage from './HomePage'; +import GroupsPage from './GroupsPage'; +import GroupDevicesPage from './GroupDevicesPage'; +import NewGroupPage from './NewGroupPage'; +import TriggersPage from './TriggersPage'; +import NewTriggerPage from './NewTriggerPage'; +import TriggerPage from './TriggerPage'; +import InterfacesPage from './InterfacesPage'; +import InterfacePage from './InterfacePage'; +import NewInterfacePage from './NewInterfacePage'; +import DevicesPage from './DevicesPage'; +import RegisterDevicePage from './RegisterDevicePage'; +import FlowInstancesPage from './FlowInstancesPage'; +import FlowDetailsPage from './FlowDetailsPage'; +import FlowConfigurationPage from './FlowConfigurationPage'; +import PipelinesPage from './PipelinesPage'; +import PipelineSourcePage from './PipelineSourcePage'; +import NewPipelinePage from './NewPipelinePage'; +import BlocksPage from './BlocksPage'; +import BlockSourcePage from './BlockSourcePage'; +import NewBlockPage from './NewBlockPage'; +import RealmSettingsPage from './RealmSettingsPage'; +import DeviceStatusPage from './DeviceStatusPage'; +import DeviceInterfaceValues from './DeviceInterfaceValues'; +import { useConfig } from './ConfigManager'; +import { useAstarte } from './AstarteManager'; +import TriggerPoliciesPage from './TriggerDeliveryPoliciesPage'; +import NewPolicyPage from './NewTriggerDeliveryPolicyPage'; +import TriggerDeliveryPolicyPage from './TriggerDeliveryPolicyPage'; +import DeviceDataStreamValues from 'DeviceDataStreamValues'; + +function AttemptLogin(): React.ReactElement { + const { search, hash } = useLocation(); + const astarte = useAstarte(); + const searchParams = new URLSearchParams(search); + const hashParams = new URLSearchParams(hash.slice(1)); + + const realm = searchParams.get('realm'); + const token = hashParams.get('access_token'); + const authUrl = searchParams.get('authUrl'); + const redirectTo = searchParams.get('redirectTo'); + + const persistent = false; + + let succesfulLogin = false; + + if (realm && token) { + succesfulLogin = astarte.login({ realm, token, authUrl }, persistent); + } + + if (!succesfulLogin) { + return ; + } + + return redirectTo ? : ; +} + +function Logout(): React.ReactElement { + const astarte = useAstarte(); + astarte.logout(); + + return ; +} + +function Login(): React.ReactElement { + const { search } = useLocation(); + const astarte = useAstarte(); + const config = useConfig(); + + if (astarte.isAuthenticated) { + return ; + } + + const requestedLoginType = new URLSearchParams(search).get('type') || ''; + const loginType = ['oauth', 'token'].includes(requestedLoginType) + ? (requestedLoginType as 'oauth' | 'token') + : config.auth.defaultMethod; + + return ( + + ); +} + +const privateRoutes: RouteObject[] = [ + { path: '/', element: }, + { path: 'home', element: }, + { path: 'triggers', element: }, + { path: 'triggers/new', element: }, + { path: 'triggers/:triggerName/edit', element: }, + { path: 'trigger-delivery-policies', element: }, + { path: 'trigger-delivery-policies/new', element: }, + { path: 'trigger-delivery-policies/:policyName/edit', element: }, + { path: 'interfaces', element: }, + { path: 'interfaces/new', element: }, + { path: 'interfaces/:interfaceName/:interfaceMajor/edit', element: }, + { path: 'devices', element: }, + { path: 'devices/register', element: }, + { path: 'devices/:deviceId/edit', element: }, + { + path: 'devices/:deviceId/interfaces/:interfaceName/:interfaceMajor', + element: , + }, + { + path: 'devices/:deviceId/interfaces/:interfaceName/:interfaceMajor/datastream', + element: , + }, + { path: 'groups', element: }, + { path: 'groups/new', element: }, + { path: 'groups/:groupName/edit', element: }, + { path: 'flows', element: }, + { path: 'flows/new', element: }, + { path: 'flows/:flowName/edit', element: }, + { path: 'pipelines', element: }, + { path: 'pipelines/new', element: }, + { path: 'pipelines/:pipelineId/edit', element: }, + { path: 'blocks', element: }, + { path: 'blocks/new', element: }, + { path: 'blocks/:blockId/edit', element: }, + { path: 'settings', element: }, + { path: '*', element: }, +]; + +const publicRoutes: RouteObject[] = [ + { path: 'auth', element: }, + { path: 'logout', element: }, + { path: 'login', element: }, +]; + +export default (): React.ReactElement => { + const astarte = useAstarte(); + const routes = astarte.isAuthenticated + ? publicRoutes.concat(privateRoutes) + : publicRoutes.concat({ path: '*', element: }); + const router = useRoutes(routes); + return <>{router}; +}; diff --git a/astarte-dashboard/src/Sidebar.tsx b/astarte-dashboard/src/Sidebar.tsx new file mode 100644 index 0000000000..20091046ef --- /dev/null +++ b/astarte-dashboard/src/Sidebar.tsx @@ -0,0 +1,160 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useMemo } from 'react'; +import { Link, useLocation } from 'react-router-dom'; +import { Nav, NavItem, NavLink } from 'react-bootstrap'; + +import { useAstarte } from './AstarteManager'; +import { useConfig } from './ConfigManager'; +import Icon from './components/Icon'; +import useFetch from './hooks/useFetch'; +import useInterval from './hooks/useInterval'; + +const SidebarApiStatus = () => { + const config = useConfig(); + const astarte = useAstarte(); + const deviceRegistrationLimitFetcher = useFetch( + astarte.token?.can('realmManagement', 'GET', '/config/device_registration_limit') + ? astarte.client.getDeviceRegistrationLimit + : async () => null, + ); + const devicesStatsFetcher = useFetch( + astarte.token?.can('appEngine', 'GET', '/stats/devices') + ? astarte.client.getDevicesStats + : async () => null, + ); + + const healthFetcher = useFetch(() => { + const apiChecks = [ + astarte.client.getAppengineHealth(), + astarte.client.getRealmManagementHealth(), + astarte.client.getPairingHealth(), + ]; + if (config.features.flow) { + apiChecks.push(astarte.client.getFlowHealth()); + } + return Promise.all(apiChecks); + }); + + useInterval(deviceRegistrationLimitFetcher.refresh, 30000); + useInterval(devicesStatsFetcher.refresh, 30000); + useInterval(healthFetcher.refresh, 30000); + + const isApiHealthy = healthFetcher.status !== 'err'; + + if (!astarte.isAuthenticated) { + return null; + } + + return ( + +
    + Realm +
    +

    {astarte.realm}

    +
    + Connected devices +
    +

    + {devicesStatsFetcher.value != null + ? `${devicesStatsFetcher.value.connectedDevices} / ${devicesStatsFetcher.value.totalDevices}` + : '-'} +

    +
    + Registered devices +
    +

    + {devicesStatsFetcher.value != null + ? deviceRegistrationLimitFetcher.value != null + ? `${devicesStatsFetcher.value.totalDevices} / ${deviceRegistrationLimitFetcher.value}` + : devicesStatsFetcher.value.totalDevices + : '-'} +

    +
    + API Status +
    +

    + + {isApiHealthy ? 'Up and running' : 'Degraded'} +

    +
    + ); +}; + +interface SidebarAppInfoProps { + appVersion: string; +} + +const SidebarAppInfo = ({ appVersion }: SidebarAppInfoProps) => ( + +

    {`Astarte Dashboard v${appVersion}`}

    +
    +); + +const SidebarBrand = () => ( + + Astarte logo + +); + +interface SidebarItemProps { + icon: React.ComponentProps['icon']; + label: string; + link: string; +} + +const SidebarItem = ({ icon, label, link }: SidebarItemProps) => { + const location = useLocation(); + + const isSelected = useMemo(() => { + if (link === '/') { + return location.pathname === '/' || location.pathname === '/home'; + } + return location.pathname.startsWith(link); + }, [link, location.pathname]); + + return ( + + + {label} + + ); +}; + +const SidebarSeparator = () => ( + +
    +
    +); + +interface Props { + children: React.ReactNode; +} + +const Sidebar = ({ children }: Props): React.ReactElement => ( + +); + +Sidebar.ApiStatus = SidebarApiStatus; +Sidebar.AppInfo = SidebarAppInfo; +Sidebar.Brand = SidebarBrand; +Sidebar.Item = SidebarItem; +Sidebar.Separator = SidebarSeparator; + +export default Sidebar; diff --git a/astarte-dashboard/src/TriggerDeliveryPoliciesPage.tsx b/astarte-dashboard/src/TriggerDeliveryPoliciesPage.tsx new file mode 100644 index 0000000000..a3ea09c1af --- /dev/null +++ b/astarte-dashboard/src/TriggerDeliveryPoliciesPage.tsx @@ -0,0 +1,140 @@ +/* + This file is part of Astarte. + + Copyright 2023 SECO Mind Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React from 'react'; +import { useNavigate } from 'react-router-dom'; +import { Button, Col, Container, ListGroup, Row, Spinner } from 'react-bootstrap'; + +import { useAstarte } from './AstarteManager'; +import Empty from './components/Empty'; +import Icon from './components/Icon'; +import WaitForData from './components/WaitForData'; +import useFetch from './hooks/useFetch'; +import useInterval from './hooks/useInterval'; + +interface TriggerPolicyRowProps { + name: string; + onClick: () => void; +} + +const TriggerPolicyRow = ({ name, onClick }: TriggerPolicyRowProps): React.ReactElement => { + const astarte = useAstarte(); + return ( + + {astarte.token?.can('realmManagement', 'GET', `/policies/${name}`) ? ( + + ) : ( + <> + + {name} + + )} + + ); +}; + +const LoadingRow = (): React.ReactElement => ( + + + + + +); + +interface ErrorRowProps { + onRetry: () => void; + errorMessage?: string; +} + +const ErrorRow = ({ onRetry, errorMessage }: ErrorRowProps): React.ReactElement => ( + + + +); + +export default (): React.ReactElement => { + const astarte = useAstarte(); + const navigate = useNavigate(); + const policiesFetcher = useFetch(astarte.client.getTriggerDeliveryPolicyNames); + + useInterval(policiesFetcher.refresh, 30000); + + return ( + + + +

    Trigger Delivery Policies

    + +
    + + + + + + + } + errorFallback={ + + } + > + {(policies) => ( + <> + {policies.map((policy) => ( + { + navigate(`/trigger-delivery-policies/${policy}/edit`); + }} + /> + ))} + + )} + + + + +
    + ); +}; diff --git a/astarte-dashboard/src/TriggerDeliveryPolicyPage.tsx b/astarte-dashboard/src/TriggerDeliveryPolicyPage.tsx new file mode 100644 index 0000000000..2861f686b0 --- /dev/null +++ b/astarte-dashboard/src/TriggerDeliveryPolicyPage.tsx @@ -0,0 +1,207 @@ +/* eslint-disable camelcase */ +/* + This file is part of Astarte. + + Copyright 2023 SECO Mind Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useCallback, useState } from 'react'; +import { useNavigate, useParams } from 'react-router-dom'; +import { Button, Container, Form, Spinner, Stack } from 'react-bootstrap'; + +import { AstarteTriggerDeliveryPolicyDTO } from 'astarte-client/types/dto'; +import { AlertsBanner, useAlerts } from './AlertManager'; +import { useAstarte } from './AstarteManager'; +import Empty from './components/Empty'; +import TriggerDeliveryPolicyEditor from './components/TriggerDeliveryPolicyEditor'; +import ConfirmModal from './components/modals/Confirm'; +import WaitForData from './components/WaitForData'; +import useFetch from './hooks/useFetch'; +import BackButton from './ui/BackButton'; + +const parsedErrorMessage = (status: number): string => { + switch (status) { + case 401: + return 'Unauthorized.'; + case 403: + return 'Forbidden.'; + case 409: + return 'Cannot delete policy as it is being currently used by triggers.'; + default: + return 'Not found'; + } +}; + +interface DeleteModalProps { + policyName: string; + onCancel: () => void; + onConfirm: () => void; + isDeletingPolicy: boolean; +} + +const DeleteModal = ({ policyName, onCancel, onConfirm, isDeletingPolicy }: DeleteModalProps) => { + const [confirmString, setConfirmString] = useState(''); + + const canDelete = confirmString === policyName; + + return ( + +

    + You are going to delete  + {policyName}. This might cause data loss, deleted trigger delivery policy cannot be + restored. Are you sure? +

    +

    + Please type {policyName} to proceed. +

    + + ) => setConfirmString(e.target.value)} + /> + +
    + ); +}; + +export default (): React.ReactElement => { + const [isDeletingPolicy, setIsDeletingPolicy] = useState(false); + const [isSourceVisible, setIsSourceVisible] = useState(true); + const [showDeleteModal, setShowDeleteModal] = useState(false); + const [deletionAlerts, deletionAlertsController] = useAlerts(); + const astarte = useAstarte(); + const navigate = useNavigate(); + const { policyName = '' } = useParams(); + + const policyFetcher = useFetch(() => astarte.client.getTriggerDeliveryPolicy(policyName)); + + const checkData = (data: AstarteTriggerDeliveryPolicyDTO | null) => { + const newData: AstarteTriggerDeliveryPolicyDTO | null = data; + if (data?.event_ttl === null) { + delete newData?.event_ttl; + } + if (data?.retry_times === null || data?.retry_times === 0) { + delete newData?.retry_times; + } + return newData; + }; + + const handleToggleSourceVisibility = useCallback(() => { + setIsSourceVisible((isVisible) => !isVisible); + }, []); + + const showConfirmDeleteModal = useCallback(() => { + setShowDeleteModal(true); + }, []); + + const hideConfirmDeleteModal = useCallback(() => { + setShowDeleteModal(false); + }, []); + + const handleConfirmDeletePolicy = useCallback(() => { + setIsDeletingPolicy(true); + astarte.client + .deleteTriggerDeliveryPolicy(policyName) + .then(() => { + navigate('/trigger-delivery-policies'); + }) + .catch((err) => { + deletionAlertsController.showError( + `Could not delete policy: ${parsedErrorMessage(err.response.status)}`, + ); + setIsDeletingPolicy(false); + hideConfirmDeleteModal(); + }); + }, [astarte.client, policyName, navigate, deletionAlertsController, hideConfirmDeleteModal]); + + return ( + +

    + + Trigger Delivery Policy Editor +

    + + + + +
    + } + errorFallback={ + + } + > + {(policy) => ( + <> + +
    + + +
    + + )} + + + {showDeleteModal && ( + + )} + + ); +}; diff --git a/astarte-dashboard/src/TriggerPage.tsx b/astarte-dashboard/src/TriggerPage.tsx new file mode 100644 index 0000000000..3c5e9a855f --- /dev/null +++ b/astarte-dashboard/src/TriggerPage.tsx @@ -0,0 +1,193 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useCallback, useState } from 'react'; +import { useNavigate, useParams } from 'react-router-dom'; +import { Button, Container, Form, Spinner, Stack } from 'react-bootstrap'; + +import { AlertsBanner, useAlerts } from './AlertManager'; +import { useAstarte } from './AstarteManager'; +import Empty from './components/Empty'; +import TriggerEditor from './components/TriggerEditor'; +import ConfirmModal from './components/modals/Confirm'; +import WaitForData from './components/WaitForData'; +import useFetch from './hooks/useFetch'; +import BackButton from './ui/BackButton'; + +interface DeleteModalProps { + triggerName: string; + onCancel: () => void; + onConfirm: () => void; + isDeletingTrigger: boolean; +} + +const DeleteModal = ({ triggerName, onCancel, onConfirm, isDeletingTrigger }: DeleteModalProps) => { + const [confirmString, setConfirmString] = useState(''); + + const canDelete = confirmString === triggerName; + + return ( + +

    + You are going to delete  + {triggerName}. This might cause data loss, deleted triggers cannot be restored. Are + you sure? +

    +

    + Please type {triggerName} to proceed. +

    + + ) => setConfirmString(e.target.value)} + /> + +
    + ); +}; + +export default (): React.ReactElement => { + const [isDeletingTrigger, setIsDeletingTrigger] = useState(false); + const [isSourceVisible, setIsSourceVisible] = useState(true); + const [showDeleteModal, setShowDeleteModal] = useState(false); + const [deletionAlerts, deletionAlertsController] = useAlerts(); + const astarte = useAstarte(); + const navigate = useNavigate(); + const { triggerName = '' } = useParams(); + const { triggerDeliveryPoliciesSupported } = astarte; + + const triggerFetcher = useFetch(() => astarte.client.getTrigger(triggerName)); + + const fetchPoliciesName = triggerDeliveryPoliciesSupported + ? astarte.client.getPolicyNames + : undefined; + + const handleToggleSourceVisibility = useCallback(() => { + setIsSourceVisible((isVisible) => !isVisible); + }, []); + + const showConfirmDeleteModal = useCallback(() => { + setShowDeleteModal(true); + }, []); + + const hideConfirmDeleteModal = useCallback(() => { + setShowDeleteModal(false); + }, []); + + const handleConfirmDeleteTrigger = useCallback(() => { + setIsDeletingTrigger(true); + astarte.client + .deleteTrigger(triggerName) + .then(() => { + navigate('/triggers'); + }) + .catch((err) => { + deletionAlertsController.showError(`Could not delete trigger: ${err.message}`); + setIsDeletingTrigger(false); + hideConfirmDeleteModal(); + }); + }, [astarte.client, triggerName, navigate, deletionAlertsController, hideConfirmDeleteModal]); + + const handleTriggerEditorError = useCallback( + (message: string) => { + deletionAlertsController.showError(message); + }, + [deletionAlertsController], + ); + + return ( + +

    + + Trigger Editor +

    + + + + +
    + } + errorFallback={ + + } + > + {(trigger) => ( + <> + +
    + + +
    + + )} + + + {showDeleteModal && ( + + )} + + ); +}; diff --git a/astarte-dashboard/src/TriggersPage.tsx b/astarte-dashboard/src/TriggersPage.tsx new file mode 100644 index 0000000000..4cfb46b80b --- /dev/null +++ b/astarte-dashboard/src/TriggersPage.tsx @@ -0,0 +1,140 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React from 'react'; +import { useNavigate } from 'react-router-dom'; +import { Button, Col, Container, ListGroup, Row, Spinner } from 'react-bootstrap'; + +import { useAstarte } from './AstarteManager'; +import Empty from './components/Empty'; +import Icon from './components/Icon'; +import WaitForData from './components/WaitForData'; +import useFetch from './hooks/useFetch'; +import useInterval from './hooks/useInterval'; + +interface TriggerRowProps { + name: string; + onClick: () => void; +} + +const TriggerRow = ({ name, onClick }: TriggerRowProps): React.ReactElement => { + const astarte = useAstarte(); + return ( + + {astarte.token?.can('realmManagement', 'GET', `/triggers/${name}`) ? ( + + ) : ( + <> + + {name} + + )} + + ); +}; + +const LoadingRow = (): React.ReactElement => ( + + + + + +); + +interface ErrorRowProps { + onRetry: () => void; + errorMessage?: string; +} + +const ErrorRow = ({ onRetry, errorMessage }: ErrorRowProps): React.ReactElement => ( + + + +); + +export default (): React.ReactElement => { + const astarte = useAstarte(); + const navigate = useNavigate(); + const triggersFetcher = useFetch(astarte.client.getTriggerNames); + + useInterval(triggersFetcher.refresh, 30000); + + return ( + + + +

    Triggers

    + +
    + + + + + + + } + errorFallback={ + + } + > + {(triggers) => ( + <> + {triggers.map((trigger) => ( + { + navigate(`/triggers/${encodeURIComponent(trigger)}/edit`); + }} + /> + ))} + + )} + + + + +
    + ); +}; diff --git a/astarte-dashboard/src/astarte-charts/dataKinds/Aggregated.ts b/astarte-dashboard/src/astarte-charts/dataKinds/Aggregated.ts new file mode 100644 index 0000000000..2bff476a7b --- /dev/null +++ b/astarte-dashboard/src/astarte-charts/dataKinds/Aggregated.ts @@ -0,0 +1,33 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import type { AstarteDataTuple } from 'astarte-client'; + +export class Aggregated { + readonly data: { + [property: string]: AstarteDataTuple; + }; + + constructor(params: { + data: { + [property: string]: AstarteDataTuple; + }; + }) { + this.data = params.data; + } +} diff --git a/astarte-dashboard/src/astarte-charts/dataKinds/ConnectedDevices.ts b/astarte-dashboard/src/astarte-charts/dataKinds/ConnectedDevices.ts new file mode 100644 index 0000000000..d2d3c7e0c4 --- /dev/null +++ b/astarte-dashboard/src/astarte-charts/dataKinds/ConnectedDevices.ts @@ -0,0 +1,35 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import { Aggregated } from './Aggregated'; + +export class ConnectedDevices implements Aggregated { + readonly data: { + connected: { type: 'integer'; value: number }; + disconnected: { type: 'integer'; value: number }; + }; + + constructor(params: { + data: { + connected: { type: 'integer'; value: number }; + disconnected: { type: 'integer'; value: number }; + }; + }) { + this.data = params.data; + } +} diff --git a/astarte-dashboard/src/astarte-charts/dataKinds/DeviceStats.ts b/astarte-dashboard/src/astarte-charts/dataKinds/DeviceStats.ts new file mode 100644 index 0000000000..d59628c264 --- /dev/null +++ b/astarte-dashboard/src/astarte-charts/dataKinds/DeviceStats.ts @@ -0,0 +1,33 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import { Aggregated } from './Aggregated'; + +export class DeviceStats implements Aggregated { + readonly data: { + [property: string]: { type: 'integer'; value: number }; + }; + + constructor(params: { + data: { + [property: string]: { type: 'integer'; value: number }; + }; + }) { + this.data = params.data; + } +} diff --git a/astarte-dashboard/src/astarte-charts/dataKinds/TimestampedAggregated.ts b/astarte-dashboard/src/astarte-charts/dataKinds/TimestampedAggregated.ts new file mode 100644 index 0000000000..ac0ae10a60 --- /dev/null +++ b/astarte-dashboard/src/astarte-charts/dataKinds/TimestampedAggregated.ts @@ -0,0 +1,37 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import type { AstarteDataTuple } from 'astarte-client'; + +export class TimestampedAggregated { + readonly data: { + [property: string]: AstarteDataTuple; + }; + + readonly timestamp: string; + + constructor(params: { + data: { + [property: string]: AstarteDataTuple; + }; + timestamp: string; + }) { + this.data = params.data; + this.timestamp = params.timestamp; + } +} diff --git a/astarte-dashboard/src/astarte-charts/dataKinds/TimestampedIndividual.ts b/astarte-dashboard/src/astarte-charts/dataKinds/TimestampedIndividual.ts new file mode 100644 index 0000000000..808cc086cc --- /dev/null +++ b/astarte-dashboard/src/astarte-charts/dataKinds/TimestampedIndividual.ts @@ -0,0 +1,30 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import type { AstarteDataTuple } from 'astarte-client'; + +export class TimestampedIndividual { + readonly data: AstarteDataTuple; + + readonly timestamp: string; + + constructor(params: { data: AstarteDataTuple; timestamp: string }) { + this.data = params.data; + this.timestamp = params.timestamp; + } +} diff --git a/astarte-dashboard/src/astarte-charts/dataKinds/index.ts b/astarte-dashboard/src/astarte-charts/dataKinds/index.ts new file mode 100644 index 0000000000..2fd99845c3 --- /dev/null +++ b/astarte-dashboard/src/astarte-charts/dataKinds/index.ts @@ -0,0 +1,41 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import { Aggregated } from './Aggregated'; +import { TimestampedAggregated } from './TimestampedAggregated'; +import { TimestampedIndividual } from './TimestampedIndividual'; +import { ConnectedDevices } from './ConnectedDevices'; +import { DeviceStats } from './DeviceStats'; + +type ChartDataKind = + | Aggregated + | TimestampedAggregated + | TimestampedIndividual + | ConnectedDevices + | DeviceStats; + +type ChartDataWrapper = 'Object' | 'Array'; + +type ChartData< + Wrapper extends ChartDataWrapper, + Kind extends ChartDataKind, +> = Wrapper extends 'Object' ? Kind : Wrapper extends 'Array' ? Kind[] : never; + +export { Aggregated, TimestampedAggregated, TimestampedIndividual, ConnectedDevices, DeviceStats }; + +export type { ChartData, ChartDataKind, ChartDataWrapper }; diff --git a/astarte-dashboard/src/astarte-charts/index.ts b/astarte-dashboard/src/astarte-charts/index.ts new file mode 100644 index 0000000000..a394ec676f --- /dev/null +++ b/astarte-dashboard/src/astarte-charts/index.ts @@ -0,0 +1,131 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import AstarteClient from 'astarte-client'; + +import { + generateConnectedDevicesProvider, + generateDeviceDatastreamIndividualProvider, + generateDeviceDatastreamObjectProvider, + generateDevicePropertyProvider, + generateDeviceStatsProvider, + ChartProvider, +} from './providers'; + +import type { + Aggregated, + TimestampedAggregated, + TimestampedIndividual, + ConnectedDevices, + DeviceStats, +} from './dataKinds'; + +type AstarteConfig = + | AstarteClient + | { + appEngineApiUrl: string; + realmManagementApiUrl: string; + token: string; + realm: string; + }; + +const getAstarteClient = (astarteConfig: AstarteConfig): AstarteClient => { + if (astarteConfig instanceof AstarteClient) { + return astarteConfig; + } + const astarteClient = new AstarteClient({ + appEngineApiUrl: astarteConfig.appEngineApiUrl, + realmManagementApiUrl: astarteConfig.realmManagementApiUrl, + pairingApiUrl: '', + flowApiUrl: '', + }); + astarteClient.setCredentials({ + token: astarteConfig.token, + realm: astarteConfig.realm, + }); + return astarteClient; +}; + +const getConnectedDevices = ( + astarteConfig: AstarteConfig, + params: { name?: string } = {}, +): ChartProvider<'Object', ConnectedDevices> => + generateConnectedDevicesProvider(getAstarteClient(astarteConfig), params); + +const getDeviceDatastreamIndividual = ( + astarteConfig: AstarteConfig, + params: { + name?: string; + deviceId: string; + interfaceName: string; + endpoint: string; + }, +): ChartProvider<'Array', TimestampedIndividual> => + generateDeviceDatastreamIndividualProvider(getAstarteClient(astarteConfig), params); + +const getDeviceDatastreamObject = ( + astarteConfig: AstarteConfig, + params: { + name?: string; + deviceId: string; + interfaceName: string; + endpoint: string; + }, +): ChartProvider<'Array', TimestampedAggregated> => + generateDeviceDatastreamObjectProvider(getAstarteClient(astarteConfig), params); + +const getDeviceProperty = ( + astarteConfig: AstarteConfig, + params: { + name?: string; + deviceId: string; + interfaceName: string; + endpoint: string; + }, +): ChartProvider<'Object', Aggregated> => + generateDevicePropertyProvider(getAstarteClient(astarteConfig), params); + +const getDeviceStats = ( + astarteConfig: AstarteConfig, + params: { + name?: string; + deviceId: string; + stats?: 'exchangedBytes' | 'exchangedMessages'; + }, +): ChartProvider<'Object', DeviceStats> => + generateDeviceStatsProvider(getAstarteClient(astarteConfig), params); + +export { + Aggregated, + TimestampedAggregated, + TimestampedIndividual, + ConnectedDevices, + DeviceStats, +} from './dataKinds'; + +export type { ChartData, ChartDataKind, ChartDataWrapper } from './dataKinds'; + +export type { ChartProvider } from './providers'; + +export { + getConnectedDevices, + getDeviceDatastreamIndividual, + getDeviceDatastreamObject, + getDeviceProperty, + getDeviceStats, +}; diff --git a/astarte-dashboard/src/astarte-charts/providers/connectedDevices.ts b/astarte-dashboard/src/astarte-charts/providers/connectedDevices.ts new file mode 100644 index 0000000000..d64baebf4f --- /dev/null +++ b/astarte-dashboard/src/astarte-charts/providers/connectedDevices.ts @@ -0,0 +1,53 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import type AstarteClient from 'astarte-client'; + +import { ChartProvider } from './provider'; +import { ConnectedDevices } from '../dataKinds'; + +interface ProviderParams { + name?: string; +} + +const generateConnectedDevicesProvider = ( + client: AstarteClient, + params: ProviderParams = {}, +): ChartProvider<'Object', ConnectedDevices> => + new ChartProvider({ + name: params.name || 'Connected devices', + dataWrapper: 'Object', + dataKind: ConnectedDevices, + async getData(): Promise { + const devicesStats = await client.getDevicesStats(); + return { + data: { + connected: { + value: Number(devicesStats.connectedDevices), + type: 'integer', + }, + disconnected: { + value: Number(devicesStats.totalDevices - devicesStats.connectedDevices), + type: 'integer', + }, + }, + }; + }, + }); + +export { generateConnectedDevicesProvider }; diff --git a/astarte-dashboard/src/astarte-charts/providers/deviceDatastreamIndividual.ts b/astarte-dashboard/src/astarte-charts/providers/deviceDatastreamIndividual.ts new file mode 100644 index 0000000000..d41fe53502 --- /dev/null +++ b/astarte-dashboard/src/astarte-charts/providers/deviceDatastreamIndividual.ts @@ -0,0 +1,62 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import AstarteClient, { AstarteDataTuple } from 'astarte-client'; +import type { AstarteDatastreamIndividualData } from 'astarte-client'; + +import { ChartProvider } from './provider'; +import { TimestampedIndividual } from '../dataKinds'; + +interface ProviderParams { + name?: string; + deviceId: string; + interfaceName: string; + endpoint: string; +} + +const generateDeviceDatastreamIndividualProvider = ( + client: AstarteClient, + params: ProviderParams, +): ChartProvider<'Array', TimestampedIndividual> => + new ChartProvider({ + name: params.name || params.deviceId, + dataWrapper: 'Array', + dataKind: TimestampedIndividual, + async getData(): Promise { + const dataTree = await client.getDeviceDataTree({ + deviceId: params.deviceId, + interfaceName: params.interfaceName, + }); + if (dataTree.dataKind !== 'datastream_individual') { + return []; + } + const deviceValues = dataTree.toData() as AstarteDatastreamIndividualData[]; + const filteredDeviceValues = deviceValues.filter( + (deviceValue) => deviceValue.endpoint === params.endpoint, + ); + return filteredDeviceValues.map((deviceValue) => ({ + data: { + value: deviceValue.value, + type: deviceValue.type, + } as AstarteDataTuple, + timestamp: deviceValue.timestamp, + })); + }, + }); + +export { generateDeviceDatastreamIndividualProvider }; diff --git a/astarte-dashboard/src/astarte-charts/providers/deviceDatastreamObject.ts b/astarte-dashboard/src/astarte-charts/providers/deviceDatastreamObject.ts new file mode 100644 index 0000000000..62044334fc --- /dev/null +++ b/astarte-dashboard/src/astarte-charts/providers/deviceDatastreamObject.ts @@ -0,0 +1,59 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import AstarteClient from 'astarte-client'; +import type { AstarteDatastreamObjectData } from 'astarte-client'; + +import { ChartProvider } from './provider'; +import { TimestampedAggregated } from '../dataKinds'; + +interface ProviderParams { + name?: string; + deviceId: string; + interfaceName: string; + endpoint: string; +} + +const generateDeviceDatastreamObjectProvider = ( + client: AstarteClient, + params: ProviderParams, +): ChartProvider<'Array', TimestampedAggregated> => + new ChartProvider({ + name: params.name || params.deviceId, + dataWrapper: 'Array', + dataKind: TimestampedAggregated, + async getData(): Promise { + const dataTree = await client.getDeviceDataTree({ + deviceId: params.deviceId, + interfaceName: params.interfaceName, + }); + if (dataTree.dataKind !== 'datastream_object') { + return []; + } + const deviceValues = dataTree.toData() as AstarteDatastreamObjectData[]; + const filteredDeviceValues = deviceValues.filter( + (deviceValue) => deviceValue.endpoint === params.endpoint, + ); + return filteredDeviceValues.map((deviceValue) => ({ + data: deviceValue.value, + timestamp: deviceValue.timestamp, + })); + }, + }); + +export { generateDeviceDatastreamObjectProvider }; diff --git a/astarte-dashboard/src/astarte-charts/providers/deviceProperty.ts b/astarte-dashboard/src/astarte-charts/providers/deviceProperty.ts new file mode 100644 index 0000000000..59b56dd3d4 --- /dev/null +++ b/astarte-dashboard/src/astarte-charts/providers/deviceProperty.ts @@ -0,0 +1,69 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import AstarteClient from 'astarte-client'; +import type { AstartePropertyData, AstarteDataTuple } from 'astarte-client'; + +import { ChartProvider } from './provider'; +import { Aggregated } from '../dataKinds'; + +interface ProviderParams { + name?: string; + deviceId: string; + interfaceName: string; + endpoint: string; +} + +const generateDevicePropertyProvider = ( + client: AstarteClient, + params: ProviderParams, +): ChartProvider<'Object', Aggregated> => + new ChartProvider({ + name: params.name || params.deviceId, + dataWrapper: 'Object', + dataKind: Aggregated, + async getData(): Promise { + const dataTree = await client.getDeviceDataTree({ + deviceId: params.deviceId, + interfaceName: params.interfaceName, + }); + if (dataTree.dataKind !== 'properties') { + return { + data: {}, + }; + } + const deviceValues = dataTree.toLinearizedData() as AstartePropertyData[]; + const property = deviceValues.find((deviceValue) => deviceValue.endpoint === params.endpoint); + if (!property) { + return { + data: {}, + }; + } + const endpointLastPart = property.endpoint.split('/').pop() || ''; + return { + data: { + [endpointLastPart]: { + value: property.value, + type: property.type, + } as AstarteDataTuple, + }, + }; + }, + }); + +export { generateDevicePropertyProvider }; diff --git a/astarte-dashboard/src/astarte-charts/providers/deviceStats.ts b/astarte-dashboard/src/astarte-charts/providers/deviceStats.ts new file mode 100644 index 0000000000..acecc1f471 --- /dev/null +++ b/astarte-dashboard/src/astarte-charts/providers/deviceStats.ts @@ -0,0 +1,73 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import type AstarteClient from 'astarte-client'; +import _ from 'lodash'; + +import { ChartProvider } from './provider'; +import { DeviceStats } from '../dataKinds'; + +interface ProviderParams { + name?: string; + deviceId: string; + stats?: 'exchangedBytes' | 'exchangedMessages'; +} + +const generateDeviceStatsProvider = ( + client: AstarteClient, + params: ProviderParams, +): ChartProvider<'Object', DeviceStats> => + new ChartProvider({ + name: params.name || 'Device stats', + dataWrapper: 'Object', + dataKind: DeviceStats, + async getData(): Promise { + const device = await client.getDeviceInfo(params.deviceId); + const currentInterfaces = Array.from(device.introspection.values()); + const interfaces = [...currentInterfaces, ...device.previousInterfaces]; + const totalBytes = device.totalReceivedBytes; + const totalMessages = device.totalReceivedMessages; + const interfacesBytes = _.sumBy(interfaces, 'exchangedBytes'); + const interfacesMessages = _.sumBy(interfaces, 'exchangedMessages'); + const otherBytes = totalBytes - interfacesBytes; + const otherMessages = totalMessages - interfacesMessages; + return { + data: interfaces.reduce( + (acc, iface) => ({ + ...acc, + [`${iface.name} v${iface.major}.${iface.minor}`]: { + type: 'integer', + value: Number( + (params.stats === 'exchangedMessages' + ? iface.exchangedMessages + : iface.exchangedBytes) || 0, + ), + }, + }), + { + Other: { + type: 'integer', + value: Number(params.stats === 'exchangedMessages' ? otherMessages : otherBytes), + }, + }, + ), + }; + }, + }); + +export { generateDeviceStatsProvider }; diff --git a/astarte-dashboard/src/astarte-charts/providers/index.ts b/astarte-dashboard/src/astarte-charts/providers/index.ts new file mode 100644 index 0000000000..b8958a9638 --- /dev/null +++ b/astarte-dashboard/src/astarte-charts/providers/index.ts @@ -0,0 +1,24 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +export { generateConnectedDevicesProvider } from './connectedDevices'; +export { generateDeviceDatastreamIndividualProvider } from './deviceDatastreamIndividual'; +export { generateDeviceDatastreamObjectProvider } from './deviceDatastreamObject'; +export { generateDevicePropertyProvider } from './deviceProperty'; +export { generateDeviceStatsProvider } from './deviceStats'; +export { ChartProvider } from './provider'; diff --git a/astarte-dashboard/src/astarte-charts/providers/provider.ts b/astarte-dashboard/src/astarte-charts/providers/provider.ts new file mode 100644 index 0000000000..b7b05f4cca --- /dev/null +++ b/astarte-dashboard/src/astarte-charts/providers/provider.ts @@ -0,0 +1,64 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import type { ChartData, ChartDataKind, ChartDataWrapper } from '../dataKinds'; + +interface DataKindConstructor { + new (data: Kind): Kind; +} + +class ChartProvider { + readonly name: string; + + readonly dataWrapper: Wrapper; + + readonly dataKind: DataKindConstructor; + + private readonly $getData: () => Promise | null>; + + constructor(params: { + name: string; + dataWrapper: Wrapper; + dataKind: DataKindConstructor; + getData: () => Promise | null>; + }) { + this.name = params.name; + this.dataWrapper = params.dataWrapper; + this.dataKind = params.dataKind; + this.$getData = params.getData; + } + + async getData(): Promise | null> { + const data = await this.$getData(); + if (data == null) { + return null; + } + const DataKindCtor = this.dataKind; + switch (this.dataWrapper) { + case 'Array': + // @ts-expect-error cannot infer type + return data.map((value) => new DataKindCtor(value)); + case 'Object': + default: + // @ts-expect-error cannot infer type + return new DataKindCtor(data); + } + } +} + +export { ChartProvider }; diff --git a/astarte-dashboard/src/astarte-charts/react/ConnectedDevices/index.tsx b/astarte-dashboard/src/astarte-charts/react/ConnectedDevices/index.tsx new file mode 100644 index 0000000000..33093f8c0c --- /dev/null +++ b/astarte-dashboard/src/astarte-charts/react/ConnectedDevices/index.tsx @@ -0,0 +1,85 @@ +/* + This file is part of Astarte. + + Copyright 2021-2024 SECO Mind Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useMemo } from 'react'; +import 'chart.js/auto'; +import { Chart } from 'react-chartjs-2'; +import { ChartProvider, ConnectedDevices } from 'astarte-charts'; + +import { useChartProviders } from '../hooks'; + +interface Props { + provider: ChartProvider<'Object', ConnectedDevices>; + height?: number; + width?: number; + showLegend?: boolean; + legendPosition?: 'top' | 'left' | 'bottom' | 'right'; + legendAlign?: 'start' | 'center' | 'end'; + refreshInterval?: number; +} + +export const ConnectedDevicesChart = ({ + provider, + height, + width, + showLegend = true, + legendPosition = 'right', + legendAlign = 'start', + refreshInterval, +}: Props): React.ReactElement => { + const providers = useMemo(() => [provider], [provider]); + + const dataFetcher = useChartProviders({ providers, refreshInterval }); + + const chartData = useMemo(() => { + const noChartData = { labels: [], datasets: [] }; + if (dataFetcher.data == null) { + return noChartData; + } + const providerData = dataFetcher.data[0]; + if (providerData == null) { + return noChartData; + } + const { + data: { connected, disconnected }, + } = providerData; + return { + labels: ['Disconnected', 'Connected'], + datasets: [ + { + data: [disconnected.value, connected.value], + backgroundColor: ['#dc3545', '#33a344'], + }, + ], + }; + }, [dataFetcher.data]); + + const chartOptions = useMemo( + () => ({ + responsive: true, + legend: { + display: showLegend, + position: legendPosition, + align: legendAlign, + }, + }), + [showLegend, legendPosition, legendAlign], + ); + + return ; +}; diff --git a/astarte-dashboard/src/astarte-charts/react/PieChart/index.tsx b/astarte-dashboard/src/astarte-charts/react/PieChart/index.tsx new file mode 100644 index 0000000000..a4393b7718 --- /dev/null +++ b/astarte-dashboard/src/astarte-charts/react/PieChart/index.tsx @@ -0,0 +1,91 @@ +/* + This file is part of Astarte. + + Copyright 2021-2024 SECO Mind Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useMemo } from 'react'; +import 'chart.js/auto'; +import { Chart } from 'react-chartjs-2'; +import Color from 'color'; +import { ChartProvider, Aggregated } from 'astarte-charts'; + +import { useChartProviders } from '../hooks'; + +interface Props { + providers: [ChartProvider<'Object', Kind>]; + height?: number; + width?: number; + showLegend?: boolean; + legendPosition?: 'top' | 'left' | 'bottom' | 'right'; + legendAlign?: 'start' | 'center' | 'end'; + refreshInterval?: number; +} + +export const PieChart = ({ + providers, + height, + width, + showLegend = true, + legendPosition = 'top', + legendAlign = 'start', + refreshInterval, +}: Props): React.ReactElement => { + const dataFetcher = useChartProviders({ providers, refreshInterval }); + + const chartData = useMemo(() => { + const noChartData = { labels: [], datasets: [] }; + if (dataFetcher.data == null) { + return noChartData; + } + const providerData = dataFetcher.data[0]; + if (providerData == null) { + return noChartData; + } + const { data } = providerData; + const filteredEntries = Object.entries(data).filter(([, value]) => Number(value.value) !== 0); + const labels = filteredEntries.map(([label]) => label); + const series = filteredEntries.map(([, value]) => Number(value.value)); + const colors = labels.map((label, index) => + Color.hsl((index * 360) / labels.length, 70, 70) + .rgb() + .string(), + ); + return { + labels, + datasets: [ + { + data: series, + backgroundColor: colors, + }, + ], + }; + }, [dataFetcher.data]); + + const chartOptions = useMemo( + () => ({ + responsive: true, + maintainAspectRatio: false, + legend: { + display: showLegend, + position: legendPosition, + align: legendAlign, + }, + }), + [showLegend, legendPosition, legendAlign], + ); + + return ; +}; diff --git a/astarte-dashboard/src/astarte-charts/react/TimeseriesChart/index.tsx b/astarte-dashboard/src/astarte-charts/react/TimeseriesChart/index.tsx new file mode 100644 index 0000000000..d374d9b125 --- /dev/null +++ b/astarte-dashboard/src/astarte-charts/react/TimeseriesChart/index.tsx @@ -0,0 +1,143 @@ +/* + This file is part of Astarte. + + Copyright 2021-2024 SECO Mind Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useMemo } from 'react'; +import 'chart.js/auto'; +import { Chart, ChartProps } from 'react-chartjs-2'; +import Color from 'color'; + +import { ChartProvider, TimestampedAggregated, TimestampedIndividual } from 'astarte-charts'; + +import { useChartProviders } from '../hooks'; + +type AggregatedProvider = ChartProvider<'Array', TimestampedAggregated>; +type IndividualProvider = ChartProvider<'Array', TimestampedIndividual>; + +interface Props { + providers: Array; + height?: number; + width?: number; + showLegend?: boolean; + scaleDistribution?: 'linear' | 'series'; + refreshInterval?: number; +} + +export const TimeseriesChart = ({ + providers, + height, + width, + showLegend = true, + scaleDistribution = 'linear', + refreshInterval, +}: Props): React.ReactElement => { + const individualTimeseriesProviders = useMemo( + () => + providers.filter( + (provider) => provider.dataKind === TimestampedIndividual, + ) as IndividualProvider[], + [providers], + ); + const aggregatedTimeseriesProviders = useMemo( + () => + providers.filter( + (provider) => provider.dataKind === TimestampedAggregated, + ) as AggregatedProvider[], + [providers], + ); + + const individualTimeseriesFetcher = useChartProviders({ + providers: individualTimeseriesProviders, + refreshInterval, + }); + const aggregatedTimeseriesFetcher = useChartProviders({ + providers: aggregatedTimeseriesProviders, + refreshInterval, + }); + + const chartData = useMemo(() => { + if (individualTimeseriesFetcher.data == null || aggregatedTimeseriesFetcher.data == null) { + return { datasets: [] }; + } + const colors = providers.map((provider, index) => + Color.hsl((index * 360) / providers.length, 70, 70) + .rgb() + .string(), + ); + const individualProvidersTimeseries = individualTimeseriesFetcher.data.map( + (providerData, providerIndex) => ({ + label: individualTimeseriesProviders[providerIndex].name, + data: (providerData || []).map(({ timestamp, data: { value } }) => ({ + x: new Date(timestamp), + y: Number(value), + })), + backgroundColor: colors[providerIndex], + borderColor: colors[providerIndex], + fill: false, + borderWidth: 1, + pointRadius: (providerData || []).length > 100 ? 0 : 3, + }), + ); + const aggregatedProvidersTimeseries = aggregatedTimeseriesFetcher.data + .map((providerData, providerIndex) => { + if (providerData == null || providerData.length === 0) { + return []; + } + const providerEndpoints = Object.keys(providerData[0].data); + return providerEndpoints.map((endpoint) => ({ + label: `${aggregatedTimeseriesProviders[providerIndex].name}/${endpoint}`, + data: providerData.map((dataPoint) => ({ + x: new Date(dataPoint.timestamp), + y: Number(dataPoint.data[endpoint].value), + })), + backgroundColor: colors[individualTimeseriesProviders.length + providerIndex], + borderColor: colors[individualTimeseriesProviders.length + providerIndex], + fill: false, + borderWidth: 1, + pointRadius: providerData.length > 100 ? 0 : 3, + })); + }) + .flat(); + return { datasets: individualProvidersTimeseries.concat(aggregatedProvidersTimeseries) }; + }, [individualTimeseriesFetcher.data, aggregatedTimeseriesFetcher.data]); + + const chartOptions: ChartProps<'line'>['options'] = useMemo( + () => ({ + responsive: true, + legend: { + display: showLegend, + }, + scales: { + xAxes: { + type: 'time', + distribution: scaleDistribution, + bounds: 'data', + }, + }, + elements: { + line: { + tension: 0, + }, + }, + }), + [showLegend, scaleDistribution], + ); + + return ( + + ); +}; diff --git a/astarte-dashboard/src/astarte-charts/react/hooks/index.ts b/astarte-dashboard/src/astarte-charts/react/hooks/index.ts new file mode 100644 index 0000000000..3ea0804965 --- /dev/null +++ b/astarte-dashboard/src/astarte-charts/react/hooks/index.ts @@ -0,0 +1,19 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +export { useChartProviders } from './useChartProviders'; diff --git a/astarte-dashboard/src/astarte-charts/react/hooks/useChartProviders.ts b/astarte-dashboard/src/astarte-charts/react/hooks/useChartProviders.ts new file mode 100644 index 0000000000..e456a2c758 --- /dev/null +++ b/astarte-dashboard/src/astarte-charts/react/hooks/useChartProviders.ts @@ -0,0 +1,89 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import { useCallback, useEffect, useState } from 'react'; +import type { ChartProvider, ChartData, ChartDataWrapper, ChartDataKind } from 'astarte-charts'; + +type Status = 'initial' | 'loading' | 'loaded'; + +type DataFetcher = + | { + status: 'initial'; + data: null; + refresh: () => Promise; + } + | { + status: 'loading'; + data: Data | null; + refresh: () => Promise; + } + | { + status: 'loaded'; + data: Data | null; + refresh: () => Promise; + }; + +export const useChartProviders = < + DataWrapper extends ChartDataWrapper, + DataKind extends ChartDataKind, +>(params: { + providers: ChartProvider[]; + onError?: (error: Error) => void; + refreshInterval?: number; +}): DataFetcher<(ChartData | null)[]> => { + const [status, setStatus] = useState('initial'); + const [data, setData] = useState<(ChartData | null)[] | null>(null); + + const fetchData = useCallback(async () => { + setStatus('loading'); + try { + const providersData = await Promise.all( + params.providers.map((provider) => provider.getData()), + ); + setData(providersData); + } catch (err: any) { + if (params.onError) { + params.onError(err); + } + } finally { + setStatus('loaded'); + } + }, [params.providers]); + + useEffect(() => { + fetchData(); + if (params.refreshInterval) { + const fetchDataInterval = setInterval(fetchData, params.refreshInterval); + return () => clearInterval(fetchDataInterval); + } + return () => {}; + }, [fetchData, params.refreshInterval]); + + if (status === 'initial') { + return { + status, + data: data as null, + refresh: fetchData, + }; + } + return { + status, + data, + refresh: fetchData, + }; +}; diff --git a/astarte-dashboard/src/astarte-charts/react/index.ts b/astarte-dashboard/src/astarte-charts/react/index.ts new file mode 100644 index 0000000000..fd52b2534c --- /dev/null +++ b/astarte-dashboard/src/astarte-charts/react/index.ts @@ -0,0 +1,21 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +export { ConnectedDevicesChart } from './ConnectedDevices'; +export { PieChart } from './PieChart'; +export { TimeseriesChart } from './TimeseriesChart'; diff --git a/astarte-dashboard/src/astarte-client/client.test.ts b/astarte-dashboard/src/astarte-client/client.test.ts new file mode 100644 index 0000000000..2f453f087c --- /dev/null +++ b/astarte-dashboard/src/astarte-client/client.test.ts @@ -0,0 +1,191 @@ +/* + This file is part of Astarte. + + Copyright 2021-24 SECO Mind Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import _axios from 'axios'; + +import AstarteClient from './client'; + +const axios = vi.mocked(_axios); +vi.mock('axios'); + +describe('AstarteClient', () => { + const realm = 'testrealm'; + const token = + 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhX2FlYSI6WyIuKjo6LioiXSwiYV9jaCI6WyJKT0lOOjouKiIsIldBVENIOjouKiJdLCJhX3BhIjpbIi4qOjouKiJdLCJhX3JtYSI6WyIuKjo6LioiXSwiaWF0IjoxNjAwNzAxOTQ5fQ.Pj-uHOiIojX2Bn39HbWrhxfXDxLRs2vM1L6JdiGZfcTxUqRQmanM5h3Pbbf3dlVX15GX-S8y-DgfnojgTE1yW8vfXS7P6obFX0JKbNEkaqq0QIgwu2b5dZE3XUA8NjLTkLH63EvHK227okb10kvUn6We3018LInqqGVAGY7kcv-pQDH7MHFz8lFhxj3iCDtxM_5WfqrLhsNXndbQLvwADHoqPzP0kOrvFTGPKwcd8m0JJKrnusFB_lUmgpGLXgAZHAIhhg4wlTCALjLnlvEBcLtxMIs0j-glI8lE1SuCSiWguUwbKnuvoqe3m_Vofq0hUzFZ6_fCy1J__oTw5CkunTQav4xeI9QsyN85xlfwxph9K0yDLK02xbqY5wrV3me9z0RadxsoiNE0lU4mK33hcTfThHyiF3hcxu_A8GBSPwej5gsdetRP16hu2-k_2iVsyiv26MjORb8WAFrJINcf0YD_Yehyqkgv_dN23C8OlmLt90yK8gx05mTVq21rP1Vifrl1RQjuV9BEWjHnpxSDHag7U9UCkjzNmnhg1o7TExBx_owwY1N0kz1B2I7EkmdfUUOFDP80ts4rZwYwTmfiDKriB5DWID-fqpO6IGm_IFKRXoZk_jaovlqdHSpzZqzfescaiVeYrJ_CcVM8HpjASD6UWiI3FHBg0X9cq81lVKw'; + const astarteUrl = 'http://api.example.com'; + const appEngineApiUrl = `${astarteUrl}/appengine/`; + const pairingApiUrl = `${astarteUrl}/pairing/`; + const realmManagementApiUrl = `${astarteUrl}/realmmanagement/`; + const flowApiUrl = `${astarteUrl}/flow/`; + const astarte = new AstarteClient({ + appEngineApiUrl, + pairingApiUrl, + realmManagementApiUrl, + flowApiUrl, + realm, + token, + }); + + beforeEach(() => { + axios.mockClear(); + }); + + it('correctly performs getDeviceData', async () => { + const deviceId = 'deviceId'; + const interfaceName = 'interfaceName'; + const deviceData = { some: { property: { value: 42 } } }; + axios.mockResolvedValue({ + data: { data: deviceData }, + status: 200, + statusText: '', + headers: undefined, + config: {}, + }); + + const fetcheData = await astarte.getDeviceData({ deviceId, interfaceName }); + expect(axios).toHaveBeenCalledTimes(1); + expect(axios).toHaveBeenCalledWith( + expect.objectContaining({ + headers: { + Authorization: `Bearer ${token}`, + 'Content-Type': 'application/json;charset=UTF-8', + }, + method: 'get', + }), + ); + // @ts-expect-error wrong automatic type for the return values of axios mock + expect(axios.mock.calls[0][0].url.toString()).toBe( + `${appEngineApiUrl}v1/${realm}/devices/${deviceId}/interfaces/${interfaceName}?since=&since_after=&to=&limit=`, + ); + expect(fetcheData).toEqual(deviceData); + + const path = '/some/property'; + const since = '2021-03-20T11:32:34.909Z'; + const sinceAfter = '2021-03-21T11:32:34.909Z'; + const to = '2021-03-22T11:32:34.909Z'; + const limit = 5; + await astarte.getDeviceData({ deviceId, interfaceName, path, since, sinceAfter, to, limit }); + expect(axios).toHaveBeenCalledTimes(2); + // @ts-expect-error wrong automatic type for the return values of axios mock + expect(axios.mock.calls[1][0].url.toString()).toBe( + `${appEngineApiUrl}v1/${realm}/devices/${deviceId}/interfaces/${interfaceName}${path}?since=${since}&since_after=${sinceAfter}&to=${to}&limit=${limit}`, + ); + }); + + it('correctly performs getDeviceDataTree', async () => { + const deviceId = 'PO6RuqIXQuysOCAJrcedqA'; + const interfaceName = 'interfaceName'; + const interfaceMajor = 0; + const interfaceMinor = 1; + const device = { + aliases: {}, + connected: false, + credentials_inhibited: false, + first_credentials_request: null, + first_registration: '2020-01-01T12:00:00.000Z', + groups: [], + id: deviceId, + introspection: { + [interfaceName]: { + major: interfaceMajor, + minor: interfaceMinor, + exchanged_bytes: 0, + exchanged_msgs: 0, + }, + }, + last_connection: null, + last_credentials_request_ip: null, + last_disconnection: null, + last_seen_ip: null, + attributes: {}, + previous_interfaces: [], + total_received_bytes: 0, + total_received_msgs: 0, + }; + const iface = { + interface_name: interfaceName, + version_major: interfaceMajor, + version_minor: interfaceMinor, + type: 'properties', + ownership: 'device', + mappings: [ + { + endpoint: '/%{room}/heating', + type: 'boolean', + }, + ], + }; + const deviceData = { bedroom: { heating: true } }; + axios.mockImplementationOnce(async () => ({ + data: { data: device }, + status: 200, + statusText: '', + headers: undefined, + config: {}, + })); // Mock first call + axios.mockImplementationOnce(async () => ({ + data: { data: iface }, + status: 200, + statusText: '', + headers: undefined, + config: {}, + })); // Mock second call + axios.mockImplementationOnce(async () => ({ + data: { data: deviceData }, + status: 200, + statusText: '', + headers: undefined, + config: {}, + })); // Mock third call + + const fetcheDataTree = await astarte.getDeviceDataTree({ deviceId, interfaceName }); + expect(axios).toHaveBeenCalledTimes(3); + // First GET to fetch Device + // @ts-expect-error wrong automatic type for the return values of axios mock + expect(axios.mock.calls[0][0].url.toString()).toBe( + `${appEngineApiUrl}v1/${realm}/devices/${deviceId}`, + ); + // Second GET to fetch Interface + // @ts-expect-error wrong automatic type for the return values of axios mock + expect(axios.mock.calls[1][0].url.toString()).toBe( + `${realmManagementApiUrl}v1/${realm}/interfaces/${interfaceName}/${interfaceMajor}`, + ); + // Third GET to fetch Device data + // @ts-expect-error wrong automatic type for the return values of axios mock + expect(axios.mock.calls[2][0].url.toString()).toBe( + `${appEngineApiUrl}v1/${realm}/devices/${deviceId}/interfaces/${interfaceName}?since=&since_after=&to=&limit=`, + ); + expect(fetcheDataTree).toMatchObject({ + endpoint: '', + dataKind: 'properties', + children: [ + { + endpoint: '/bedroom', + dataKind: 'properties', + children: [ + { + endpoint: '/bedroom/heating', + dataKind: 'properties', + data: { endpoint: '/bedroom/heating', type: 'boolean', value: true }, + }, + ], + }, + ], + }); + }); +}); diff --git a/astarte-dashboard/src/astarte-client/client.ts b/astarte-dashboard/src/astarte-client/client.ts new file mode 100644 index 0000000000..118f6376d5 --- /dev/null +++ b/astarte-dashboard/src/astarte-client/client.ts @@ -0,0 +1,978 @@ +/* + This file is part of Astarte. + + Copyright 2020-2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import axios from 'axios'; +import { Channel, Socket } from 'phoenix'; +import _ from 'lodash'; +import { AstarteTriggerDeliveryPolicyDTO } from 'astarte-client/types/dto'; + +import { + AstarteDataTreeNode, + fromAstarteDeviceDTO, + fromAstarteInterfaceDTO, + toAstarteInterfaceDTO, + fromAstartePipelineDTO, + toAstartePipelineDTO, + fromAstarteTriggerDTO, + toAstarteTriggerDTO, + toAstarteDataTree, +} from './transforms'; +import * as definitions from './definitions'; +import { AstarteCustomBlock, toAstarteBlock } from './models/Block'; +import { AstarteDevice } from './models/Device'; +import { AstarteFlow } from './models/Flow'; +import { AstartePipeline } from './models/Pipeline'; +import type { AstarteInterface } from './models/Interface'; +import type { AstarteBlock } from './models/Block'; +import type { AstarteTrigger } from './models/Trigger'; +import type { + AstarteBlockDTO, + AstarteDeviceDTO, + AstarteInterfaceValues, + AstartePropertyData, + AstarteDatastreamIndividualData, + AstarteDatastreamObjectData, + AstarteTransientTriggerDTO, +} from './types'; +import { AstarteDeviceEvent, decodeEvent } from './types/events'; + +export type AstarteClientEvent = 'socketError' | 'socketClose'; + +export interface AstarteInterfaceDescriptor { + name: string; + major: number; + minor: number; +} + +type InterfaceOrInterfaceNameParams = + | { interfaceName: AstarteInterface['name'] } + | { interface: AstarteInterface }; + +// Wrap phoenix lib calls in promise for async handling +async function openNewSocketConnection( + connectionParams: { socketUrl: string; realm: string; token: string }, + onErrorHanlder: () => void, + onCloseHandler: () => void, +): Promise { + const { socketUrl, realm, token } = connectionParams; + + return new Promise((resolve) => { + const phoenixSocket = new Socket(socketUrl, { + params: { + realm, + token, + }, + }); + phoenixSocket.onError(onErrorHanlder); + phoenixSocket.onClose(onCloseHandler); + phoenixSocket.onOpen(() => { + resolve(phoenixSocket); + }); + phoenixSocket.connect(); + }); +} + +async function joinChannel(phoenixSocket: Socket, channelString: string): Promise { + return new Promise((resolve, reject) => { + const channel = phoenixSocket.channel(channelString, {}); + channel + .join() + .receive('ok', () => { + resolve(channel); + }) + .receive('error', (err: unknown) => { + reject(err); + }); + }); +} + +async function leaveChannel(channel: Channel): Promise { + return new Promise((resolve, reject) => { + channel + .leave() + .receive('ok', () => { + resolve(); + }) + .receive('error', (err: unknown) => { + reject(err); + }); + }); +} + +async function registerTrigger( + channel: Channel, + triggerPayload: AstarteTransientTriggerDTO, +): Promise { + return new Promise((resolve, reject) => { + channel + .push('watch', triggerPayload) + .receive('ok', () => { + resolve(); + }) + .receive('error', (err: unknown) => { + reject(err); + }); + }); +} + +function astarteAPIurl(strings: TemplateStringsArray, baseUrl: string, ...keys: string[]) { + return (params: Record = {}) => { + const values = keys.map((key) => params[key]); + const endpointUrl = _.flatten(_.zip(strings.slice(1), values)).join(''); + return new URL(endpointUrl, baseUrl).toString(); + }; +} + +interface AstarteClientConfig { + appEngineApiUrl: string; + flowApiUrl: string; + pairingApiUrl: string; + realm?: string; + realmManagementApiUrl: string; + token?: string; +} + +class AstarteClient { + private config: { realm: string }; + + private apiConfig: Record) => string>; + + private joinedChannels: { + [roomName: string]: Channel; + }; + + private listeners: { + [eventName: string]: Array<() => void>; + }; + + private phoenixSocket: Socket | null; + + private token: string; + + constructor(config: AstarteClientConfig) { + this.config = { + realm: config.realm || '', + }; + + this.token = config.token || ''; + + this.phoenixSocket = null; + this.joinedChannels = {}; + this.listeners = {}; + + this.getConfigAuth = this.getConfigAuth.bind(this); + this.getDeviceRegistrationLimit = this.getDeviceRegistrationLimit.bind(this); + this.getBlocks = this.getBlocks.bind(this); + this.getDeviceData = this.getDeviceData.bind(this); + this.getDevicesStats = this.getDevicesStats.bind(this); + this.getInterface = this.getInterface.bind(this); + this.getInterfaceMajors = this.getInterfaceMajors.bind(this); + this.getInterfaceNames = this.getInterfaceNames.bind(this); + this.getTriggerNames = this.getTriggerNames.bind(this); + this.getTrigger = this.getTrigger.bind(this); + this.getTriggerDeliveryPolicyNames = this.getTriggerDeliveryPolicyNames.bind(this); + this.deleteTrigger = this.deleteTrigger.bind(this); + this.getAppengineHealth = this.getAppengineHealth.bind(this); + this.getRealmManagementHealth = this.getRealmManagementHealth.bind(this); + this.getPairingHealth = this.getPairingHealth.bind(this); + this.getFlowHealth = this.getFlowHealth.bind(this); + this.getPipeline = this.getPipeline.bind(this); + this.getPipelines = this.getPipelines.bind(this); + this.getPolicyNames = this.getPolicyNames.bind(this); + this.getUnauthenticatedRealmManagementVersion = + this.getUnauthenticatedRealmManagementVersion.bind(this); + this.getRealmManagementVersion = this.getRealmManagementVersion.bind(this); + this.getUnauthenticatedAppEngineVersion = this.getUnauthenticatedAppEngineVersion.bind(this); + this.getAppEngineVersion = this.getAppEngineVersion.bind(this); + this.getUnauthenticatedPairingVersion = this.getUnauthenticatedPairingVersion.bind(this); + this.getPairingVersion = this.getPairingVersion.bind(this); + + // prettier-ignore + this.apiConfig = { + realmManagementHealth: astarteAPIurl`${config.realmManagementApiUrl}health`, + unAuthenticatedRealmManagementVersion: astarteAPIurl`${config.realmManagementApiUrl}version`, + realmManagementVersion:astarteAPIurl`${config.realmManagementApiUrl}v1/${'realm'}/version`, + auth: astarteAPIurl`${config.realmManagementApiUrl}v1/${'realm'}/config/auth`, + deviceRegistrationLimit: astarteAPIurl`${config.realmManagementApiUrl}v1/${'realm'}/config/device_registration_limit`, + interfaces: astarteAPIurl`${config.realmManagementApiUrl}v1/${'realm'}/interfaces`, + interfaceMajors: astarteAPIurl`${config.realmManagementApiUrl}v1/${'realm'}/interfaces/${'interfaceName'}`, + interface: astarteAPIurl`${config.realmManagementApiUrl}v1/${'realm'}/interfaces/${'interfaceName'}/${'interfaceMajor'}`, + interfaceData: +astarteAPIurl`${config.realmManagementApiUrl}v1/${'realm'}/interfaces/${'interfaceName'}/${'interfaceMajor'}`, + trigger: astarteAPIurl`${config.realmManagementApiUrl}v1/${'realm'}/triggers/${'triggerName'}`, + triggers: astarteAPIurl`${config.realmManagementApiUrl}v1/${'realm'}/triggers`, + policies: astarteAPIurl`${config.realmManagementApiUrl}v1/${'realm'}/policies`, + policy: astarteAPIurl`${config.realmManagementApiUrl}v1/${'realm'}/policies/${'policyName'}`, + device: astarteAPIurl`${config.realmManagementApiUrl}v1/${'realm'}/devices/${'deviceId'}`, + appengineHealth: astarteAPIurl`${config.appEngineApiUrl}health`, + unAuthenticatedAppEngineVersion: astarteAPIurl`${config.appEngineApiUrl}version`, + appengineVersion: astarteAPIurl`${config.appEngineApiUrl}v1/${'realm'}/version`, + devicesStats: astarteAPIurl`${config.appEngineApiUrl}v1/${'realm'}/stats/devices`, + devices: astarteAPIurl`${config.appEngineApiUrl}v1/${'realm'}/devices`, + deviceInfo: astarteAPIurl`${config.appEngineApiUrl}v1/${'realm'}/devices/${'deviceId'}`, + deviceData: astarteAPIurl`${config.appEngineApiUrl}v1/${'realm'}/devices/${'deviceId'}/interfaces/${'interfaceName'}${'path'}?since=${'since'}&since_after=${'sinceAfter'}&to=${'to'}&limit=${'limit'}`, + groups: astarteAPIurl`${config.appEngineApiUrl}v1/${'realm'}/groups`, + groupDevices: astarteAPIurl`${config.appEngineApiUrl}v1/${'realm'}/groups/${'groupName'}/devices`, + deviceInGroup: astarteAPIurl`${config.appEngineApiUrl}v1/${'realm'}/groups/${'groupName'}/devices/${'deviceId'}`, + phoenixSocket: astarteAPIurl`${config.appEngineApiUrl}v1/socket`, + sendInterfaceData: astarteAPIurl`${config.appEngineApiUrl}v1/${'realm'}/devices/${'deviceId'}/interfaces/${'interfaceName'}${'path'}`, + pairingHealth: astarteAPIurl`${config.pairingApiUrl}health`, + unAuthenticatedPairingVersion: astarteAPIurl`${config.pairingApiUrl}version`, + pairingVersion: astarteAPIurl`${config.pairingApiUrl}v1/${'realm'}/version`, + registerDevice: astarteAPIurl`${config.pairingApiUrl}v1/${'realm'}/agent/devices`, + deviceAgent: astarteAPIurl`${config.pairingApiUrl}v1/${'realm'}/agent/devices/${'deviceId'}`, + flowHealth: astarteAPIurl`${config.flowApiUrl}health`, + flows: astarteAPIurl`${config.flowApiUrl}v1/${'realm'}/flows`, + flowInstance: astarteAPIurl`${config.flowApiUrl}v1/${'realm'}/flows/${'instanceName'}`, + pipelines: astarteAPIurl`${config.flowApiUrl}v1/${'realm'}/pipelines`, + pipelineSource: astarteAPIurl`${config.flowApiUrl}v1/${'realm'}/pipelines/${'pipelineId'}`, + blocks: astarteAPIurl`${config.flowApiUrl}v1/${'realm'}/blocks`, + blockSource: astarteAPIurl`${config.flowApiUrl}v1/${'realm'}/blocks/${'blockId'}`, + }; + } + + addListener(eventName: AstarteClientEvent, callback: () => void): void { + if (!this.listeners[eventName]) { + this.listeners[eventName] = []; + } + + this.listeners[eventName].push(callback); + } + + removeListener(eventName: AstarteClientEvent, callback: () => void): void { + const previousListeners = this.listeners[eventName]; + if (previousListeners) { + this.listeners[eventName] = previousListeners.filter((listener) => listener !== callback); + } + } + + private dispatch(eventName: AstarteClientEvent): void { + const listeners = this.listeners[eventName]; + if (listeners) { + listeners.forEach((listener) => listener()); + } + } + + setCredentials(params: { realm: string; token: string } | null): void { + this.config.realm = _.get(params, 'realm') || ''; + this.token = _.get(params, 'token') || ''; + } + + async getConfigAuth(): Promise<{ publicKey: string }> { + const response = await this.$get(this.apiConfig.auth(this.config)); + return { publicKey: response.data.jwt_public_key_pem }; + } + + async updateConfigAuth(params: { publicKey: string }): Promise { + await this.$put(this.apiConfig.auth(this.config), { + jwt_public_key_pem: params.publicKey, + }); + } + + async getDeviceRegistrationLimit(): Promise { + const response = await this.$get(this.apiConfig.deviceRegistrationLimit(this.config)); + return response.data; + } + + async getPolicyNames(): Promise { + const response = await this.$get(this.apiConfig.policies(this.config)); + return response.data; + } + + async getInterfaceNames(): Promise { + const response = await this.$get(this.apiConfig.interfaces(this.config)); + return response.data; + } + + async getInterfaces(): Promise { + const endpointUri = new URL(this.apiConfig.interfaces(this.config)); + endpointUri.searchParams.set('detailed', 'true'); + const response = await this.$get(endpointUri.toString()); + return response.data; + } + + async getInterfaceMajors(interfaceName: string): Promise { + const response = await this.$get( + this.apiConfig.interfaceMajors({ ...this.config, interfaceName }), + ); + return response.data; + } + + async getInterface(params: { + interfaceName: AstarteInterface['name']; + interfaceMajor: AstarteInterface['major']; + }): Promise { + const { interfaceName, interfaceMajor } = params; + const response = await this.$get( + this.apiConfig.interfaceData({ + interfaceName, + interfaceMajor, + ...this.config, + }), + ); + return fromAstarteInterfaceDTO(response.data); + } + + async installInterface(iface: AstarteInterface): Promise { + await this.$post(this.apiConfig.interfaces(this.config), toAstarteInterfaceDTO(iface)); + } + + async updateInterface(iface: AstarteInterface): Promise { + await this.$put( + this.apiConfig.interface({ + interfaceName: iface.name, + interfaceMajor: iface.major, + ...this.config, + }), + toAstarteInterfaceDTO(iface), + ); + } + + async deleteInterface( + interfaceName: AstarteInterface['name'], + interfaceMajor: AstarteInterface['major'], + ): Promise { + await this.$delete(this.apiConfig.interface({ ...this.config, interfaceName, interfaceMajor })); + } + + async getTriggerNames(): Promise { + const response = await this.$get(this.apiConfig.triggers(this.config)); + return response.data; + } + + async getTrigger(triggerName: string): Promise { + const encodedTriggerName = encodeURIComponent(triggerName); + const response = await this.$get( + this.apiConfig.trigger({ ...this.config, triggerName: encodedTriggerName }), + ); + return fromAstarteTriggerDTO(response.data); + } + + async deleteTrigger(triggerName: string): Promise { + const encodedTriggerName = encodeURIComponent(triggerName); + await this.$delete(this.apiConfig.trigger({ ...this.config, triggerName: encodedTriggerName })); + } + + async installTrigger(trigger: AstarteTrigger): Promise { + await this.$post(this.apiConfig.triggers(this.config), toAstarteTriggerDTO(trigger)); + } + + async getTriggerDeliveryPolicyNames(): Promise { + const response = await this.$get(this.apiConfig.policies(this.config)); + return response.data; + } + + async installTriggerDeliveryPolicy(policy: AstarteTriggerDeliveryPolicyDTO): Promise { + await this.$post(this.apiConfig.policies(this.config), policy); + } + + async getTriggerDeliveryPolicy(policyName: string): Promise { + const response = await this.$get(this.apiConfig.policy({ ...this.config, policyName })); + return response.data; + } + + async deleteTriggerDeliveryPolicy(policyName: string): Promise { + await this.$delete(this.apiConfig.policy({ ...this.config, policyName })); + } + + async getDevicesStats(): Promise<{ connectedDevices: number; totalDevices: number }> { + const response = await this.$get(this.apiConfig.devicesStats(this.config)); + return { + connectedDevices: response.data.connected_devices, + totalDevices: response.data.total_devices, + }; + } + + async getDevices(params: { + details?: boolean; + from?: string; + limit?: number; + }): Promise<{ devices: AstarteDevice[]; nextToken: string | null }> { + const endpointUri = new URL(this.apiConfig.devices(this.config)); + // eslint-disable-next-line camelcase + const query: { details?: string; limit?: string; from_token?: string } = {}; + if (params.details) { + query.details = true.toString(); + } + if (params.limit) { + query.limit = params.limit.toString(); + } + if (params.from) { + query.from_token = params.from; + } + endpointUri.search = new URLSearchParams(query).toString(); + const response = await this.$get(endpointUri.toString()); + const devices = response.data.map((device: AstarteDeviceDTO) => fromAstarteDeviceDTO(device)); + const nextToken = new URLSearchParams(response.links.next).get('from_token'); + return { devices, nextToken }; + } + + async getDeviceInfo(deviceId: AstarteDevice['id']): Promise { + const response = await this.$get(this.apiConfig.deviceInfo({ deviceId, ...this.config })); + return fromAstarteDeviceDTO(response.data); + } + + async insertDeviceAlias( + deviceId: AstarteDevice['id'], + aliasKey: string, + aliasValue: string, + ): Promise { + await this.$patch(this.apiConfig.deviceInfo({ deviceId, ...this.config }), { + aliases: { [aliasKey]: aliasValue }, + }); + } + + async deleteDeviceAlias(deviceId: AstarteDevice['id'], aliasKey: string): Promise { + await this.$patch(this.apiConfig.deviceInfo({ deviceId, ...this.config }), { + aliases: { [aliasKey]: null }, + }); + } + + async insertDeviceAttribute( + deviceId: AstarteDevice['id'], + attributeKey: string, + attributeValue: string, + ): Promise { + await this.$patch(this.apiConfig.deviceInfo({ deviceId, ...this.config }), { + attributes: { [attributeKey]: attributeValue }, + }); + } + + async deleteDeviceAttribute(deviceId: AstarteDevice['id'], attributeKey: string): Promise { + await this.$patch(this.apiConfig.deviceInfo({ deviceId, ...this.config }), { + attributes: { [attributeKey]: null }, + }); + } + + async inhibitDeviceCredentialsRequests( + deviceId: AstarteDevice['id'], + inhibit: boolean, + ): Promise { + await this.$patch(this.apiConfig.deviceInfo({ deviceId, ...this.config }), { + credentials_inhibited: inhibit, + }); + } + + async getDeviceData(params: { + deviceId: AstarteDevice['id']; + interfaceName: AstarteInterface['name']; + path?: string; + since?: string; + sinceAfter?: string; + to?: string; + limit?: number; + }): Promise { + const response = await this.$get( + this.apiConfig.deviceData({ + ...params, + ...this.config, + }), + ); + return response.data; + } + + async getDeviceDataTree( + params: { + deviceId: AstarteDevice['id']; + path?: string; + since?: string; + sinceAfter?: string; + to?: string; + limit?: number; + } & InterfaceOrInterfaceNameParams, + ): Promise< + | AstarteDataTreeNode + | AstarteDataTreeNode + | AstarteDataTreeNode + > { + let iface: AstarteInterface; + if ('interface' in params) { + iface = params.interface; + } else { + const device = await this.getDeviceInfo(params.deviceId); + const interfaceIntrospection = device.introspection.get(params.interfaceName); + if (!interfaceIntrospection) { + throw new Error(`Could not find interface ${params.interfaceName} in device introspection`); + } + iface = await this.getInterface({ + interfaceName: params.interfaceName, + interfaceMajor: interfaceIntrospection.major, + }); + } + const interfaceValues = await this.getDeviceData({ + deviceId: params.deviceId, + interfaceName: iface.name, + path: params.path, + since: params.since, + sinceAfter: params.sinceAfter, + to: params.to, + limit: params.limit, + }); + return toAstarteDataTree({ + interface: iface, + data: interfaceValues, + endpoint: params.path, + }); + } + + async getGroupList(): Promise { + const response = await this.$get(this.apiConfig.groups(this.config)); + return response.data; + } + + async createGroup(params: { + groupName: string; + deviceIds: AstarteDevice['id'][]; + }): Promise { + const { groupName, deviceIds } = params; + await this.$post(this.apiConfig.groups(this.config), { + group_name: groupName, + devices: deviceIds, + }); + } + + async getDevicesInGroup(params: { + groupName: string; + details?: boolean; + }): Promise { + const { groupName, details } = params; + if (!groupName) { + throw new Error('Invalid group name'); + } + /* Double encoding to preserve the URL format when groupName contains % and / */ + const encodedGroupName = encodeURIComponent(encodeURIComponent(groupName)); + const endpointUri = new URL( + this.apiConfig.groupDevices({ + ...this.config, + groupName: encodedGroupName, + }), + ); + if (details) { + endpointUri.search = new URLSearchParams({ details: 'true' }).toString(); + } + const response = await this.$get(endpointUri.toString()); + return response.data.map((device: AstarteDeviceDTO) => fromAstarteDeviceDTO(device)); + } + + async addDeviceToGroup(params: { groupName: string; deviceId: string }): Promise { + const { groupName, deviceId } = params; + + if (!groupName) { + throw new Error('Invalid group name'); + } + + if (!deviceId) { + throw new Error('Invalid device ID'); + } + + /* Double encoding to preserve the URL format when groupName contains % and / */ + const encodedGroupName = encodeURIComponent(encodeURIComponent(groupName)); + + await this.$post( + this.apiConfig.groupDevices({ + ...this.config, + groupName: encodedGroupName, + }), + { device_id: deviceId }, + ); + } + + async removeDeviceFromGroup(params: { groupName: string; deviceId: string }): Promise { + const { groupName, deviceId } = params; + + if (!groupName) { + throw new Error('Invalid group name'); + } + + if (!deviceId) { + throw new Error('Invalid device ID'); + } + + /* Double encoding to preserve the URL format when groupName contains % and / */ + const encodedGroupName = encodeURIComponent(encodeURIComponent(groupName)); + + await this.$delete( + this.apiConfig.deviceInGroup({ + ...this.config, + groupName: encodedGroupName, + deviceId, + }), + ); + } + + async registerDevice(params: { + deviceId: AstarteDevice['id']; + introspection?: { [interfaceName: string]: AstarteInterfaceDescriptor }; + }): Promise<{ credentialsSecret: string }> { + const { deviceId, introspection } = params; + type RequestBody = { + // eslint-disable-next-line camelcase + hw_id: string; + // eslint-disable-next-line camelcase + initial_introspection?: Record; + }; + const requestBody: RequestBody = { + hw_id: deviceId, + }; + if (introspection) { + const initialIntrospection = _.mapValues(introspection, (interfaceDescriptor) => + _.pick(interfaceDescriptor, ['minor', 'major']), + ); + requestBody.initial_introspection = initialIntrospection; + } + const response = await this.$post(this.apiConfig.registerDevice(this.config), requestBody); + return { credentialsSecret: response.data.credentials_secret }; + } + + async wipeDeviceCredentials(deviceId: AstarteDevice['id']): Promise { + await this.$delete(this.apiConfig.deviceAgent({ deviceId, ...this.config })); + } + + async deleteDevice(deviceId: AstarteDevice['id']): Promise { + await this.$delete(this.apiConfig.device({ ...this.config, deviceId })); + } + + async getFlowInstances(): Promise> { + const response = await this.$get(this.apiConfig.flows(this.config)); + return response.data; + } + + async getFlowDetails(flowName: AstarteFlow['name']): Promise { + const response = await this.$get( + this.apiConfig.flowInstance({ ...this.config, instanceName: flowName }), + ); + return AstarteFlow.fromObject(response.data); + } + + async createNewFlowInstance(params: { + name: AstarteFlow['name']; + pipeline: string; + config: { [key: string]: unknown }; + }): Promise { + await this.$post(this.apiConfig.flows(this.config), params); + } + + async deleteFlowInstance(flowName: AstarteFlow['name']): Promise { + await this.$delete(this.apiConfig.flowInstance({ ...this.config, instanceName: flowName })); + } + + async getPipelineNames(): Promise> { + const response = await this.$get(this.apiConfig.pipelines(this.config)); + return response.data; + } + + async getPipelines(): Promise { + const pipelineNames = await this.getPipelineNames(); + const pipelines = await Promise.all(pipelineNames.map(this.getPipeline)); + return pipelines; + } + + async getPipeline(pipelineId: AstartePipeline['name']): Promise { + const response = await this.$get(this.apiConfig.pipelineSource({ ...this.config, pipelineId })); + return new AstartePipeline(fromAstartePipelineDTO(response.data)); + } + + async registerPipeline(pipeline: AstartePipeline): Promise { + await this.$post(this.apiConfig.pipelines(this.config), toAstartePipelineDTO(pipeline)); + } + + async deletePipeline(pipelineId: string): Promise { + await this.$delete(this.apiConfig.pipelineSource({ ...this.config, pipelineId })); + } + + async getBlocks(): Promise { + const staticBlocks = definitions.blocks as AstarteBlockDTO[]; + const response = await this.$get(this.apiConfig.blocks(this.config)); + const fetchedBlocks = response.data as AstarteBlockDTO[]; + const allBlocks = _.uniqBy(fetchedBlocks.concat(staticBlocks), 'name'); + return allBlocks.map((block: AstarteBlockDTO) => toAstarteBlock(block)); + } + + async registerBlock(block: AstarteCustomBlock): Promise { + const staticBlocksName = definitions.blocks.map((b) => b.name); + if (staticBlocksName.includes(block.name)) { + throw new Error("The block's name already exists"); + } + await this.$post(this.apiConfig.blocks(this.config), block); + } + + async getBlock(blockId: AstarteBlock['name']): Promise { + let blockDTO: AstarteBlockDTO; + const staticBlocksName = definitions.blocks.map((block) => block.name); + if (staticBlocksName.includes(blockId)) { + blockDTO = definitions.blocks.find((block) => block.name === blockId) as AstarteBlockDTO; + } else { + const response = await this.$get(this.apiConfig.blockSource({ ...this.config, blockId })); + blockDTO = response.data; + } + return toAstarteBlock(blockDTO); + } + + async deleteBlock(blockId: AstarteBlock['name']): Promise { + const staticBlocksName = definitions.blocks.map((b) => b.name); + if (staticBlocksName.includes(blockId)) { + throw new Error('Cannot delete a native block'); + } + await this.$delete(this.apiConfig.blockSource({ ...this.config, blockId })); + } + + async getRealmManagementHealth(): Promise { + await this.$get(this.apiConfig.realmManagementHealth(this.config)); + } + + async getAppengineHealth(): Promise { + await this.$get(this.apiConfig.appengineHealth(this.config)); + } + + async getPairingHealth(): Promise { + await this.$get(this.apiConfig.pairingHealth(this.config)); + } + + async getFlowHealth(): Promise { + await this.$get(this.apiConfig.flowHealth(this.config)); + } + + async getUnauthenticatedRealmManagementVersion(): Promise { + const response = await this.$get( + this.apiConfig.unAuthenticatedRealmManagementVersion(this.config), + ); + return response.data; + } + + async getRealmManagementVersion(): Promise { + const response = await this.$get(this.apiConfig.realmManagementVersion(this.config)); + return response.data; + } + + async getUnauthenticatedAppEngineVersion(): Promise { + const response = await this.$get(this.apiConfig.unAuthenticatedAppEngineVersion(this.config)); + return response.data; + } + + async getAppEngineVersion(): Promise { + const response = await this.$get(this.apiConfig.appengineVersion(this.config)); + return response.data; + } + + async getUnauthenticatedPairingVersion(): Promise { + const response = await this.$get(this.apiConfig.unAuthenticatedPairingVersion(this.config)); + return response.data; + } + + async getPairingVersion(): Promise { + const response = await this.$get(this.apiConfig.pairingVersion(this.config)); + return response.data; + } + + private async $get(url: string) { + return axios({ + method: 'get', + url, + headers: { + Authorization: `Bearer ${this.token}`, + 'Content-Type': 'application/json;charset=UTF-8', + }, + }).then((response) => response.data); + } + + private async $post(url: string, data: unknown) { + return axios({ + method: 'post', + url, + headers: { + Authorization: `Bearer ${this.token}`, + 'Content-Type': 'application/json;charset=UTF-8', + }, + data: { + data, + }, + }).then((response) => response.data); + } + + private async $put(url: string, data: unknown) { + return axios({ + method: 'put', + url, + headers: { + Authorization: `Bearer ${this.token}`, + 'Content-Type': 'application/json;charset=UTF-8', + }, + data: { + data, + }, + }).then((response) => response.data); + } + + private async $patch(url: string, data: unknown) { + return axios({ + method: 'patch', + url, + headers: { + Authorization: `Bearer ${this.token}`, + 'Content-Type': 'application/merge-patch+json', + }, + data: { + data, + }, + }).then((response) => response.data); + } + + private async $delete(url: string) { + return axios({ + method: 'delete', + url, + headers: { + Authorization: `Bearer ${this.token}`, + 'Content-Type': 'application/json;charset=UTF-8', + }, + }).then((response) => response.data); + } + + private async openSocketConnection(): Promise { + if (this.phoenixSocket) { + return Promise.resolve(this.phoenixSocket); + } + + const socketUrl = new URL(this.apiConfig.phoenixSocket(this.config)); + socketUrl.protocol = socketUrl.protocol === 'https:' ? 'wss:' : 'ws:'; + + return new Promise((resolve) => { + openNewSocketConnection( + { + socketUrl: socketUrl.toString(), + realm: this.config.realm, + token: this.token, + }, + () => { + this.dispatch('socketError'); + }, + () => { + this.dispatch('socketClose'); + }, + ).then((socket) => { + this.phoenixSocket = socket; + resolve(socket); + }); + }); + } + + async joinRoom(roomName: string): Promise { + const { phoenixSocket } = this; + if (!phoenixSocket) { + return new Promise((resolve) => { + this.openSocketConnection().then(() => { + resolve(this.joinRoom(roomName)); + }); + }); + } + + const channel = this.joinedChannels[roomName]; + if (channel) { + return Promise.resolve(channel); + } + + return new Promise((resolve) => { + joinChannel(phoenixSocket, `rooms:${this.config.realm}:${roomName}`).then((joinedChannel) => { + this.joinedChannels[roomName] = joinedChannel; + resolve(joinedChannel); + }); + }); + } + + async listenForEvents( + roomName: string, + eventHandler: (event: AstarteDeviceEvent) => void, + ): Promise { + const channel = this.joinedChannels[roomName]; + if (!channel) { + return Promise.reject(new Error("Can't listen for room events before joining it first")); + } + + channel.on('new_event', (jsonEvent: unknown) => { + const decodedEvent = decodeEvent(jsonEvent); + + if (decodedEvent) { + eventHandler(decodedEvent); + } else { + throw new Error('Unrecognised event received'); + } + }); + return Promise.resolve(); + } + + async registerVolatileTrigger( + roomName: string, + triggerPayload: AstarteTransientTriggerDTO, + ): Promise { + const channel = this.joinedChannels[roomName]; + if (!channel) { + return Promise.reject(new Error("Room not joined, couldn't register trigger")); + } + + return registerTrigger(channel, triggerPayload); + } + + async leaveRoom(roomName: string): Promise { + const channel = this.joinedChannels[roomName]; + if (!channel) { + return Promise.reject(new Error("Can't leave a room without joining it first")); + } + + return leaveChannel(channel).then(() => { + delete this.joinedChannels[roomName]; + }); + } + + get joinedRooms(): string[] { + const rooms: string[] = []; + Object.keys(this.joinedChannels).forEach((roomName) => { + rooms.push(roomName); + }); + return rooms; + } + + get realm(): string | null { + return this.config.realm || null; + } + + async sendDataToInterface(params: { + deviceId: string; + interfaceName: string; + path: string; + data: any; + }): Promise { + const { deviceId, interfaceName, path, data } = params; + await this.$post( + this.apiConfig.sendInterfaceData({ ...this.config, deviceId, interfaceName, path }), + data, + ); + } + async unsetProperty(params: { + deviceId: string; + interfaceName: string; + path: string; + }): Promise { + const { deviceId, interfaceName, path } = params; + + await this.$delete( + this.apiConfig.sendInterfaceData({ ...this.config, deviceId, interfaceName, path }), + ); + } +} + +export default AstarteClient; diff --git a/astarte-dashboard/src/astarte-client/definitions/blocks/astarte_devices_source.json b/astarte-dashboard/src/astarte-client/definitions/blocks/astarte_devices_source.json new file mode 100644 index 0000000000..205f79d29e --- /dev/null +++ b/astarte-dashboard/src/astarte-client/definitions/blocks/astarte_devices_source.json @@ -0,0 +1,39 @@ +{ + "beam_module": "Elixir.Astarte.Flow.Blocks.DeviceEventsProducer", + "name": "astarte_devices_source", + "schema": { + "$id": "https://astarte-platform.org/specs/astarte_flow/blocks/astarte_devices_source.json", + "$schema": "http://json-schema.org/draft-04/schema#", + "additionalProperties": false, + "description": "This is a producer block that generates messages by polling consuming from an AMQP queue that contains a stream of `SimpleEvent` generated by Data Updater Plant.", + "properties": { + "realm": { + "description": "The realm the producer will listen to.", + "title": "Realm", + "type": "string" + }, + "amqp_routing_key": { + "description": "The routing key used to bind the queue to the exchange.", + "title": "AMQP routing key", + "type": "string" + }, + "amqp_exchange": { + "description": "The name of the exchange the queue will be bound to. Defaults to `astarte_events`.", + "title": "AMQP exchange", + "type": "string" + }, + "target_devices": { + "description": "A list of device IDs. If provided, only events coming from these devices will be processed.", + "items": { + "type": "string" + }, + "title": "Target devices", + "type": "array" + } + }, + "required": ["amqp_routing_key", "realm"], + "title": "Astarte Devices Source options", + "type": "object" + }, + "type": "producer" +} diff --git a/astarte-dashboard/src/astarte-client/definitions/blocks/container.json b/astarte-dashboard/src/astarte-client/definitions/blocks/container.json new file mode 100644 index 0000000000..3ca27e844b --- /dev/null +++ b/astarte-dashboard/src/astarte-client/definitions/blocks/container.json @@ -0,0 +1,27 @@ +{ + "beam_module": "Elixir.Astarte.Flow.Blocks.Container", + "name": "container", + "schema": { + "$id": "https://astarte-platform.org/specs/astarte_flow/blocks/container.json", + "$schema": "http://json-schema.org/draft-04/schema#", + "additionalProperties": false, + "description": "This is a block that sends messages to a Docker container.", + "properties": { + "image": { + "description": "The tag of the docker image that will be used by the block.", + "title": "Image", + "type": "string" + }, + "type": { + "description": "How the block should process messages.", + "enum": ["consumer", "producer", "producer_consumer"], + "title": "Type", + "type": "string" + } + }, + "required": ["image"], + "title": "Container options", + "type": "object" + }, + "type": "producer_consumer" +} diff --git a/astarte-dashboard/src/astarte-client/definitions/blocks/dynamic_virtual_device_pool.json b/astarte-dashboard/src/astarte-client/definitions/blocks/dynamic_virtual_device_pool.json new file mode 100644 index 0000000000..1c0d93f0d9 --- /dev/null +++ b/astarte-dashboard/src/astarte-client/definitions/blocks/dynamic_virtual_device_pool.json @@ -0,0 +1,195 @@ +{ + "beam_module": "Elixir.Astarte.Flow.Blocks.DynamicVirtualDevicePool", + "name": "dynamic_virtual_device_pool", + "schema": { + "$id": "https://astarte-platform.org/specs/astarte_flow/blocks/dynamic_virtual_device_pool.json", + "$schema": "http://json-schema.org/draft-04/schema#", + "additionalProperties": false, + "definitions": { + "interface": { + "$schema": "http://json-schema.org/draft-04/schema", + "title": "Astarte Interface Schema", + "description": "This schema describes how an Astarte interface should be declared", + "type": "object", + "properties": { + "interface_name": { + "type": "string", + "pattern": "^([a-zA-Z][a-zA-Z0-9]*.([a-zA-Z0-9][a-zA-Z0-9-]*.)*)?[a-zA-Z][a-zA-Z0-9]*$", + "minLength": 1, + "maxLength": 128, + "description": "The name of the interface. This has to be an unique, alphanumeric reverse internet domain name, shorther than 128 characters." + }, + "version_major": { + "type": "integer", + "description": "A Major version qualifier for this interface. Interfaces with the same id and different version_major number are deemed incompatible. It is then acceptable to redefine any property of the interface when changing the major version number." + }, + "version_minor": { + "type": "integer", + "description": "A Minor version qualifier for this interface. Interfaces with the same id and major version number and different version_minor number are deemed compatible between each other. When changing the minor number, it is then only possible to insert further mappings. Any other modification might lead to incompatibilities and undefined behavior." + }, + "type": { + "type": "string", + "enum": ["datastream", "properties"], + "description": "Identifies the type of this Interface. Currently two types are supported: datastream and properties. datastream should be used when dealing with streams of non-persistent data, where a single path receives updates and there's no concept of state. properties, instead, are meant to be an actual state and as such they have only a change history, and are retained." + }, + "ownership": { + "type": "string", + "enum": ["device", "server"], + "description": "Identifies the ownership of the interface. Interfaces are meant to be unidirectional, and this property defines who's sending or receiving data. device means the device/gateway is sending data to Astarte, server means the device/gateway is receiving data from Astarte. Bidirectional mode is not supported, you should instantiate another interface for that." + }, + "aggregation": { + "type": "string", + "enum": ["individual", "object"], + "default": "individual", + "description": "Identifies the aggregation of the mappings of the interface. Individual means every mapping changes state or streams data independently, whereas an object aggregation treats the interface as an object, making all the mappings changes interdependent. Choosing the right aggregation might drastically improve performances." + }, + "description": { + "type": "string", + "description": "An optional description of the interface." + }, + "doc": { + "type": "string", + "description": "A string containing documentation that will be injected in the generated client code." + }, + "mappings": { + "type": "array", + "description": "Mappings define the endpoint of the interface, where actual data is stored/streamed. They are defined as relative URLs (e.g. /my/path) and can be parametrized (e.g.: /%{myparam}/path). A valid interface must have no mappings clash, which means that every mapping must resolve to a unique path or collection of paths (including parametrization). Every mapping acquires type, quality and aggregation of the interface.", + "items": { "$ref": "#/definitions/mapping" }, + "minItems": 1, + "maxItems": 1024, + "uniqueItems": true + } + }, + "required": [ + "interface_name", + "version_minor", + "version_major", + "type", + "ownership", + "mappings" + ] + }, + "mapping": { + "$schema": "http://json-schema.org/draft-04/schema", + "title": "Astarte Mapping Schema", + "type": "object", + "description": "Identifies a mapping for an interface. A mapping must consist at least of an endpoint and a type.", + "properties": { + "endpoint": { + "type": "string", + "pattern": "^(/(%{([a-zA-Z][a-zA-Z0-9_]*)}|[a-zA-Z][a-zA-Z0-9_]*)){1,64}$", + "minLength": 2, + "maxLength": 256, + "description": "The template of the path. This is a UNIX-like path (e.g. /my/path) and can be parametrized. Parameters are in the %{name} form, and can be used to create interfaces which represent dictionaries of mappings. When the interface aggregation is object, an object is composed by all the mappings for one specific parameter combination. /timestamp is a reserved path for timestamps, so every mapping on a datastream must not have any endpoint that ends with /timestamp." + }, + "type": { + "type": "string", + "enum": [ + "double", + "integer", + "boolean", + "longinteger", + "string", + "binaryblob", + "datetime", + "doublearray", + "integerarray", + "booleanarray", + "longintegerarray", + "stringarray", + "binaryblobarray", + "datetimearray" + ], + "description": "Defines the type of the mapping." + }, + "reliability": { + "type": "string", + "enum": ["unreliable", "guaranteed", "unique"], + "default": "unreliable", + "description": "Useful only with datastream. Defines whether the sent data should be considered delivered when the transport successfully sends the data (unreliable), when we know that the data has been received at least once (guaranteed) or when we know that the data has been received exactly once (unique). unreliable by default. When using reliable data, consider you might incur in additional resource usage on both the transport and the device's end." + }, + "retention": { + "type": "string", + "enum": ["discard", "volatile", "stored"], + "default": "discard", + "description": "Useful only with datastream. Defines whether the sent data should be discarded if the transport is temporarily uncapable of delivering it (discard) or should be kept in a cache in memory (volatile) or on disk (stored), and guaranteed to be delivered in the timeframe defined by the expiry. discard by default." + }, + "expiry": { + "type": "integer", + "default": 0, + "minimum": 0, + "description": "Useful when retention is stored. Defines after how many seconds a specific data entry should be kept before giving up and erasing it from the persistent cache. A value <= 0 means the persistent cache never expires, and is the default." + }, + "database_retention_policy": { + "type": "string", + "enum": ["no_ttl", "use_ttl"], + "default": "no_ttl", + "description": "Useful only with datastream. Defines whether data should expire from the database after a given interval. Valid values are: no_ttl and use_ttl." + }, + "database_retention_ttl": { + "type": "integer", + "minimum": 60, + "maximum": 630719999, + "description": "Useful when database_retention_policy is use_ttl. Defines how many seconds a specific data entry should be kept before erasing it from the database." + }, + "allow_unset": { + "type": "boolean", + "default": false, + "description": "Used only with properties. Used with producers, it generates a method to unset the property. Used with consumers, it generates code to call an unset method when an empty payload is received." + }, + "explicit_timestamp": { + "type": "boolean", + "default": false, + "description": "Allow to set a custom timestamp, otherwise a timestamp is added when the message is received. If true explicit timestamp will also be used for sorting. This feature is only supported on datastreams." + }, + "description": { + "type": "string", + "description": "An optional description of the mapping." + }, + "doc": { + "type": "string", + "description": "A string containing documentation that will be injected in the generated client code." + } + }, + "required": ["endpoint", "type"] + } + }, + "description": "This is a consumer block that takes `data` from incoming `Message`s and publishes it as an Astarte device.", + "properties": { + "pairing_url": { + "description": "Base URL of the Astarte Pairing API instance the devices will connect to. URL containing the API version suffix (i.e. `/v1`) are *deprecated* and will be removed in a future release.", + "title": "Pairing URL", + "type": "string" + }, + "realms": { + "items": { + "additionalProperties": false, + "properties": { + "realm": { + "description": "The realm devices will register to.", + "type": "string" + }, + "jwt": { + "description": "The pairing JWT with the authorizations needed to register a device in the realm.", + "type": "string" + } + }, + "required": ["jwt", "realm"], + "type": "object" + }, + "title": "Realms", + "type": "array" + }, + "interfaces": { + "default": [], + "items": { "$ref": "#/definitions/interface" }, + "title": "Interfaces", + "type": "array" + } + }, + "required": ["pairing_url", "realms", "interfaces"], + "title": "Dynamic Virtual Device Pool options", + "type": "object" + }, + "type": "consumer" +} diff --git a/astarte-dashboard/src/astarte-client/definitions/blocks/index.ts b/astarte-dashboard/src/astarte-client/definitions/blocks/index.ts new file mode 100644 index 0000000000..798f75e1c1 --- /dev/null +++ b/astarte-dashboard/src/astarte-client/definitions/blocks/index.ts @@ -0,0 +1,31 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import AstarteDevicesSource from './astarte_devices_source.json'; +import Container from './container.json'; +import DynamicVirtualDevicePool from './dynamic_virtual_device_pool.json'; +import SplitMap from './split_map.json'; +import VirtualDevicePool from './virtual_device_pool.json'; + +export default [ + AstarteDevicesSource, + Container, + DynamicVirtualDevicePool, + SplitMap, + VirtualDevicePool, +]; diff --git a/astarte-dashboard/src/astarte-client/definitions/blocks/split_map.json b/astarte-dashboard/src/astarte-client/definitions/blocks/split_map.json new file mode 100644 index 0000000000..a62606e70e --- /dev/null +++ b/astarte-dashboard/src/astarte-client/definitions/blocks/split_map.json @@ -0,0 +1,37 @@ +{ + "beam_module": "Elixir.Astarte.Flow.Blocks.MapSplitter", + "name": "split_map", + "schema": { + "$id": "https://astarte-platform.org/specs/astarte_flow/blocks/split_map.json", + "$schema": "http://json-schema.org/draft-04/schema#", + "additionalProperties": false, + "description": "Breaks a map message into several messages, one for each map item.", + "properties": { + "key_action": { + "default": "replace", + "description": "The action to apply to the message key.", + "enum": ["none", "replace", "append", "prepend"], + "title": "Key action", + "type": "string" + }, + "delimiter": { + "title": "Delimiter", + "type": "string" + }, + "fallback_action": { + "default": "pass_through", + "description": "The fallback action that is performed when a message does not have map type.", + "enum": ["discard", "replace_key", "pass_through"], + "title": "Fallback action", + "type": "string" + }, + "fallback_key": { + "title": "Fallback key", + "type": "string" + } + }, + "title": "Split Map options", + "type": "object" + }, + "type": "producer_consumer" +} diff --git a/astarte-dashboard/src/astarte-client/definitions/blocks/virtual_device_pool.json b/astarte-dashboard/src/astarte-client/definitions/blocks/virtual_device_pool.json new file mode 100644 index 0000000000..c83af775d9 --- /dev/null +++ b/astarte-dashboard/src/astarte-client/definitions/blocks/virtual_device_pool.json @@ -0,0 +1,200 @@ +{ + "beam_module": "Elixir.Astarte.Flow.Blocks.VirtualDevicePool", + "name": "virtual_device_pool", + "schema": { + "$id": "https://astarte-platform.org/specs/astarte_flow/blocks/virtual_device_pool.json", + "$schema": "http://json-schema.org/draft-04/schema#", + "additionalProperties": false, + "definitions": { + "interface": { + "$schema": "http://json-schema.org/draft-04/schema", + "title": "Astarte Interface Schema", + "description": "This schema describes how an Astarte interface should be declared", + "type": "object", + "properties": { + "interface_name": { + "type": "string", + "pattern": "^([a-zA-Z][a-zA-Z0-9]*.([a-zA-Z0-9][a-zA-Z0-9-]*.)*)?[a-zA-Z][a-zA-Z0-9]*$", + "minLength": 1, + "maxLength": 128, + "description": "The name of the interface. This has to be an unique, alphanumeric reverse internet domain name, shorther than 128 characters." + }, + "version_major": { + "type": "integer", + "description": "A Major version qualifier for this interface. Interfaces with the same id and different version_major number are deemed incompatible. It is then acceptable to redefine any property of the interface when changing the major version number." + }, + "version_minor": { + "type": "integer", + "description": "A Minor version qualifier for this interface. Interfaces with the same id and major version number and different version_minor number are deemed compatible between each other. When changing the minor number, it is then only possible to insert further mappings. Any other modification might lead to incompatibilities and undefined behavior." + }, + "type": { + "type": "string", + "enum": ["datastream", "properties"], + "description": "Identifies the type of this Interface. Currently two types are supported: datastream and properties. datastream should be used when dealing with streams of non-persistent data, where a single path receives updates and there's no concept of state. properties, instead, are meant to be an actual state and as such they have only a change history, and are retained." + }, + "ownership": { + "type": "string", + "enum": ["device", "server"], + "description": "Identifies the ownership of the interface. Interfaces are meant to be unidirectional, and this property defines who's sending or receiving data. device means the device/gateway is sending data to Astarte, server means the device/gateway is receiving data from Astarte. Bidirectional mode is not supported, you should instantiate another interface for that." + }, + "aggregation": { + "type": "string", + "enum": ["individual", "object"], + "default": "individual", + "description": "Identifies the aggregation of the mappings of the interface. Individual means every mapping changes state or streams data independently, whereas an object aggregation treats the interface as an object, making all the mappings changes interdependent. Choosing the right aggregation might drastically improve performances." + }, + "description": { + "type": "string", + "description": "An optional description of the interface." + }, + "doc": { + "type": "string", + "description": "A string containing documentation that will be injected in the generated client code." + }, + "mappings": { + "type": "array", + "description": "Mappings define the endpoint of the interface, where actual data is stored/streamed. They are defined as relative URLs (e.g. /my/path) and can be parametrized (e.g.: /%{myparam}/path). A valid interface must have no mappings clash, which means that every mapping must resolve to a unique path or collection of paths (including parametrization). Every mapping acquires type, quality and aggregation of the interface.", + "items": { "$ref": "#/definitions/mapping" }, + "minItems": 1, + "maxItems": 1024, + "uniqueItems": true + } + }, + "required": [ + "interface_name", + "version_minor", + "version_major", + "type", + "ownership", + "mappings" + ] + }, + "mapping": { + "$schema": "http://json-schema.org/draft-04/schema", + "title": "Astarte Mapping Schema", + "type": "object", + "description": "Identifies a mapping for an interface. A mapping must consist at least of an endpoint and a type.", + "properties": { + "endpoint": { + "type": "string", + "pattern": "^(/(%{([a-zA-Z][a-zA-Z0-9_]*)}|[a-zA-Z][a-zA-Z0-9_]*)){1,64}$", + "minLength": 2, + "maxLength": 256, + "description": "The template of the path. This is a UNIX-like path (e.g. /my/path) and can be parametrized. Parameters are in the %{name} form, and can be used to create interfaces which represent dictionaries of mappings. When the interface aggregation is object, an object is composed by all the mappings for one specific parameter combination. /timestamp is a reserved path for timestamps, so every mapping on a datastream must not have any endpoint that ends with /timestamp." + }, + "type": { + "type": "string", + "enum": [ + "double", + "integer", + "boolean", + "longinteger", + "string", + "binaryblob", + "datetime", + "doublearray", + "integerarray", + "booleanarray", + "longintegerarray", + "stringarray", + "binaryblobarray", + "datetimearray" + ], + "description": "Defines the type of the mapping." + }, + "reliability": { + "type": "string", + "enum": ["unreliable", "guaranteed", "unique"], + "default": "unreliable", + "description": "Useful only with datastream. Defines whether the sent data should be considered delivered when the transport successfully sends the data (unreliable), when we know that the data has been received at least once (guaranteed) or when we know that the data has been received exactly once (unique). unreliable by default. When using reliable data, consider you might incur in additional resource usage on both the transport and the device's end." + }, + "retention": { + "type": "string", + "enum": ["discard", "volatile", "stored"], + "default": "discard", + "description": "Useful only with datastream. Defines whether the sent data should be discarded if the transport is temporarily uncapable of delivering it (discard) or should be kept in a cache in memory (volatile) or on disk (stored), and guaranteed to be delivered in the timeframe defined by the expiry. discard by default." + }, + "expiry": { + "type": "integer", + "default": 0, + "minimum": 0, + "description": "Useful when retention is stored. Defines after how many seconds a specific data entry should be kept before giving up and erasing it from the persistent cache. A value <= 0 means the persistent cache never expires, and is the default." + }, + "database_retention_policy": { + "type": "string", + "enum": ["no_ttl", "use_ttl"], + "default": "no_ttl", + "description": "Useful only with datastream. Defines whether data should expire from the database after a given interval. Valid values are: no_ttl and use_ttl." + }, + "database_retention_ttl": { + "type": "integer", + "minimum": 60, + "maximum": 630719999, + "description": "Useful when database_retention_policy is use_ttl. Defines how many seconds a specific data entry should be kept before erasing it from the database." + }, + "allow_unset": { + "type": "boolean", + "default": false, + "description": "Used only with properties. Used with producers, it generates a method to unset the property. Used with consumers, it generates code to call an unset method when an empty payload is received." + }, + "explicit_timestamp": { + "type": "boolean", + "default": false, + "description": "Allow to set a custom timestamp, otherwise a timestamp is added when the message is received. If true explicit timestamp will also be used for sorting. This feature is only supported on datastreams." + }, + "description": { + "type": "string", + "description": "An optional description of the mapping." + }, + "doc": { + "type": "string", + "description": "A string containing documentation that will be injected in the generated client code." + } + }, + "required": ["endpoint", "type"] + } + }, + "description": "This is a consumer block that takes `data` from incoming `Message`s and publishes it as an Astarte device.", + "properties": { + "pairing_url": { + "description": "Base URL of the Astarte Pairing API instance the devices will connect to. URL containing the API version suffix (i.e. `/v1`) are *deprecated* and will be removed in a future release.", + "title": "Pairing URL", + "type": "string" + }, + "target_devices": { + "description": "A list of supported devices.", + "items": { + "additionalProperties": false, + "properties": { + "credentials_secret": { + "title": "Credentials secret", + "type": "string" + }, + "device_id": { + "title": "Device ID", + "type": "string" + }, + "interfaces": { + "type": "array", + "title": "Interfaces", + "items": { "$ref": "#/definitions/interface" }, + "default": [] + }, + "realm": { + "title": "Realm", + "type": "string" + } + }, + "required": ["credentials_secret", "device_id", "interfaces", "realm"], + "type": "object" + }, + "title": "Target devices", + "type": "array" + } + }, + "required": ["pairing_url", "target_devices"], + "title": "Virtual Device Pool options", + "type": "object" + }, + "type": "consumer" +} diff --git a/astarte-dashboard/src/astarte-client/definitions/index.ts b/astarte-dashboard/src/astarte-client/definitions/index.ts new file mode 100644 index 0000000000..ddc31a8928 --- /dev/null +++ b/astarte-dashboard/src/astarte-client/definitions/index.ts @@ -0,0 +1,21 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import blocks from './blocks'; + +export { blocks }; diff --git a/astarte-dashboard/src/astarte-client/index.ts b/astarte-dashboard/src/astarte-client/index.ts new file mode 100644 index 0000000000..1b0cce918c --- /dev/null +++ b/astarte-dashboard/src/astarte-client/index.ts @@ -0,0 +1,77 @@ +/* + This file is part of Astarte. + + Copyright 2020-2024 SECO Mind Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import AstarteClient from './client'; + +export type { AstarteInterfaceDescriptor } from './client'; + +export { + AstarteCustomBlock, + AstarteNativeBlock, + AstarteDevice, + AstarteFlow, + AstartePipeline, + AstarteInterface, + AstarteMapping, + AstarteRealm, + AstarteToken, + AstarteTrigger, +} from './models'; + +export type { + AstarteTriggerHTTPAction, + AstarteTriggerAMQPAction, + AstarteSimpleDeviceTrigger, + AstarteSimpleDataTrigger, + AstarteSimpleTrigger, +} from './models'; + +export { + AstarteDeviceEvent, + AstarteDeviceConnectedEvent, + AstarteDeviceDisconnectedEvent, + AstarteDeviceRegistrationEvent, + AstarteDeviceDeletionFinishedEvent, + AstarteDeviceDeletionStartedEvent, + AstarteDeviceErrorEvent, + AstarteDeviceIncomingDataEvent, + AstarteDeviceUnsetPropertyEvent, +} from './types/events'; + +export type { AstarteBlock, AstarteDeviceInterfaceStats } from './models'; + +export type { AstarteDataTreeNode, AstarteDataTreeKind } from './transforms'; + +export type { + AstarteBlockType, + AstarteDataType, + AstarteDataTuple, + AstarteDataValue, + AstartePropertyData, + AstarteDatastreamData, + AstarteDatastreamIndividualData, + AstarteDatastreamObjectData, + AstartePropertiesInterfaceValues, + AstarteIndividualDatastreamInterfaceValue, + AstarteIndividualDatastreamInterfaceValues, + AstarteAggregatedDatastreamInterfaceValue, + AstarteAggregatedDatastreamInterfaceValues, + AstarteInterfaceValues, +} from './types'; + +export default AstarteClient; diff --git a/astarte-dashboard/src/astarte-client/models/Block/CustomBlock.ts b/astarte-dashboard/src/astarte-client/models/Block/CustomBlock.ts new file mode 100644 index 0000000000..efa35d9de8 --- /dev/null +++ b/astarte-dashboard/src/astarte-client/models/Block/CustomBlock.ts @@ -0,0 +1,40 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import type { AstarteBlockType, AstarteCustomBlockDTO } from '../../types'; + +export class AstarteCustomBlock { + name: string; + + source: string; + + type: AstarteBlockType; + + schema: Record; + + constructor(block: AstarteCustomBlockDTO) { + this.name = block.name; + this.source = block.source; + this.type = block.type; + this.schema = block.schema; + } + + static fromObject(dto: AstarteCustomBlockDTO): AstarteCustomBlock { + return new AstarteCustomBlock(dto); + } +} diff --git a/astarte-dashboard/src/astarte-client/models/Block/NativeBlock.ts b/astarte-dashboard/src/astarte-client/models/Block/NativeBlock.ts new file mode 100644 index 0000000000..312eb4fd1f --- /dev/null +++ b/astarte-dashboard/src/astarte-client/models/Block/NativeBlock.ts @@ -0,0 +1,40 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import type { AstarteBlockType, AstarteNativeBlockDTO } from '../../types'; + +export class AstarteNativeBlock { + name: string; + + type: AstarteBlockType; + + schema: Record; + + beamModule: string; + + constructor(block: AstarteNativeBlockDTO) { + this.name = block.name; + this.type = block.type; + this.schema = block.schema; + this.beamModule = block.beam_module; + } + + static fromObject(dto: AstarteNativeBlockDTO): AstarteNativeBlock { + return new AstarteNativeBlock(dto); + } +} diff --git a/astarte-dashboard/src/astarte-client/models/Block/index.ts b/astarte-dashboard/src/astarte-client/models/Block/index.ts new file mode 100644 index 0000000000..fd5bc815ba --- /dev/null +++ b/astarte-dashboard/src/astarte-client/models/Block/index.ts @@ -0,0 +1,33 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import { AstarteCustomBlock } from './CustomBlock'; +import { AstarteNativeBlock } from './NativeBlock'; + +import type { AstarteBlockDTO } from '../../types'; + +export type AstarteBlock = AstarteNativeBlock | AstarteCustomBlock; + +export const toAstarteBlock = (dto: AstarteBlockDTO): AstarteBlock => { + if ('beam_module' in dto) { + return AstarteNativeBlock.fromObject(dto); + } + return AstarteCustomBlock.fromObject(dto); +}; + +export { AstarteCustomBlock, AstarteNativeBlock }; diff --git a/astarte-dashboard/src/astarte-client/models/Device/index.ts b/astarte-dashboard/src/astarte-client/models/Device/index.ts new file mode 100644 index 0000000000..025c1af246 --- /dev/null +++ b/astarte-dashboard/src/astarte-client/models/Device/index.ts @@ -0,0 +1,210 @@ +/* eslint-disable no-template-curly-in-string */ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import * as yup from 'yup'; +import _ from 'lodash'; + +export interface AstarteDeviceInterfaceStats { + name: string; + major: number; + minor: number; + exchangedMessages: number; + exchangedBytes: number; +} + +export interface AstarteDeviceObject { + id: string; + + aliases: Map; + + attributes: Map; + + isConnected: boolean; + + introspection: Map; + + totalReceivedMessages: number; + + totalReceivedBytes: number; + + hasCredentialsInhibited: boolean; + + groups: string[]; + + previousInterfaces: AstarteDeviceInterfaceStats[]; + + firstRegistration?: Date; + + firstCredentialsRequest?: Date; + + lastDisconnection?: Date; + + lastConnection?: Date; + + lastSeenIp?: string; + + lastCredentialsRequestIp?: string; + + deletionInProgress: boolean; +} + +const generateMapValidation = + (keySchema: yup.Schema, valueSchema: yup.Schema) => + (obj: unknown) => + _.isMap(obj) && + Array.from(obj.entries()).every( + ([key, value]) => keySchema.isValidSync(key) && valueSchema.isValidSync(value), + ); + +const astarteDeviceInterfaceStatsSchema = yup + .object({ + name: yup.string().required(), + major: yup.number().integer().min(0).required(), + minor: yup.number().integer().min(0).required(), + exchangedMessages: yup.number().integer().min(0).required(), + exchangedBytes: yup.number().integer().min(0).required(), + }) + .required(); + +const astarteDeviceObjectSchema = yup + .object({ + id: yup.string().required(), + aliases: yup + .mixed() + .required() + .test( + 'aliases-values', + '${path} must be a Map of string -> string', + generateMapValidation(yup.string().required(), yup.string().required()), + ), + attributes: yup + .mixed() + .required() + .test( + 'attributes-values', + '${path} must be a Map of string -> string', + generateMapValidation(yup.string().required(), yup.string().required()), + ), + isConnected: yup.boolean().required(), + introspection: yup + .mixed() + .required() + .test( + 'introspection-values', + '${path} must be a Map of string -> interface stats object', + generateMapValidation(yup.string().required(), astarteDeviceInterfaceStatsSchema), + ), + totalReceivedMessages: yup.number().integer().min(0).required(), + totalReceivedBytes: yup.number().integer().min(0).required(), + hasCredentialsInhibited: yup.boolean().required(), + groups: yup.array().of(yup.string().required()).defined(), + // @ts-expect-error TODO update yup and verify its correct typings + previousInterfaces: yup + .array() + .of(astarteDeviceInterfaceStatsSchema) + .defined(), + firstRegistration: yup.date().notRequired(), + firstCredentialsRequest: yup.date().notRequired(), + lastDisconnection: yup.date().notRequired(), + lastConnection: yup.date().notRequired(), + lastSeenIp: yup.string().notRequired(), + lastCredentialsRequestIp: yup.string().notRequired(), + deletionInProgress: yup.boolean().required(), + }) + .required(); + +type AstarteDeviceStatus = 'never_connected' | 'connected' | 'disconnected' | 'in_deletion'; + +export class AstarteDevice { + id: string; + + aliases: Map; + + attributes: Map; + + isConnected: boolean; + + introspection: Map; + + totalReceivedMessages: number; + + totalReceivedBytes: number; + + hasCredentialsInhibited: boolean; + + groups: string[]; + + previousInterfaces: AstarteDeviceInterfaceStats[]; + + firstRegistration?: Date; + + firstCredentialsRequest?: Date; + + lastDisconnection?: Date; + + lastConnection?: Date; + + lastSeenIp?: string; + + lastCredentialsRequestIp?: string; + + deletionInProgress: boolean; + + constructor(obj: AstarteDeviceObject) { + const validatedObj = astarteDeviceObjectSchema.validateSync(obj); + this.id = validatedObj.id; + this.aliases = validatedObj.aliases; + this.attributes = validatedObj.attributes; + this.isConnected = validatedObj.isConnected; + this.introspection = validatedObj.introspection; + this.totalReceivedMessages = validatedObj.totalReceivedMessages; + this.totalReceivedBytes = validatedObj.totalReceivedBytes; + this.hasCredentialsInhibited = validatedObj.hasCredentialsInhibited; + this.groups = validatedObj.groups; + this.previousInterfaces = validatedObj.previousInterfaces; + this.firstRegistration = validatedObj.firstRegistration; + this.firstCredentialsRequest = validatedObj.firstCredentialsRequest; + this.lastDisconnection = validatedObj.lastDisconnection; + this.lastConnection = validatedObj.lastConnection; + this.lastSeenIp = validatedObj.lastSeenIp; + this.lastCredentialsRequestIp = validatedObj.lastCredentialsRequestIp; + this.deletionInProgress = validatedObj.deletionInProgress; + } + + get hasNameAlias(): boolean { + return this.aliases.has('name'); + } + + get name(): string { + if (this.hasNameAlias) { + return this.aliases.get('name') as string; + } + return this.id; + } + + get deviceStatus(): AstarteDeviceStatus { + if (this.deletionInProgress) { + return 'in_deletion'; + } + if (this.lastConnection == null) { + return 'never_connected'; + } + return this.isConnected ? 'connected' : 'disconnected'; + } +} diff --git a/astarte-dashboard/src/astarte-client/models/Flow/index.ts b/astarte-dashboard/src/astarte-client/models/Flow/index.ts new file mode 100644 index 0000000000..6e30fce584 --- /dev/null +++ b/astarte-dashboard/src/astarte-client/models/Flow/index.ts @@ -0,0 +1,39 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import { AstarteFlowDTO } from '../../types'; + +export class AstarteFlow { + name: string; + + pipeline: string; + + config?: Record; + + constructor(flow: AstarteFlowDTO) { + this.name = flow.name; + this.pipeline = flow.pipeline; + if (flow.config != null) { + this.config = flow.config; + } + } + + static fromObject(dto: AstarteFlowDTO): AstarteFlow { + return new AstarteFlow(dto); + } +} diff --git a/astarte-dashboard/src/astarte-client/models/Interface/index.ts b/astarte-dashboard/src/astarte-client/models/Interface/index.ts new file mode 100644 index 0000000000..23fe5528df --- /dev/null +++ b/astarte-dashboard/src/astarte-client/models/Interface/index.ts @@ -0,0 +1,247 @@ +/* eslint-disable max-classes-per-file */ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import * as yup from 'yup'; +import _ from 'lodash'; + +import { AstarteMapping } from '../Mapping'; +import type { AstarteMappingObject } from '../Mapping'; +import { fromAstarteInterfaceDTO, toAstarteInterfaceDTO } from '../../transforms/interface'; +import type { AstarteInterfaceDTO } from '../../types'; + +type AstarteInterfaceJSON = AstarteInterfaceDTO; + +interface AstarteInterfaceObject { + name: string; + + major: number; + + minor: number; + + type: 'properties' | 'datastream'; + + ownership: 'device' | 'server'; + + aggregation?: 'individual' | 'object'; + + description?: string; + + documentation?: string; + + mappings: AstarteMapping[]; +} + +const interfaceNameRegex = + /^([a-zA-Z][a-zA-Z0-9]*\.([a-zA-Z0-9][a-zA-Z0-9-]*\.)*)?[a-zA-Z][a-zA-Z0-9]*$/; +const mappingEndpointPlaceholderRegex = /%{[a-zA-Z]+[a-zA-Z0-9_]*}/; + +const getMappingEndpointPrefix = (endpoint: unknown) => + _.isString(endpoint) ? endpoint.split('/').slice(0, -1).join('/') : ''; + +const isDynamicParameter = (path: string): boolean => path.startsWith('%{') && path.endsWith('}'); + +const checkIfEndpointsOverlap = (firstEndpoint: string, secondEndpoint: string): boolean => { + const partsArray1 = firstEndpoint.split('/').filter((path) => path !== ''); + const partsArray2 = secondEndpoint.split('/').filter((path) => path !== ''); + const minLength = Math.min(partsArray1.length, partsArray2.length); + + for (let i = 0; i < minLength; i += 1) { + if ( + partsArray1[i] !== partsArray2[i] && + !isDynamicParameter(partsArray1[i]) && + !isDynamicParameter(partsArray2[i]) + ) { + return false; + } + } + return true; +}; + +const checkForOverlap = (mappings: AstarteMappingObject[]): boolean => { + for (let i = 0; i < mappings.length; i += 1) { + for (let j = i + 1; j < mappings.length; j += 1) { + if (checkIfEndpointsOverlap(mappings[i].endpoint, mappings[j].endpoint)) { + return true; + } + } + } + return false; +}; + +const checkMappingsUniqueness = (mappings?: AstarteMappingObject[] | null): boolean => { + if (mappings == null || mappings.length === 0) { + return true; + } + const endpoints = mappings.map((mapping) => mapping.endpoint); + const placeholdersRegex = new RegExp(mappingEndpointPlaceholderRegex, 'g'); + const normalizedEndpoints = endpoints.map((mapping) => + mapping.toLowerCase().replace(placeholdersRegex, ''), + ); + if (checkForOverlap(mappings)) { + return false; + } + return _.uniq(normalizedEndpoints).length === endpoints.length; +}; + +const checkMappingsHaveSamePrefix = (mappings?: AstarteMappingObject[] | null): boolean => { + if (mappings == null || mappings.length === 0) { + return true; + } + const endpoints = mappings.map((mapping) => mapping.endpoint); + const endpointsPrefixes = endpoints.map(getMappingEndpointPrefix); + return endpointsPrefixes.every((prefix) => prefix === endpointsPrefixes[0]); +}; + +const checkMappingsHaveSameAttributes = (mappings?: AstarteMappingObject[] | null): boolean => { + if (mappings == null || mappings.length === 0) { + return true; + } + return mappings.every( + (mapping) => + mapping.retention === mappings[0].retention && + mapping.reliability === mappings[0].reliability && + mapping.expiry === mappings[0].expiry && + mapping.allowUnset === mappings[0].allowUnset && + mapping.explicitTimestamp === mappings[0].explicitTimestamp, + ); +}; + +const mappingsValidation = yup + .array(AstarteMapping.validation) + .max(1024) + .defined() + .test('unique-mappings', 'Mappings cannot have conflicting endpoints', checkMappingsUniqueness); + +const astarteInterfaceObjectSchema: yup.ObjectSchema = yup + .object({ + name: yup + .string() + .required() + .max(128) + .matches( + interfaceNameRegex, + 'Interface name has to be an unique, alphanumeric reverse internet domain name, not longer than 128 characters', + ), + major: yup.number().integer().min(0).required(), + minor: yup + .number() + .integer() + .min(0) + .required() + .when('major', { + is: 0, + then: yup.number().integer().min(1).required(), + }), + type: yup.string().oneOf(['properties', 'datastream']).required(), + ownership: yup.string().oneOf(['device', 'server']).required(), + aggregation: yup + .string() + .oneOf(['individual', 'object']) + .when('type', { + is: 'datastream', + then: yup.string().oneOf(['individual', 'object']).notRequired(), + otherwise: yup.string().strip(true), + }), + description: yup.string().max(1000).notRequired(), + documentation: yup.string().max(100000).notRequired(), + mappings: mappingsValidation.when(['type', 'aggregation'], { + is: (type, aggregation) => type === 'datastream' && aggregation === 'object', + then: mappingsValidation + .test( + 'same-prefix-mappings', + 'Mapping endpoints in Object aggregate interfaces must have the same prefix', + checkMappingsHaveSamePrefix, + ) + .test( + 'same-attributes-mappings', + 'Mapping endpoints in Object aggregate interfaces must have the same attributes for retention, reliability, expiry, allowUnset, explicitTimestamp', + checkMappingsHaveSameAttributes, + ), + }), + }) + .required(); + +class AstarteInterface { + name: string; + + major: number; + + minor: number; + + type: 'properties' | 'datastream'; + + ownership: 'device' | 'server'; + + aggregation?: 'individual' | 'object'; + + description?: string; + + documentation?: string; + + mappings: AstarteMapping[]; + + constructor(obj: AstarteInterfaceObject) { + const validatedObj = AstarteInterface.validation.validateSync(obj, { abortEarly: false }); + this.name = validatedObj.name; + this.major = validatedObj.major; + this.minor = validatedObj.minor; + this.type = validatedObj.type; + this.ownership = validatedObj.ownership; + if (validatedObj.type === 'datastream') { + this.aggregation = validatedObj.aggregation || 'individual'; + } + this.description = validatedObj.description; + this.documentation = validatedObj.documentation; + this.mappings = validatedObj.mappings.map((mapping) => + validatedObj.type === 'datastream' + ? new AstarteMapping({ + ...mapping, + ...(validatedObj.ownership === 'device' && { + explicitTimestamp: mapping.explicitTimestamp || false, + }), + reliability: mapping.reliability || 'unreliable', + retention: mapping.retention || 'discard', + expiry: mapping.expiry || 0, + databaseRetentionPolicy: mapping.databaseRetentionPolicy || 'no_ttl', + }) + : new AstarteMapping({ + ...mapping, + allowUnset: mapping.allowUnset || false, + }), + ); + } + + static findEndpointMapping(iface: AstarteInterface, endpoint: string): AstarteMapping | null { + return iface.mappings.find((m) => AstarteMapping.matchEndpoint(m.endpoint, endpoint)) || null; + } + + static validation = astarteInterfaceObjectSchema; + + static fromJSON(json: AstarteInterfaceJSON): AstarteInterface { + return fromAstarteInterfaceDTO(json); + } + + static toJSON(iface: AstarteInterface): AstarteInterfaceJSON { + return toAstarteInterfaceDTO(iface); + } +} + +export type { AstarteInterfaceObject }; + +export { AstarteInterface, interfaceNameRegex }; diff --git a/astarte-dashboard/src/astarte-client/models/InterfaceValue/index.ts b/astarte-dashboard/src/astarte-client/models/InterfaceValue/index.ts new file mode 100644 index 0000000000..99985b2062 --- /dev/null +++ b/astarte-dashboard/src/astarte-client/models/InterfaceValue/index.ts @@ -0,0 +1,136 @@ +/* +This file is part of Astarte. + +Copyright 2024 SECO Mind Srl + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +import * as yup from 'yup'; + +const base64Regex = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/; +const iso8601Regex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/; + +const getValidationSchema = (type: string) => { + switch (type) { + case 'integer': + return yup + .number() + .integer('The value must be an integer.') + .max(2147483647, 'The value is too large.') + .required('This field is required and must be an integer.') + .typeError('The value must be an integer.'); + case 'longinteger': + return yup + .number() + .test('is-safe-integer', 'The value is too large.', (value) => Number.isSafeInteger(value)) + .required('This field is required and must be a long integer.') + .typeError('The value must be a long integer.'); + case 'double': + return yup + .number() + .required('This field is required and must be a decimal number.') + .typeError('The value must be a decimal number.'); + case 'boolean': + return yup + .boolean() + .required('This field is required and must be true or false.') + .typeError('The value must be either true or false.'); + case 'string': + return yup + .string() + .required('This field is required and must be a string.') + .typeError('The value must be a valid string.'); + case 'binaryblob': + return yup + .string() + .matches(base64Regex, 'The value must be a valid binary blob encoded.') + .required('This field is required and must be a binary blob.') + .typeError('The value must be a valid binary blob.'); + case 'datetime': + return yup + .string() + .matches(iso8601Regex, 'The date must be in the format "YYYY-MM-DDTHH:mm:ss.sssZ".') + .required('This field is required and must be a valid datetime.') + .typeError('The value must be a valid datetime.'); + case 'doublearray': + return yup + .array() + .of(yup.number().typeError('Each item in the array must be a valid decimal number.')) + .required('This field is required and must be an array of decimal numbers.') + .typeError('Each item in the array must be a valid decimal number.'); + case 'integerarray': + return yup + .array() + .of( + yup + .number() + .integer('Each item in the array must be a valid integer.') + .max(2147483647, 'The value is too large.') + .typeError('Each item in the array must be a valid integer.'), + ) + .required('This field is required and must be an array of integers.') + .typeError('Each item in the array must be a valid integer.'); + case 'longintegerarray': + return yup + .array() + .of( + yup + .number() + .test('is-safe-integer', 'The value is too large.', (value) => + Number.isSafeInteger(value), + ) + .typeError('Each item in the array must be a long integer.'), + ) + .required('This field is required and must be an array of long integers.') + .typeError('Each item in the array must be a long integer.'); + case 'booleanarray': + return yup + .array() + .of(yup.boolean().typeError('Each item in the array must be either true or false.')) + .required('This field is required and must be an array of booleans.') + .typeError('Each item in the array must be either true or false.'); + case 'stringarray': + return yup + .array() + .of(yup.string().typeError('Each item in the array must be a valid string.')) + .required('This field is required and must be an array of strings.') + .typeError('Each item in the array must be a valid string.'); + case 'binaryblobarray': + return yup + .array() + .of( + yup + .string() + .matches(base64Regex, 'Each item must be a valid binary blob encoded.') + .typeError('Each item in the array must be a valid binary blob.'), + ) + .required('This field is required and must be an array of binary blobs.') + .typeError('Each item in the array must be a valid binary blob.'); + case 'datetimearray': + return yup + .array() + .of( + yup + .string() + .matches(iso8601Regex, 'Each item must be in the format "YYYY-MM-DDTHH:mm:ss.sssZ".') + .typeError('Each item in the array must be a valid datetime string.'), + ) + .required('This field is required and must be an array of datetime strings.') + .typeError('Each item in the array must be a valid datetime string.'); + default: + return yup.string().required('This field is required.'); + } +}; + +export { getValidationSchema }; diff --git a/astarte-dashboard/src/astarte-client/models/Mapping/index.ts b/astarte-dashboard/src/astarte-client/models/Mapping/index.ts new file mode 100644 index 0000000000..77a8b34fbd --- /dev/null +++ b/astarte-dashboard/src/astarte-client/models/Mapping/index.ts @@ -0,0 +1,172 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import * as yup from 'yup'; +import _ from 'lodash'; + +import { fromAstarteMappingDTO, toAstarteMappingDTO } from '../../transforms/mapping'; +import type { AstarteMappingDTO, AstarteDataType } from '../../types'; + +type AstarteMappingJSON = AstarteMappingDTO; + +interface AstarteMappingObject { + endpoint: string; + + type: AstarteDataType; + + reliability?: 'unreliable' | 'guaranteed' | 'unique'; + + retention?: 'discard' | 'volatile' | 'stored'; + + expiry?: number; + + databaseRetentionPolicy?: 'no_ttl' | 'use_ttl'; + + databaseRetentionTtl?: number; + + allowUnset?: boolean; + + explicitTimestamp?: boolean; + + description?: string; + + documentation?: string; +} + +const mappingEndpointRegex = /^(\/(%{([a-zA-Z][a-zA-Z0-9_]*)}|[a-zA-Z][a-zA-Z0-9_]*)){1,64}$/; +const mappingEndpointParamRegex = /^%{([a-zA-Z][a-zA-Z0-9_]*)}$/; +const mappingEndpointPathParamsRegex = /%\{(.+?)\}/g; + +const astarteDataTypes: AstarteDataType[] = [ + 'string', + 'boolean', + 'double', + 'integer', + 'longinteger', + 'binaryblob', + 'datetime', + 'doublearray', + 'integerarray', + 'booleanarray', + 'longintegerarray', + 'stringarray', + 'binaryblobarray', + 'datetimearray', +]; + +const astarteMappingObjectSchema: yup.ObjectSchema = yup + .object({ + endpoint: yup + .string() + .required() + .matches( + mappingEndpointRegex, + 'Interface endpoint must be a UNIX-like path (e.g. /my/path), with optional parameters in the %{name} form', + ), + type: yup.string().required().oneOf(astarteDataTypes), + reliability: yup.string().oneOf(['unreliable', 'guaranteed', 'unique']).notRequired(), + retention: yup.string().oneOf(['discard', 'volatile', 'stored']).notRequired(), + expiry: yup.number().integer().min(0).notRequired(), + databaseRetentionPolicy: yup.string().oneOf(['no_ttl', 'use_ttl']).notRequired(), + databaseRetentionTtl: yup + .number() + .integer() + .min(60) + .lessThan(20 * 365 * 24 * 60 * 60) + .notRequired(), + allowUnset: yup.boolean().notRequired(), + explicitTimestamp: yup.boolean().notRequired(), + description: yup.string().max(1000).notRequired(), + documentation: yup.string().max(100000).notRequired(), + }) + .required(); + +const isEndpointParam = (endpointPart?: string) => + endpointPart == null ? false : mappingEndpointParamRegex.test(endpointPart); + +const matchEndpointPart = ([part1, part2]: [string | undefined, string | undefined]) => + part1 === part2 || isEndpointParam(part1) || isEndpointParam(part2); + +class AstarteMapping { + endpoint: string; + + type: AstarteDataType; + + reliability?: 'unreliable' | 'guaranteed' | 'unique'; + + retention?: 'discard' | 'volatile' | 'stored'; + + expiry?: number; + + databaseRetentionPolicy?: 'no_ttl' | 'use_ttl'; + + databaseRetentionTtl?: number; + + allowUnset?: boolean; + + explicitTimestamp?: boolean; + + description?: string; + + documentation?: string; + + constructor(obj: AstarteMappingObject) { + const validatedObj = AstarteMapping.validation.validateSync(obj, { abortEarly: false }); + this.endpoint = validatedObj.endpoint; + this.type = validatedObj.type; + this.reliability = validatedObj.reliability; + this.retention = validatedObj.retention; + this.expiry = validatedObj.expiry; + this.databaseRetentionPolicy = validatedObj.databaseRetentionPolicy; + this.databaseRetentionTtl = validatedObj.databaseRetentionTtl; + this.allowUnset = validatedObj.allowUnset; + this.explicitTimestamp = validatedObj.explicitTimestamp; + this.description = validatedObj.description; + this.documentation = validatedObj.documentation; + } + + static matchEndpoint(endpoint1: string, endpoint2: string): boolean { + return _.zip(endpoint1.split('/'), endpoint2.split('/')).every(matchEndpointPart); + } + + static validation = astarteMappingObjectSchema; + + static fromJSON(json: AstarteMappingJSON): AstarteMapping { + return fromAstarteMappingDTO(json); + } + + static toJSON(mapping: AstarteMapping): AstarteMappingJSON { + return toAstarteMappingDTO(mapping); + } + + static getEndpointParameters(endpoint: string): string[] { + const pathParamsArray: string[] = []; + const endpointParams = endpoint.match(mappingEndpointPathParamsRegex); + if (endpointParams) { + endpointParams.forEach((param) => { + const paramName = param.slice(2, -1); + pathParamsArray.push(paramName); + }); + } + return pathParamsArray; + } +} + +export type { AstarteMappingObject }; + +export { AstarteMapping, mappingEndpointRegex }; diff --git a/astarte-dashboard/src/astarte-client/models/Pipeline/index.ts b/astarte-dashboard/src/astarte-client/models/Pipeline/index.ts new file mode 100644 index 0000000000..10e671c685 --- /dev/null +++ b/astarte-dashboard/src/astarte-client/models/Pipeline/index.ts @@ -0,0 +1,50 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import validation from './validation'; + +export class AstartePipeline { + name: string; + + description: string; + + schema: Record; + + source: string; + + constructor(obj: AstartePipeline) { + const pipelineValidation = validation.validatePipeline(obj); + if (!pipelineValidation.isValid) { + throw new Error(pipelineValidation.errors.join('\n')); + } + this.name = obj.name; + this.description = obj.description; + this.schema = obj.schema; + this.source = obj.source; + } + + static validatePipeline = validation.validatePipeline; + + static validatePipelineName = validation.validatePipelineName; + + static validatePipelineDescription = validation.validatePipelineDescription; + + static validatePipelineSchema = validation.validatePipelineSchema; + + static validatePipelineSource = validation.validatePipelineSource; +} diff --git a/astarte-dashboard/src/astarte-client/models/Pipeline/validation.ts b/astarte-dashboard/src/astarte-client/models/Pipeline/validation.ts new file mode 100644 index 0000000000..e9115b72bf --- /dev/null +++ b/astarte-dashboard/src/astarte-client/models/Pipeline/validation.ts @@ -0,0 +1,99 @@ +/* + This file is part of Astarte. + Copyright 2020 Ispirata Srl + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import _ from 'lodash'; + +import { AstartePipeline } from './index'; +import type { AstarteValidationResult, AstarteValidationResults } from '../../types'; + +const validatePipelineName = (name: AstartePipeline['name']): AstarteValidationResult => { + let error; + let warning; + const isValid = _.isString(name); + if (!isValid) { + error = 'Pipeline name must be a string'; + } + return { isValid, error, warning }; +}; + +const validatePipelineDescription = ( + description: AstartePipeline['description'], +): AstarteValidationResult => { + let error; + let warning; + const isValid = _.isString(description); + if (!isValid) { + error = 'Pipeline description must be a string'; + } + return { isValid, error, warning }; +}; + +const validatePipelineSchema = (schema: AstartePipeline['schema']): AstarteValidationResult => { + let error; + let warning; + const isValid = _.isPlainObject(schema); + if (!isValid) { + error = 'Pipeline schema must be a string'; + } + return { isValid, error, warning }; +}; + +const validatePipelineSource = (source: AstartePipeline['source']): AstarteValidationResult => { + let error; + let warning; + const isValid = _.isString(source); + if (!isValid) { + error = 'Pipeline source must be a string'; + } + return { isValid, error, warning }; +}; + +const validatePipeline = (pipeline: AstartePipeline): AstarteValidationResults => { + const validation: AstarteValidationResults = { + isValid: true, + errors: [], + warnings: [], + properties: {}, + }; + validation.properties.name = validatePipelineName(pipeline.name); + validation.properties.description = validatePipelineDescription(pipeline.description); + validation.properties.schema = validatePipelineSchema(pipeline.schema); + validation.properties.source = validatePipelineSource(pipeline.source); + + Object.values(validation.properties).forEach((property) => { + if (!property.isValid) { + validation.isValid = false; + } + if (property.error) { + validation.errors.push(property.error); + } + if (property.warning) { + validation.warnings.push(property.warning); + } + }); + + if (!validation.isValid && validation.errors.length === 0) { + validation.errors.push('Pipeline is not valid'); + } + + return validation; +}; + +export default { + validatePipeline, + validatePipelineName, + validatePipelineDescription, + validatePipelineSchema, + validatePipelineSource, +}; diff --git a/astarte-dashboard/src/astarte-client/models/Policy/index.ts b/astarte-dashboard/src/astarte-client/models/Policy/index.ts new file mode 100644 index 0000000000..0edaa41e27 --- /dev/null +++ b/astarte-dashboard/src/astarte-client/models/Policy/index.ts @@ -0,0 +1,125 @@ +/* +This file is part of Astarte. + +Copyright 2023 SECO Mind Srl + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +/* eslint-disable camelcase */ + +import * as yup from 'yup'; +import { AstarteTriggerDeliveryPolicyHandlerDTO } from 'astarte-client/types/dto'; + +import _ from 'lodash'; + +interface AstarteTriggerDeliveryPolicyObject { + name: string; + error_handlers: AstarteTriggerDeliveryPolicyHandlerDTO[]; + retry_times?: number; + maximum_capacity: number; + event_ttl?: number; +} + +const isOnFieldEqual = ( + on1: AstarteTriggerDeliveryPolicyHandlerDTO['on'], + on2: AstarteTriggerDeliveryPolicyHandlerDTO['on'], +) => { + if (typeof on1 === 'string') { + return on1 === on2; + } + if (typeof on2 === 'string') { + return false; + } + return on1.some((customError) => on2.includes(customError)); +}; + +const AstarteTriggerDeliveryPolicyHandlerDTOSchema = yup.object().shape({ + on: yup + .mixed() + .test( + 'is-valid-on', + 'Invalid On field. Must be "client_error" | "server_error" | "any_error" | [ (400-599)]!', + (value) => { + if ( + typeof value === 'string' && + ['any_error', 'client_error', 'server_error'].includes(value) + ) { + return true; + } + if (Array.isArray(value) && value.length > 0) { + const uniqueValues: Set = new Set(value); + return ( + uniqueValues.size === value.length && + value.every((item) => Number.isInteger(item) && item >= 400 && item < 600) + ); + } + return false; + }, + ) + .required('on is required'), + strategy: yup.mixed().oneOf(['discard', 'retry']).required(), +}); + +const policySchema = yup.object().shape({ + name: yup.string().required().min(1).max(128), + error_handlers: yup + .array() + .of(AstarteTriggerDeliveryPolicyHandlerDTOSchema) + .test('unique-on', 'On field must be unique between error handlers', (value) => { + const handlers = (value || []) as AstarteTriggerDeliveryPolicyHandlerDTO[]; + const onFields = handlers.map((handler) => handler.on); + const uniqueOnFields = _.uniqWith(onFields, isOnFieldEqual); + return onFields.length === uniqueOnFields.length; + }) + .required(), + retry_times: yup + .number() + .integer() + .when('error_handlers', { + is: (errorHandlers) => + errorHandlers.some((e: AstarteTriggerDeliveryPolicyHandlerDTO) => e.strategy === 'retry'), + then: yup.number().integer().min(1).max(100).required(), + otherwise: yup.number().integer().max(0).default(0), + }), + maximum_capacity: yup.number().integer().min(1).required(), + event_ttl: yup.number().integer().min(0).max(86400), +}); + +class AstarteTriggerDeliveryPolicy { + name: string; + + error_handlers: AstarteTriggerDeliveryPolicyHandlerDTO[]; + + maximum_capacity: number; + + retry_times?: number; + + event_ttl?: number; + + constructor(obj: AstarteTriggerDeliveryPolicyObject) { + const validatedObj = AstarteTriggerDeliveryPolicy.validation.validateSync(obj, { + abortEarly: false, + }) as AstarteTriggerDeliveryPolicyObject; + this.name = validatedObj.name; + this.error_handlers = validatedObj.error_handlers; + this.maximum_capacity = validatedObj.maximum_capacity; + this.retry_times = validatedObj.retry_times; + this.event_ttl = validatedObj.event_ttl; + } + + static validation = policySchema; +} + +export type { AstarteTriggerDeliveryPolicyObject }; + +export { AstarteTriggerDeliveryPolicy }; diff --git a/astarte-dashboard/src/astarte-client/models/Realm/index.ts b/astarte-dashboard/src/astarte-client/models/Realm/index.ts new file mode 100644 index 0000000000..13bde5245b --- /dev/null +++ b/astarte-dashboard/src/astarte-client/models/Realm/index.ts @@ -0,0 +1,26 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +const isValidRealmName = (name: string): boolean => + RegExp('^[a-z][a-z0-9]{0,47}$').test(name) && + !name.startsWith('astarte') && + !name.startsWith('system'); + +export const AstarteRealm = { + isValidName: isValidRealmName, +}; diff --git a/astarte-dashboard/src/astarte-client/models/Token/index.ts b/astarte-dashboard/src/astarte-client/models/Token/index.ts new file mode 100644 index 0000000000..5779abd444 --- /dev/null +++ b/astarte-dashboard/src/astarte-client/models/Token/index.ts @@ -0,0 +1,142 @@ +/* eslint-disable camelcase */ +/* + This file is part of Astarte. + + Copyright 2020-24 SECO Mind Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import RSA from 'jsrsasign'; +import * as yup from 'yup'; + +interface AstarteTokenObject { + exp?: number; + iat?: number; + iss?: string; + a_aea?: string[]; + a_ch?: string[]; + a_f?: string[]; + a_ha?: string[]; + a_pa?: string[]; + a_rma?: string[]; +} + +const channelsClaimRegex = /^(?JOIN|WATCH|\.\*)::(?.+)$/; +const httpClaimRegex = /^(?DELETE|GET|PATCH|POST|PUT|\.\*)::(?.+)$/; + +type ChannelsAction = 'JOIN' | 'WATCH'; +type HTTPAction = 'DELETE' | 'GET' | 'PATCH' | 'POST' | 'PUT'; + +type Claim = { + action: RegExp; + resource: RegExp; +}; + +type Claims = { + appEngine: Claim[]; + channels: Claim[]; + flow: Claim[]; + houseKeeping: Claim[]; + pairing: Claim[]; + realmManagement: Claim[]; +}; + +const parseClaim = (claimRegex: RegExp, claim: string): Claim => { + const { + // @ts-expect-error incorrect type for RegExp.exec + groups: { action, resource }, + } = claimRegex.exec(claim); + return { + action: new RegExp(action), + resource: new RegExp(resource), + }; +}; + +const astarteTokenObjectSchema: yup.ObjectSchema = yup + .object({ + exp: yup.number().integer().min(0).notRequired(), + iat: yup.number().integer().min(0).notRequired(), + iss: yup.string().notRequired(), + a_aea: yup.array(yup.string().required().matches(httpClaimRegex)), + a_ch: yup.array(yup.string().required().matches(channelsClaimRegex)), + a_f: yup.array(yup.string().required().matches(httpClaimRegex)), + a_ha: yup.array(yup.string().required().matches(httpClaimRegex)), + a_pa: yup.array(yup.string().required().matches(httpClaimRegex)), + a_rma: yup.array(yup.string().required().matches(httpClaimRegex)), + }) + .required(); + +export class AstarteToken { + private $claims: Claims; + + private $expirationDate: Date | null; + + private $issueDate: Date | null; + + private $issuer: string | null; + + constructor(encodedToken: string) { + const tokenPayload = RSA.KJUR.jws.JWS.readSafeJSONString( + RSA.b64utoutf8(encodedToken.split('.')[1]), + ); + const tokenObj: AstarteTokenObject = astarteTokenObjectSchema.validateSync(tokenPayload); + this.$expirationDate = tokenObj.exp ? new Date(tokenObj.exp * 1000) : null; + this.$issueDate = tokenObj.iat ? new Date(tokenObj.iat * 1000) : null; + this.$issuer = tokenObj.iss || null; + this.$claims = { + appEngine: (tokenObj.a_aea || []).map((claim) => parseClaim(httpClaimRegex, claim)), + channels: (tokenObj.a_ch || []).map((claim) => parseClaim(channelsClaimRegex, claim)), + flow: (tokenObj.a_f || []).map((claim) => parseClaim(httpClaimRegex, claim)), + houseKeeping: (tokenObj.a_ha || []).map((claim) => parseClaim(httpClaimRegex, claim)), + pairing: (tokenObj.a_pa || []).map((claim) => parseClaim(httpClaimRegex, claim)), + realmManagement: (tokenObj.a_rma || []).map((claim) => parseClaim(httpClaimRegex, claim)), + }; + } + + can(service: keyof Claims, action: ChannelsAction | HTTPAction, resource: string): boolean { + return this.$claims[service].some( + (claim) => claim.action.test(action) && claim.resource.test(resource), + ); + } + + get hasAstarteClaims(): boolean { + return Object.values(this.$claims).some((serviceClaims) => serviceClaims.length > 0); + } + + get isExpired(): boolean { + return this.$expirationDate != null && this.$expirationDate <= new Date(); + } + + get isValid(): boolean { + return !this.isExpired && this.hasAstarteClaims; + } + + static validate(encodedToken: string): 'valid' | 'expired' | 'noAstarteClaims' | 'invalid' { + try { + const token = new AstarteToken(encodedToken); + if (token.isValid) { + return 'valid'; + } + if (token.isExpired) { + return 'expired'; + } + if (!token.hasAstarteClaims) { + return 'noAstarteClaims'; + } + return 'invalid'; + } catch { + return 'invalid'; + } + } +} diff --git a/astarte-dashboard/src/astarte-client/models/Trigger/index.ts b/astarte-dashboard/src/astarte-client/models/Trigger/index.ts new file mode 100644 index 0000000000..89b120c1e4 --- /dev/null +++ b/astarte-dashboard/src/astarte-client/models/Trigger/index.ts @@ -0,0 +1,424 @@ +/* eslint-disable no-template-curly-in-string */ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import * as yup from 'yup'; +import _ from 'lodash'; + +import { AstarteInterface, interfaceNameRegex } from '../Interface'; +import { AstarteMapping, mappingEndpointRegex } from '../Mapping'; +import { fromAstarteTriggerDTO, toAstarteTriggerDTO } from '../../transforms/trigger'; +import type { AstarteTriggerDTO } from '../../types'; + +type AstarteTriggerJSON = AstarteTriggerDTO; + +interface AstarteTriggerHTTPActionObject { + httpUrl: string; + httpMethod: 'delete' | 'get' | 'head' | 'options' | 'patch' | 'post' | 'put'; + httpStaticHeaders?: { + [headerName: string]: string; + }; + ignoreSslErrors?: boolean; + templateType?: 'mustache'; + template?: string; +} + +interface AstarteTriggerAMQPActionObject { + amqpExchange: string; + amqpRoutingKey?: string; + amqpStaticHeaders?: { + [headerName: string]: string; + }; + amqpMessageExpirationMilliseconds: number; + amqpMessagePriority?: number; + amqpMessagePersistent: boolean; +} + +interface AstarteSimpleDeviceTriggerObject { + type: 'device_trigger'; + on: + | 'device_disconnected' + | 'device_connected' + | 'device_registered' + | 'device_deletion_finished' + | 'device_deletion_started' + | 'device_error' + | 'device_empty_cache_received'; + deviceId?: string; + groupName?: string; +} + +interface AstarteSimpleDataTriggerObject { + type: 'data_trigger'; + on: + | 'incoming_data' + | 'value_change' + | 'value_change_applied' + | 'path_created' + | 'path_removed' + | 'value_stored'; + deviceId?: string; + groupName?: string; + interfaceName: string; + interfaceMajor?: number; + matchPath: string; + valueMatchOperator: '*' | '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains'; + knownValue?: string | number | boolean; +} + +type AstarteSimpleTriggerObject = AstarteSimpleDeviceTriggerObject | AstarteSimpleDataTriggerObject; + +interface AstarteTriggerObject { + name: string; + action: AstarteTriggerHTTPActionObject | AstarteTriggerAMQPActionObject; + simpleTriggers: AstarteSimpleTriggerObject[]; + policy?: string | null; +} + +const reservedHttpHeaders = [ + 'connection', + 'content-length', + 'date', + 'host', + 'te', + 'upgrade', + 'x-forwarded-for', + 'x-forwarded-host', + 'x-forwarded-proto', + 'sec-websocket-accept', + 'proxy-authorization', + 'proxy-authenticate', +]; + +const getAmqpExchangeRegex = (realm?: string | null) => + realm + ? new RegExp(`^astarte_events_${realm}_[a-zA-Z0-9_\\.\\:]+$`) + : /^astarte_events_[a-zA-Z0-9]+_[a-zA-Z0-9_.:]+$/; + +const amqpRoutingKeyRegex = /^[^{}]+$/; + +const generateObjectValidation = + (keySchema: yup.Schema, valueSchema: yup.Schema) => + (obj: unknown) => { + if (_.isUndefined(obj)) { + return true; + } + return ( + _.isObject(obj) && + _.isPlainObject(obj) && + Object.entries(obj).every( + ([key, value]) => keySchema.isValidSync(key) && valueSchema.isValidSync(value), + ) + ); + }; + +const astarteTriggerHttpActionObjectSchema: yup.ObjectSchema = yup + .object({ + httpUrl: yup.string().min('http://a'.length).max(8192).required(), + httpMethod: yup + .string() + .oneOf(['delete', 'get', 'head', 'options', 'patch', 'post', 'put']) + .required(), + httpStaticHeaders: yup + .mixed>() + .test( + 'http-static-headers', + '${path} must be an Object of string -> string', + generateObjectValidation( + yup + .string() + .required() + .test( + 'reserved-http-headers', + '${path} cannot be a reserved HTTP header', + (headerName) => !reservedHttpHeaders.includes((headerName || '').toLowerCase()), + ), + yup.string(), + ), + ) + .notRequired(), + ignoreSslErrors: yup.boolean().notRequired(), + templateType: yup.string().oneOf(['mustache']).notRequired(), + template: yup.string().when('templateType', { + is: 'mustache', + then: yup + .string() + .max(1024 * 1024) + .required(), + otherwise: yup.string().strip(true), + }), + }) + .required(); + +const astarteTriggerAmqpActionObjectSchema: yup.ObjectSchema = yup + .object({ + amqpExchange: yup + .string() + .max(255) + .required() + .when('$realm', (realm?: string | null) => + yup + .string() + .matches( + getAmqpExchangeRegex(realm), + `\${path} must have astarte_events_${ + realm || '' + }_ format`, + ), + ), + amqpRoutingKey: yup + .string() + .matches(amqpRoutingKeyRegex, '${path} must not contain { and }') + .notRequired(), + amqpStaticHeaders: yup + .mixed>() + .test( + 'amqp-static-headers', + '${path} must be an Object of string -> string', + generateObjectValidation(yup.string().required(), yup.string()), + ) + .notRequired(), + amqpMessageExpirationMilliseconds: yup.number().integer().positive().required(), + amqpMessagePriority: yup.number().integer().min(0).max(9).notRequired(), + amqpMessagePersistent: yup.boolean().required(), + }) + .required(); + +const astarteTriggerActionObjectSchema = yup.lazy((action) => { + if ('httpUrl' in (action as AstarteTriggerHTTPActionObject | AstarteTriggerAMQPActionObject)) { + return astarteTriggerHttpActionObjectSchema; + } + return astarteTriggerAmqpActionObjectSchema; +}); + +const astarteSimpleDeviceTriggerObjectSchema: yup.ObjectSchema = + yup + .object({ + type: yup.string().oneOf(['device_trigger']).required(), + on: yup + .string() + .oneOf([ + 'device_disconnected', + 'device_connected', + 'device_registered', + 'device_deletion_finished', + 'device_deletion_started', + 'device_error', + 'device_empty_cache_received', + ]) + .required(), + deviceId: yup.string().notRequired(), + groupName: yup + .string() + .notRequired() + .when('deviceId', (deviceId: unknown, schema: yup.StringSchema) => + deviceId != null ? schema.strip(true) : schema, + ), + }) + .required(); + +const astarteSimpleDataTriggerObjectSchema: yup.ObjectSchema = yup + .object({ + type: yup.string().oneOf(['data_trigger']).required(), + on: yup + .string() + .oneOf([ + 'incoming_data', + 'value_change', + 'value_change_applied', + 'path_created', + 'path_removed', + 'value_stored', + ]) + .required(), + deviceId: yup.string().notRequired(), + groupName: yup + .string() + .notRequired() + .when('deviceId', (deviceId: unknown, schema: yup.StringSchema) => + deviceId != null ? schema.strip(true) : schema, + ), + interfaceName: yup + .string() + .test( + 'interface-name', + '${path} must be either * or a valid interface name', + (interfaceName) => + interfaceName != null && + (interfaceName === '*' || interfaceNameRegex.test(interfaceName)), + ) + .required(), + interfaceMajor: yup.number().integer().min(0).notRequired(), + matchPath: yup + .string() + .test( + 'match-path', + '${path} must be either /* or a valid interface mapping path', + (matchPath) => + matchPath != null && (matchPath === '/*' || mappingEndpointRegex.test(matchPath)), + ) + // TODO: this is a workaround to a data updater plant limitation + // see also https://github.com/astarte-platform/astarte/issues/513 + .when('on', (on: AstarteSimpleDataTriggerObject['on'], schema: yup.StringSchema) => + schema.test( + 'match-path-limit-for-value-changed', + `\${path} cannot be /* for value_change or value_change_applied triggers`, + (matchPath) => + matchPath !== '/*' || !['value_change', 'value_change_applied'].includes(on), + ), + ) + .required() + .when( + ['$interface', 'on', 'valueMatchOperator'], + ( + iface: AstarteInterface | null, + on: AstarteSimpleDataTriggerObject['on'], + valueMatchOperator: AstarteSimpleDataTriggerObject['valueMatchOperator'], + schema: yup.StringSchema, + ) => + iface == null + ? schema + : schema + .test( + 'match-path-of-interface', + `\${path} must be either /* or a valid mapping path for interface ${iface.name} v${iface.major}.${iface.minor}`, + (matchPath) => { + if (!matchPath) { + return false; + } + if (matchPath === '/*') { + return true; + } + return iface.mappings.some((m) => + AstarteMapping.matchEndpoint(m.endpoint, matchPath), + ); + }, + ) + // TODO: this is a workaround to for the issue https://github.com/astarte-platform/astarte/issues/523 + .test( + 'match-path-limit-for-datastream-object-interfaces', + `only incoming_data triggers with /* path and * operator are supported for datastream object interfaces`, + (matchPath) => + iface.aggregation !== 'object' || + (on === 'incoming_data' && valueMatchOperator === '*' && matchPath === '/*'), + ), + ), + valueMatchOperator: yup + .string() + .oneOf(['*', '==', '!=', '>', '>=', '<', '<=', 'contains', 'not_contains']) + .required(), + knownValue: yup + .mixed() + .when( + ['matchPath', 'valueMatchOperator', '$interface'], + ( + matchPath: string | undefined, + valueMatchOperator: string | undefined, + iface: AstarteInterface | null, + ) => { + if (!matchPath) { + return yup.mixed().strip(true); + } + if (!iface) { + return yup.mixed(); + } + const matchMapping = iface.mappings.find((m) => + AstarteMapping.matchEndpoint(m.endpoint, matchPath), + ); + const ifacePathType = matchMapping ? matchMapping.type : null; + let schema: yup.StringSchema | yup.NumberSchema | yup.BooleanSchema = yup.string< + string | undefined + >(); + if (!ifacePathType) { + schema = yup.string(); + } else if (['boolean', 'booleanarray'].includes(ifacePathType)) { + schema = yup.boolean(); + } else if (['double', 'doublearray'].includes(ifacePathType)) { + schema = yup.number(); + } else if (['integer', 'integerarray'].includes(ifacePathType)) { + schema = yup.number().integer(); + } + return valueMatchOperator === '*' ? schema.strip(true) : schema.required(); + }, + ), + }) + .required(); + +const astarteSimpleTriggerObjectSchema = yup.lazy((simpleTrigger) => { + if (_.get(simpleTrigger, 'type') === 'device_trigger') { + return astarteSimpleDeviceTriggerObjectSchema; + } + return astarteSimpleDataTriggerObjectSchema; +}); + +const astarteTriggerObjectSchema: yup.ObjectSchema = yup + .object({ + name: yup.string().required(), + action: astarteTriggerActionObjectSchema, + simpleTriggers: yup.array(astarteSimpleTriggerObjectSchema).required(), + policy: yup.string().nullable(), + }) + .required(); + +type AstarteTriggerHTTPAction = AstarteTriggerHTTPActionObject; +type AstarteTriggerAMQPAction = AstarteTriggerAMQPActionObject; +type AstarteSimpleDeviceTrigger = AstarteSimpleDeviceTriggerObject; +type AstarteSimpleDataTrigger = AstarteSimpleDataTriggerObject; +type AstarteSimpleTrigger = AstarteSimpleDeviceTrigger | AstarteSimpleDataTrigger; + +class AstarteTrigger { + name: string; + + action: AstarteTriggerHTTPAction | AstarteTriggerAMQPAction; + + simpleTriggers: AstarteSimpleTrigger[]; + + policy?: string; + + constructor(obj: AstarteTriggerObject) { + const validatedObj = AstarteTrigger.validation.validateSync(obj, { abortEarly: false }); + this.name = validatedObj.name; + this.action = validatedObj.action; + this.simpleTriggers = validatedObj.simpleTriggers; + if (validatedObj.policy) { + this.policy = validatedObj.policy; + } + } + + static validation = astarteTriggerObjectSchema; + + static fromJSON(json: AstarteTriggerJSON): AstarteTrigger { + return fromAstarteTriggerDTO(json); + } + + static toJSON(trigger: AstarteTrigger): AstarteTriggerJSON { + return toAstarteTriggerDTO(trigger); + } +} + +export type { + AstarteTriggerHTTPActionObject, + AstarteTriggerAMQPActionObject, + AstarteTriggerHTTPAction, + AstarteTriggerAMQPAction, + AstarteSimpleDeviceTrigger, + AstarteSimpleDataTrigger, + AstarteSimpleTrigger, +}; + +export { AstarteTrigger }; diff --git a/astarte-dashboard/src/astarte-client/models/index.ts b/astarte-dashboard/src/astarte-client/models/index.ts new file mode 100644 index 0000000000..209a0f0fff --- /dev/null +++ b/astarte-dashboard/src/astarte-client/models/index.ts @@ -0,0 +1,29 @@ +/* + This file is part of Astarte. + + Copyright 2020-2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +export * from './Block'; +export * from './Realm'; +export * from './Token'; +export * from './Device'; +export * from './Flow'; +export * from './Pipeline'; +export * from './Mapping'; +export * from './Interface'; +export * from './Trigger'; +export * from './Policy'; +export * from './InterfaceValue'; diff --git a/astarte-dashboard/src/astarte-client/transforms/dataTree.test.ts b/astarte-dashboard/src/astarte-client/transforms/dataTree.test.ts new file mode 100644 index 0000000000..1743cbd06b --- /dev/null +++ b/astarte-dashboard/src/astarte-client/transforms/dataTree.test.ts @@ -0,0 +1,118 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import { AstarteInterface } from 'astarte-client'; + +import { toAstarteDataTree } from './dataTree'; + +describe('DataTree for properties interface', () => { + const iface = new AstarteInterface({ + name: 'test.astarte.PropertiesInterface', + major: 1, + minor: 0, + type: 'properties', + ownership: 'device', + mappings: [ + { + endpoint: '/%{room}/heating/active', + type: 'boolean', + }, + { + endpoint: '/rooms/count', + type: 'integer', + }, + ], + }); + + it('creates an empty DataTree', () => { + const data = {}; + const dataTree = toAstarteDataTree({ interface: iface, data }); + expect(dataTree).toEqual({ + dataKind: 'properties', + endpoint: '', + interface: iface, + parent: null, + children: [], + }); + }); +}); + +describe('DataTree for datastream individual interface', () => { + const iface = new AstarteInterface({ + name: 'test.astarte.IndividualObjectInterface', + major: 1, + minor: 0, + type: 'datastream', + ownership: 'device', + mappings: [ + { + endpoint: '/humidity/value/current', + type: 'double', + }, + { + endpoint: '/sensors/%{sensor}/estimated', + type: 'double', + }, + ], + }); + + it('creates an empty DataTree', () => { + const data = {}; + const dataTree = toAstarteDataTree({ interface: iface, data }); + expect(dataTree).toEqual({ + dataKind: 'datastream_individual', + endpoint: '', + interface: iface, + parent: null, + children: [], + }); + }); +}); + +describe('DataTree for datastream object interface', () => { + const iface = new AstarteInterface({ + name: 'test.astarte.AggregatedObjectInterface', + major: 1, + minor: 0, + type: 'datastream', + ownership: 'device', + aggregation: 'object', + mappings: [ + { + endpoint: '/sensors/%{sensor_id}/value/boolean', + type: 'boolean', + }, + { + endpoint: '/sensors/%{sensor_id}/value/double', + type: 'double', + }, + ], + }); + + it('creates an empty DataTree', () => { + const data = {}; + const dataTree = toAstarteDataTree({ interface: iface, data }); + expect(dataTree).toEqual({ + dataKind: 'datastream_object', + endpoint: '', + interface: iface, + parent: null, + children: [], + }); + }); +}); diff --git a/astarte-dashboard/src/astarte-client/transforms/dataTree.ts b/astarte-dashboard/src/astarte-client/transforms/dataTree.ts new file mode 100644 index 0000000000..956d241590 --- /dev/null +++ b/astarte-dashboard/src/astarte-client/transforms/dataTree.ts @@ -0,0 +1,541 @@ +/* eslint-disable max-classes-per-file */ +/* + This file is part of Astarte. + Copyright 2020-24 SECO Mind Srl + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + SPDX-License-Identifier: Apache-2.0 +*/ + +import _ from 'lodash'; + +import { AstarteInterface } from '../models'; +import type { + AstarteDataType, + AstarteDataValue, + AstarteDataTuple, + AstartePropertyData, + AstarteDatastreamData, + AstarteDatastreamIndividualData, + AstarteDatastreamObjectData, + AstarteInterfaceValues, + AstarteIndividualDatastreamInterfaceValue, + AstarteAggregatedDatastreamInterfaceValue, +} from '../types'; + +const getEndpointDataType = (iface: AstarteInterface, endpoint: string): AstarteDataType => { + const matchedMapping = AstarteInterface.findEndpointMapping(iface, endpoint); + if (matchedMapping == null) { + throw new Error(`Could not find an interface mapping for the endpoint ${endpoint}`); + } + return matchedMapping.type; +}; + +const isTimestamp = (value: unknown): value is string => _.isString(value); + +const isAstarteDataValue = (value: unknown): value is AstarteDataValue => + !_.isUndefined(value) && (!_.isPlainObject(value) || _.isNull(value)); + +const isPropertiesInterfaceValue = (value: unknown): value is AstarteDataValue => + isAstarteDataValue(value); + +const isIndividualDatastreamInterfaceValue = ( + value: unknown, +): value is AstarteIndividualDatastreamInterfaceValue => isAstarteDataValue(_.get(value, 'value')); + +const isIndividualDatastreamInterfaceValues = ( + value: unknown, +): value is AstarteIndividualDatastreamInterfaceValue[] => + _.isArray(value) && value.every(isIndividualDatastreamInterfaceValue); + +const isAggregatedDatastreamInterfaceSingleValue = ( + value: unknown, +): value is AstarteAggregatedDatastreamInterfaceValue => { + const timestamp = _.get(value, 'timestamp'); + // We also check whether the timestamp is a basic generic value because if + // the interface defined a `timestamp` endpoint, Appengine v1 would return + // the values of that endpoint, thus overwriting the regular timestamp that + // would have been automatically populated instead. See issue: + // https://github.com/astarte-platform/astarte/issues/335 + return isTimestamp(timestamp) || isAstarteDataValue(timestamp); +}; + +const isAggregatedDatastreamInterfaceArrayValue = ( + value: unknown, +): value is AstarteAggregatedDatastreamInterfaceValue[] => + Array.isArray(value) && value.every(isAggregatedDatastreamInterfaceSingleValue); + +const isAggregatedDatastreamInterfaceValue = ( + value: unknown, +): value is + | AstarteAggregatedDatastreamInterfaceValue + | AstarteAggregatedDatastreamInterfaceValue[] => + isAggregatedDatastreamInterfaceSingleValue(value) || + isAggregatedDatastreamInterfaceArrayValue(value); + +type AstarteDataTreeKind = 'properties' | 'datastream_object' | 'datastream_individual'; + +const getDataTreeKind = (iface: AstarteInterface): AstarteDataTreeKind => { + if (iface.type === 'properties') { + return 'properties'; + } + if (iface.aggregation === 'object') { + return 'datastream_object'; + } + return 'datastream_individual'; +}; + +type JSON = Value | { [prop: string]: JSON }; + +type Equals = [T] extends [S] ? ([S] extends [T] ? true : false) : false; + +interface AstarteDataTreeNode< + Data extends AstartePropertyData | AstarteDatastreamIndividualData | AstarteDatastreamObjectData, +> { + dataKind: AstarteDataTreeKind; + name: string; + endpoint: string; + interface: AstarteInterface; + getParentNode: () => AstarteDataTreeNode | null; + getNode: (endpoint: string) => AstarteDataTreeNode | null; + getLeaves: () => AstarteDataTreeNode[]; + toData: () => Equals extends true + ? AstarteDatastreamObjectData[] + : Equals extends true + ? AstarteDatastreamIndividualData[] + : AstartePropertyData[]; + toLinearizedData: () => Equals extends true + ? AstarteDatastreamData[] + : Equals extends true + ? AstarteDatastreamData[] + : AstartePropertyData[]; + toLastValue: () => JSON; +} + +interface AstarteDataTreeLeafNodeParams< + Data extends AstartePropertyData | AstarteDatastreamIndividualData | AstarteDatastreamObjectData, +> { + interface: AstarteInterface; + data: Equals extends true + ? AstarteDatastreamObjectData[] + : Equals extends true + ? AstarteDatastreamIndividualData[] + : AstartePropertyData; + endpoint?: string; + parentNode?: AstarteDataTreeBranchNode | null; +} + +class AstarteDataTreeLeafNode< + Data extends AstartePropertyData | AstarteDatastreamIndividualData | AstarteDatastreamObjectData, +> implements AstarteDataTreeNode +{ + readonly dataKind: AstarteDataTreeKind; + + readonly endpoint: string; + + readonly interface: AstarteInterface; + + private readonly parent: AstarteDataTreeBranchNode | null; + + private readonly data: Equals extends true + ? AstarteDatastreamObjectData[] + : Equals extends true + ? AstarteDatastreamIndividualData[] + : AstartePropertyData; + + private readonly linearizedData: Equals extends true + ? AstarteDatastreamData[] + : Equals extends true + ? AstarteDatastreamData[] + : AstartePropertyData; + + constructor({ + interface: iface, + data, + endpoint = '', + parentNode = null, + }: AstarteDataTreeLeafNodeParams) { + this.endpoint = endpoint; + this.parent = parentNode; + this.dataKind = getDataTreeKind(iface); + this.data = data; + this.interface = iface; + if (iface.type === 'properties') { + // @ts-expect-error cannot correctly infer from generics + this.linearizedData = data as AstartePropertyData; + } else if (iface.type === 'datastream' && iface.aggregation === 'individual') { + const interfaceData = data as AstarteDatastreamIndividualData[]; + // @ts-expect-error cannot correctly infer from generics + this.linearizedData = interfaceData.map((obj) => ({ + endpoint: obj.endpoint, + timestamp: obj.timestamp, + ...({ type: obj.type, value: obj.value } as AstarteDataTuple), + })) as AstarteDatastreamData[]; + } else { + const interfaceData = data as AstarteDatastreamObjectData[]; + // @ts-expect-error cannot correctly infer from generics + this.linearizedData = interfaceData + .map((obj) => + Object.entries(obj.value).map(([prop, propValue]) => ({ + endpoint: `${obj.endpoint}/${prop}`, + timestamp: obj.timestamp, + ...propValue, + })), + ) + .flat() as AstarteDatastreamData[]; + } + } + + getParentNode(): AstarteDataTreeBranchNode | null { + return this.parent; + } + + getNode(endpoint: string): AstarteDataTreeLeafNode | null { + const sanitizedEndpoint = endpoint.replace(/\/$/, ''); + if (sanitizedEndpoint === this.endpoint) { + return this; + } + return null; + } + + getLeaves(): AstarteDataTreeLeafNode[] { + return [this]; + } + + toData(): Equals extends true + ? AstarteDatastreamObjectData[] + : Equals extends true + ? AstarteDatastreamIndividualData[] + : [AstartePropertyData] { + // @ts-expect-error cannot correctly infer from generics + return _.isArray(this.data) ? this.data : [this.data]; + } + + toLinearizedData(): Equals extends true + ? AstarteDatastreamData[] + : Equals extends true + ? AstarteDatastreamData[] + : [AstartePropertyData] { + // @ts-expect-error cannot correctly infer from generics + return _.isArray(this.linearizedData) ? this.linearizedData : [this.linearizedData]; + } + + toLastValue(): JSON { + if (this.dataKind === 'properties') { + const data = this.data as AstartePropertyData; + return data.value; + } + if (this.dataKind === 'datastream_individual') { + const data = this.data as AstarteDatastreamIndividualData[]; + const lastData: AstarteDatastreamIndividualData | undefined = _.last( + _.orderBy(data, ['timestamp'], ['asc']), + ); + return lastData ? lastData.value : null; + } + const data = this.data as AstarteDatastreamObjectData[]; + const lastData: AstarteDatastreamObjectData | undefined = _.last( + _.orderBy(data, ['timestamp'], ['asc']), + ); + return lastData ? _.mapValues(lastData.value, (valueTuple) => valueTuple.value) : null; + } + + get name(): string { + return this.parent != null ? this.endpoint.replace(`${this.parent.endpoint}/`, '') : ''; + } +} + +interface AstarteDataTreeBranchNodeParams< + Data extends AstartePropertyData | AstarteDatastreamIndividualData | AstarteDatastreamObjectData, +> { + interface: AstarteInterface; + data: AstarteInterfaceValues; + endpoint?: string; + parentNode?: AstarteDataTreeBranchNode | null; +} +class AstarteDataTreeBranchNode< + Data extends AstartePropertyData | AstarteDatastreamIndividualData | AstarteDatastreamObjectData, +> implements AstarteDataTreeNode +{ + readonly dataKind: AstarteDataTreeKind; + + readonly endpoint: string; + + readonly interface: AstarteInterface; + + private readonly parent: AstarteDataTreeBranchNode | null; + + private readonly children: Array | AstarteDataTreeLeafNode>; + + constructor({ + interface: iface, + data, + endpoint = '', + parentNode = null, + }: AstarteDataTreeBranchNodeParams) { + this.endpoint = endpoint; + this.parent = parentNode; + this.dataKind = getDataTreeKind(iface); + this.interface = iface; + if (iface.type === 'properties') { + // @ts-expect-error cannot correctly infer from generics + this.children = Object.entries(data).map(([prop, propValue]) => + toPropertiesTreeNode({ + interface: iface, + data: propValue, + endpoint: `${endpoint}/${prop}`, + // @ts-expect-error cannot correctly infer from generics + parentNode: this as AstarteDataTreeBranchNode, + }), + ) as Array | AstarteDataTreeLeafNode>; + } else if (iface.type === 'datastream' && iface.aggregation === 'individual') { + // @ts-expect-error cannot correctly infer from generics + this.children = Object.entries(data).map(([prop, propValue]) => + toDatastreamIndividualTreeNode({ + interface: iface, + data: propValue, + endpoint: `${endpoint}/${prop}`, + // @ts-expect-error cannot correctly infer from generics + parentNode: this as AstarteDataTreeBranchNode, + }), + ) as Array | AstarteDataTreeLeafNode>; + } else { + // @ts-expect-error cannot correctly infer from generics + this.children = Object.entries(data).map(([prop, propValue]) => + toDatastreamObjectTreeNode({ + interface: iface, + data: propValue, + endpoint: `${endpoint}/${prop}`, + // @ts-expect-error cannot correctly infer from generics + parentNode: this as AstarteDataTreeBranchNode, + }), + ) as Array | AstarteDataTreeLeafNode>; + } + } + + getParentNode(): AstarteDataTreeBranchNode | null { + return this.parent; + } + + getNode( + endpoint: string, + ): AstarteDataTreeBranchNode | AstarteDataTreeLeafNode | null { + const sanitizedEndpoint = endpoint.replace(/\/$/, ''); + if (sanitizedEndpoint === this.endpoint) { + return this; + } + if (this.children.length === 0) { + return null; + } + let foundNode: AstarteDataTreeBranchNode | AstarteDataTreeLeafNode | null = null; + this.children.forEach((child) => { + const node = child.getNode(sanitizedEndpoint); + if (node != null) { + foundNode = node; + } + }); + return foundNode; + } + + getLeaves(): AstarteDataTreeLeafNode[] { + return this.children.map((child) => child.getLeaves()).flat(); + } + + toData(): Equals extends true + ? AstarteDatastreamObjectData[] + : Equals extends true + ? AstarteDatastreamIndividualData[] + : AstartePropertyData[] { + // @ts-expect-error cannot correctly infer from generics + return this.getLeaves() + .map((leaf) => leaf.toData()) + .flat(); + } + + toLinearizedData(): Equals extends true + ? AstarteDatastreamData[] + : Equals extends true + ? AstarteDatastreamData[] + : AstartePropertyData[] { + // @ts-expect-error cannot correctly infer from generics + return this.getLeaves() + .map((leaf) => leaf.toLinearizedData()) + .flat(); + } + + toLastValue(): JSON { + return this.children.reduce( + (acc, child) => ({ + ...acc, + [child.name]: child.toLastValue(), + }), + {}, + ); + } + + get name(): string { + return this.parent != null ? this.endpoint.replace(`${this.parent.endpoint}/`, '') : ''; + } +} + +function toAstarteDataTree(params: { + interface: AstarteInterface; + data: AstarteInterfaceValues; + endpoint?: string; +}): + | AstarteDataTreeNode + | AstarteDataTreeNode + | AstarteDataTreeNode { + if (params.interface.type === 'properties') { + return toPropertiesTreeNode({ + interface: params.interface, + data: params.data, + endpoint: params.endpoint || '', + parentNode: null, + }); + } + if (params.interface.type === 'datastream' && params.interface.aggregation === 'individual') { + return toDatastreamIndividualTreeNode({ + interface: params.interface, + data: params.data, + endpoint: params.endpoint || '', + parentNode: null, + }); + } + return toDatastreamObjectTreeNode({ + interface: params.interface, + data: params.data, + endpoint: params.endpoint || '', + parentNode: null, + }); +} + +function toPropertiesTreeNode(params: { + interface: AstarteInterface; + data: AstarteInterfaceValues; + endpoint: string; + parentNode: AstarteDataTreeBranchNode | null; +}): AstarteDataTreeBranchNode | AstarteDataTreeLeafNode { + if (isPropertiesInterfaceValue(params.data)) { + return new AstarteDataTreeLeafNode({ + interface: params.interface, + data: { + endpoint: params.endpoint, + ...({ + value: params.data, + type: getEndpointDataType(params.interface, params.endpoint), + } as AstarteDataTuple), + }, + endpoint: params.endpoint, + parentNode: params.parentNode, + }); + } + return new AstarteDataTreeBranchNode({ + interface: params.interface, + data: params.data, + endpoint: params.endpoint, + parentNode: params.parentNode, + }); +} + +function toDatastreamIndividualTreeNode(params: { + interface: AstarteInterface; + data: AstarteInterfaceValues; + endpoint: string; + parentNode: AstarteDataTreeBranchNode | null; +}): + | AstarteDataTreeBranchNode + | AstarteDataTreeLeafNode { + if (isIndividualDatastreamInterfaceValues(params.data)) { + const leafData: AstarteDatastreamIndividualData[] = params.data.map((dataValue) => ({ + endpoint: params.endpoint, + timestamp: dataValue.timestamp, + ...({ + value: dataValue.value, + type: getEndpointDataType(params.interface, params.endpoint), + } as AstarteDataTuple), + })); + return new AstarteDataTreeLeafNode({ + interface: params.interface, + data: leafData, + endpoint: params.endpoint, + parentNode: params.parentNode, + }); + } + if (isIndividualDatastreamInterfaceValue(params.data)) { + const leafData: AstarteDatastreamIndividualData[] = [ + { + endpoint: params.endpoint, + timestamp: params.data.timestamp, + ...({ + value: params.data.value, + type: getEndpointDataType(params.interface, params.endpoint), + } as AstarteDataTuple), + }, + ]; + return new AstarteDataTreeLeafNode({ + interface: params.interface, + data: leafData, + endpoint: params.endpoint, + parentNode: params.parentNode, + }); + } + return new AstarteDataTreeBranchNode({ + interface: params.interface, + data: params.data, + endpoint: params.endpoint, + parentNode: params.parentNode, + }); +} + +function toDatastreamObjectTreeNode(params: { + interface: AstarteInterface; + data: AstarteInterfaceValues; + endpoint: string; + parentNode: AstarteDataTreeBranchNode | null; +}): + | AstarteDataTreeBranchNode + | AstarteDataTreeLeafNode { + if (isAggregatedDatastreamInterfaceValue(params.data)) { + const data = isAggregatedDatastreamInterfaceArrayValue(params.data) + ? params.data + : [params.data]; + const leafData: AstarteDatastreamObjectData[] = data.map((obj) => ({ + endpoint: params.endpoint, + timestamp: obj.timestamp, + value: Object.entries(_.omit(obj, 'timestamp')).reduce( + (acc, [objProp, objPropValue]) => ({ + ...acc, + [objProp]: { + value: objPropValue, + type: getEndpointDataType(params.interface, `${params.endpoint}/${objProp}`), + } as AstarteDataTuple, + }), + {}, + ), + })); + return new AstarteDataTreeLeafNode({ + interface: params.interface, + data: leafData, + endpoint: params.endpoint, + parentNode: params.parentNode, + }); + } + return new AstarteDataTreeBranchNode({ + interface: params.interface, + data: params.data, + endpoint: params.endpoint, + parentNode: params.parentNode, + }); +} + +export { toAstarteDataTree }; + +export type { AstarteDataTreeNode, AstarteDataTreeKind }; diff --git a/astarte-dashboard/src/astarte-client/transforms/device.ts b/astarte-dashboard/src/astarte-client/transforms/device.ts new file mode 100644 index 0000000000..5c0137a320 --- /dev/null +++ b/astarte-dashboard/src/astarte-client/transforms/device.ts @@ -0,0 +1,94 @@ +/* + This file is part of Astarte. + Copyright 2020 Ispirata Srl + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import _ from 'lodash'; + +import { AstarteDevice } from '../models/Device'; + +import type { AstarteDeviceInterfaceStats } from '../models/Device'; +import type { AstarteDeviceDTO } from '../types'; + +const fromInterfaceStatsDTO = ( + iface: NonNullable[number], +): AstarteDeviceInterfaceStats => ({ + name: iface.name, + major: iface.major, + minor: iface.minor, + exchangedMessages: iface.exchanged_msgs || 0, + exchangedBytes: iface.exchanged_bytes || 0, +}); + +const toInterfaceStatsDTO = (iface: AstarteDeviceInterfaceStats) => ({ + name: iface.name, + major: iface.major, + minor: iface.minor, + exchanged_msgs: iface.exchangedMessages, + exchanged_bytes: iface.exchangedBytes, +}); + +export const fromAstarteDeviceDTO = (dto: AstarteDeviceDTO): AstarteDevice => + new AstarteDevice({ + id: dto.id, + isConnected: !!dto.connected, + hasCredentialsInhibited: !!dto.credentials_inhibited, + aliases: new Map(Object.entries(dto.aliases || {})), + groups: dto.groups || [], + introspection: new Map( + Object.entries(dto.introspection || {}).map(([interfaceName, iface]) => [ + interfaceName, + fromInterfaceStatsDTO({ name: interfaceName, ...iface }), + ]), + ), + attributes: new Map(Object.entries(dto.attributes || {})), + totalReceivedMessages: dto.total_received_msgs || 0, + totalReceivedBytes: dto.total_received_bytes || 0, + previousInterfaces: (dto.previous_interfaces || []).map(fromInterfaceStatsDTO), + firstRegistration: + dto.first_registration != null ? new Date(dto.first_registration) : undefined, + firstCredentialsRequest: + dto.first_credentials_request != null ? new Date(dto.first_credentials_request) : undefined, + lastDisconnection: + dto.last_disconnection != null ? new Date(dto.last_disconnection) : undefined, + lastConnection: dto.last_connection != null ? new Date(dto.last_connection) : undefined, + lastSeenIp: dto.last_seen_ip != null ? dto.last_seen_ip : undefined, + lastCredentialsRequestIp: + dto.last_credentials_request_ip != null ? dto.last_credentials_request_ip : undefined, + deletionInProgress: !!dto.deletion_in_progress, + }); + +export const toAstarteDeviceDTO = (obj: AstarteDevice): AstarteDeviceDTO => ({ + id: obj.id, + connected: !!obj.isConnected, + credentials_inhibited: !!obj.hasCredentialsInhibited, + aliases: Object.fromEntries(obj.aliases), + groups: obj.groups || [], + introspection: _.mapValues(Object.fromEntries(obj.introspection), (iface) => + toInterfaceStatsDTO(iface), + ), + attributes: Object.fromEntries(obj.attributes), + total_received_msgs: obj.totalReceivedMessages || 0, + total_received_bytes: obj.totalReceivedBytes || 0, + previous_interfaces: (obj.previousInterfaces || []).map(toInterfaceStatsDTO), + first_registration: + obj.firstRegistration != null ? obj.firstRegistration.toISOString() : undefined, + first_credentials_request: + obj.firstCredentialsRequest != null ? obj.firstCredentialsRequest.toISOString() : undefined, + last_disconnection: + obj.lastDisconnection != null ? obj.lastDisconnection.toISOString() : undefined, + last_connection: obj.lastConnection != null ? obj.lastConnection.toISOString() : undefined, + last_seen_ip: obj.lastSeenIp != null ? obj.lastSeenIp : undefined, + last_credentials_request_ip: + obj.lastCredentialsRequestIp != null ? obj.lastCredentialsRequestIp : undefined, + deletion_in_progress: !!obj.deletionInProgress, +}); diff --git a/astarte-dashboard/src/astarte-client/transforms/index.ts b/astarte-dashboard/src/astarte-client/transforms/index.ts new file mode 100644 index 0000000000..6a645e086c --- /dev/null +++ b/astarte-dashboard/src/astarte-client/transforms/index.ts @@ -0,0 +1,24 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +export * from './dataTree'; +export * from './device'; +export * from './pipeline'; +export * from './interface'; +export * from './mapping'; +export * from './trigger'; diff --git a/astarte-dashboard/src/astarte-client/transforms/interface.ts b/astarte-dashboard/src/astarte-client/transforms/interface.ts new file mode 100644 index 0000000000..436298e973 --- /dev/null +++ b/astarte-dashboard/src/astarte-client/transforms/interface.ts @@ -0,0 +1,116 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +import _ from 'lodash'; + +import { fromAstarteMappingDTO, toAstarteMappingDTO } from './mapping'; +import { AstarteInterface } from '../models/Interface'; +import type { AstarteInterfaceDTO } from '../types'; + +export const fromAstarteInterfaceDTO = (dto: AstarteInterfaceDTO): AstarteInterface => + new AstarteInterface({ + name: dto.interface_name, + major: dto.version_major, + minor: dto.version_minor, + type: dto.type, + ownership: dto.ownership, + aggregation: dto.type === 'datastream' ? dto.aggregation : undefined, + description: dto.description, + documentation: dto.doc, + mappings: (dto.mappings || []).map((mapping) => fromAstarteMappingDTO(mapping)), + }); + +const stripAstarteInterfaceDTODefaults = (dto: AstarteInterfaceDTO): AstarteInterfaceDTO => { + const iface = _.cloneDeep(dto); + if (iface.type === 'datastream' && iface.aggregation === 'individual') { + delete iface.aggregation; + } + if (iface.type === 'datastream') { + iface.mappings = iface.mappings.map((mappingDTO) => { + const mapping = _.cloneDeep(mappingDTO); + if (mapping.explicit_timestamp === false) { + delete mapping.explicit_timestamp; + } + if (mapping.reliability === 'unreliable') { + delete mapping.reliability; + } + if (mapping.retention === 'discard') { + delete mapping.retention; + } + if (mapping.database_retention_policy === 'no_ttl') { + delete mapping.database_retention_policy; + } + if (!mapping.retention || mapping.expiry === 0) { + delete mapping.expiry; + } + if (!mapping.database_retention_policy) { + delete mapping.database_retention_ttl; + } + return mapping; + }); + } + if (iface.type === 'properties') { + iface.mappings = iface.mappings.map((mappingDTO) => { + const mapping = _.cloneDeep(mappingDTO); + if (mapping.allow_unset === false) { + delete mapping.allow_unset; + } + return mapping; + }); + } + return iface; +}; + +export const toAstarteInterfaceDTO = (obj: AstarteInterface): AstarteInterfaceDTO => + stripAstarteInterfaceDTODefaults( + obj.type === 'datastream' + ? { + interface_name: obj.name, + version_major: obj.major, + version_minor: obj.minor, + type: obj.type, + ownership: obj.ownership, + aggregation: obj.aggregation || 'individual', + description: obj.description, + doc: obj.documentation, + mappings: (obj.mappings || []).map((mapping) => + toAstarteMappingDTO({ + ...mapping, + explicitTimestamp: mapping.explicitTimestamp || false, + reliability: mapping.reliability || 'unreliable', + retention: mapping.retention || 'discard', + expiry: mapping.expiry || 0, + databaseRetentionPolicy: mapping.databaseRetentionPolicy || 'no_ttl', + }), + ), + } + : { + interface_name: obj.name, + version_major: obj.major, + version_minor: obj.minor, + type: obj.type, + ownership: obj.ownership, + description: obj.description, + doc: obj.documentation, + mappings: (obj.mappings || []).map((mapping) => + toAstarteMappingDTO({ + ...mapping, + allowUnset: mapping.allowUnset || false, + }), + ), + }, + ); diff --git a/astarte-dashboard/src/astarte-client/transforms/mapping.ts b/astarte-dashboard/src/astarte-client/transforms/mapping.ts new file mode 100644 index 0000000000..63db8ab8fd --- /dev/null +++ b/astarte-dashboard/src/astarte-client/transforms/mapping.ts @@ -0,0 +1,49 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import { AstarteMapping } from '../models/Mapping'; +import type { AstarteMappingDTO } from '../types'; + +export const fromAstarteMappingDTO = (dto: AstarteMappingDTO): AstarteMapping => + new AstarteMapping({ + endpoint: dto.endpoint, + type: dto.type, + reliability: dto.reliability, + retention: dto.retention, + expiry: dto.expiry, + databaseRetentionPolicy: dto.database_retention_policy, + databaseRetentionTtl: dto.database_retention_ttl, + allowUnset: dto.allow_unset, + explicitTimestamp: dto.explicit_timestamp, + description: dto.description, + documentation: dto.doc, + }); + +export const toAstarteMappingDTO = (obj: AstarteMapping): AstarteMappingDTO => ({ + endpoint: obj.endpoint, + type: obj.type, + reliability: obj.reliability, + retention: obj.retention, + expiry: obj.expiry, + database_retention_policy: obj.databaseRetentionPolicy, + database_retention_ttl: obj.databaseRetentionTtl, + allow_unset: obj.allowUnset, + explicit_timestamp: obj.explicitTimestamp, + description: obj.description, + doc: obj.documentation, +}); diff --git a/astarte-dashboard/src/astarte-client/transforms/pipeline.ts b/astarte-dashboard/src/astarte-client/transforms/pipeline.ts new file mode 100644 index 0000000000..b523872ed7 --- /dev/null +++ b/astarte-dashboard/src/astarte-client/transforms/pipeline.ts @@ -0,0 +1,36 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import _ from 'lodash'; + +import type { AstartePipeline } from '../models/Pipeline'; +import type { AstartePipelineDTO } from '../types'; + +export const fromAstartePipelineDTO = (dto: AstartePipelineDTO): AstartePipeline => ({ + name: dto.name, + description: dto.description, + schema: dto.schema || {}, + source: dto.source, +}); + +export const toAstartePipelineDTO = (obj: AstartePipeline): AstartePipelineDTO => ({ + name: obj.name, + description: obj.description, + schema: _.isEmpty(obj.schema) ? undefined : obj.schema, + source: obj.source, +}); diff --git a/astarte-dashboard/src/astarte-client/transforms/trigger.ts b/astarte-dashboard/src/astarte-client/transforms/trigger.ts new file mode 100644 index 0000000000..16058c6c5a --- /dev/null +++ b/astarte-dashboard/src/astarte-client/transforms/trigger.ts @@ -0,0 +1,128 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import { + AstarteTrigger, + AstarteTriggerHTTPActionObject, + AstarteTriggerAMQPActionObject, +} from '../models/Trigger'; +import type { + AstarteTriggerDTO, + AstarteTriggerHTTPActionDTO, + AstarteTriggerAMQPActionDTO, +} from '../types'; + +export const fromAstarteTriggerDTO = (dto: AstarteTriggerDTO): AstarteTrigger => { + let action; + if ('http_url' in dto.action && dto.action.http_url != null) { + const dtoAction = dto.action as AstarteTriggerHTTPActionDTO; + action = { + httpUrl: dtoAction.http_url, + httpMethod: dtoAction.http_method, + httpStaticHeaders: dtoAction.http_static_headers, + ignoreSslErrors: dtoAction.ignore_ssl_errors, + templateType: dtoAction.template_type, + template: dtoAction.template, + }; + } else { + const dtoAction = dto.action as AstarteTriggerAMQPActionDTO; + action = { + amqpExchange: dtoAction.amqp_exchange, + amqpRoutingKey: dtoAction.amqp_routing_key, + amqpStaticHeaders: dtoAction.amqp_static_headers, + amqpMessageExpirationMilliseconds: dtoAction.amqp_message_expiration_ms, + amqpMessagePriority: dtoAction.amqp_message_priority, + amqpMessagePersistent: dtoAction.amqp_message_persistent, + }; + } + return new AstarteTrigger({ + name: dto.name, + action, + simpleTriggers: dto.simple_triggers.map((simpleTriggerDTO) => + simpleTriggerDTO.type === 'device_trigger' + ? { + type: simpleTriggerDTO.type, + on: simpleTriggerDTO.on, + deviceId: simpleTriggerDTO.device_id, + groupName: simpleTriggerDTO.group_name, + } + : { + type: simpleTriggerDTO.type, + on: simpleTriggerDTO.on, + deviceId: simpleTriggerDTO.device_id, + groupName: simpleTriggerDTO.group_name, + interfaceName: simpleTriggerDTO.interface_name, + interfaceMajor: simpleTriggerDTO.interface_major, + matchPath: simpleTriggerDTO.match_path, + valueMatchOperator: simpleTriggerDTO.value_match_operator, + knownValue: simpleTriggerDTO.known_value, + }, + ), + policy: dto.policy, + }); +}; + +export const toAstarteTriggerDTO = (trigger: AstarteTrigger): AstarteTriggerDTO => { + let action; + if ('httpUrl' in trigger.action && trigger.action.httpUrl != null) { + const triggerAction = trigger.action as AstarteTriggerHTTPActionObject; + action = { + http_url: triggerAction.httpUrl, + http_method: triggerAction.httpMethod, + http_static_headers: triggerAction.httpStaticHeaders, + ignore_ssl_errors: triggerAction.ignoreSslErrors, + template_type: triggerAction.templateType, + template: triggerAction.template, + }; + } else { + const triggerAction = trigger.action as AstarteTriggerAMQPActionObject; + action = { + amqp_exchange: triggerAction.amqpExchange, + amqp_routing_key: triggerAction.amqpRoutingKey, + amqp_static_headers: triggerAction.amqpStaticHeaders, + amqp_message_expiration_ms: triggerAction.amqpMessageExpirationMilliseconds, + amqp_message_priority: triggerAction.amqpMessagePriority, + amqp_message_persistent: triggerAction.amqpMessagePersistent, + }; + } + return { + name: trigger.name, + action, + simple_triggers: trigger.simpleTriggers.map((simpleTrigger) => + simpleTrigger.type === 'device_trigger' + ? { + type: simpleTrigger.type, + on: simpleTrigger.on, + device_id: simpleTrigger.deviceId, + group_name: simpleTrigger.groupName, + } + : { + type: simpleTrigger.type, + on: simpleTrigger.on, + device_id: simpleTrigger.deviceId, + group_name: simpleTrigger.groupName, + interface_name: simpleTrigger.interfaceName, + interface_major: simpleTrigger.interfaceMajor, + match_path: simpleTrigger.matchPath, + value_match_operator: simpleTrigger.valueMatchOperator, + known_value: simpleTrigger.knownValue, + }, + ), + policy: trigger.policy, + }; +}; diff --git a/astarte-dashboard/src/astarte-client/types/block.ts b/astarte-dashboard/src/astarte-client/types/block.ts new file mode 100644 index 0000000000..79230ee75e --- /dev/null +++ b/astarte-dashboard/src/astarte-client/types/block.ts @@ -0,0 +1,19 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +export type AstarteBlockType = 'producer' | 'consumer' | 'producer_consumer'; diff --git a/astarte-dashboard/src/astarte-client/types/dataType.ts b/astarte-dashboard/src/astarte-client/types/dataType.ts new file mode 100644 index 0000000000..ba20efec66 --- /dev/null +++ b/astarte-dashboard/src/astarte-client/types/dataType.ts @@ -0,0 +1,74 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +export type AstarteDataValue = number | boolean | string | number[] | boolean[] | string[] | null; + +export type AstarteDataType = + | 'double' + | 'integer' + | 'boolean' + | 'longinteger' + | 'string' + | 'binaryblob' + | 'datetime' + | 'doublearray' + | 'integerarray' + | 'booleanarray' + | 'longintegerarray' + | 'stringarray' + | 'binaryblobarray' + | 'datetimearray'; + +export type AstarteDataTuple = + | { type: 'double'; value: number } + | { type: 'integer'; value: number } + | { type: 'boolean'; value: boolean } + | { type: 'longinteger'; value: string } + | { type: 'string'; value: string } + | { type: 'binaryblob'; value: string } + | { type: 'datetime'; value: string } + | { type: 'doublearray'; value: number[] } + | { type: 'integerarray'; value: number[] } + | { type: 'booleanarray'; value: boolean[] } + | { type: 'longintegerarray'; value: string[] } + | { type: 'stringarray'; value: string[] } + | { type: 'binaryblobarray'; value: string[] } + | { type: 'datetimearray'; value: string[] } + | { type: AstarteDataType; value: null }; + +export type AstartePropertyData = { + endpoint: string; +} & AstarteDataTuple; + +export type AstarteDatastreamData = { + endpoint: string; + timestamp: string; +} & AstarteDataTuple; + +export type AstarteDatastreamIndividualData = { + endpoint: string; + timestamp: string; +} & AstarteDataTuple; + +export type AstarteDatastreamObjectData = { + endpoint: string; + timestamp: string; + value: { + [path: string]: AstarteDataTuple; + }; +}; diff --git a/astarte-dashboard/src/astarte-client/types/dto/block.d.ts b/astarte-dashboard/src/astarte-client/types/dto/block.d.ts new file mode 100644 index 0000000000..5d2bc4d61b --- /dev/null +++ b/astarte-dashboard/src/astarte-client/types/dto/block.d.ts @@ -0,0 +1,22 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import type { AstarteCustomBlockDTO } from './customBlock.d'; +import type { AstarteNativeBlockDTO } from './nativeBlock.d'; + +export type AstarteBlockDTO = AstarteNativeBlockDTO | AstarteCustomBlockDTO; diff --git a/astarte-dashboard/src/astarte-client/types/dto/customBlock.d.ts b/astarte-dashboard/src/astarte-client/types/dto/customBlock.d.ts new file mode 100644 index 0000000000..d44d0927d2 --- /dev/null +++ b/astarte-dashboard/src/astarte-client/types/dto/customBlock.d.ts @@ -0,0 +1,24 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +export interface AstarteCustomBlockDTO { + name: string; + source: string; + type: 'producer' | 'consumer' | 'producer_consumer'; + schema: Record; +} diff --git a/astarte-dashboard/src/astarte-client/types/dto/device.d.ts b/astarte-dashboard/src/astarte-client/types/dto/device.d.ts new file mode 100644 index 0000000000..36f57c1674 --- /dev/null +++ b/astarte-dashboard/src/astarte-client/types/dto/device.d.ts @@ -0,0 +1,57 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +/* eslint camelcase: 0 */ + +type TimestampUTC = string; + +export interface AstarteDeviceDTO { + id: string; + aliases?: { + [alias: string]: string; + }; + attributes?: { + [attributeKey: string]: string; + }; + introspection?: { + [interfaceName: string]: { + major: number; + minor: number; + exchanged_msgs?: number; + exchanged_bytes?: number; + }; + }; + connected?: boolean; + last_connection?: TimestampUTC; + last_disconnection?: TimestampUTC; + first_registration?: TimestampUTC; + first_credentials_request?: TimestampUTC; + last_seen_ip?: string; + credentials_inhibited?: boolean; + last_credentials_request_ip?: string; + total_received_bytes?: number; + total_received_msgs?: number; + groups?: string[]; + previous_interfaces?: Array<{ + name: string; + major: number; + minor: number; + exchanged_msgs?: number; + exchanged_bytes?: number; + }>; + deletion_in_progress?: boolean; +} diff --git a/astarte-dashboard/src/astarte-client/types/dto/flow.d.ts b/astarte-dashboard/src/astarte-client/types/dto/flow.d.ts new file mode 100644 index 0000000000..4d879e5f54 --- /dev/null +++ b/astarte-dashboard/src/astarte-client/types/dto/flow.d.ts @@ -0,0 +1,27 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +export interface AstarteFlowDTO { + name: string; + + pipeline: string; + + config?: { + [key: string]: unknown; + }; +} diff --git a/astarte-dashboard/src/astarte-client/types/dto/index.ts b/astarte-dashboard/src/astarte-client/types/dto/index.ts new file mode 100644 index 0000000000..5f21685dc3 --- /dev/null +++ b/astarte-dashboard/src/astarte-client/types/dto/index.ts @@ -0,0 +1,36 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +export type { AstarteBlockDTO } from './block.d'; +export type { AstarteCustomBlockDTO } from './customBlock.d'; +export type { AstarteNativeBlockDTO } from './nativeBlock.d'; +export type { AstarteDeviceDTO } from './device.d'; +export type { AstarteFlowDTO } from './flow.d'; +export type { AstartePipelineDTO } from './pipeline.d'; +export type { AstarteMappingDTO } from './mapping.d'; +export type { AstarteInterfaceDTO } from './interface.d'; +export type { + AstarteTransientTriggerDTO, + AstarteTriggerDTO, + AstarteTriggerHTTPActionDTO, + AstarteTriggerAMQPActionDTO, +} from './trigger.d'; +export type { + AstarteTriggerDeliveryPolicyHandlerDTO, + AstarteTriggerDeliveryPolicyDTO, +} from './triggerDeliveryPolicy.d'; diff --git a/astarte-dashboard/src/astarte-client/types/dto/interface.d.ts b/astarte-dashboard/src/astarte-client/types/dto/interface.d.ts new file mode 100644 index 0000000000..8896628c50 --- /dev/null +++ b/astarte-dashboard/src/astarte-client/types/dto/interface.d.ts @@ -0,0 +1,45 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +/* eslint camelcase: 0 */ + +import type { AstarteMappingDTO } from './mapping'; + +interface AstartePropertiesInterfaceDTO { + interface_name: string; + version_major: number; + version_minor: number; + type: 'properties'; + ownership: 'device' | 'server'; + description?: string; + doc?: string; + mappings: AstarteMappingDTO[]; +} + +interface AstarteDatastreamInterfaceDTO { + interface_name: string; + version_major: number; + version_minor: number; + type: 'datastream'; + ownership: 'device' | 'server'; + aggregation?: 'individual' | 'object'; + description?: string; + doc?: string; + mappings: AstarteMappingDTO[]; +} + +export type AstarteInterfaceDTO = AstartePropertiesInterfaceDTO | AstarteDatastreamInterfaceDTO; diff --git a/astarte-dashboard/src/astarte-client/types/dto/mapping.d.ts b/astarte-dashboard/src/astarte-client/types/dto/mapping.d.ts new file mode 100644 index 0000000000..23b5e5ce31 --- /dev/null +++ b/astarte-dashboard/src/astarte-client/types/dto/mapping.d.ts @@ -0,0 +1,46 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +/* eslint camelcase: 0 */ + +export interface AstarteMappingDTO { + endpoint: string; + type: + | 'double' + | 'integer' + | 'boolean' + | 'longinteger' + | 'string' + | 'binaryblob' + | 'datetime' + | 'doublearray' + | 'integerarray' + | 'booleanarray' + | 'longintegerarray' + | 'stringarray' + | 'binaryblobarray' + | 'datetimearray'; + reliability?: 'unreliable' | 'guaranteed' | 'unique'; + retention?: 'discard' | 'volatile' | 'stored'; + expiry?: number; + database_retention_policy?: 'no_ttl' | 'use_ttl'; + database_retention_ttl?: number; + allow_unset?: boolean; + explicit_timestamp?: boolean; + description?: string; + doc?: string; +} diff --git a/astarte-dashboard/src/astarte-client/types/dto/nativeBlock.d.ts b/astarte-dashboard/src/astarte-client/types/dto/nativeBlock.d.ts new file mode 100644 index 0000000000..ff3babc1b0 --- /dev/null +++ b/astarte-dashboard/src/astarte-client/types/dto/nativeBlock.d.ts @@ -0,0 +1,25 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +/* eslint camelcase: 0 */ + +export interface AstarteNativeBlockDTO { + name: string; + type: 'producer' | 'consumer' | 'producer_consumer'; + schema: Record; + beam_module: string; +} diff --git a/astarte-dashboard/src/astarte-client/types/dto/pipeline.d.ts b/astarte-dashboard/src/astarte-client/types/dto/pipeline.d.ts new file mode 100644 index 0000000000..391d538caa --- /dev/null +++ b/astarte-dashboard/src/astarte-client/types/dto/pipeline.d.ts @@ -0,0 +1,26 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +export interface AstartePipelineDTO { + name: string; + description: string; + schema?: { + [key: string]: unknown; + }; + source: string; +} diff --git a/astarte-dashboard/src/astarte-client/types/dto/trigger.d.ts b/astarte-dashboard/src/astarte-client/types/dto/trigger.d.ts new file mode 100644 index 0000000000..fcf4690b7c --- /dev/null +++ b/astarte-dashboard/src/astarte-client/types/dto/trigger.d.ts @@ -0,0 +1,96 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +/* eslint camelcase: 0 */ + +interface AstarteSimpleDeviceTriggerDTO { + type: 'device_trigger'; + on: + | 'device_disconnected' + | 'device_connected' + | 'device_registered' + | 'device_deletion_finished' + | 'device_deletion_started' + | 'device_error' + | 'device_empty_cache_received'; + device_id?: string; + group_name?: string; +} + +interface AstarteSimpleDataTriggerDTO { + type: 'data_trigger'; + on: + | 'incoming_data' + | 'value_change' + | 'value_change_applied' + | 'path_created' + | 'path_removed' + | 'value_stored'; + device_id?: string; + group_name?: string; + interface_name: string; + interface_major?: number; + match_path: string; + value_match_operator: '*' | '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains'; + known_value?: string | number | boolean; +} + +type AstarteSimpleTriggerDTO = AstarteSimpleDeviceTriggerDTO | AstarteSimpleDataTriggerDTO; + +interface AstarteTriggerHTTPActionDTO { + http_url: string; + http_method: 'delete' | 'get' | 'head' | 'options' | 'patch' | 'post' | 'put'; + http_static_headers?: { + [headerName: string]: string; + }; + ignore_ssl_errors?: boolean; + template_type?: 'mustache'; + template?: string; +} + +interface AstarteTriggerAMQPActionDTO { + amqp_exchange: string; + amqp_routing_key?: string; + amqp_static_headers?: { + [headerName: string]: string; + }; + amqp_message_expiration_ms: number; + amqp_message_priority?: number; + amqp_message_persistent: boolean; +} + +interface AstarteTriggerDTO { + name: string; + action: AstarteTriggerHTTPActionDTO | AstarteTriggerAMQPActionDTO; + simple_triggers: AstarteSimpleTriggerDTO[]; + policy?: string | null; +} + +interface AstarteTransientTriggerDTO { + name: string; + device_id?: string; + group_name?: string; + simple_trigger: AstarteSimpleTriggerDTO; + policy?: string | null; +} + +export { + AstarteTransientTriggerDTO, + AstarteTriggerDTO, + AstarteTriggerHTTPActionDTO, + AstarteTriggerAMQPActionDTO, +}; diff --git a/astarte-dashboard/src/astarte-client/types/dto/triggerDeliveryPolicy.d.ts b/astarte-dashboard/src/astarte-client/types/dto/triggerDeliveryPolicy.d.ts new file mode 100644 index 0000000000..461444a07c --- /dev/null +++ b/astarte-dashboard/src/astarte-client/types/dto/triggerDeliveryPolicy.d.ts @@ -0,0 +1,33 @@ +/* + This file is part of Astarte. + + Copyright 2023 SECO Mind Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +/* eslint camelcase: 0 */ + +interface AstarteTriggerDeliveryPolicyHandlerDTO { + on: 'any_error' | 'client_error' | 'server_error' | number[]; + strategy: 'discard' | 'retry'; +} + +interface AstarteTriggerDeliveryPolicyDTO { + name: string; + error_handlers: AstarteTriggerDeliveryPolicyHandlerDTO[]; + retry_times?: number; + maximum_capacity: number; + event_ttl?: number; +} + +export { AstarteTriggerDeliveryPolicyHandlerDTO, AstarteTriggerDeliveryPolicyDTO }; diff --git a/astarte-dashboard/src/astarte-client/types/events/AstarteDeviceConnectedEvent.ts b/astarte-dashboard/src/astarte-client/types/events/AstarteDeviceConnectedEvent.ts new file mode 100644 index 0000000000..69d51a185a --- /dev/null +++ b/astarte-dashboard/src/astarte-client/types/events/AstarteDeviceConnectedEvent.ts @@ -0,0 +1,51 @@ +/* + This file is part of Astarte. + + Copyright 2020-2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import _ from 'lodash'; +import * as yup from 'yup'; + +import { AstarteDeviceEvent, AstarteDeviceEventDTO } from './AstarteDeviceEvent'; + +type AstarteDeviceConnectedEventDTO = AstarteDeviceEventDTO & { + event: { + type: 'device_connected'; + // eslint-disable-next-line camelcase + device_ip_address: string; + }; +}; + +const validationSchema: yup.ObjectSchema = yup + .object({ + type: yup.string().oneOf(['device_connected']).required(), + device_ip_address: yup.string().required(), + }) + .required(); + +export class AstarteDeviceConnectedEvent extends AstarteDeviceEvent { + readonly ip: string; + + private constructor(arg: unknown) { + super(arg); + const event = validationSchema.validateSync(_.get(arg, 'event')); + this.ip = event.device_ip_address; + } + + static fromJSON(arg: unknown): AstarteDeviceConnectedEvent { + return new AstarteDeviceConnectedEvent(arg); + } +} diff --git a/astarte-dashboard/src/astarte-client/types/events/AstarteDeviceDeletionStartedEvent.ts b/astarte-dashboard/src/astarte-client/types/events/AstarteDeviceDeletionStartedEvent.ts new file mode 100644 index 0000000000..4179f6da6d --- /dev/null +++ b/astarte-dashboard/src/astarte-client/types/events/AstarteDeviceDeletionStartedEvent.ts @@ -0,0 +1,27 @@ +import _ from 'lodash'; +import * as yup from 'yup'; + +import { AstarteDeviceEvent, AstarteDeviceEventDTO } from './AstarteDeviceEvent'; + +type AstarteDeviceDeletionStartedEventDTO = AstarteDeviceEventDTO & { + event: { + type: 'device_deletion_started'; + }; +}; + +const validationSchema: yup.ObjectSchema = yup + .object({ + type: yup.string().oneOf(['device_deletion_started']).required(), + }) + .required(); + +export class AstarteDeviceDeletionStartedEvent extends AstarteDeviceEvent { + private constructor(arg: unknown) { + super(arg); + validationSchema.validateSync(_.get(arg, 'event')); + } + + static fromJSON(arg: unknown): AstarteDeviceDeletionStartedEvent { + return new AstarteDeviceDeletionStartedEvent(arg); + } +} diff --git a/astarte-dashboard/src/astarte-client/types/events/AstarteDeviceDisconnectedEvent.ts b/astarte-dashboard/src/astarte-client/types/events/AstarteDeviceDisconnectedEvent.ts new file mode 100644 index 0000000000..05bc918d21 --- /dev/null +++ b/astarte-dashboard/src/astarte-client/types/events/AstarteDeviceDisconnectedEvent.ts @@ -0,0 +1,45 @@ +/* + This file is part of Astarte. + + Copyright 2020-2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import _ from 'lodash'; +import * as yup from 'yup'; + +import { AstarteDeviceEvent, AstarteDeviceEventDTO } from './AstarteDeviceEvent'; + +type AstarteDeviceDisconnectedEventDTO = AstarteDeviceEventDTO & { + event: { + type: 'device_disconnected'; + }; +}; + +const validationSchema: yup.ObjectSchema = yup + .object({ + type: yup.string().oneOf(['device_disconnected']).required(), + }) + .required(); + +export class AstarteDeviceDisconnectedEvent extends AstarteDeviceEvent { + private constructor(arg: unknown) { + super(arg); + validationSchema.validateSync(_.get(arg, 'event')); + } + + static fromJSON(arg: unknown): AstarteDeviceDisconnectedEvent { + return new AstarteDeviceDisconnectedEvent(arg); + } +} diff --git a/astarte-dashboard/src/astarte-client/types/events/AstarteDeviceErrorEvent.ts b/astarte-dashboard/src/astarte-client/types/events/AstarteDeviceErrorEvent.ts new file mode 100644 index 0000000000..8be806d5ad --- /dev/null +++ b/astarte-dashboard/src/astarte-client/types/events/AstarteDeviceErrorEvent.ts @@ -0,0 +1,76 @@ +/* + This file is part of Astarte. + + Copyright 2020-2024 SECO Mind Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import _ from 'lodash'; +import * as yup from 'yup'; + +import { AstarteDeviceEvent, AstarteDeviceEventDTO } from './AstarteDeviceEvent'; + +const deviceErrorNames = [ + 'write_on_server_owned_interface', + 'invalid_interface', + 'invalid_path', + 'mapping_not_found', + 'interface_loading_failed', + 'ambiguous_path', + 'undecodable_bson_payload', + 'unexpected_value_type', + 'value_size_exceeded', + 'unexpected_object_key', + 'invalid_introspection', + 'unexpected_control_message', + 'device_session_not_found', + 'resend_interface_properties_failed', + 'empty_cache_error', +] as const; + +type DeviceErrorName = (typeof deviceErrorNames)[number]; + +type AstarteDeviceErrorEventDTO = AstarteDeviceEventDTO & { + event: { + type: 'device_error'; + // eslint-disable-next-line camelcase + error_name: DeviceErrorName; + metadata: Record | null | undefined; + }; +}; + +const validationSchema: yup.ObjectSchema = yup + .object({ + type: yup.string().oneOf(['device_error']).required(), + error_name: yup.string().oneOf(deviceErrorNames).required(), + metadata: yup.object(), + }) + .required(); + +export class AstarteDeviceErrorEvent extends AstarteDeviceEvent { + readonly errorName: DeviceErrorName; + + readonly metadata: Record | null | undefined; + + private constructor(arg: unknown) { + super(arg); + const event = validationSchema.validateSync(_.get(arg, 'event')); + this.errorName = event.error_name; + this.metadata = event.metadata; + } + + static fromJSON(arg: unknown): AstarteDeviceErrorEvent { + return new AstarteDeviceErrorEvent(arg); + } +} diff --git a/astarte-dashboard/src/astarte-client/types/events/AstarteDeviceEvent.ts b/astarte-dashboard/src/astarte-client/types/events/AstarteDeviceEvent.ts new file mode 100644 index 0000000000..a2b9da97bd --- /dev/null +++ b/astarte-dashboard/src/astarte-client/types/events/AstarteDeviceEvent.ts @@ -0,0 +1,54 @@ +/* eslint-disable camelcase */ +/* + This file is part of Astarte. + + Copyright 2020-2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import * as yup from 'yup'; + +type AstarteDeviceEventDTO = { + device_id: string; + timestamp: string; + event: Record; +}; + +const astarteDeviceEventSchema: yup.ObjectSchema = yup + .object({ + device_id: yup.string().required(), + timestamp: yup.string().required(), + event: yup.object(), + }) + .required(); + +export abstract class AstarteDeviceEvent { + readonly deviceId: string; + + readonly timestamp: Date; + + protected constructor(arg: unknown) { + const event = astarteDeviceEventSchema.validateSync(arg); + + const timestamp = new Date(event.timestamp); + if (Number.isNaN(timestamp.getTime())) { + throw new Error('Invalid timestamp'); + } + + this.deviceId = event.device_id; + this.timestamp = timestamp; + } +} + +export type { AstarteDeviceEventDTO }; diff --git a/astarte-dashboard/src/astarte-client/types/events/AstarteDeviceIncomingDataEvent.ts b/astarte-dashboard/src/astarte-client/types/events/AstarteDeviceIncomingDataEvent.ts new file mode 100644 index 0000000000..60c26c9bcf --- /dev/null +++ b/astarte-dashboard/src/astarte-client/types/events/AstarteDeviceIncomingDataEvent.ts @@ -0,0 +1,61 @@ +/* + This file is part of Astarte. + + Copyright 2020-2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import _ from 'lodash'; +import * as yup from 'yup'; + +import { AstarteDeviceEvent, AstarteDeviceEventDTO } from './AstarteDeviceEvent'; +import type { AstarteDataValue } from '../dataType'; + +type AstarteDeviceIncomingDataDTO = AstarteDeviceEventDTO & { + event: { + type: 'incoming_data'; + interface: string; + path: string; + value: AstarteDataValue | Record; + }; +}; + +const validationSchema: yup.ObjectSchema = yup + .object({ + type: yup.string().oneOf(['incoming_data']).required(), + interface: yup.string().required(), + path: yup.string().required(), + value: yup.mixed().required(), + }) + .required(); + +export class AstarteDeviceIncomingDataEvent extends AstarteDeviceEvent { + readonly interfaceName: string; + + readonly path: string; + + readonly value: AstarteDataValue | Record; + + private constructor(arg: unknown) { + super(arg); + const event = validationSchema.validateSync(_.get(arg, 'event')); + this.interfaceName = event.interface; + this.path = event.path; + this.value = event.value; + } + + static fromJSON(arg: unknown): AstarteDeviceIncomingDataEvent { + return new AstarteDeviceIncomingDataEvent(arg); + } +} diff --git a/astarte-dashboard/src/astarte-client/types/events/AstarteDeviceRegistrationEvent.ts b/astarte-dashboard/src/astarte-client/types/events/AstarteDeviceRegistrationEvent.ts new file mode 100644 index 0000000000..6d285a4784 --- /dev/null +++ b/astarte-dashboard/src/astarte-client/types/events/AstarteDeviceRegistrationEvent.ts @@ -0,0 +1,27 @@ +import _ from 'lodash'; +import * as yup from 'yup'; + +import { AstarteDeviceEvent, AstarteDeviceEventDTO } from './AstarteDeviceEvent'; + +type AstarteDeviceRegistrationEventDTO = AstarteDeviceEventDTO & { + event: { + type: 'device_registered'; + }; +}; + +const validationSchema: yup.ObjectSchema = yup + .object({ + type: yup.string().oneOf(['device_registered']).required(), + }) + .required(); + +export class AstarteDeviceRegistrationEvent extends AstarteDeviceEvent { + private constructor(arg: unknown) { + super(arg); + validationSchema.validateSync(_.get(arg, 'event')); + } + + static fromJSON(arg: unknown): AstarteDeviceRegistrationEvent { + return new AstarteDeviceRegistrationEvent(arg); + } +} diff --git a/astarte-dashboard/src/astarte-client/types/events/AstarteDeviceUnsetPropertyEvent.ts b/astarte-dashboard/src/astarte-client/types/events/AstarteDeviceUnsetPropertyEvent.ts new file mode 100644 index 0000000000..d6f5f83fcb --- /dev/null +++ b/astarte-dashboard/src/astarte-client/types/events/AstarteDeviceUnsetPropertyEvent.ts @@ -0,0 +1,57 @@ +/* + This file is part of Astarte. + + Copyright 2020-2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import _ from 'lodash'; +import * as yup from 'yup'; + +import { AstarteDeviceEvent, AstarteDeviceEventDTO } from './AstarteDeviceEvent'; + +type AstarteDeviceUnsetPropertyDTO = AstarteDeviceEventDTO & { + event: { + type: 'incoming_data'; + interface: string; + path: string; + value: null; + }; +}; + +const validationSchema: yup.ObjectSchema = yup + .object({ + type: yup.string().oneOf(['incoming_data']).required(), + interface: yup.string().required(), + path: yup.string().required(), + value: yup.mixed().defined().oneOf([null]), + }) + .required(); + +export class AstarteDeviceUnsetPropertyEvent extends AstarteDeviceEvent { + readonly interfaceName: string; + + readonly path: string; + + private constructor(arg: unknown) { + super(arg); + const event = validationSchema.validateSync(_.get(arg, 'event')); + this.interfaceName = event.interface; + this.path = event.path; + } + + static fromJSON(arg: unknown): AstarteDeviceUnsetPropertyEvent { + return new AstarteDeviceUnsetPropertyEvent(arg); + } +} diff --git a/astarte-dashboard/src/astarte-client/types/events/AstateDeviceDeletionFinishedEvent.ts b/astarte-dashboard/src/astarte-client/types/events/AstateDeviceDeletionFinishedEvent.ts new file mode 100644 index 0000000000..723bcb0a9b --- /dev/null +++ b/astarte-dashboard/src/astarte-client/types/events/AstateDeviceDeletionFinishedEvent.ts @@ -0,0 +1,27 @@ +import _ from 'lodash'; +import * as yup from 'yup'; + +import { AstarteDeviceEvent, AstarteDeviceEventDTO } from './AstarteDeviceEvent'; + +type AstarteDeviceDeletionFinishedEventDTO = AstarteDeviceEventDTO & { + event: { + type: 'device_deletion_finished'; + }; +}; + +const validationSchema: yup.ObjectSchema = yup + .object({ + type: yup.string().oneOf(['device_deletion_finished']).required(), + }) + .required(); + +export class AstarteDeviceDeletionFinishedEvent extends AstarteDeviceEvent { + private constructor(arg: unknown) { + super(arg); + validationSchema.validateSync(_.get(arg, 'event')); + } + + static fromJSON(arg: unknown): AstarteDeviceDeletionFinishedEvent { + return new AstarteDeviceDeletionFinishedEvent(arg); + } +} diff --git a/astarte-dashboard/src/astarte-client/types/events/index.ts b/astarte-dashboard/src/astarte-client/types/events/index.ts new file mode 100644 index 0000000000..f4e1da84de --- /dev/null +++ b/astarte-dashboard/src/astarte-client/types/events/index.ts @@ -0,0 +1,72 @@ +/* + This file is part of Astarte. + + Copyright 2020-2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import { AstarteDeviceEvent } from './AstarteDeviceEvent'; +import { AstarteDeviceConnectedEvent } from './AstarteDeviceConnectedEvent'; +import { AstarteDeviceDisconnectedEvent } from './AstarteDeviceDisconnectedEvent'; +import { AstarteDeviceErrorEvent } from './AstarteDeviceErrorEvent'; +import { AstarteDeviceIncomingDataEvent } from './AstarteDeviceIncomingDataEvent'; +import { AstarteDeviceUnsetPropertyEvent } from './AstarteDeviceUnsetPropertyEvent'; +import { AstarteDeviceRegistrationEvent } from './AstarteDeviceRegistrationEvent'; +import { AstarteDeviceDeletionFinishedEvent } from './AstateDeviceDeletionFinishedEvent'; +import { AstarteDeviceDeletionStartedEvent } from './AstarteDeviceDeletionStartedEvent'; + +function decodeEvent(arg: unknown): AstarteDeviceEvent | null { + return decodeAnyOf( + [ + AstarteDeviceConnectedEvent.fromJSON, + AstarteDeviceDisconnectedEvent.fromJSON, + AstarteDeviceErrorEvent.fromJSON, + AstarteDeviceUnsetPropertyEvent.fromJSON, + AstarteDeviceIncomingDataEvent.fromJSON, + AstarteDeviceRegistrationEvent.fromJSON, + AstarteDeviceDeletionFinishedEvent.fromJSON, + AstarteDeviceDeletionStartedEvent.fromJSON, + ], + arg, + ); +} + +type EventDecoder = (arg: unknown) => AstarteDeviceEvent; + +function decodeAnyOf(decoders: EventDecoder[], value: unknown): AstarteDeviceEvent | null { + let decodedValue = null; + + for (let i = 0; i < decoders.length && decodedValue === null; i += 1) { + try { + decodedValue = decoders[i](value); + } catch (err) { + // decoder not matching + } + } + + return decodedValue; +} + +export { + AstarteDeviceEvent, + AstarteDeviceConnectedEvent, + AstarteDeviceDisconnectedEvent, + AstarteDeviceRegistrationEvent, + AstarteDeviceDeletionFinishedEvent, + AstarteDeviceDeletionStartedEvent, + AstarteDeviceErrorEvent, + AstarteDeviceIncomingDataEvent, + AstarteDeviceUnsetPropertyEvent, + decodeEvent, +}; diff --git a/astarte-dashboard/src/astarte-client/types/index.ts b/astarte-dashboard/src/astarte-client/types/index.ts new file mode 100644 index 0000000000..6abbfb9cfd --- /dev/null +++ b/astarte-dashboard/src/astarte-client/types/index.ts @@ -0,0 +1,24 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +export * from './dto'; +export * from './block'; +export * from './dataType'; +export * from './events'; +export * from './interfaceValues'; +export * from './validation'; diff --git a/astarte-dashboard/src/astarte-client/types/interfaceValues.ts b/astarte-dashboard/src/astarte-client/types/interfaceValues.ts new file mode 100644 index 0000000000..b6326938a2 --- /dev/null +++ b/astarte-dashboard/src/astarte-client/types/interfaceValues.ts @@ -0,0 +1,51 @@ +/* + This file is part of Astarte. + + Copyright 2020-24 SECO Mind Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + SPDX-License-Identifier: Apache-2.0 +*/ + +import type { AstarteDataValue } from './dataType'; + +export interface AstartePropertiesInterfaceValues { + [subPath: string]: AstartePropertiesInterfaceValues | AstarteDataValue; +} + +export interface AstarteIndividualDatastreamInterfaceValue { + value: AstarteDataValue; + timestamp: string; +} +export type AstarteIndividualDatastreamInterfaceValues = + | AstarteIndividualDatastreamInterfaceValue[] + | { + [subPath: string]: + | AstarteIndividualDatastreamInterfaceValues + | AstarteIndividualDatastreamInterfaceValue; + }; + +export type AstarteAggregatedDatastreamInterfaceValue = { + [key: string]: AstarteDataValue; + timestamp: string; +}; +export type AstarteAggregatedDatastreamInterfaceValues = + | AstarteAggregatedDatastreamInterfaceValue + | AstarteAggregatedDatastreamInterfaceValue[] + | { [subPath: string]: AstarteAggregatedDatastreamInterfaceValues }; + +export type AstarteInterfaceValues = + | AstartePropertiesInterfaceValues + | AstarteIndividualDatastreamInterfaceValues + | AstarteAggregatedDatastreamInterfaceValues; diff --git a/astarte-dashboard/src/astarte-client/types/validation.ts b/astarte-dashboard/src/astarte-client/types/validation.ts new file mode 100644 index 0000000000..1c4ee7ac85 --- /dev/null +++ b/astarte-dashboard/src/astarte-client/types/validation.ts @@ -0,0 +1,32 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +export interface AstarteValidationResult { + isValid: boolean; + error?: string; + warning?: string; +} + +export interface AstarteValidationResults { + isValid: boolean; + errors: string[]; + warnings: string[]; + properties: { + [property: string]: AstarteValidationResult; + }; +} diff --git a/astarte-dashboard/src/components/Empty.tsx b/astarte-dashboard/src/components/Empty.tsx new file mode 100644 index 0000000000..0f4b804c99 --- /dev/null +++ b/astarte-dashboard/src/components/Empty.tsx @@ -0,0 +1,60 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React from 'react'; +import { Button, Container } from 'react-bootstrap'; +import { Link } from 'react-router-dom'; + +interface Props { + title: string; + onRetry?: () => void; +} + +const Empty = ({ title, onRetry }: Props): React.ReactElement => { + const tryAgain = onRetry ? ( + + ) : ( + 'try again' + ); + + const isJWTError = title.includes('JWT'); + + const message = isJWTError ? ( + <> + Please check your JWT token and log out. + + ) : ( + <>Please check your connectivity and {tryAgain}. + ); + + return ( + + Lion mascotte with repair tools +
    {title}
    +

    {message}

    +
    + ); +}; + +export default Empty; diff --git a/astarte-dashboard/src/components/FiltersForm.tsx b/astarte-dashboard/src/components/FiltersForm.tsx new file mode 100644 index 0000000000..0a5dffd954 --- /dev/null +++ b/astarte-dashboard/src/components/FiltersForm.tsx @@ -0,0 +1,97 @@ +/* + This file is part of Astarte. + + Copyright 2024 SECO Mind Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useState } from 'react'; +import { Button, Form, Col, Row, Spinner } from 'react-bootstrap'; +import DatePicker from 'react-datepicker'; +import 'react-datepicker/dist/react-datepicker.css'; + +interface FiltersFormProps { + interfacePaths: string[]; + onFiltersChange: (path: string, since?: string, to?: string) => void; + isLoading?: boolean; +} + +const FiltersForm = ({ + interfacePaths, + onFiltersChange, + isLoading, +}: FiltersFormProps): React.ReactElement => { + const [fromTime, setFromTime] = useState(null); + const [toTime, setToTime] = useState(null); + const [path, setPath] = useState(''); + + const handleFetchData = () => { + const since = fromTime ? fromTime.toISOString() : undefined; + const to = toTime ? toTime.toISOString() : undefined; + onFiltersChange(path, since, to); + }; + + return ( + <> + + + + Path + setPath(e.target.value)}> + + {interfacePaths.map((pathOption) => ( + + ))} + + + + + + From + setFromTime(date)} + showTimeSelect + dateFormat="Pp" + className="form-control" + placeholderText="Select from time" + /> + + + To + setToTime(date)} + showTimeSelect + dateFormat="Pp" + className="form-control" + placeholderText="Select to time" + /> + + + + + + ); +}; + +export default FiltersForm; diff --git a/astarte-dashboard/src/components/FullHeightCard.tsx b/astarte-dashboard/src/components/FullHeightCard.tsx new file mode 100644 index 0000000000..5302eead9d --- /dev/null +++ b/astarte-dashboard/src/components/FullHeightCard.tsx @@ -0,0 +1,33 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React from 'react'; +import { Card, Col } from 'react-bootstrap'; +import type { ColProps } from 'react-bootstrap'; + +const FullHeightCard = (props: ColProps): React.ReactElement => { + const { children, className, ...remainingProps } = props; + + return ( + + {children} + + ); +}; + +export default FullHeightCard; diff --git a/astarte-dashboard/src/components/Highlight.tsx b/astarte-dashboard/src/components/Highlight.tsx new file mode 100644 index 0000000000..1b8531fa3d --- /dev/null +++ b/astarte-dashboard/src/components/Highlight.tsx @@ -0,0 +1,47 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React from 'react'; + +interface Props { + children: string; + word?: string; +} + +const Highlight = ({ children, word }: Props): React.ReactElement => { + if (!word) { + return <>{children}; + } + + return ( + <> + {children.split(word).map((chunk, index) => ( + + {index !== 0 && ( + + {word} + + )} + {chunk} + + ))} + + ); +}; + +export default Highlight; diff --git a/astarte-dashboard/src/components/Icon.tsx b/astarte-dashboard/src/components/Icon.tsx new file mode 100644 index 0000000000..549a3cb61e --- /dev/null +++ b/astarte-dashboard/src/components/Icon.tsx @@ -0,0 +1,111 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React from 'react'; +import { OverlayTrigger, Tooltip } from 'react-bootstrap'; + +const iconToClassName = { + add: 'fas fa-plus', + arrowLeft: 'fas fa-chevron-left', + blocks: 'fas fa-shapes', + copyPaste: 'fas fa-paste', + delete: 'fas fa-times', + devices: 'fas fa-cube', + documentation: 'fa fa-book', + edit: 'fas fa-pencil-alt', + erase: 'fas fa-eraser', + filter: 'fas fa-filter', + flows: 'fas fa-wind', + groups: 'fas fa-object-group', + home: 'fas fa-home', + interfaces: 'fas fa-stream', + logout: 'fas fa-sign-out-alt', + pipelines: 'fas fa-code-branch', + settings: 'fas fa-cog', + statusOK: 'fas fa-check-circle color-green', + statusConnected: 'fas fa-circle color-green', + statusDisconnected: 'fas fa-circle color-red', + statusExWarning: 'fas fa-exclamation-circle color-yellow', + statusWarning: 'fas fa-circle color-yellow', + statusKO: 'fas fa-times-circle color-red', + statusNeverConnected: 'fas fa-circle color-grey', + statusInDeletion: 'fas fa-circle color-grey', + triggers: 'fas fa-bolt', + policy: 'fas fa-file-invoice', +}; + +type Icon = keyof typeof iconToClassName; + +const dangerIcons: Icon[] = ['delete', 'erase']; + +interface Props { + as?: 'default' | 'button'; + className?: string; + icon: Icon; + onClick?: (event: React.MouseEvent) => void; + style?: React.CSSProperties; + tooltip?: string; + tooltipPlacement?: React.ComponentProps['placement']; +} + +export default ({ + as = 'default', + className, + icon, + onClick, + style = {}, + tooltip, + tooltipPlacement, +}: Props): React.ReactElement => { + const iconStyle = { ...style }; + const iconClassNames: string[] = []; + iconClassNames.push(iconToClassName[icon]); + + if (onClick) { + iconStyle.cursor = 'pointer'; + } + if (as === 'button') { + iconClassNames.push('btn'); + } + if (dangerIcons.includes(icon)) { + if (iconClassNames.includes('btn')) { + iconClassNames.push('btn-danger'); + } else { + iconClassNames.push('color-red'); + } + } + if (className) { + iconClassNames.push(className); + } + + const iconElement = ( + + ); + + return tooltip ? ( + {tooltip}} + placement={tooltipPlacement} + > + {iconElement} + + ) : ( + iconElement + ); +}; diff --git a/astarte-dashboard/src/components/InterfaceEditor.tsx b/astarte-dashboard/src/components/InterfaceEditor.tsx new file mode 100644 index 0000000000..1832c6755e --- /dev/null +++ b/astarte-dashboard/src/components/InterfaceEditor.tsx @@ -0,0 +1,1131 @@ +/* + This file is part of Astarte. + + Copyright 2020-2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useCallback, useEffect, useState } from 'react'; +import { + Accordion, + Badge, + Button, + Card, + Col, + Container, + Form, + InputGroup, + Modal, + Row, + Stack, +} from 'react-bootstrap'; +import { AstarteInterface, AstarteMapping } from 'astarte-client'; +import _ from 'lodash'; + +import Icon from './Icon'; +import MappingEditor from './MappingEditor'; + +interface FormControlWarningProps { + message?: string; +} + +const FormControlWarning = ({ message }: FormControlWarningProps): React.ReactElement | null => { + if (!message) { + return null; + } + return
    {message}
    ; +}; + +interface MappingRowProps { + className?: string; + mapping: AstarteMapping; + onEdit?: () => void; + onDelete?: () => void; +} + +const reliabilityToLabel = { + unreliable: 'Unreliable', + guaranteed: 'Guaranteed', + unique: 'Unique', +}; + +const retentionToLabel = { + discard: 'Discard', + volatile: 'Volatile', + stored: 'Stored', +}; + +const databaseRetentionToLabel = { + no_ttl: 'No TTL', + use_ttl: 'Use TTL', +}; + +const MappingRow = ({ className, mapping, onEdit, onDelete }: MappingRowProps) => ( + + + + + {mapping.type} + + + {onEdit && ( + + )} + {onDelete && ( + + )} + + + {mapping.description && ( + <> +
    Description
    +

    {mapping.description}

    + + )} + {mapping.documentation && ( + <> +
    Documentation
    +

    {mapping.documentation}

    + + )} + {mapping.allowUnset && ( + <> +
    Allow Unset
    +

    True

    + + )} + {mapping.explicitTimestamp && ( + <> +
    Explicit Timestamp
    +

    True

    + + )} + {mapping.reliability && ( + <> +
    Reliability
    +

    {reliabilityToLabel[mapping.reliability]}

    + + )} + {mapping.retention && ( + <> +
    Retention
    +

    {retentionToLabel[mapping.retention]}

    + + )} + {mapping.expiry && ( + <> +
    Expiry
    +

    {mapping.expiry} seconds

    + + )} + {mapping.databaseRetentionPolicy && ( + <> +
    Database Retention
    +

    {databaseRetentionToLabel[mapping.databaseRetentionPolicy]}

    + + )} + {mapping.databaseRetentionTtl != null && ( + <> +
    Database Retention TTL
    +

    {mapping.databaseRetentionTtl} seconds

    + + )} +
    +
    +
    +); + +const getDefaultMapping = (params: { + interfaceType: AstarteInterface['type']; + interfaceAggregation: AstarteInterface['aggregation']; + interfaceOwner: AstarteInterface['ownership']; +}): AstarteMapping => { + if ( + params.interfaceType === 'datastream' && + params.interfaceAggregation === 'individual' && + params.interfaceOwner == 'device' + ) { + return { + endpoint: '', + type: 'double', + explicitTimestamp: true, + }; + } + return { + endpoint: '', + type: 'double', + }; +}; + +interface MappingModalProps { + interfaceOwner: AstarteInterface['ownership']; + interfaceType: AstarteInterface['type']; + interfaceAggregation?: AstarteInterface['aggregation']; + mapping?: AstarteMapping; + onCancel: () => void; + onConfirm: (newMapping: AstarteMapping) => void; +} + +const MappingModal = ({ + interfaceOwner, + interfaceType, + interfaceAggregation = 'individual', + mapping, + onCancel, + onConfirm, +}: MappingModalProps): React.ReactElement => { + const [mappingDraft, setMappingDraft] = useState( + mapping || getDefaultMapping({ interfaceType, interfaceAggregation, interfaceOwner }), + ); + + const handleChange = useCallback((newMapping: AstarteMapping) => { + setMappingDraft(newMapping); + }, []); + + const isValidMapping = AstarteMapping.validation.isValidSync(mappingDraft); + + return ( + + + {mapping != null ? 'Edit Mapping' : 'Add Mapping'} + + + + + + + + + + ); +}; + +const computeInterfaceWarnings = (iface: AstarteInterface): { [key: string]: string } => { + const warnings: { [key: string]: string } = {}; + + if (iface.type === 'datastream' && iface.aggregation === 'object') { + const endpoints = iface.mappings.map((mapping) => mapping.endpoint); + const endpointDepths = endpoints.map((endpoint) => endpoint.split('/').length - 1); + if (endpointDepths.some((depth) => depth < 2)) { + warnings.mappings = + 'Interface mappings endpoints of depth 1 in Object aggregate interfaces are deprecated. The endpoint should have depth level of 2 or more (e.g. /my/endpoint).'; + } + } + + const interfaceNameRegex = /^([a-z][a-z0-9]*\.([a-z0-9][a-z0-9-]*\.)*)+[A-Z][a-zA-Z0-9]*$/; + if (!interfaceNameRegex.test(iface.name)) { + warnings.name = + 'Interface name should be prefixed with a reverse domain name, and should use PascalCase (e.g. com.example.MyInterface)'; + } + + return warnings; +}; + +const checkInterfaceHasMajorChanges = ( + initialInterface: AstarteInterface, + draftInterface: AstarteInterface, +) => { + const sensibleProperties: Array = [ + 'name', + 'major', + 'type', + 'aggregation', + 'ownership', + ]; + const hasPropertyMajorChange = sensibleProperties.some( + (property) => draftInterface[property] !== initialInterface[property], + ); + if (hasPropertyMajorChange) { + return true; + } + const hasMajorMappingChanges = initialInterface.mappings.some((initialMapping) => { + const draftMapping = draftInterface.mappings.find( + ({ endpoint }) => endpoint === initialMapping.endpoint, + ); + + const sensitiveMappingProperties: Array = [ + 'endpoint', + 'type', + 'allowUnset', + 'reliability', + 'databaseRetentionPolicy', + 'databaseRetentionTtl', + ]; + if (!draftMapping) { + return true; + } + const hasMajorMappingChange = sensitiveMappingProperties.some( + (property) => draftMapping[property] !== initialMapping[property], + ); + return hasMajorMappingChange; + }); + return hasMajorMappingChanges; +}; + +const checkInterfaceHasMinorChanges = ( + initialInterface: AstarteInterface, + draftInterface: AstarteInterface, +) => { + const hasMappingsChange = initialInterface.mappings.some((initialMapping) => { + const draftMapping = draftInterface.mappings.find( + ({ endpoint }) => endpoint === initialMapping.endpoint, + ); + const insensitiveMappingProperties: Array = [ + 'description', + 'documentation', + 'explicitTimestamp', + 'retention', + 'expiry', + ]; + if (!draftMapping) { + return true; + } + const hasMinorMappingChanges = insensitiveMappingProperties.some( + (property) => draftMapping[property] !== initialMapping[property], + ); + return hasMinorMappingChanges; + }); + return hasMappingsChange; +}; + +const formatJSON = (json: unknown): string => JSON.stringify(json, null, 4); + +const formatJSONText = (text: string): string => { + try { + return formatJSON(JSON.parse(text)); + } catch { + return text; + } +}; + +const checkValidJSONText = (text: string): boolean => { + try { + JSON.parse(text); + return true; + } catch { + return false; + } +}; + +const defaultInterface: AstarteInterface = { + name: '', + major: 0, + minor: 1, + type: 'properties', + ownership: 'device', + mappings: [], +}; + +interface DatastreamOptions { + reliability?: AstarteMapping['reliability']; + retention?: AstarteMapping['retention']; + expiry?: AstarteMapping['expiry']; + databaseRetentionPolicy?: AstarteMapping['databaseRetentionPolicy']; + databaseRetentionTtl?: AstarteMapping['databaseRetentionTtl']; + explicitTimestamp?: AstarteMapping['explicitTimestamp']; +} + +const defaultDatastreamOptions = { + explicitTimestamp: true, +}; + +const getInitialDatastreamOptions = (iface: AstarteInterface): DatastreamOptions => { + if (iface.mappings.length === 0) { + return defaultDatastreamOptions; + } + const mapping = iface.mappings[0]; + const options: DatastreamOptions = {}; + options.reliability = mapping.reliability; + options.retention = mapping.retention; + options.expiry = options.retention !== 'discard' ? mapping.expiry : undefined; + options.databaseRetentionPolicy = mapping.databaseRetentionPolicy; + options.databaseRetentionTtl = + options.databaseRetentionPolicy === 'use_ttl' ? mapping.databaseRetentionTtl : undefined; + options.explicitTimestamp = mapping.explicitTimestamp != null ? mapping.explicitTimestamp : true; + return options; +}; + +interface Props { + initialData?: AstarteInterface; + isSourceVisible?: boolean; + onChange?: (updatedInterface: AstarteInterface, isValid: boolean) => unknown; + denyMajorChanges?: boolean; +} + +export default ({ + initialData, + isSourceVisible = false, + onChange, + denyMajorChanges = false, +}: Props): React.ReactElement => { + const [interfaceDraft, setInterfaceDraft] = useState( + initialData || defaultInterface, + ); + const [interfaceSource, setInterfaceSource] = useState( + formatJSON(AstarteInterface.toJSON(interfaceDraft)), + ); + const [datastreamOptions, setDatastreamOptions] = useState( + getInitialDatastreamOptions(interfaceDraft), + ); + const [isMappingModalVisible, setIsMappingModalVisible] = useState(false); + const [mappingToEditIndex, setMappingToEditIndex] = useState(0); + + const parseAstarteInterfaceJSON = useCallback( + (json: unknown): AstarteInterface | null => { + let parsedInterface: AstarteInterface; + try { + parsedInterface = AstarteInterface.fromJSON(json as any); + } catch { + throw new Error('Invalid interface'); + } + if ( + initialData != null && + denyMajorChanges && + checkInterfaceHasMajorChanges(initialData, parsedInterface) + ) { + throw new Error( + 'Interface cannot have major changes such as updating name, major, type, aggregation, ownership, or editing sensitive properties of already existing mappings', + ); + } + if ( + initialData != null && + checkInterfaceHasMinorChanges(initialData, parsedInterface) && + parsedInterface.minor <= initialData.minor + ) { + throw new Error('Change "version_minor" property of the interface to apply changes.'); + } + return parsedInterface; + }, + [initialData, denyMajorChanges], + ); + + const handleInterfaceNameChange = useCallback((e: React.ChangeEvent) => { + const { value } = e.target; + setInterfaceDraft((draft) => ({ ...draft, name: value.trim() })); + }, []); + + const handleInterfaceMajorChange = useCallback((e: React.ChangeEvent) => { + const { value } = e.target; + setInterfaceDraft((draft) => ({ ...draft, major: parseInt(value, 10) })); + }, []); + + const handleInterfaceMinorChange = useCallback((e: React.ChangeEvent) => { + const { value } = e.target; + setInterfaceDraft((draft) => ({ ...draft, minor: parseInt(value, 10) })); + }, []); + + const clearMappingsOptions = useCallback( + (params: { + type: AstarteInterface['type']; + aggregation: AstarteInterface['aggregation']; + ownership: AstarteInterface['ownership']; + }) => { + setInterfaceDraft((draft) => { + const mappings = draft.mappings.map((mapping) => { + return _.omit(mapping, [ + 'allowUnset', + 'reliability', + 'retention', + 'expiry', + 'databaseRetentionPolicy', + 'databaseRetentionTtl', + ]); + }); + return { ...draft, mappings }; + }); + + if (params.type === 'datastream' && params.aggregation === 'object') { + setDatastreamOptions({ + ...defaultDatastreamOptions, + explicitTimestamp: params.ownership === 'device', + }); + } else { + setDatastreamOptions({ explicitTimestamp: params.ownership === 'device' }); + } + }, + [], + ); + + const handleInterfaceTypeChange = useCallback( + (e: React.ChangeEvent) => { + const { value } = e.currentTarget; + const type = value as AstarteInterface['type']; + const aggregation = type === 'datastream' ? 'individual' : undefined; + + clearMappingsOptions({ type, aggregation, ownership: interfaceDraft.ownership }); + setInterfaceDraft((draft) => { + const mappings = draft.mappings.map((mapping) => { + if (type === 'properties') { + return _.omit(mapping, ['explicitTimestamp']) as AstarteMapping; + } else { + return { + ...mapping, + explicitTimestamp: interfaceDraft.ownership === 'device', + } as AstarteMapping; + } + }); + + return { + ...draft, + mappings, + type, + aggregation, + }; + }); + }, + [clearMappingsOptions, interfaceDraft], + ); + + const handleInterfaceAggregationChange = useCallback( + (e: React.ChangeEvent) => { + const { value } = e.currentTarget; + const aggregation = value as AstarteInterface['aggregation']; + + setInterfaceDraft((draft) => { + const mappings: AstarteMapping[] = draft.mappings.map((mapping) => { + return { + ...mapping, + explicitTimestamp: draft.ownership === 'device', + } as AstarteMapping; + }); + + return { + ...draft, + mappings, + aggregation, + }; + }); + + clearMappingsOptions({ + type: 'datastream', + aggregation, + ownership: interfaceDraft.ownership, + }); + }, + [clearMappingsOptions, interfaceDraft], + ); + + const handleInterfaceOwnershipChange = useCallback( + (e: React.ChangeEvent) => { + const { value } = e.currentTarget; + const ownership = value as AstarteInterface['ownership']; + + setInterfaceDraft((draft) => { + const mappings: AstarteMapping[] = draft.mappings.map((mapping) => { + if (interfaceDraft.type === 'properties') { + return _.omit(mapping, ['explicitTimestamp']) as AstarteMapping; + } else { + return { + ...mapping, + explicitTimestamp: ownership === 'device', + } as AstarteMapping; + } + }); + + return { + ...draft, + mappings, + ownership, + }; + }); + clearMappingsOptions({ + type: interfaceDraft.type, + aggregation: interfaceDraft.aggregation, + ownership: ownership, + }); + }, + [clearMappingsOptions, interfaceDraft], + ); + + const handleInterfaceDescriptionChange = useCallback((e: React.ChangeEvent) => { + const { value } = e.target; + setInterfaceDraft((draft) => ({ ...draft, description: value || undefined })); + }, []); + + const handleInterfaceDocumentationChange = useCallback( + (e: React.ChangeEvent) => { + const { value } = e.target; + setInterfaceDraft((draft) => ({ ...draft, documentation: value || undefined })); + }, + [], + ); + + const handleInterfaceReliabilityChange = useCallback( + (e: React.ChangeEvent) => { + const { value } = e.currentTarget; + let reliability = value as AstarteMapping['reliability']; + reliability = reliability === 'unreliable' ? undefined : reliability; + setDatastreamOptions((options) => ({ ...options, reliability })); + }, + [], + ); + + const handleInterfaceExplicitTimestampChange = useCallback( + (e: React.ChangeEvent) => { + let explicitTimestamp = !!e.target.checked as AstarteMapping['explicitTimestamp']; + explicitTimestamp = explicitTimestamp || undefined; + setDatastreamOptions((options) => ({ ...options, explicitTimestamp })); + }, + [], + ); + + const handleInterfaceRetentionChange = useCallback((e: React.ChangeEvent) => { + const { value } = e.currentTarget; + const retention = value as AstarteMapping['retention']; + setDatastreamOptions((options) => ({ + ...options, + retention: retention === 'discard' ? undefined : retention, + expiry: retention === 'discard' ? undefined : options.expiry, + })); + }, []); + + const handleInterfaceExpiryChange = useCallback((e: React.ChangeEvent) => { + const expiry = parseInt(e.currentTarget.value, 10) || undefined; + setDatastreamOptions((options) => ({ ...options, expiry })); + }, []); + + const handleInterfaceDatabaseRetentionPolicyChange = useCallback( + (e: React.ChangeEvent) => { + const { value } = e.currentTarget; + const databaseRetentionPolicy = value as AstarteMapping['databaseRetentionPolicy']; + setDatastreamOptions((options) => ({ + ...options, + databaseRetentionPolicy: + databaseRetentionPolicy === 'no_ttl' ? undefined : databaseRetentionPolicy, + databaseRetentionTtl: + databaseRetentionPolicy === 'no_ttl' ? undefined : options.databaseRetentionTtl || 60, + })); + }, + [], + ); + + const handleInterfaceDatabaseRetentionTtlChange = useCallback( + (e: React.ChangeEvent) => { + const databaseRetentionTtl = parseInt(e.currentTarget.value, 10); + setDatastreamOptions((options) => ({ ...options, databaseRetentionTtl })); + }, + [], + ); + + const handleAddMapping = useCallback(() => { + setMappingToEditIndex(interfaceDraft.mappings.length); + setIsMappingModalVisible(true); + }, [interfaceDraft.mappings]); + + const handleEditMapping = useCallback((mappingIndex: number) => { + setMappingToEditIndex(mappingIndex); + setIsMappingModalVisible(true); + }, []); + + const handleDeleteMapping = useCallback((mappingIndex: number) => { + setInterfaceDraft((draft) => { + const updatedMappings = draft.mappings.filter((m, index) => index !== mappingIndex); + return { ...draft, mappings: updatedMappings }; + }); + }, []); + + const handleConfirmEditMapping = useCallback( + (mapping: AstarteMapping) => { + setInterfaceDraft((draft) => { + let newMapping = { ...mapping }; + if (interfaceDraft.type === 'datastream' && interfaceDraft.aggregation === 'object') { + newMapping = { ...mapping, ...datastreamOptions }; + } + const isNewMapping = mappingToEditIndex >= draft.mappings.length; + const updatedMappings = isNewMapping + ? draft.mappings.concat(newMapping) + : draft.mappings.map((m, index) => (index === mappingToEditIndex ? newMapping : m)); + return { ...draft, mappings: updatedMappings }; + }); + setIsMappingModalVisible(false); + }, + [mappingToEditIndex, datastreamOptions, interfaceDraft.type, interfaceDraft.aggregation], + ); + + const handleInterfaceSourceChange = useCallback( + (e: React.ChangeEvent) => { + const { value } = e.target; + setInterfaceSource(value); + if (!checkValidJSONText(value)) { + return; + } + let parsedInterface: AstarteInterface | null; + try { + parsedInterface = parseAstarteInterfaceJSON(JSON.parse(value)); + } catch { + parsedInterface = null; + } + if (!parsedInterface) { + return; + } + setInterfaceDraft(parsedInterface); + const mapping = _.get(parsedInterface, 'mappings.0') as AstarteMapping | undefined; + if (parsedInterface.type === 'datastream' && parsedInterface.aggregation === 'object') { + setDatastreamOptions({ + reliability: mapping?.reliability, + retention: mapping?.retention, + expiry: mapping?.expiry, + databaseRetentionPolicy: mapping?.databaseRetentionPolicy, + databaseRetentionTtl: mapping?.databaseRetentionTtl, + explicitTimestamp: mapping?.explicitTimestamp, + }); + } else { + setDatastreamOptions({}); + } + }, + [parseAstarteInterfaceJSON], + ); + + useEffect(() => { + setInterfaceDraft((draft) => { + if (draft.aggregation !== 'object' || draft.mappings.length === 0) { + return draft; + } + const mappings = draft.mappings.map((mapping) => ({ + ...mapping, + reliability: datastreamOptions.reliability, + retention: datastreamOptions.retention, + expiry: datastreamOptions.expiry, + databaseRetentionPolicy: datastreamOptions.databaseRetentionPolicy, + databaseRetentionTtl: datastreamOptions.databaseRetentionTtl, + explicitTimestamp: datastreamOptions.explicitTimestamp, + })); + return { ...draft, mappings }; + }); + }, [datastreamOptions]); + + let interfaceValidationErrors: { [key: string]: string } = {}; + try { + AstarteInterface.validation.validateSync(interfaceDraft, { abortEarly: false }); + } catch (err: any) { + interfaceValidationErrors = _.mapValues( + _.keyBy(_.uniqBy(err.inner, 'path'), 'path'), + 'message', + ); + } + const isValidInterface = _.isEmpty(interfaceValidationErrors); + + useEffect(() => { + const formattedInterfaceSource = formatJSON(AstarteInterface.toJSON(interfaceDraft)); + setInterfaceSource((source) => + formatJSONText(source) !== formattedInterfaceSource ? formattedInterfaceSource : source, + ); + if (onChange) { + onChange(interfaceDraft, isValidInterface); + } + }, [interfaceDraft, isValidInterface, onChange]); + + const interfaceValidationWarnings = computeInterfaceWarnings(interfaceDraft); + + let isValidInterfaceSource = true; + let interfaceSourceError = ''; + if (!checkValidJSONText(interfaceSource)) { + isValidInterfaceSource = false; + interfaceSourceError = 'Invalid JSON'; + } else { + try { + parseAstarteInterfaceJSON(JSON.parse(interfaceSource)); + } catch (err: any) { + isValidInterfaceSource = false; + interfaceSourceError = err.message; + } + } + + useEffect(() => { + if (onChange) { + onChange(interfaceDraft, isValidInterfaceSource); + } + }, [interfaceDraft, isValidInterfaceSource, onChange]); + + const mappingToEdit = _.nth(interfaceDraft.mappings, mappingToEditIndex); + + const showInterfaceExpiry = + datastreamOptions.retention === 'volatile' || datastreamOptions.retention === 'stored'; + + const showInterfaceDatabaseRetentionTtl = datastreamOptions.databaseRetentionPolicy === 'use_ttl'; + + return ( + + + +
    + + + + + Name + + + {interfaceValidationErrors.name} + + {interfaceValidationErrors.name == null && ( + + )} + + + + + Major + + + {interfaceValidationErrors.major} + + + + + + Minor + + + {interfaceValidationErrors.minor} + + + + + + + + Type + + + + + + + Aggregation + + + + + + + Ownership + + + + + + {interfaceDraft.type === 'datastream' && interfaceDraft.aggregation === 'object' && ( + + + + Reliability + + + + + + + + {interfaceDraft.ownership === 'device' && ( + + + Timestamp + + + + )} + + )} + {interfaceDraft.type === 'datastream' && interfaceDraft.aggregation === 'object' && ( + + + + Retention + + + + + + + + {showInterfaceExpiry && ( + + + Expiry + + + seconds + + + + )} + + )} + {interfaceDraft.type === 'datastream' && interfaceDraft.aggregation === 'object' && ( + + + + Database Retention + + + + + + + {showInterfaceDatabaseRetentionTtl && ( + + + TTL + + + seconds + + + + )} + + )} + + + + Description + + + {interfaceValidationErrors.description} + + + + + + + + Documentation + + + {interfaceValidationErrors.documentation} + + + + + + + + + {interfaceDraft.mappings.map((mapping, index) => { + const isExistingMapping = (initialData?.mappings || []).some( + ({ endpoint }) => endpoint === mapping.endpoint, + ); + const canEdit = !(denyMajorChanges && isExistingMapping); + const canDelete = !(denyMajorChanges && isExistingMapping); + return ( + handleEditMapping(index) : undefined} + onDelete={canDelete ? () => handleDeleteMapping(index) : undefined} + /> + ); + })} + + + {interfaceValidationErrors.mappings} + + + + + + +
    +
    + + {isSourceVisible && ( + + + + {interfaceSourceError} + + + )} + {isMappingModalVisible && ( + setIsMappingModalVisible(false)} + onConfirm={handleConfirmEditMapping} + /> + )} +
    + ); +}; diff --git a/astarte-dashboard/src/components/MappingEditor.tsx b/astarte-dashboard/src/components/MappingEditor.tsx new file mode 100644 index 0000000000..1d51aced9a --- /dev/null +++ b/astarte-dashboard/src/components/MappingEditor.tsx @@ -0,0 +1,333 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React from 'react'; +import { Col, Form, InputGroup, Row, Stack } from 'react-bootstrap'; +import { AstarteMapping } from 'astarte-client'; +import type { AstarteInterface } from 'astarte-client'; +import _ from 'lodash'; + +const astarteDataTypes: AstarteMapping['type'][] = [ + 'string', + 'boolean', + 'double', + 'integer', + 'longinteger', + 'binaryblob', + 'datetime', + 'doublearray', + 'integerarray', + 'booleanarray', + 'longintegerarray', + 'stringarray', + 'binaryblobarray', + 'datetimearray', +]; + +const defaultMapping: AstarteMapping = { + endpoint: '', + type: 'double', +}; + +interface Props { + interfaceOwner: AstarteInterface['ownership']; + interfaceType: AstarteInterface['type']; + interfaceAggregation?: AstarteInterface['aggregation']; + mapping?: AstarteMapping; + onChange: (updatedMapping: AstarteMapping) => unknown; +} + +export default ({ + interfaceOwner, + interfaceType, + interfaceAggregation = 'individual', + mapping = defaultMapping, + onChange, +}: Props): React.ReactElement => { + const isPropertiesInterface = interfaceType === 'properties'; + const isDatastreamIndividualInterface = + interfaceType === 'datastream' && interfaceAggregation === 'individual'; + const isDevice = interfaceOwner === 'device'; + const showMappingExpiry = mapping.retention === 'volatile' || mapping.retention === 'stored'; + const showInterfaceDatabaseRetentionTtl = mapping.databaseRetentionPolicy === 'use_ttl'; + let mappingValidationErrors: { [property: string]: string } = {}; + try { + AstarteMapping.validation.validateSync(mapping, { abortEarly: false }); + } catch (err: any) { + mappingValidationErrors = _.mapValues(_.keyBy(_.uniqBy(err.inner, 'path'), 'path'), 'message'); + } + + return ( +
    + + + + + Endpoint + onChange({ ...mapping, endpoint: value })} + autoComplete="off" + required + isInvalid={mappingValidationErrors.endpoint != null} + /> + + {mappingValidationErrors.endpoint} + + + + + + + + Type + + onChange({ ...mapping, type: value as AstarteMapping['type'] }) + } + isInvalid={mappingValidationErrors.type != null} + > + {astarteDataTypes.map((t) => ( + + ))} + + + {mappingValidationErrors.type} + + + + {isPropertiesInterface && ( + + + Property options + ) => { + const allowUnset = !!e.target.checked; + onChange({ ...mapping, allowUnset: allowUnset || undefined }); + }} + isInvalid={mappingValidationErrors.allowUnset != null} + /> + + {mappingValidationErrors.allowUnset} + + + + )} + + {isDatastreamIndividualInterface && ( + + + + Reliability + { + let reliability = value as AstarteMapping['reliability']; + reliability = reliability === 'unreliable' ? undefined : reliability; + onChange({ ...mapping, reliability }); + }} + isInvalid={mappingValidationErrors.reliability != null} + > + + + + + + {mappingValidationErrors.reliability} + + + + + + {isDevice && ( + + Timestamp + ) => { + const explicitTimestamp = !!e.target.checked; + onChange({ ...mapping, explicitTimestamp: explicitTimestamp || undefined }); + }} + isInvalid={mappingValidationErrors.explicitTimestamp != null} + /> + + {mappingValidationErrors.explicitTimestamp} + + + )} + + + )} + {isDatastreamIndividualInterface && ( + + + + Retention + { + const retention = value as AstarteMapping['retention']; + onChange({ + ...mapping, + retention: retention === 'discard' ? undefined : retention, + expiry: retention === 'discard' ? undefined : mapping.expiry, + }); + }} + isInvalid={mappingValidationErrors.retention != null} + > + + + + + + {mappingValidationErrors.retention} + + + + {showMappingExpiry && ( + + + Expiry + + { + const expiry = parseInt(value, 10) || undefined; + onChange({ ...mapping, expiry }); + }} + isInvalid={mappingValidationErrors.expiry != null} + /> + seconds + + {mappingValidationErrors.expiry} + + + + + )} + + )} + {isDatastreamIndividualInterface && ( + + + + Database retention + { + const databaseRetentionPolicy = + value as AstarteMapping['databaseRetentionPolicy']; + onChange({ + ...mapping, + databaseRetentionPolicy: + databaseRetentionPolicy === 'no_ttl' ? undefined : databaseRetentionPolicy, + databaseRetentionTtl: + databaseRetentionPolicy === 'no_ttl' + ? undefined + : mapping.databaseRetentionTtl || 60, + }); + }} + isInvalid={mappingValidationErrors.databaseRetentionPolicy != null} + > + + + + + {mappingValidationErrors.databaseRetentionPolicy} + + + + {showInterfaceDatabaseRetentionTtl && ( + + + TTL + + { + const databaseRetentionTtl = parseInt(value, 10); + onChange({ ...mapping, databaseRetentionTtl }); + }} + isInvalid={mappingValidationErrors.databaseRetentionTtl != null} + /> + seconds + + {mappingValidationErrors.databaseRetentionTtl} + + + + + )} + + )} + + + + Description + + onChange({ ...mapping, description: value || undefined }) + } + autoComplete="off" + isInvalid={mappingValidationErrors.description != null} + /> + + {mappingValidationErrors.description} + + + + + + + + Documentation + + onChange({ ...mapping, documentation: value || undefined }) + } + autoComplete="off" + isInvalid={mappingValidationErrors.documentation != null} + /> + + {mappingValidationErrors.documentation} + + + + + +
    + ); +}; diff --git a/astarte-dashboard/src/components/NativeBlockFactory.tsx b/astarte-dashboard/src/components/NativeBlockFactory.tsx new file mode 100644 index 0000000000..6f7860c1d5 --- /dev/null +++ b/astarte-dashboard/src/components/NativeBlockFactory.tsx @@ -0,0 +1,82 @@ +/* + This file is part of Astarte. + + Copyright 2020-2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React from 'react'; +import _ from 'lodash'; +import { + AbstractReactFactory, + BaseModel, + GenerateWidgetEvent, +} from '@projectstorm/react-canvas-core'; +import { DiagramEngine } from '@projectstorm/react-diagrams'; +import type { AstarteBlock } from 'astarte-client'; + +import NativeBlockModel from '../models/NativeBlockModel'; +import NativeBlockWidget from './NativeBlockWidget'; + +type GenerateModelEvent = Parameters['0'] & { + name: AstarteBlock['name']; + type: AstarteBlock['type']; + onRemoveClick?: (node: NativeBlockModel) => void; + onSettingsClick?: (node: NativeBlockModel) => void; +}; + +class NativeBlockFactory extends AbstractReactFactory { + blockDefinitions: Map; + + constructor(blockDefinitions: AstarteBlock[]) { + super('astarte-native'); + this.blockDefinitions = new Map(); + this.updateDefinitions(blockDefinitions); + } + + generateReactWidget(event: GenerateWidgetEvent): React.ReactElement { + const node = event.model as NativeBlockModel; + const block = this.blockDefinitions.get(`${node.blockType}-${node.name}`); + if (!block) { + return <>; + } + const hasSettings = !_.isEmpty(block.schema) && !_.isEmpty(block.schema.properties); + return ; + } + + generateModel({ + name, + type, + onRemoveClick, + onSettingsClick, + }: GenerateModelEvent): NativeBlockModel { + const block = this.blockDefinitions.get(`${type}-${name}`); + return new NativeBlockModel({ + name: block ? block.name : name, + blockType: block ? block.type : type, + onRemoveClick, + onSettingsClick, + }); + } + + updateDefinitions(blocks: AstarteBlock[]): void { + if (blocks && blocks.length > 0) { + this.blockDefinitions = new Map(blocks.map((b) => [`${b.type}-${b.name}`, b])); + } else { + this.blockDefinitions = new Map(); + } + } +} + +export default NativeBlockFactory; diff --git a/astarte-dashboard/src/components/NativeBlockWidget.tsx b/astarte-dashboard/src/components/NativeBlockWidget.tsx new file mode 100644 index 0000000000..477725af5e --- /dev/null +++ b/astarte-dashboard/src/components/NativeBlockWidget.tsx @@ -0,0 +1,72 @@ +/* + This file is part of Astarte. + + Copyright 2020-2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React from 'react'; +import { DefaultPortLabel, DiagramEngine } from '@projectstorm/react-diagrams'; + +import Icon from './Icon'; +import NativeBlockModel from '../models/NativeBlockModel'; + +interface Props { + engine: DiagramEngine; + node: NativeBlockModel; + hasSettings: boolean; +} + +const NativeBlockWidget = ({ engine, node, hasSettings }: Props): React.ReactElement => { + const { name } = node; + const inPorts = node.getInPorts(); + const outPorts = node.getOutPorts(); + + const classes = ['native-node', node.blockType]; + if (node.isSelected()) { + classes.push('selected'); + } + + return ( +
    +
    +
    {name}
    +
    + {hasSettings && ( +
    node.onSettingsClick(node)}> + +
    + )} +
    node.onRemoveClick(node)}> + +
    +
    +
    +
    +
    + {inPorts.map((port) => ( + + ))} +
    +
    + {outPorts.map((port) => ( + + ))} +
    +
    +
    + ); +}; + +export default NativeBlockWidget; diff --git a/astarte-dashboard/src/components/TriggerDeliveryPolicyEditor.tsx b/astarte-dashboard/src/components/TriggerDeliveryPolicyEditor.tsx new file mode 100644 index 0000000000..0f99ad3a12 --- /dev/null +++ b/astarte-dashboard/src/components/TriggerDeliveryPolicyEditor.tsx @@ -0,0 +1,270 @@ +/* +This file is part of Astarte. + +Copyright 2023 SECO Mind Srl + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +/* eslint-disable camelcase */ + +import React, { useCallback, useEffect, useState } from 'react'; +import { Col, Container, Form, InputGroup, Row, Stack } from 'react-bootstrap'; +import _, { toInteger } from 'lodash'; +import { AstarteTriggerDeliveryPolicyDTO } from 'astarte-client/types/dto'; +import * as yup from 'yup'; +import { AstarteTriggerDeliveryPolicy } from 'astarte-client/models/Policy'; +import TriggerDeliveryPolicyHandler from './TriggerDeliveryPolicyHandler'; + +const validateName = (name: string) => { + const regex = /^(?!@).{1,128}$/; + return regex.test(name); +}; + +const checkValidJSONText = (text: string): boolean => { + try { + JSON.parse(text); + return true; + } catch { + return false; + } +}; + +const defaultPolicy: AstarteTriggerDeliveryPolicyDTO = { + name: '', + error_handlers: [], + maximum_capacity: 100, +}; + +interface Props { + initialData?: AstarteTriggerDeliveryPolicyDTO; + isReadOnly: boolean; + isSourceVisible?: boolean; + onChange?: (updatedPolicy: AstarteTriggerDeliveryPolicyDTO, isValid: boolean) => unknown; +} + +export default ({ + initialData, + isReadOnly, + isSourceVisible, + onChange, +}: Props): React.ReactElement => { + const [policyDraft, setPolicyDraft] = useState( + initialData || defaultPolicy, + ); + const [policySource, setPolicySource] = useState(JSON.stringify(policyDraft, null, 4)); + const [policySourceError, setPolicySourceError] = useState(''); + const [isValidPolicySource, setIsValidPolicySource] = useState(true); + const isRetryTimesDisabled = !policyDraft.error_handlers.some((e) => e.strategy === 'retry'); + + const handlePolicyNameChange = (e: React.ChangeEvent) => { + const { value } = e.target; + setPolicyDraft((draft) => ({ ...draft, name: value })); + }; + + const handlePolicyCapacityChange = useCallback((e: React.ChangeEvent) => { + const { value } = e.target; + setPolicyDraft((draft) => ({ ...draft, maximum_capacity: toInteger(value) })); + }, []); + + const handleRetryChange = useCallback((e: React.ChangeEvent) => { + const { value } = e.target; + if (toInteger(value) >= 1) { + setPolicyDraft((draft) => ({ ...draft, retry_times: toInteger(value) })); + } else { + setPolicyDraft((draft) => { + const { retry_times, ...restElements } = draft; + return restElements; + }); + } + }, []); + + const handleEventTtlChange = useCallback((e: React.ChangeEvent) => { + const { value } = e.target; + if (toInteger(value) >= 1) { + setPolicyDraft((draft) => ({ ...draft, event_ttl: toInteger(value) })); + } else { + setPolicyDraft((draft) => { + const { event_ttl, ...restElements } = draft; + return restElements; + }); + } + }, []); + + const setErrorMessage = (message: string) => { + setPolicySourceError(message); + setIsValidPolicySource(false); + }; + + const isValidJSON = (policy: AstarteTriggerDeliveryPolicyDTO) => { + try { + AstarteTriggerDeliveryPolicy.validation.validateSync(policy, { abortEarly: false }); + setIsValidPolicySource(true); + } catch (error) { + setIsValidPolicySource(false); + if (error) { + if (error instanceof yup.ValidationError) { + setErrorMessage(error.inner[0].message); + } + } + } + }; + + const validJSONText = (value: string) => { + if (!checkValidJSONText(value)) { + setErrorMessage('Invalid JSON!'); + return; + } + const newPolicy: AstarteTriggerDeliveryPolicyDTO = JSON.parse(value); + isValidJSON(newPolicy); + }; + + const handlePolicyChange = useCallback((updatedPolicy: AstarteTriggerDeliveryPolicyDTO) => { + const isStrategyFieldRetry = updatedPolicy.error_handlers.some((e) => e.strategy === 'retry'); + const newPolicy: AstarteTriggerDeliveryPolicyDTO = updatedPolicy; + if ( + isStrategyFieldRetry && + (updatedPolicy.retry_times === undefined || updatedPolicy.retry_times === 0) + ) { + newPolicy.retry_times = 1; + } + if (!isStrategyFieldRetry) { + const { retry_times, ...restElements } = newPolicy; + setPolicyDraft(restElements); + return; + } + setPolicyDraft(newPolicy); + setPolicySource(JSON.stringify(newPolicy, null, 4)); + isValidJSON(newPolicy); + }, []); + + const handlePolicySourceChange = (e: React.ChangeEvent) => { + const { value } = e.target; + setPolicySource(value); + validJSONText(value); + if (checkValidJSONText(value)) { + handlePolicyChange(JSON.parse(value)); + } + }; + + useEffect(() => { + setPolicySource(JSON.stringify(policyDraft, null, 4)); + isValidJSON(policyDraft); + }, [policyDraft]); + + useEffect(() => { + if (onChange) { + onChange(policyDraft, isValidPolicySource); + } + }, [isValidPolicySource, onChange, policyDraft]); + + return ( + + + +
    + + + + Name + + + name is a required field + + + + + + + Retry Times + + + + Maximum Capacity + + + maximum_capacity must be greater than 0 + + + + Event TTL + + + seconds + + + + +
    +
    + + {isSourceVisible && ( + + + + {policySourceError} + + + )} +
    + ); +}; diff --git a/astarte-dashboard/src/components/TriggerDeliveryPolicyHandler.tsx b/astarte-dashboard/src/components/TriggerDeliveryPolicyHandler.tsx new file mode 100644 index 0000000000..aa8e32121f --- /dev/null +++ b/astarte-dashboard/src/components/TriggerDeliveryPolicyHandler.tsx @@ -0,0 +1,351 @@ +/* +This file is part of Astarte. + +Copyright 2023 SECO Mind Srl + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +import React, { ChangeEvent, useEffect, useState } from 'react'; +import { Button, Form, Modal, Stack, Table } from 'react-bootstrap'; +import { + AstarteTriggerDeliveryPolicyDTO, + AstarteTriggerDeliveryPolicyHandlerDTO, +} from 'astarte-client/types/dto'; +import Icon from './Icon'; + +const checkInvalidCodes = (value: string) => { + const containsInvalidCodes = value + .split(',') + .map((stringCode) => parseInt(stringCode, 10)) + .some((code) => Number.isNaN(code) || code < 400 || code > 599); + return containsInvalidCodes; +}; + +type ErrorCodesControlProps = { + name: string; + value: string; + readonly: boolean; + onChange: (newValue: string) => void; +}; + +const ErrorCodesControl = ({ name, value, readonly, onChange }: ErrorCodesControlProps) => { + const handleInputChange = (e: React.ChangeEvent) => { + onChange(e.target.value); + }; + + return ( + <> + + + enter between 400 and 599 comma separated numbers + + + ); +}; + +const defaultHandler: AstarteTriggerDeliveryPolicyHandlerDTO = { + on: 'any_error', + strategy: 'discard', +}; + +type HandlerModalProps = { + initialHandler?: AstarteTriggerDeliveryPolicyHandlerDTO; + readOnly: boolean; + showModal: boolean; + closeModal: () => void; + addHandler: (handler: AstarteTriggerDeliveryPolicyHandlerDTO) => void; +}; + +const HandlerModal = ({ + initialHandler, + readOnly, + showModal, + closeModal, + addHandler, +}: HandlerModalProps) => { + const [handler] = useState( + initialHandler || defaultHandler, + ); + const [handlerOn, setHandlerOn] = useState(handler.on); + const [handlerStrategy, setHandlerStrategy] = useState(handler.strategy); + const [selectedErrorType, setSelectedErrorType] = useState( + typeof handlerOn === 'object' ? 'custom_errors' : 'any_error', + ); + const [customErrorsText, setCustomErrorsText] = useState( + typeof handlerOn === 'object' ? handler.on.toString() : '', + ); + + const handleOnChange = (event: ChangeEvent) => { + const { value } = event.target; + setSelectedErrorType(value); + setHandlerOn(value as 'any_error' | 'client_error' | 'server_error' | number[]); + }; + + const handleStrategyChange = (event: ChangeEvent) => { + const { value } = event.target; + setHandlerStrategy(value); + }; + + const handleCodes = (value: string) => { + setCustomErrorsText(value); + }; + + const handleAddErrorHandler = () => { + let updatedHandler: AstarteTriggerDeliveryPolicyHandlerDTO; + if (selectedErrorType === 'custom_errors') { + const customErrorsArray = customErrorsText + .split(',') + .map((stringCode) => parseInt(stringCode, 10)) + .filter((code) => !Number.isNaN(code)); + updatedHandler = { + on: customErrorsArray, + strategy: handlerStrategy as 'discard' | 'retry', + }; + addHandler(updatedHandler); + } else { + updatedHandler = { + on: handlerOn, + strategy: handlerStrategy as 'discard' | 'retry', + }; + addHandler(updatedHandler); + } + }; + + return ( + <> + + + Error Handler + + +
    + + + On + + + + + + + + {selectedErrorType === 'custom_errors' && ( + + )} + + Strategy + + + + + + +
    +
    + + + + +
    + + ); +}; + +type AddHandlerModalProps = { + isReadOnly: boolean; + showModal: boolean; + onCancel: () => void; + onConfirm: (handler: AstarteTriggerDeliveryPolicyHandlerDTO) => void; +}; + +const AddHandlerModal = ({ isReadOnly, showModal, onCancel, onConfirm }: AddHandlerModalProps) => ( + +); + +type EditHandlerModalProps = { + initialHandler: AstarteTriggerDeliveryPolicyHandlerDTO; + isReadOnly: boolean; + showModal: boolean; + onCancel: () => void; + onConfirm: (handler: AstarteTriggerDeliveryPolicyHandlerDTO) => void; +}; + +const EditHandlerModal = ({ + initialHandler, + isReadOnly, + showModal, + onCancel, + onConfirm, +}: EditHandlerModalProps) => ( + +); + +interface Props { + isReadOnly: boolean; + initialData: AstarteTriggerDeliveryPolicyDTO; + onChange?: (updatedPolicy: AstarteTriggerDeliveryPolicyDTO) => unknown; +} + +export default ({ isReadOnly, initialData, onChange }: Props): React.ReactElement => { + const [isAddingHandler, setIsAddingHandler] = useState(false); + const [handlerToEditIndex, setHandlerToEditIndex] = useState(null); + const [policyDraft, setPolicyDraft] = useState(initialData); + + const handleDeleteErrorHandler = ( + i: number, + handlers: AstarteTriggerDeliveryPolicyHandlerDTO[], + ) => { + const newErrorHandlers = handlers.filter((_, index) => index !== i); + setPolicyDraft({ ...initialData, error_handlers: newErrorHandlers }); + }; + + useEffect(() => { + if (onChange) { + onChange(policyDraft); + } + }, [onChange, policyDraft]); + + return ( + <> + + {!isReadOnly && ( + + )} + {!initialData.error_handlers.length && ( +

    + error handler is required +

    + )} + {initialData.error_handlers.length > 0 && ( + + + + + + {!isReadOnly && } + + + + {initialData.error_handlers.map((el, index) => ( + + + + {!isReadOnly && ( + + )} + + ))} + +
    OnStrategyActions
    {el.on && el.on.toString()}{el.strategy} + setHandlerToEditIndex(index)} + className="color-grey me-2" + /> + handleDeleteErrorHandler(index, initialData.error_handlers)} + /> +
    + )} +
    + {isAddingHandler && ( + setIsAddingHandler(false)} + onConfirm={(handler) => { + if (initialData.error_handlers.findIndex((x) => x.on === handler.on) === -1) { + setPolicyDraft({ + ...initialData, + error_handlers: initialData.error_handlers.concat(handler), + }); + } + if (onChange) { + onChange(policyDraft); + } + setIsAddingHandler(false); + }} + isReadOnly + showModal={isAddingHandler} + /> + )} + + {handlerToEditIndex != null && ( + setHandlerToEditIndex(null)} + onConfirm={(handler) => { + initialData.error_handlers.splice(handlerToEditIndex, 1, handler); + setPolicyDraft(initialData); + if (onChange) { + onChange(policyDraft); + } + setHandlerToEditIndex(null); + }} + isReadOnly + showModal={handlerToEditIndex != null} + /> + )} + + ); +}; diff --git a/astarte-dashboard/src/components/TriggerEditor/DeleteAmqpHeaderModal.tsx b/astarte-dashboard/src/components/TriggerEditor/DeleteAmqpHeaderModal.tsx new file mode 100644 index 0000000000..2e0692b58d --- /dev/null +++ b/astarte-dashboard/src/components/TriggerEditor/DeleteAmqpHeaderModal.tsx @@ -0,0 +1,45 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React from 'react'; + +import ConfirmModal from '../modals/Confirm'; + +interface DeleteAmqpHeaderModalProps { + targetHeader: string; + onCancel: () => void; + onConfirm: () => void; +} + +const DeleteAmqpHeaderModal = ({ + targetHeader, + onCancel, + onConfirm, +}: DeleteAmqpHeaderModalProps): React.ReactElement => ( + +

    Delete static header "{targetHeader}"?

    +
    +); + +export default DeleteAmqpHeaderModal; diff --git a/astarte-dashboard/src/components/TriggerEditor/DeleteHttpHeaderModal.tsx b/astarte-dashboard/src/components/TriggerEditor/DeleteHttpHeaderModal.tsx new file mode 100644 index 0000000000..c3fbeccce2 --- /dev/null +++ b/astarte-dashboard/src/components/TriggerEditor/DeleteHttpHeaderModal.tsx @@ -0,0 +1,45 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React from 'react'; + +import ConfirmModal from '../modals/Confirm'; + +interface DeleteHttpHeaderModalProps { + targetHeader: string; + onCancel: () => void; + onConfirm: () => void; +} + +const DeleteHttpHeaderModal = ({ + targetHeader, + onCancel, + onConfirm, +}: DeleteHttpHeaderModalProps): React.ReactElement => ( + +

    Delete custom header "{targetHeader}"?

    +
    +); + +export default DeleteHttpHeaderModal; diff --git a/astarte-dashboard/src/components/TriggerEditor/EditAmqpHeaderModal.tsx b/astarte-dashboard/src/components/TriggerEditor/EditAmqpHeaderModal.tsx new file mode 100644 index 0000000000..039afb5b44 --- /dev/null +++ b/astarte-dashboard/src/components/TriggerEditor/EditAmqpHeaderModal.tsx @@ -0,0 +1,54 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React from 'react'; +import type { JSONSchema7 } from 'json-schema'; + +import FormModal from '../modals/Form'; + +const editAmqpHeaderFormSchema: JSONSchema7 = { + type: 'object', + properties: { + value: { + title: 'Value', + type: 'string', + }, + }, +}; + +interface EditAmqpHeaderModalProps { + targetHeader: string; + onCancel: () => void; + onConfirm: (formData: { value?: string }) => void; +} + +const EditAmqpHeaderModal = ({ + targetHeader, + onCancel, + onConfirm, +}: EditAmqpHeaderModalProps): React.ReactElement => ( + +); + +export default EditAmqpHeaderModal; diff --git a/astarte-dashboard/src/components/TriggerEditor/EditHttpHeaderModal.tsx b/astarte-dashboard/src/components/TriggerEditor/EditHttpHeaderModal.tsx new file mode 100644 index 0000000000..1a0afb8100 --- /dev/null +++ b/astarte-dashboard/src/components/TriggerEditor/EditHttpHeaderModal.tsx @@ -0,0 +1,54 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React from 'react'; +import type { JSONSchema7 } from 'json-schema'; + +import FormModal from '../modals/Form'; + +const editHttpHeaderFormSchema: JSONSchema7 = { + type: 'object', + properties: { + value: { + title: 'Value', + type: 'string', + }, + }, +}; + +interface EditHttpHeaderModalProps { + targetHeader: string; + onCancel: () => void; + onConfirm: (formData: { value?: string }) => void; +} + +const EditHttpHeaderModal = ({ + targetHeader, + onCancel, + onConfirm, +}: EditHttpHeaderModalProps): React.ReactElement => ( + +); + +export default EditHttpHeaderModal; diff --git a/astarte-dashboard/src/components/TriggerEditor/NewAmqpHeaderModal.tsx b/astarte-dashboard/src/components/TriggerEditor/NewAmqpHeaderModal.tsx new file mode 100644 index 0000000000..737f8425bb --- /dev/null +++ b/astarte-dashboard/src/components/TriggerEditor/NewAmqpHeaderModal.tsx @@ -0,0 +1,57 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React from 'react'; +import type { JSONSchema7 } from 'json-schema'; + +import FormModal from '../modals/Form'; + +const newAmqpHeaderFormSchema: JSONSchema7 = { + type: 'object', + required: ['key'], + properties: { + key: { + title: 'Header', + type: 'string', + }, + value: { + title: 'Value', + type: 'string', + }, + }, +}; + +interface NewAmqpHeaderModalProps { + onCancel: () => void; + onConfirm: (formData: { key: string; value?: string }) => void; +} + +const NewAmqpHeaderModal = ({ + onCancel, + onConfirm, +}: NewAmqpHeaderModalProps): React.ReactElement => ( + +); + +export default NewAmqpHeaderModal; diff --git a/astarte-dashboard/src/components/TriggerEditor/NewHttpHeaderModal.tsx b/astarte-dashboard/src/components/TriggerEditor/NewHttpHeaderModal.tsx new file mode 100644 index 0000000000..122e57c41c --- /dev/null +++ b/astarte-dashboard/src/components/TriggerEditor/NewHttpHeaderModal.tsx @@ -0,0 +1,57 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React from 'react'; +import type { JSONSchema7 } from 'json-schema'; + +import FormModal from '../modals/Form'; + +const newHttpHeaderFormSchema: JSONSchema7 = { + type: 'object', + required: ['key'], + properties: { + key: { + title: 'Header', + type: 'string', + }, + value: { + title: 'Value', + type: 'string', + }, + }, +}; + +interface NewHttpHeaderModalProps { + onCancel: () => void; + onConfirm: (formData: { key: string; value?: string }) => void; +} + +const NewHttpHeaderModal = ({ + onCancel, + onConfirm, +}: NewHttpHeaderModalProps): React.ReactElement => ( + +); + +export default NewHttpHeaderModal; diff --git a/astarte-dashboard/src/components/TriggerEditor/SimpleTriggerForm.tsx b/astarte-dashboard/src/components/TriggerEditor/SimpleTriggerForm.tsx new file mode 100644 index 0000000000..fb27897ccd --- /dev/null +++ b/astarte-dashboard/src/components/TriggerEditor/SimpleTriggerForm.tsx @@ -0,0 +1,595 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useCallback, useMemo } from 'react'; +import { Col, Form, Row, Stack } from 'react-bootstrap'; +import { + AstarteInterface, + AstarteMapping, + AstarteSimpleTrigger, + AstarteSimpleDeviceTrigger, + AstarteSimpleDataTrigger, +} from 'astarte-client'; +import _ from 'lodash'; + +const triggerConditionToLabel = { + device_disconnected: 'Device Disconnected', + device_connected: 'Device Connected', + device_registered: 'Device Registered', + device_deletion_finished: 'Device Deletion Finished', + device_deletion_started: 'Device Deletion Started', + device_error: 'Device Error', + device_empty_cache_received: 'Empty Cache Received', + incoming_data: 'Incoming Data', + value_change: 'Value Change', + value_change_applied: 'Value Change Applied', + path_created: 'Path Created', + path_removed: 'Path Removed', + value_stored: 'Value Stored', +}; + +const triggerOperatorToLabel = { + '*': '*', + '==': '==', + '!=': '!=', + '>': '>', + '>=': '>=', + '<': '<', + '<=': '<=', + contains: 'Contains', + not_contains: 'Not Contains', +}; + +const defaultSimpleDeviceTrigger: AstarteSimpleDeviceTrigger = { + type: 'device_trigger', + on: 'device_connected', +}; + +const defaultSimpleDataTrigger: AstarteSimpleDataTrigger = { + type: 'data_trigger', + on: 'incoming_data', + interfaceName: '*', + matchPath: '/*', + valueMatchOperator: '*', +}; + +interface SimpleTriggerFormProps { + fetchInterface: (params: { + interfaceName: string; + interfaceMajor: number; + }) => Promise; + fetchInterfaceMajors: (interfaceName: string) => Promise; + interfacesName: string[]; + interfaceMajors: number[]; + isLoadingInterface?: boolean; + isLoadingInterfacesName?: boolean; + isLoadingInterfaceMajors?: boolean; + isReadOnly?: boolean; + onChange: (simpleTrigger: AstarteSimpleTrigger) => void; + simpleTrigger: AstarteSimpleTrigger; + simpleTriggerInterface: AstarteInterface | null; + validationErrors?: { [key: string]: string }; +} + +const SimpleTriggerForm = ({ + fetchInterface, + fetchInterfaceMajors, + interfacesName = [], + interfaceMajors = [], + isLoadingInterface = false, + isLoadingInterfacesName = false, + isLoadingInterfaceMajors = false, + isReadOnly, + onChange, + simpleTrigger, + simpleTriggerInterface, + validationErrors = {}, +}: SimpleTriggerFormProps): React.ReactElement => { + const endpointList = + simpleTriggerInterface?.mappings.map((mapping: AstarteMapping) => mapping.endpoint) || []; + + const isDeviceTrigger = _.get(simpleTrigger, 'type') === 'device_trigger'; + const isDataTrigger = _.get(simpleTrigger, 'type') === 'data_trigger'; + const hasTargetDevice = _.get(simpleTrigger, 'deviceId') != null; + const hasTargetGroup = _.get(simpleTrigger, 'groupName') != null; + + // eslint-disable-next-line no-nested-ternary + const triggerTargetType = hasTargetDevice ? 'device' : hasTargetGroup ? 'group' : 'all_devices'; + + const triggerInterfaceName = _.get(simpleTrigger, 'interfaceName') as string | undefined; + const hasSelectedInterface = triggerInterfaceName != null && triggerInterfaceName !== '*'; + + const triggerValueMatchOperator: AstarteSimpleDataTrigger['valueMatchOperator'] | undefined = + _.get(simpleTrigger, 'valueMatchOperator'); + + const hasSelectedOperator = + triggerValueMatchOperator != null && triggerValueMatchOperator !== '*'; + + const triggerMatchPath: AstarteSimpleDataTrigger['matchPath'] | undefined = _.get( + simpleTrigger, + 'matchPath', + ); + + const triggerInterfaceType = useMemo( + () => (simpleTriggerInterface ? simpleTriggerInterface.type : null), + [simpleTriggerInterface], + ); + + const triggerInterfaceAggregation = useMemo( + () => (simpleTriggerInterface ? simpleTriggerInterface.aggregation : null), + [simpleTriggerInterface], + ); + + const triggerInterfacePathType = useMemo(() => { + if (!simpleTriggerInterface || !triggerMatchPath) { + return null; + } + const mapping = simpleTriggerInterface.mappings.find((m) => + AstarteMapping.matchEndpoint(m.endpoint, triggerMatchPath), + ); + return mapping ? mapping.type : null; + }, [simpleTriggerInterface, triggerMatchPath]); + + const handleTriggerTypeChange = useCallback( + (e: React.ChangeEvent) => { + const { value } = e.currentTarget; + const type = value as AstarteSimpleTrigger['type']; + onChange(type === 'data_trigger' ? defaultSimpleDataTrigger : defaultSimpleDeviceTrigger); + }, + [onChange], + ); + + const handleTriggerConditionChange = useCallback( + (e: React.ChangeEvent) => { + const { value } = e.currentTarget; + const on = value as AstarteSimpleTrigger['on']; + onChange({ ...simpleTrigger, on } as AstarteSimpleTrigger); + }, + [simpleTrigger, onChange], + ); + + const handleTriggerTargetChange = useCallback( + (e: React.ChangeEvent) => { + const { value } = e.currentTarget; + const target = value as 'all_devices' | 'device' | 'group'; + if (target === 'device') { + onChange({ ...simpleTrigger, deviceId: '', groupName: undefined }); + } else if (target === 'group') { + onChange({ ...simpleTrigger, deviceId: undefined, groupName: '' }); + } else { + onChange({ ...simpleTrigger, deviceId: undefined, groupName: undefined }); + } + }, + [simpleTrigger, onChange], + ); + + const handleTriggerTargetDeviceChange = useCallback( + (e: React.ChangeEvent) => { + const { value } = e.target; + onChange({ ...simpleTrigger, deviceId: value }); + }, + [simpleTrigger, onChange], + ); + + const handleTriggerTargetGroupChange = useCallback( + (e: React.ChangeEvent) => { + const { value } = e.target; + onChange({ ...simpleTrigger, groupName: value }); + }, + [simpleTrigger, onChange], + ); + + const handleTriggerInterfaceNameChange = useCallback( + (e: React.ChangeEvent) => { + const { value } = e.target; + const interfaceName = value; + const newSimpleTrigger = { + ...simpleTrigger, + interfaceName, + interfaceMajor: undefined, + matchPath: '/*', + valueMatchOperator: '*', + knownValue: undefined, + } as AstarteSimpleDataTrigger; + onChange(newSimpleTrigger); + if (interfaceName !== '*') { + fetchInterfaceMajors(interfaceName).then((majors) => { + if (majors.length > 0) { + const interfaceMajor = Math.max(...majors); + onChange({ ...newSimpleTrigger, interfaceMajor }); + fetchInterface({ interfaceName, interfaceMajor }); + } + }); + } + }, + [simpleTrigger, onChange, fetchInterfaceMajors, fetchInterface], + ); + + const handleTriggerInterfaceMajorChange = useCallback( + (e: React.ChangeEvent) => { + const { value } = e.target; + const interfaceMajor = parseInt(value, 10); + onChange({ + ...simpleTrigger, + interfaceMajor, + matchPath: '/*', + valueMatchOperator: '*', + knownValue: undefined, + } as AstarteSimpleDataTrigger); + const interfaceName = triggerInterfaceName as string; + fetchInterface({ interfaceName, interfaceMajor }); + }, + [simpleTrigger, onChange, fetchInterface, triggerInterfaceName], + ); + + const handleTriggerInterfacePathChange = useCallback( + (e: React.ChangeEvent) => { + const { value } = e.target; + const matchPath = value; + onChange({ + ...simpleTrigger, + matchPath, + valueMatchOperator: '*', + knownValue: undefined, + } as AstarteSimpleDataTrigger); + }, + [simpleTrigger, onChange], + ); + + const handleTriggerInterfaceOperatorChange = useCallback( + (e: React.ChangeEvent) => { + const { value } = e.target; + const valueMatchOperator = value as AstarteSimpleDataTrigger['valueMatchOperator']; + if (valueMatchOperator === '*') { + onChange({ + ...simpleTrigger, + valueMatchOperator, + knownValue: undefined, + } as AstarteSimpleDataTrigger); + } else { + onChange({ + ...simpleTrigger, + valueMatchOperator, + } as AstarteSimpleDataTrigger); + } + }, + [simpleTrigger, onChange], + ); + + const handleTriggerInterfaceKnownValueChange = useCallback( + (e: React.ChangeEvent) => { + const { value } = e.target; + let knownValue: AstarteSimpleDataTrigger['knownValue'] = value; + if (!triggerInterfacePathType) { + knownValue = String(value); + } else if (['boolean', 'booleanarray'].includes(triggerInterfacePathType)) { + if (value.toLowerCase() === 'false') { + knownValue = false; + } + if (value.toLowerCase() === 'true') { + knownValue = true; + } + } else if ( + ['integer', 'double', 'integerarray', 'doublearray'].includes(triggerInterfacePathType) + ) { + const parsedValue = parseFloat(value); + if (!Number.isNaN(parsedValue)) { + knownValue = parsedValue; + } + } + onChange({ ...simpleTrigger, knownValue } as AstarteSimpleDataTrigger); + }, + [simpleTrigger, onChange, triggerInterfacePathType], + ); + + const renderTriggerConditionOptions = useCallback(() => { + let options: Array = []; + if (isDeviceTrigger) { + options = [ + 'device_connected', + 'device_disconnected', + 'device_registered', + 'device_deletion_finished', + 'device_deletion_started', + 'device_error', + 'device_empty_cache_received', + ]; + } else if (triggerInterfaceType === 'properties') { + options = [ + 'incoming_data', + 'value_change', + 'value_change_applied', + 'path_created', + 'path_removed', + 'value_stored', + ]; + } else { + // TODO: this is a workaround to for the issue https://github.com/astarte-platform/astarte/issues/523 + options = + triggerInterfaceAggregation === 'object' + ? ['incoming_data'] + : ['incoming_data', 'value_stored']; + } + return options.map((option) => ( + + )); + }, [isDeviceTrigger, triggerInterfaceType, triggerInterfaceAggregation]); + + const renderInterfaceNameOptions = useCallback(() => { + const options = interfacesName.map((ifaceName) => ( + + )); + return [ + , + ...options, + ]; + }, [interfacesName]); + + const renderInterfaceMajorOptions = useCallback(() => { + const options = interfaceMajors.map((ifaceMajor) => ( + + )); + return options; + }, [interfaceMajors]); + + const renderTriggerOperatorOptions = useCallback(() => { + let operators: Array = []; + if (!triggerInterfacePathType) { + operators = ['*']; + } else { + const isArrayLikePath = + triggerInterfacePathType.includes('array') || + triggerInterfacePathType.includes('string') || + triggerInterfacePathType.includes('binaryblob'); + operators = isArrayLikePath + ? ['*', '==', '!=', '>', '>=', '<', '<=', 'contains', 'not_contains'] + : ['*', '==', '!=', '>', '>=', '<', '<=']; + } + const options = operators.map((operator) => ( + + )); + return options; + }, [triggerInterfacePathType]); + + const hasNumericKnownValue = + triggerInterfacePathType != null && ['double', 'integer'].includes(triggerInterfacePathType); + + return ( +
    + + + + + Trigger type + + + + + + {_.get(validationErrors, 'type')} + + + + + + + + Target + + + + + + + + {hasTargetDevice && ( + + + Device id + + + {_.get(validationErrors, 'deviceId')} + + + + )} + {hasTargetGroup && ( + + + Group Name + + + {_.get(validationErrors, 'groupName')} + + + + )} + + + + + Trigger condition + + {renderTriggerConditionOptions()} + + + {_.get(validationErrors, 'on')} + + + + + {isDataTrigger && ( + <> + + + + Interface name + + {renderInterfaceNameOptions()} + + + {_.get(validationErrors, 'interfaceName')} + + + + {hasSelectedInterface && ( + + + Interface major + + {renderInterfaceMajorOptions()} + + + {_.get(validationErrors, 'interfaceMajor')} + + + + )} + + {hasSelectedInterface && ( + <> + + + + Path + + + {_.get(validationErrors, 'matchPath')} + + + {endpointList.map((endpoint, index) => ( + + ))} + + + + + + + + Operator + + {renderTriggerOperatorOptions()} + + + {_.get(validationErrors, 'valueMatchOperator')} + + + + {hasSelectedOperator && ( + + + Value + + + {_.get(validationErrors, 'knownValue')} + + + + )} + + + )} + + )} + +
    + ); +}; + +export default SimpleTriggerForm; diff --git a/astarte-dashboard/src/components/TriggerEditor/TriggerActionForm.tsx b/astarte-dashboard/src/components/TriggerEditor/TriggerActionForm.tsx new file mode 100644 index 0000000000..f8d98457e8 --- /dev/null +++ b/astarte-dashboard/src/components/TriggerEditor/TriggerActionForm.tsx @@ -0,0 +1,505 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useCallback } from 'react'; +import { Button, Col, Form, InputGroup, Row, Stack, Table } from 'react-bootstrap'; +import { AstarteTrigger, AstarteTriggerHTTPAction, AstarteTriggerAMQPAction } from 'astarte-client'; +import _ from 'lodash'; + +import Icon from '../Icon'; + +const defaultTriggerHttpAction: AstarteTriggerHTTPAction = { + httpUrl: '', + httpMethod: 'post', +}; + +const defaultTriggerAmqpAction: AstarteTriggerAMQPAction = { + amqpExchange: '', + amqpMessageExpirationMilliseconds: 0, + amqpMessagePersistent: false, +}; + +interface TriggerActionFormProps { + action: AstarteTrigger['action']; + isReadOnly?: boolean; + onAddAmqpHeader: () => void; + onAddHttpHeader: () => void; + onEditAmqpHeader: (header: string) => void; + onEditHttpHeader: (header: string) => void; + onDeleteAmqpHeader: (header: string) => void; + onDeleteHttpHeader: (header: string) => void; + onChange: (action: AstarteTrigger['action']) => void; + realm?: string | null; + validationErrors?: { [key: string]: string }; +} + +const TriggerActionForm = ({ + action, + isReadOnly, + onAddAmqpHeader, + onAddHttpHeader, + onEditAmqpHeader, + onEditHttpHeader, + onDeleteAmqpHeader, + onDeleteHttpHeader, + onChange, + realm, + validationErrors = {}, +}: TriggerActionFormProps): React.ReactElement => { + const isHttpAction = _.get(action, 'httpUrl') != null; + const isAmqpAction = _.get(action, 'amqpExchange') != null; + const triggerPayloadType = (_.get(action, 'templateType') || 'default') as 'default' | 'mustache'; + const triggerHttpHeaders = _.get(action, 'httpStaticHeaders') || {}; + const triggerAmqpHeaders = _.get(action, 'amqpStaticHeaders') || {}; + + const handleTriggerActionTypeChange = useCallback( + (e: React.ChangeEvent) => { + const { value } = e.target; + const actionType = value as 'amqp' | 'http'; + onChange(actionType === 'http' ? defaultTriggerHttpAction : defaultTriggerAmqpAction); + }, + [onChange], + ); + + const handleTriggerActionHttpMethodChange = useCallback( + (e: React.ChangeEvent) => { + const { value } = e.target; + const httpMethod = value as AstarteTriggerHTTPAction['httpMethod']; + onChange({ ...action, httpMethod }); + }, + [action, onChange], + ); + + const handleTriggerActionHttpUrlChange = useCallback( + (e: React.ChangeEvent) => { + const { value } = e.target; + const httpUrl = value as AstarteTriggerHTTPAction['httpUrl']; + onChange({ ...action, httpUrl }); + }, + [action, onChange], + ); + + const handleTriggerActionHttpIgnoreSSLErrorsChange = useCallback( + (e: React.ChangeEvent) => { + const { checked } = e.target; + const ignoreSslErrors = !!checked as AstarteTriggerHTTPAction['ignoreSslErrors']; + onChange({ ...action, ignoreSslErrors }); + }, + [action, onChange], + ); + + const handleTriggerActionHttpPayloadTypeChange = useCallback( + (e: React.ChangeEvent) => { + const { value } = e.target; + const payloadType = value as 'default' | 'mustache'; + if (payloadType === 'mustache') { + onChange({ ...action, templateType: 'mustache', template: '' }); + } else { + onChange({ ...action, templateType: undefined, template: undefined }); + } + }, + [action, onChange], + ); + + const handleTriggerActionHttpPayloadChange = useCallback( + (e: React.ChangeEvent) => { + const { value } = e.target; + const template = value; + onChange({ ...action, template }); + }, + [action, onChange], + ); + + const handleTriggerActionAmqpExchangeChange = useCallback( + (e: React.ChangeEvent) => { + const { value } = e.target; + const amqpExchange = value as AstarteTriggerAMQPAction['amqpExchange']; + onChange({ ...action, amqpExchange }); + }, + [action, onChange], + ); + + const handleTriggerActionAmqpRoutingKeyChange = useCallback( + (e: React.ChangeEvent) => { + const { value } = e.target; + const amqpRoutingKey = value as AstarteTriggerAMQPAction['amqpRoutingKey']; + onChange({ ...action, amqpRoutingKey }); + }, + [action, onChange], + ); + + const handleTriggerActionAmqpMessagePersistentChange = useCallback( + (e: React.ChangeEvent) => { + const { checked } = e.target; + const amqpMessagePersistent = !!checked; + onChange({ ...action, amqpMessagePersistent }); + }, + [action, onChange], + ); + + const handleTriggerActionAmqpMessagePriorityChange = useCallback( + (e: React.ChangeEvent) => { + const { value } = e.target; + const amqpMessagePriority = Number(value) as AstarteTriggerAMQPAction['amqpMessagePriority']; + if (amqpMessagePriority === 0) { + onChange({ ...action, amqpMessagePriority: undefined }); + } else { + onChange({ ...action, amqpMessagePriority }); + } + }, + [action, onChange], + ); + + const handleTriggerActionAmqpMessageExpirationMillisecondsChange = useCallback( + (e: React.ChangeEvent) => { + const { value } = e.target; + const amqpMessageExpirationMilliseconds = Number( + value, + ) as AstarteTriggerAMQPAction['amqpMessageExpirationMilliseconds']; + onChange({ ...action, amqpMessageExpirationMilliseconds }); + }, + [action, onChange], + ); + + return ( +
    + + + + + Action type + + + + + + + + {isHttpAction && ( + <> + + + + Method + + {['delete', 'get', 'head', 'options', 'patch', 'post', 'put'].map((method) => ( + + ))} + + + {_.get(validationErrors, 'httpMethod')} + + + + + + URL + + + {_.get(validationErrors, 'httpUrl')} + + + + + + + + + + {_.get(validationErrors, 'ignoreSslErrors')} + + + + + + + + Payload type + + + + + + + + {triggerPayloadType === 'mustache' && ( + + + + Payload + + + {_.get(validationErrors, 'template')} + + + + + )} + + + + {!isReadOnly && ( + + )} + {!_.isEmpty(triggerHttpHeaders) && ( + + + + + + {!isReadOnly && } + + + + {Object.entries(triggerHttpHeaders).map(([headerName, headerValue]) => ( + + + + {!isReadOnly && ( + + )} + + ))} + +
    HeaderValueActions
    {headerName}{headerValue as string} + onEditHttpHeader(headerName)} + className="color-grey me-2" + /> + onDeleteHttpHeader(headerName)} /> +
    + )} + + + {_.get(validationErrors, 'httpStaticHeaders')} + +
    + +
    + + )} + {isAmqpAction && ( + <> + + + + Exchange + '}_`} + required + readOnly={isReadOnly} + value={_.get(action, 'amqpExchange') || ''} + onChange={handleTriggerActionAmqpExchangeChange} + isInvalid={_.get(validationErrors, 'amqpExchange') != null} + /> + + {_.get(validationErrors, 'amqpExchange')} + + + + + + + + Routing key + + + {_.get(validationErrors, 'amqpRoutingKey')} + + + + + + + + Persistency + + + {_.get(validationErrors, 'amqpMessagePersistent')} + + + + + + + + Priority + + + {_.get(validationErrors, 'amqpMessagePriority')} + + + + + + + + Expiration + + + milliseconds + + {_.get(validationErrors, 'amqpMessageExpirationMilliseconds')} + + + + + + + + + {!isReadOnly && ( + + )} + {!_.isEmpty(triggerAmqpHeaders) && ( + + + + + + {!isReadOnly && } + + + + {Object.entries(triggerAmqpHeaders).map(([headerName, headerValue]) => ( + + + + {!isReadOnly && ( + + )} + + ))} + +
    HeaderValueActions
    {headerName}{headerValue as string} + onEditAmqpHeader(headerName)} + className="color-grey me-2" + /> + onDeleteAmqpHeader(headerName)} /> +
    + )} + + + {_.get(validationErrors, 'amqpStaticHeaders')} + +
    + +
    + + )} +
    +
    + ); +}; + +export default TriggerActionForm; diff --git a/astarte-dashboard/src/components/TriggerEditor/index.tsx b/astarte-dashboard/src/components/TriggerEditor/index.tsx new file mode 100644 index 0000000000..edd3648d4c --- /dev/null +++ b/astarte-dashboard/src/components/TriggerEditor/index.tsx @@ -0,0 +1,586 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useCallback, useEffect, useMemo, useState } from 'react'; +import { Col, Container, Form, Row, Stack } from 'react-bootstrap'; +import { AstarteInterface, AstarteTrigger, AstarteSimpleTrigger } from 'astarte-client'; +import _ from 'lodash'; + +import SimpleTriggerForm from './SimpleTriggerForm'; +import TriggerActionForm from './TriggerActionForm'; +import NewAmqpHeaderModal from './NewAmqpHeaderModal'; +import NewHttpHeaderModal from './NewHttpHeaderModal'; +import EditAmqpHeaderModal from './EditAmqpHeaderModal'; +import EditHttpHeaderModal from './EditHttpHeaderModal'; +import DeleteAmqpHeaderModal from './DeleteAmqpHeaderModal'; +import DeleteHttpHeaderModal from './DeleteHttpHeaderModal'; + +const defaultTrigger: AstarteTrigger = { + name: '', + action: { + httpUrl: '', + httpMethod: 'post', + }, + simpleTriggers: [ + { + type: 'data_trigger', + on: 'incoming_data', + interfaceName: '*', + matchPath: '/*', + valueMatchOperator: '*', + }, + ], +}; + +const formatJSON = (json: unknown): string => JSON.stringify(json, null, 4); + +const formatJSONText = (text: string): string => { + try { + return formatJSON(JSON.parse(text)); + } catch { + return text; + } +}; + +const getNestedValidationErrors = (errors: { [key: string]: string }, prefix: string) => + _.mapKeys( + _.pickBy(errors, (errorValue, errorName) => errorName.startsWith(prefix)), + (errorValue, errorName) => errorName.slice(prefix.length + 1), + ); + +type ActiveModal = + | { modal: 'new-amqp-header' } + | { modal: 'new-http-header' } + | { modal: 'edit-amqp-header'; header: string } + | { modal: 'edit-http-header'; header: string } + | { modal: 'delete-amqp-header'; header: string } + | { modal: 'delete-http-header'; header: string }; + +interface Props { + fetchInterfacesName: () => Promise; + fetchInterfaceMajors: (interfaceName: string) => Promise; + fetchInterface: (params: { + interfaceName: string; + interfaceMajor: number; + }) => Promise; + fetchPoliciesName?: () => Promise; + initialData?: AstarteTrigger; + isReadOnly?: boolean; + isSourceVisible?: boolean; + onChange?: (updatedTrigger: AstarteTrigger, isValid: boolean) => unknown; + onError?: (message: string, error: Error) => void; + realm?: string | null; +} + +export default ({ + fetchInterfacesName, + fetchInterfaceMajors, + fetchInterface, + fetchPoliciesName, + initialData, + isReadOnly = false, + isSourceVisible = false, + onChange, + onError, + realm, +}: Props): React.ReactElement => { + const [triggerDraft, setTriggerDraft] = useState(initialData || defaultTrigger); + const [triggerSource, setTriggerSource] = useState( + formatJSON(AstarteTrigger.toJSON(triggerDraft)), + ); + const [triggerValidationErrors, setTriggerValidationErrors] = useState<{ [key: string]: string }>( + {}, + ); + const [triggerSourceError, setTriggerSourceError] = useState(''); + const [interfacesName, setInterfacesName] = useState([]); + const [interfaceMajors, setInterfaceMajors] = useState([]); + const [triggerInterface, setTriggerInterface] = useState(null); + const [isLoadingInterfacesName, setIsLoadingInterfacesName] = useState(false); + const [isLoadingInterfaceMajors, setIsLoadingInterfaceMajors] = useState(false); + const [isLoadingInterface, setIsLoadingInterface] = useState(false); + const [policiesName, setPoliciesName] = useState([]); + const [isLoadingPoliciesName, setIsLoadingPoliciesName] = useState(false); + const [activeModal, setActiveModal] = useState(null); + + const actionValidationErrors = useMemo( + () => getNestedValidationErrors(triggerValidationErrors, 'action'), + [triggerValidationErrors], + ); + const simpleTriggerValidationErrors = useMemo( + () => getNestedValidationErrors(triggerValidationErrors, 'simpleTriggers[0]'), + [triggerValidationErrors], + ); + + const handleFetchPoliciesName = useCallback(async () => { + let policies: string[] = []; + if (!fetchPoliciesName) { + return policies; + } + setIsLoadingPoliciesName(true); + try { + policies = await fetchPoliciesName(); + } catch (err: any) { + if (onError) { + onError(`Could not retrieve trigger delivery policies for trigger: ${err.message}`, err); + } + } + setPoliciesName(policies); + setIsLoadingPoliciesName(false); + return policies; + }, [fetchPoliciesName, onError]); + + const handleFetchInterfacesName = useCallback(async () => { + setIsLoadingInterfacesName(true); + let names: string[] = []; + try { + names = await fetchInterfacesName(); + } catch (err: any) { + if (onError) { + onError(`Could not retrieve major versions for interface: ${err.message}`, err); + } + } + setInterfacesName(names); + setIsLoadingInterfacesName(false); + return names; + }, [fetchInterfacesName, onError]); + + const handleFetchInterfaceMajors = useCallback( + async (interfaceName: string) => { + setIsLoadingInterfaceMajors(true); + let majors: number[] = []; + try { + majors = await fetchInterfaceMajors(interfaceName); + } catch (err: any) { + if (onError) { + onError( + `Could not retrieve major versions for ${interfaceName} interface: ${err.message}`, + err, + ); + } + } + setInterfaceMajors(majors); + setIsLoadingInterfaceMajors(false); + return majors; + }, + [fetchInterfaceMajors, onError], + ); + + const handleFetchInterface = useCallback( + async (params: { interfaceName: string; interfaceMajor: number }) => { + setIsLoadingInterface(true); + let iface: AstarteInterface | null = null; + try { + iface = await fetchInterface(params); + } catch (err: any) { + if (onError) { + onError( + `Could not retrieve selected interface ${params.interfaceName} v${params.interfaceMajor}: ${err.message}`, + err, + ); + } + } + setTriggerInterface(iface); + setIsLoadingInterface(false); + return iface; + }, + [fetchInterface, onError], + ); + + const handleFetchInterfacesForTrigger = useCallback( + async (trigger: AstarteTrigger) => { + await handleFetchInterfacesName(); + const interfaceName = _.get(trigger, 'simpleTriggers[0].interfaceName') as string | undefined; + if (!interfaceName || interfaceName === '*') { + return trigger; + } + const ifaceMajors = await handleFetchInterfaceMajors(interfaceName); + let ifaceMajor: number | undefined = _.get(trigger, 'simpleTriggers[0].interfaceMajor'); + if (ifaceMajor == null) { + if (ifaceMajors.length === 0) { + return trigger; + } + ifaceMajor = Math.max(...ifaceMajors); + _.set(trigger as AstarteTrigger, 'simpleTriggers[0].interfaceMajor', ifaceMajor); + } + const interfaceMajor = ifaceMajor; + await handleFetchInterface({ interfaceName, interfaceMajor }); + return trigger; + }, + [handleFetchInterfacesName, handleFetchInterfaceMajors, handleFetchInterface], + ); + + const handleSimpleTriggerChange = useCallback((simpleTrigger: AstarteSimpleTrigger) => { + setTriggerDraft((draft) => ({ ...draft, simpleTriggers: [simpleTrigger] })); + if (simpleTrigger.type !== 'data_trigger' || simpleTrigger.interfaceName === '*') { + setTriggerInterface(null); + } + }, []); + + const handleActionChange = useCallback( + (action: AstarteTrigger['action']) => + setTriggerDraft((draft) => ({ + ...draft, + action, + })), + [], + ); + + const handlePatchActionAmqpHeaders = useCallback( + (newHeaders: { [header: string]: string | undefined }) => { + setTriggerDraft((draft) => { + const oldAmqpStaticHeaders = _.get(draft.action, 'amqpStaticHeaders') || {}; + const amqpStaticHeaders = _.omitBy( + { + ...oldAmqpStaticHeaders, + ...newHeaders, + }, + _.isUndefined, + ) as _.Dictionary; + return { + ...draft, + action: { + ...draft.action, + amqpStaticHeaders, + }, + }; + }); + }, + [], + ); + + const handlePatchActionHttpHeaders = useCallback( + (newHeaders: { [header: string]: string | undefined }) => { + setTriggerDraft((draft) => { + const oldHttpStaticHeaders = _.get(draft.action, 'httpStaticHeaders') || {}; + const httpStaticHeaders = _.omitBy( + { + ...oldHttpStaticHeaders, + ...newHeaders, + }, + _.isUndefined, + ) as _.Dictionary; + return { + ...draft, + action: { + ...draft.action, + httpStaticHeaders, + }, + }; + }); + }, + [], + ); + + const handleTriggerNameChange = useCallback((e: React.ChangeEvent) => { + const { value } = e.target; + setTriggerDraft((draft) => ({ ...draft, name: value })); + }, []); + + const handleTriggerPolicyNameChange = useCallback((e: React.ChangeEvent) => { + const { value } = e.target; + if (value) { + setTriggerDraft((draft) => ({ ...draft, policy: value })); + } else { + setTriggerDraft((draft) => { + const { policy, ...restElements } = draft; + return restElements; + }); + } + }, []); + + const dismissModal = useCallback(() => setActiveModal(null), []); + + const handleAddActionAmqpHeader = useCallback(() => { + setActiveModal({ modal: 'new-amqp-header' }); + }, []); + + const handleConfirmNewAmqpHeaderModal = useCallback( + (formData: { key: string; value?: string }) => { + handlePatchActionAmqpHeaders({ [formData.key]: formData.value || '' }); + dismissModal(); + }, + [dismissModal, handlePatchActionAmqpHeaders], + ); + + const handleEditActionAmqpHeader = useCallback((header: string) => { + setActiveModal({ modal: 'edit-amqp-header', header }); + }, []); + + const handleConfirmEditAmqpHeaderModal = useCallback( + (formData: { value?: string }) => { + if (activeModal != null && activeModal.modal === 'edit-amqp-header') { + handlePatchActionAmqpHeaders({ [activeModal.header]: formData.value || '' }); + } + dismissModal(); + }, + [activeModal, dismissModal, handlePatchActionAmqpHeaders], + ); + + const handleDeleteActionAmqpHeader = useCallback((header: string) => { + setActiveModal({ modal: 'delete-amqp-header', header }); + }, []); + + const handleConfirmDeleteAmqpHeaderModal = useCallback(() => { + if (activeModal != null && activeModal.modal === 'delete-amqp-header') { + handlePatchActionAmqpHeaders({ [activeModal.header]: undefined }); + } + dismissModal(); + }, [activeModal, dismissModal, handlePatchActionAmqpHeaders]); + + const handleAddActionHttpHeader = useCallback(() => { + setActiveModal({ modal: 'new-http-header' }); + }, []); + + const handleConfirmNewHttpHeaderModal = useCallback( + (formData: { key: string; value?: string }) => { + handlePatchActionHttpHeaders({ [formData.key]: formData.value || '' }); + dismissModal(); + }, + [dismissModal, handlePatchActionHttpHeaders], + ); + + const handleEditActionHttpHeader = useCallback((header: string) => { + setActiveModal({ modal: 'edit-http-header', header }); + }, []); + + const handleConfirmEditHttpHeaderModal = useCallback( + (formData: { value?: string }) => { + if (activeModal != null && activeModal.modal === 'edit-http-header') { + handlePatchActionHttpHeaders({ [activeModal.header]: formData.value || '' }); + } + dismissModal(); + }, + [activeModal, dismissModal, handlePatchActionHttpHeaders], + ); + + const handleDeleteActionHttpHeader = useCallback((header: string) => { + setActiveModal({ modal: 'delete-http-header', header }); + }, []); + + const handleConfirmDeleteHttpHeaderModal = useCallback(() => { + if (activeModal != null && activeModal.modal === 'delete-http-header') { + handlePatchActionHttpHeaders({ [activeModal.header]: undefined }); + } + dismissModal(); + }, [activeModal, dismissModal, handlePatchActionHttpHeaders]); + + const handleTriggerSourceChange = useCallback( + (e: React.ChangeEvent) => { + const { value } = e.target; + setTriggerSource(value); + let triggerSourceJSON: Record | null = null; + try { + triggerSourceJSON = JSON.parse(value); + } catch { + triggerSourceJSON = null; + } + if (!triggerSourceJSON) { + setTriggerSourceError('Invalid JSON'); + return; + } + let trigger: AstarteTrigger | null = null; + try { + trigger = AstarteTrigger.fromJSON(triggerSourceJSON as any); + } catch { + trigger = null; + } + if (!trigger) { + setTriggerSourceError('Invalid Trigger'); + return; + } + if (_.get(trigger, 'simpleTriggers[0].type') === 'data_trigger') { + handleFetchInterfacesForTrigger(trigger).then(setTriggerDraft); + } else { + setTriggerDraft(trigger); + } + }, + [handleFetchInterfacesForTrigger], + ); + + useEffect(() => { + const formattedTriggerSource = formatJSON(AstarteTrigger.toJSON(triggerDraft)); + setTriggerSource((source) => + formatJSONText(source) !== formattedTriggerSource ? formattedTriggerSource : source, + ); + let validationErrors: { [key: string]: string } = {}; + try { + AstarteTrigger.validation.validateSync(triggerDraft, { + abortEarly: false, + context: { realm, interface: triggerInterface }, + }); + } catch (err: any) { + validationErrors = _.mapValues(_.keyBy(_.uniqBy(err.inner, 'path'), 'path'), 'message'); + } + setTriggerValidationErrors(validationErrors); + setTriggerSourceError(Object.values(validationErrors).join('. ')); + if (onChange) { + const isValidTrigger = _.isEmpty(validationErrors); + onChange(triggerDraft, isValidTrigger); + } + }, [onChange, triggerDraft, realm, triggerInterface]); + + useEffect(() => { + if (initialData) { + handleFetchInterfacesForTrigger(initialData); + } else { + handleFetchInterfacesName(); + } + }, [initialData, handleFetchInterfacesForTrigger, handleFetchInterfacesName]); + + useEffect(() => { + handleFetchPoliciesName(); + }, [handleFetchPoliciesName]); + + return ( + + + +
    + + + + Name + + + {_.get(triggerValidationErrors, 'name')} + + + + +
    + + +
    + + + + Trigger delivery policy + + + + {policiesName.map((policy) => ( + + ))} + + + {_.get(triggerValidationErrors, 'policy')} + + + + +
    +
    + + {isSourceVisible && ( + + + + {triggerSourceError} + + + )} + {activeModal != null && activeModal.modal === 'new-amqp-header' && ( + + )} + {activeModal != null && activeModal.modal === 'edit-amqp-header' && ( + + )} + {activeModal != null && activeModal.modal === 'delete-amqp-header' && ( + + )} + {activeModal != null && activeModal.modal === 'new-http-header' && ( + + )} + {activeModal != null && activeModal.modal === 'edit-http-header' && ( + + )} + {activeModal != null && activeModal.modal === 'delete-http-header' && ( + + )} +
    + ); +}; diff --git a/astarte-dashboard/src/components/VisualFlowEditor.tsx b/astarte-dashboard/src/components/VisualFlowEditor.tsx new file mode 100644 index 0000000000..d9e3b4771a --- /dev/null +++ b/astarte-dashboard/src/components/VisualFlowEditor.tsx @@ -0,0 +1,195 @@ +/* + This file is part of Astarte. + + Copyright 2020-2024 SECO Mind Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useCallback, useEffect, useState } from 'react'; +import { CanvasWidget } from '@projectstorm/react-canvas-core'; +import createEngine, { DiagramModel } from '@projectstorm/react-diagrams'; +import type { Point } from '@projectstorm/geometry'; +import type { AstarteBlock, AstarteBlockType } from 'astarte-client'; + +import NativeBlockFactory from './NativeBlockFactory'; +import NativeBlockModel from '../models/NativeBlockModel'; + +const filterSortBlocks = (blocks: AstarteBlock[], type: AstarteBlock['type']) => { + if (!blocks || blocks.length === 0) { + return []; + } + return blocks + .filter((block) => block.type === type) + .sort((block1, block2) => (block1.name > block2.name ? 1 : -1)); +}; + +interface BlockMenuItemProps { + block: AstarteBlock; +} + +const BlockMenuItem = ({ block }: BlockMenuItemProps) => ( +
    { + e.dataTransfer.setData('block-name', block.name); + e.dataTransfer.setData('block-type', block.type); + }} + draggable + > + {block.name} +
    +); + +interface EditorSidebarProps { + blocks: AstarteBlock[]; +} + +const EditorSidebar = ({ blocks }: EditorSidebarProps) => ( +
    +
    Producer
    + {filterSortBlocks(blocks, 'producer').map((block) => ( + + ))} +
    Producer & Consumer
    + {filterSortBlocks(blocks, 'producer_consumer').map((block) => ( + + ))} +
    Consumer
    + {filterSortBlocks(blocks, 'consumer').map((block) => ( + + ))} +
    +); + +const getEngine = (model: DiagramModel, nodeFactory: NativeBlockFactory) => { + const engine = createEngine(); + engine.getNodeFactories().registerFactory(nodeFactory); + engine.setModel(model); + return engine; +}; + +interface VisualFlowEditorProps { + className?: string; + blocks: AstarteBlock[]; + model: DiagramModel; + onNodeSettingsClick?: (node: NativeBlockModel) => void; +} + +const VisualFlowEditor = ({ + className = '', + blocks, + model, + onNodeSettingsClick, +}: VisualFlowEditorProps): React.ReactElement => { + const [nodeFactory] = useState(new NativeBlockFactory(blocks)); + const [engine] = useState(getEngine(model, nodeFactory)); + + useEffect(() => { + nodeFactory.updateDefinitions(blocks); + }, [blocks, nodeFactory]); + + const addBlock = useCallback( + (name: string, type: AstarteBlockType, position: Point) => { + const newNode = nodeFactory.generateModel({ + name, + type, + onSettingsClick: onNodeSettingsClick, + onRemoveClick: () => { + newNode.remove(); + engine.repaintCanvas(); + }, + }); + newNode.setPosition(position.x - 30, position.y - 20); + model.addNode(newNode); + engine.repaintCanvas(); + }, + [engine, model, nodeFactory, onNodeSettingsClick], + ); + + return ( +
    + +
    e.preventDefault()} + onDrop={(e) => { + const blockName = e.dataTransfer.getData('block-name'); + const blockType = e.dataTransfer.getData('block-type') as AstarteBlockType; + addBlock(blockName, blockType, engine.getRelativeMousePoint(e)); + }} + > + +
    +
    + ); +}; + +function getNewModel(): DiagramModel { + return new DiagramModel(); +} + +function nodeModelToSource(model: DiagramModel): string { + const seenIds = new Set(); + const chain = []; + const pipelineBlocks = model.getNodes() as NativeBlockModel[]; + + const sources = pipelineBlocks.filter((b) => b.blockType === 'producer'); + if (sources.length === 0) { + throw new Error('Pipelines must start with a producer block'); + } + + if (sources.length > 1) { + throw new Error('Multiple producer blocks are not supported'); + } + + const sourceBlock = sources[0]; + chain.push(sourceBlock); + seenIds.add(sourceBlock.getOptions().id); + + let prevBlock = sourceBlock; + let nextBlock; + let loopCounter = 0; + + do { + const nextLinks = Object.values(prevBlock.outPorts[0].links); + + if (nextLinks.length === 0) { + throw new Error('Pipelines must end with a consumer block'); + } + + if (nextLinks.length > 1) { + throw new Error('Multiple out connections are not supported'); + } + + nextBlock = nextLinks[0].getTargetPort().getParent() as NativeBlockModel; + + if (seenIds.has(nextBlock.getOptions().id)) { + throw new Error('Pipelines cannot form a loop'); + } + + chain.push(nextBlock); + seenIds.add(nextBlock.getOptions().id); + prevBlock = nextBlock; + + loopCounter += 1; + if (loopCounter > 50) { + throw new Error('Pipeline too long'); + } + } while (nextBlock.blockType !== 'consumer'); + + return chain.map((block) => block.toScript()).join('\n| '); +} + +export { getNewModel, nodeModelToSource }; +export default VisualFlowEditor; diff --git a/astarte-dashboard/src/components/WaitForData.ts b/astarte-dashboard/src/components/WaitForData.ts new file mode 100644 index 0000000000..b00241e390 --- /dev/null +++ b/astarte-dashboard/src/components/WaitForData.ts @@ -0,0 +1,58 @@ +/* + This file is part of Astarte. + + Copyright 2020-2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +import _ from 'lodash'; + +interface Props { + data: Data | null; + status: 'loading' | 'ok' | 'err'; + showRefreshing?: boolean; + fallback?: React.ReactElement; + errorFallback?: React.ReactElement; + children: (data: Data) => React.ReactElement; +} + +const WaitForData = ({ + data, + status, + showRefreshing = false, + fallback, + errorFallback, + children, +}: Props): React.ReactElement | null => { + switch (status) { + case 'ok': + if (data == null) { + return fallback || null; + } + return children(data as Data); + + case 'loading': + if (showRefreshing || _.isEmpty(data)) { + return fallback || null; + } + return children(data as Data); + + case 'err': + return errorFallback || null; + + default: + return null; + } +}; + +export default WaitForData; diff --git a/astarte-dashboard/src/components/modals/Confirm.tsx b/astarte-dashboard/src/components/modals/Confirm.tsx new file mode 100644 index 0000000000..7a6389d277 --- /dev/null +++ b/astarte-dashboard/src/components/modals/Confirm.tsx @@ -0,0 +1,100 @@ +/* + This file is part of Astarte. + + Copyright 2020-2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useCallback } from 'react'; +import { Button, Modal, Spinner } from 'react-bootstrap'; +import type { ModalProps } from 'react-bootstrap'; + +type BoostrapVariant = + | 'primary' + | 'secondary' + | 'success' + | 'warning' + | 'danger' + | 'info' + | 'light' + | 'dark' + | 'link'; + +interface Props { + cancelLabel?: string; + children: React.ReactNode; + confirmLabel?: string; + confirmOnEnter?: boolean; + confirmVariant?: BoostrapVariant; + disabled?: boolean; + isConfirming?: boolean; + onCancel?: () => void; + onConfirm: () => void; + size?: ModalProps['size']; + title: React.ReactNode; +} + +const ConfirmModal = ({ + cancelLabel = 'Cancel', + children, + confirmLabel = 'Confirm', + confirmOnEnter = true, + confirmVariant = 'primary', + disabled = false, + isConfirming = false, + onCancel, + onConfirm, + size = 'lg', + title, +}: Props): React.ReactElement => { + const handleKeyDown = useCallback( + (event: React.KeyboardEvent) => { + if (event.key === 'Enter' && confirmOnEnter && !isConfirming) { + onConfirm(); + } + }, + [confirmOnEnter, isConfirming, onConfirm], + ); + + return ( +
    + + + {title} + + {children} + + {onCancel && ( + + )} + + + +
    + ); +}; + +export default ConfirmModal; diff --git a/astarte-dashboard/src/components/modals/Form.tsx b/astarte-dashboard/src/components/modals/Form.tsx new file mode 100644 index 0000000000..ab1ab83a54 --- /dev/null +++ b/astarte-dashboard/src/components/modals/Form.tsx @@ -0,0 +1,191 @@ +/* + This file is part of Astarte. + + Copyright 2020-2024 SECO Mind Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useState } from 'react'; +import { Button, Form, Modal, Spinner } from 'react-bootstrap'; +import type { ModalProps } from 'react-bootstrap'; +// TODO: use @rjsf/react-bootstrap when @rjsf publishes v6 with support for +// Bootstrap 5: https://github.com/rjsf-team/react-jsonschema-form/issues/4162 +import JsonSchemaForm from '@astarte-platform/react-bootstrap'; +import validator from '@rjsf/validator-ajv8'; +import type { IChangeEvent } from '@rjsf/core'; +import type { WidgetProps } from '@rjsf/utils'; +import type { ComponentProps } from 'react'; + +export interface TextWidgetProps extends WidgetProps { + type?: string; +} + +const TextWidget = ({ + id, + required, + readonly, + disabled, + placeholder, + type, + label, + value, + onChange, + onBlur, + onFocus, + autofocus, + options, + schema, + rawErrors = [], +}: TextWidgetProps) => { + const handleChange = ({ target: { value: v } }: React.ChangeEvent) => + onChange(v === '' ? options.emptyValue : v); + const handleBlur = ({ target: { value: v } }: React.FocusEvent) => + onBlur(id, v); + const handleFocus = ({ target: { value: v } }: React.FocusEvent) => + onFocus(id, v); + + return ( + + 0 ? 'text-danger' : ''}> + {label || schema.title} + + 0 ? 'is-invalid' : ''} + list={schema.examples ? `examples_${id}` : undefined} + type={type || (schema.type as string)} + value={value || value === 0 ? value : ''} + onChange={handleChange} + onBlur={handleBlur} + onFocus={handleFocus} + /> + {schema.examples ? ( + + {(schema.examples as string[]) + .concat(schema.default ? ([schema.default] as string[]) : []) + .map((example) => ( + // eslint-disable-next-line jsx-a11y/control-has-associated-label + + ) : null} + + ); +}; + +// Delete custom widgets when this is issue is solved and 'placeholder' is supported +// https://github.com/rjsf-team/react-jsonschema-form/issues/1998 +const widgets = { + TextWidget, +}; + +type JsonSchemaFormProps = ComponentProps; + +type BoostrapVariant = + | 'primary' + | 'secondary' + | 'success' + | 'warning' + | 'danger' + | 'info' + | 'light' + | 'dark' + | 'link'; + +interface Props { + cancelLabel?: string; + confirmLabel?: string; + confirmVariant?: BoostrapVariant; + initialData?: JsonSchemaFormProps['formData']; + isConfirming?: boolean; + liveValidate?: boolean; + onCancel: () => void; + onConfirm: (formData: IChangeEvent['formData']) => void; + schema: JsonSchemaFormProps['schema']; + size?: ModalProps['size']; + title: React.ReactNode; + transformErrors?: JsonSchemaFormProps['transformErrors']; + uiSchema?: JsonSchemaFormProps['uiSchema']; +} + +const FormModal = ({ + cancelLabel = 'Cancel', + confirmLabel = 'Confirm', + confirmVariant = 'primary', + initialData, + isConfirming = false, + liveValidate = false, + onCancel, + onConfirm, + schema, + size = 'lg', + title, + transformErrors, + uiSchema, +}: Props): React.ReactElement => { + const [formData, setFormData] = React.useState(initialData || null); + const [hasSubmit, setHasSubmit] = useState(false); + + return ( + + + {title} + + +
    + { + setFormData(event.formData); + }} + onSubmit={(event) => onConfirm(event.formData)} + showErrorList={false} + transformErrors={transformErrors} + > +
    +
    + + +
    +
    +
    +
    +
    + ); +}; + +export default FormModal; diff --git a/astarte-dashboard/src/hooks/useFetch.ts b/astarte-dashboard/src/hooks/useFetch.ts new file mode 100644 index 0000000000..fb4170bee8 --- /dev/null +++ b/astarte-dashboard/src/hooks/useFetch.ts @@ -0,0 +1,105 @@ +/* + This file is part of Astarte. + + Copyright 2020-2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +import { useCallback, useEffect, useRef, useState } from 'react'; + +type Status = 'loading' | 'ok' | 'err'; + +type FetchState = + | { + status: 'loading'; + value: Data | null; + error: Error | null; + refresh: (...params: FetchParams) => Promise; + } + | { + status: 'ok'; + value: Data; + error: Error | null; + refresh: (...params: FetchParams) => Promise; + } + | { + status: 'err'; + value: Data | null; + error: Error; + refresh: (...params: FetchParams) => Promise; + }; + +const useFetch = ( + fetchData: (...params: FetchParams) => Promise, + ...initialFetchParams: FetchParams +): FetchState => { + if (!fetchData) { + throw new Error('Invalid fetch method'); + } + + const [status, setStatus] = useState('loading'); + const [data, setData] = useState(null); + const [error, setError] = useState(null); + const isReady = useRef(false); + + const getData = useCallback( + async (...fetchParams: FetchParams) => { + setStatus('loading'); + try { + const fetchedData = await fetchData(...fetchParams); + if (isReady.current) { + setData(fetchedData); + setStatus('ok'); + } + } catch (err: any) { + setError(err); + setStatus('err'); + } + }, + [isReady], + ); + + useEffect(() => { + isReady.current = true; + getData(...initialFetchParams); + return () => { + isReady.current = false; + }; + }, []); + + if (status === 'err') { + return { + status, + value: data, + error: error as Error, + refresh: getData, + }; + } + if (status === 'ok') { + return { + status, + value: data as Data, + error, + refresh: getData, + }; + } + return { + status, + value: data, + error, + refresh: getData, + }; +}; + +export default useFetch; diff --git a/astarte-dashboard/src/hooks/useInterval.ts b/astarte-dashboard/src/hooks/useInterval.ts new file mode 100644 index 0000000000..51c725e305 --- /dev/null +++ b/astarte-dashboard/src/hooks/useInterval.ts @@ -0,0 +1,29 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import { useEffect } from 'react'; + +export default (callback: () => void, delay: number): void => { + useEffect(() => { + if (delay == null) { + return () => null; + } + const intervalId = setInterval(callback, delay); + return () => clearInterval(intervalId); + }, [callback, delay]); +}; diff --git a/astarte-dashboard/src/hooks/useRelativeTime.ts b/astarte-dashboard/src/hooks/useRelativeTime.ts new file mode 100644 index 0000000000..4029e50297 --- /dev/null +++ b/astarte-dashboard/src/hooks/useRelativeTime.ts @@ -0,0 +1,36 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import { useCallback, useState } from 'react'; +import dayjs from 'dayjs'; +import dayjsRelativeTime from 'dayjs/plugin/relativeTime'; + +import useInterval from './useInterval'; + +import type { Timestamp } from '../types'; + +dayjs.extend(dayjsRelativeTime); + +export default (dateTime: Timestamp): string => { + const [relativeTimeString, setRelativeTimeString] = useState(dayjs(dateTime).fromNow()); + const refreshRelativeTimeString = useCallback(() => { + setRelativeTimeString(dayjs(dateTime).fromNow()); + }, [dateTime]); + useInterval(refreshRelativeTimeString, 1000); + return relativeTimeString; +}; diff --git a/astarte-dashboard/src/index.tsx b/astarte-dashboard/src/index.tsx new file mode 100644 index 0000000000..75914774be --- /dev/null +++ b/astarte-dashboard/src/index.tsx @@ -0,0 +1,50 @@ +/* + This file is part of Astarte. + + Copyright 2017-2024 SECO Mind Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React from 'react'; +import { createRoot } from 'react-dom/client'; + +import './styles/main.scss'; +import App from './App'; +import type { DashboardConfig } from './types'; + +fetch('/user-config/config.json') + .then((response) => response.json()) + .then((json) => ({ + astarteApiUrl: json.astarte_api_url, + appEngineApiUrl: json.appengine_api_url, + realmManagementApiUrl: json.realm_management_api_url, + pairingApiUrl: json.pairing_api_url, + flowApiUrl: json.flow_api_url, + enableFlowPreview: json.enable_flow_preview, + auth: json.auth, + defaultAuth: json.default_auth, + defaultRealm: json.default_realm, + ui: json.ui, + })) + .catch(() => null) + .then((config: DashboardConfig | null) => { + const container = document.getElementById('root')!; + const root = createRoot(container); + + root.render( + + + , + ); + }); diff --git a/astarte-dashboard/src/models/NativeBlockModel.ts b/astarte-dashboard/src/models/NativeBlockModel.ts new file mode 100644 index 0000000000..6780765053 --- /dev/null +++ b/astarte-dashboard/src/models/NativeBlockModel.ts @@ -0,0 +1,146 @@ +/* + This file is part of Astarte. + + Copyright 2020-2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import { DefaultPortModel, NodeModel, PortModelAlignment } from '@projectstorm/react-diagrams'; +import _ from 'lodash'; +import type { AstarteBlock } from 'astarte-client'; + +function isEmptyValue(value: unknown): boolean { + if (Array.isArray(value)) { + return value.length === 0; + } + if (typeof value === 'object') { + return _.isEmpty(value); + } + if (typeof value === 'string') { + return value === ''; + } + return !value; +} + +function encodeValue(value: unknown): string { + if (Array.isArray(value)) { + const encodedValues = value.map((v) => encodeValue(v)); + return `[${encodedValues.join(',')}]`; + } + if (typeof value === 'object' && value != null) { + const encodedValues = Object.entries(value).map( + ([key, innerValue]) => `${key}: ${encodeValue(innerValue)}`, + ); + return `{${encodedValues.join(',')}}`; + } + if (typeof value === 'string') { + return `"${value}"`; + } + return `${value}`; +} + +interface NativeBlockModelConfig { + name: AstarteBlock['name']; + blockType: AstarteBlock['type']; + onRemoveClick?: (node: NativeBlockModel) => void; + onSettingsClick?: (node: NativeBlockModel) => void; +} + +class NativeBlockModel extends NodeModel { + name: AstarteBlock['name']; + + blockType: AstarteBlock['type']; + + onRemoveClick: (node: NativeBlockModel) => void; + + onSettingsClick: (node: NativeBlockModel) => void; + + properties: Record; + + inPorts: DefaultPortModel[]; + + outPorts: DefaultPortModel[]; + + constructor({ + name, + blockType, + onRemoveClick = () => {}, + onSettingsClick = () => {}, + }: NativeBlockModelConfig) { + super({ + type: 'astarte-native', + }); + + this.outPorts = []; + if (blockType.includes('producer')) { + const outPort = new DefaultPortModel({ + in: false, + name: 'Out', + label: 'Out', + alignment: PortModelAlignment.RIGHT, + }); + super.addPort(outPort); + this.outPorts.push(outPort); + } + + this.inPorts = []; + if (blockType.includes('consumer')) { + const inPort = new DefaultPortModel({ + in: true, + name: 'In', + label: 'In', + alignment: PortModelAlignment.LEFT, + }); + super.addPort(inPort); + this.inPorts.push(inPort); + } + + this.name = name; + this.blockType = blockType; + this.properties = {}; + this.onRemoveClick = onRemoveClick; + this.onSettingsClick = onSettingsClick; + } + + getInPorts(): DefaultPortModel[] { + return this.inPorts; + } + + getOutPorts(): DefaultPortModel[] { + return this.outPorts; + } + + getProperties(): Record { + return this.properties; + } + + setProperties(properties: Record): void { + this.properties = properties; + } + + toScript(): string { + const params = Object.entries(this.properties) + .filter(([, value]) => !isEmptyValue(value)) + .map(([key, value]) => `\n .${key}(${encodeValue(value)})`); + if (this.name === 'container') { + return this.name + params.concat(`\n .type("${this.blockType}")`).join(''); + } + if (this.name === 'dynamic_virtual_device_pool') { + return `virtual_device_pool${params.join('')}`; + } + return this.name + params.join(''); + } +} + +export default NativeBlockModel; diff --git a/astarte-dashboard/src/setupTests.ts b/astarte-dashboard/src/setupTests.ts new file mode 100644 index 0000000000..d4e3172e0e --- /dev/null +++ b/astarte-dashboard/src/setupTests.ts @@ -0,0 +1,9 @@ +import { cleanup } from '@testing-library/react'; + +// react requires the flag to be set in tests +// @ts-ignore +global.IS_REACT_ACT_ENVIRONMENT = true; + +afterEach(() => { + cleanup(); +}); diff --git a/astarte-dashboard/src/store/actions.ts b/astarte-dashboard/src/store/actions.ts new file mode 100644 index 0000000000..0c1f4ba93f --- /dev/null +++ b/astarte-dashboard/src/store/actions.ts @@ -0,0 +1,25 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import _ from 'lodash'; + +import storeSlices from './slices'; + +const actions = _.mapValues(storeSlices, (slice) => slice.actions); + +export default actions; diff --git a/astarte-dashboard/src/store/index.ts b/astarte-dashboard/src/store/index.ts new file mode 100644 index 0000000000..8be1a3a080 --- /dev/null +++ b/astarte-dashboard/src/store/index.ts @@ -0,0 +1,58 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import { configureStore } from '@reduxjs/toolkit'; +import { useDispatch, useSelector, Selector } from 'react-redux'; +import type AstarteClient from 'astarte-client'; +import _ from 'lodash'; + +import actions from './actions'; +import selectors from './selectors'; +import storeSlices, { StoreState } from './slices'; + +const reducer = _.mapValues(storeSlices, (slice) => slice.reducer); + +// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types +const createStore = (astarte: AstarteClient) => + configureStore({ + reducer, + middleware: (getDefaultMiddleware) => + getDefaultMiddleware({ + serializableCheck: { + ignoredActionPaths: ['payload'], + ignoredPaths: Object.keys(reducer), + }, + thunk: { + extraArgument: astarte, + }, + }), + }); + +type Store = ReturnType; +type StoreDispatch = Store['dispatch']; +type StoreSelector = Selector; + +const useStoreDispatch = (): StoreDispatch => useDispatch(); + +const useStoreSelector = ( + getSelector: (s: typeof selectors) => StoreSelector, +): SelectedState => useSelector(getSelector(selectors)); + +export { actions, useStoreDispatch, useStoreSelector }; + +export default createStore; diff --git a/astarte-dashboard/src/store/selectors.ts b/astarte-dashboard/src/store/selectors.ts new file mode 100644 index 0000000000..a569a32bb0 --- /dev/null +++ b/astarte-dashboard/src/store/selectors.ts @@ -0,0 +1,49 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import type { StoreState } from './slices'; + +const selectors = { + blocks: () => (state: StoreState) => state.blocks.blocks, + block: (name: string) => (state: StoreState) => + state.blocks.blocks.find((block) => block.name === name) || null, + blocksError: () => (state: StoreState) => state.blocks.error || null, + blockError: (name: string) => (state: StoreState) => state.blocks.errorByBlock[name] || null, + blocksStatus: () => (state: StoreState) => state.blocks.status, + blockStatus: (name: string) => (state: StoreState) => { + if ( + selectors.isRegisteringBlock(name)(state) || + selectors.isUpdatingBlock(name)(state) || + selectors.isDeletingBlock(name)(state) + ) { + return 'loading'; + } + if (selectors.blockError(name)(state)) { + return 'err'; + } + return 'ok'; + }, + isRegisteringBlock: (name: string) => (state: StoreState) => + state.blocks.blocksBeingRegistered.includes(name), + isUpdatingBlock: (name: string) => (state: StoreState) => + state.blocks.blocksBeingUpdated.includes(name), + isDeletingBlock: (name: string) => (state: StoreState) => + state.blocks.blocksBeingDeleted.includes(name), +} as const; + +export default selectors; diff --git a/astarte-dashboard/src/store/slices/blocks.ts b/astarte-dashboard/src/store/slices/blocks.ts new file mode 100644 index 0000000000..31919715ff --- /dev/null +++ b/astarte-dashboard/src/store/slices/blocks.ts @@ -0,0 +1,153 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import { createAsyncThunk, createSlice } from '@reduxjs/toolkit'; +import AstarteClient, { AstarteBlock, AstarteCustomBlock } from 'astarte-client'; +import _ from 'lodash'; + +interface BlocksState { + blocks: AstarteBlock[]; + status: 'loading' | 'ok' | 'err'; + error: string | null; + errorByBlock: { [blockName: string]: string }; + blocksBeingRegistered: string[]; + blocksBeingUpdated: string[]; + blocksBeingDeleted: string[]; +} + +const initialState: BlocksState = { + blocks: [], + status: 'ok', + error: null, + errorByBlock: {}, + blocksBeingRegistered: [], + blocksBeingUpdated: [], + blocksBeingDeleted: [], +}; + +const asyncActions = { + getList: createAsyncThunk('blocks/getList', (params, { extra }) => + (extra as AstarteClient).getBlocks(), + ), + get: createAsyncThunk('blocks/get', (name: string, { extra }) => + (extra as AstarteClient).getBlock(name), + ), + register: createAsyncThunk('blocks/register', (block: AstarteCustomBlock, { extra }) => + (extra as AstarteClient).registerBlock(block), + ), + delete: createAsyncThunk('blocks/delete', (name: string, { extra }) => + (extra as AstarteClient).deleteBlock(name), + ), +} as const; + +const blocksSlice = createSlice({ + name: 'blocks', + initialState, + reducers: {}, + extraReducers: (builder) => { + builder.addCase(asyncActions.getList.pending, (state) => { + state.status = 'loading'; + state.blocksBeingUpdated = state.blocks.map((block) => block.name); + }); + builder.addCase(asyncActions.getList.fulfilled, (state, action) => { + state.blocks = action.payload; + state.blocksBeingUpdated = []; + state.status = 'ok'; + }); + builder.addCase(asyncActions.getList.rejected, (state, action) => { + state.blocksBeingUpdated = []; + state.error = action.error.message || 'Could not fetch blocks'; + state.status = 'err'; + }); + builder.addCase(asyncActions.get.pending, (state, action) => { + const blockName = action.meta.arg; + state.status = 'loading'; + delete state.errorByBlock[blockName]; + state.blocksBeingUpdated = _.union(state.blocksBeingUpdated, [blockName]); + }); + builder.addCase(asyncActions.get.fulfilled, (state, action) => { + const fetchedBlock = action.payload; + const blockIndex = state.blocks.findIndex((block) => block.name === fetchedBlock.name); + if (blockIndex === -1) { + state.blocks = state.blocks.concat(fetchedBlock); + } else { + state.blocks[blockIndex] = fetchedBlock; + } + delete state.errorByBlock[fetchedBlock.name]; + state.blocksBeingUpdated = _.without(state.blocksBeingUpdated, fetchedBlock.name); + state.status = 'ok'; + }); + builder.addCase(asyncActions.get.rejected, (state, action) => { + const blockName = action.meta.arg; + state.blocksBeingUpdated = _.without(state.blocksBeingUpdated, blockName); + const error = action.error.message || 'Could not fetch blocks'; + state.errorByBlock[blockName] = error; + state.error = error; + state.status = 'err'; + }); + builder.addCase(asyncActions.register.pending, (state, action) => { + const blockName = action.meta.arg.name; + state.blocksBeingRegistered = _.union(state.blocksBeingRegistered, [blockName]); + delete state.errorByBlock[blockName]; + state.status = 'loading'; + }); + builder.addCase(asyncActions.register.fulfilled, (state, action) => { + const registeredBlock = action.meta.arg; + state.blocks = state.blocks.concat(registeredBlock); + delete state.errorByBlock[registeredBlock.name]; + state.blocksBeingRegistered = _.without(state.blocksBeingRegistered, registeredBlock.name); + state.status = 'ok'; + }); + builder.addCase(asyncActions.register.rejected, (state, action) => { + const blockName = action.meta.arg.name; + state.blocksBeingRegistered = _.without(state.blocksBeingRegistered, blockName); + const error = action.error.message || `Could not register block ${blockName}`; + state.errorByBlock[blockName] = error; + state.error = error; + state.status = 'err'; + }); + builder.addCase(asyncActions.delete.pending, (state, action) => { + const blockName = action.meta.arg; + state.blocksBeingDeleted = _.union(state.blocksBeingDeleted, [blockName]); + delete state.errorByBlock[blockName]; + state.status = 'loading'; + }); + builder.addCase(asyncActions.delete.fulfilled, (state, action) => { + const blockName = action.meta.arg; + state.blocks = state.blocks.filter((block) => block.name !== blockName); + state.blocksBeingDeleted = _.without(state.blocksBeingDeleted, blockName); + delete state.errorByBlock[blockName]; + state.status = 'ok'; + }); + builder.addCase(asyncActions.delete.rejected, (state, action) => { + const blockName = action.meta.arg; + state.blocksBeingDeleted = _.without(state.blocksBeingDeleted, blockName); + const error = action.error.message || `Could not delete block ${blockName}`; + state.errorByBlock[blockName] = error; + state.error = error; + state.status = 'err'; + }); + }, +}); + +const actions = { ...blocksSlice.actions, ...asyncActions } as const; +const slice = { ...blocksSlice, actions } as const; + +export type { BlocksState }; + +export default slice; diff --git a/astarte-dashboard/src/store/slices/index.ts b/astarte-dashboard/src/store/slices/index.ts new file mode 100644 index 0000000000..c8ab7a86be --- /dev/null +++ b/astarte-dashboard/src/store/slices/index.ts @@ -0,0 +1,31 @@ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import blocksSlice, { BlocksState } from './blocks'; + +type StoreState = { + blocks: BlocksState; +}; + +const storeSlices = { + blocks: blocksSlice, +} as const; + +export type { StoreState }; + +export default storeSlices; diff --git a/astarte-dashboard/src/styles/flow-editor.scss b/astarte-dashboard/src/styles/flow-editor.scss new file mode 100644 index 0000000000..9b50a4f187 --- /dev/null +++ b/astarte-dashboard/src/styles/flow-editor.scss @@ -0,0 +1,162 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +$producer-color: rgb(192, 255, 0); +$consumer-color: rgb(255, 0, 192); +$producer-consumer-color: rgb(0, 192, 255); +$hightlight-color: rgb(81, 203, 238); + +$block-border-width: 1px; +$block-radius: 5px; + +.flow-editor { + height: 40em; + display: flex; + min-height: 100%; + max-height: 60vh; + + .flow-editor-sidebar { + display: flex; + flex-direction: column; + padding: 0.5em; + border-right: 1px solid lightgrey; + overflow-y: auto; + + .block-label { + margin-top: 1em; + margin-bottom: 0.2em; + } + + .block-label:first-of-type { + margin-top: 0; + } + + .block-item { + color: white; + border-radius: $block-radius; + padding: 0.25em 1em; + margin-bottom: 0.2em; + text-align: center; + cursor: grab; + } + + .producer { + background-color: darken($producer-color, 15); + } + + .consumer { + background-color: darken($consumer-color, 15); + } + + .producer_consumer { + background-color: darken($producer-consumer-color, 15); + } + } + + .canvas-container { + flex-grow: 1; + + > div { + width: 100; + height: 100%; + } + + .node { + .native-node { + color: white; + border: $block-border-width solid white; + border-radius: $block-radius; + overflow: visible; + min-width: 9em; + box-sizing: content-box; + } + + .native-node.selected { + box-shadow: 0 0 5px $hightlight-color; + border-color: $hightlight-color; + } + + .native-node.producer { + background-color: $producer-color; + } + .native-node.consumer { + background-color: $consumer-color; + } + .native-node.producer_consumer { + background-color: $producer-consumer-color; + } + } + + .node-header { + background: rgba(0, 0, 0, 0.3); + border-radius: $block-radius $block-radius 0 0; + display: flex; + align-items: center; + white-space: nowrap; + padding: 0.3em; + } + + .node-title { + flex-grow: 1; + padding: 0 0.3em; + } + + .node-header-icons { + display: flex; + align-items: center; + padding: 0 0.3em; + } + + .node-header-icon { + padding-left: 0.7em; + cursor: pointer; + } + + .ports { + padding: 0.1em; + display: flex; + background-image: linear-gradient(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.2)); + border-radius: 0 0 $block-radius $block-radius; + } + + .port-container { + flex-grow: 1; + display: flex; + flex-direction: column; + + &:first-child { + margin-right: 10px; + } + + &:only-child { + margin-right: 0px; + } + } + } +} + +.rjsf { + hr { + display: none; + } + + .form-footer { + display: flex; + flex-direction: row-reverse; + } +} diff --git a/astarte-dashboard/src/styles/main.scss b/astarte-dashboard/src/styles/main.scss new file mode 100644 index 0000000000..69baf98246 --- /dev/null +++ b/astarte-dashboard/src/styles/main.scss @@ -0,0 +1,273 @@ +/* + This file is part of Astarte. + + Copyright 2017-2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +$green: #33a344; +$red: #dc3545; +$dark-blue: #27303d; +$grey: #7f7f7e; +$black: #000; + +$primary: #3862b7; + +$navbar-width: 13em; +$navbar-color: $dark-blue; +$navbar-padding-y: 0rem; +$navbar-padding-x: 0rem; +$nav-link-padding-y: 1rem; +$nav-link-padding-x: 1.3rem; +$code-color: $dark-blue; + +$form-feedback-icon-valid: none; + +@import 'bootstrap/scss/bootstrap.scss'; + +$fa-font-path: '@fortawesome/fontawesome-free/webfonts'; + +@import '@fortawesome/fontawesome-free/scss/fontawesome'; +@import '@fortawesome/fontawesome-free/scss/solid'; +@import '@fortawesome/fontawesome-free/scss/regular'; + +@import './flow-editor'; + +// Custom components + +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + color: $black; +} + +h1, +h2, +h3, +h4, +h5, +.h1, +.h2, +.h3, +.h4, +.h5 { + margin-bottom: 0.75rem; +} + +h6, +.h6 { + margin-bottom: 0.1em; +} + +.form-control-label { + color: $black; +} + +.color-green { + color: $green; +} + +.color-grey { + color: $grey; +} + +.color-red { + color: $red; +} + +.color-yellow { + color: $yellow; +} + +.login-form { + max-width: 50rem; +} + +.login-image-container { + height: 100vh; + background-color: $dark-blue; + + .top-background-image { + top: 0; + } + + .bottom-background-image { + bottom: 0; + } + + .logo { + width: 26rem; + } + + .mascotte { + width: 19rem; + } +} + +.nav-col { + width: $navbar-width; + background-color: $navbar-color; + min-height: 100vh; +} + +.nav-brand { + width: 100%; + padding: 0.7rem 1rem; + margin: 0; + text-align: center; + background-color: darken($navbar-color, 5%); +} + +.brand-logo { + width: 100%; + margin: auto; +} + +.nav-link { + color: $navbar-dark-color; + + &.active { + color: $navbar-dark-active-color; + background-color: lighten($navbar-color, 25%); + } + + &:hover { + color: $navbar-dark-active-color; + } +} + +.nav-item { + color: $navbar-dark-color; + + hr { + margin: 1rem 0.5rem; + border-color: rgba($navbar-dark-color, 0.2); + } +} + +.dashboard-version { + font-size: 0.65rem; + color: $navbar-dark-color; + padding: 1.2rem 0 1rem $nav-link-padding-x; +} + +.nav-status { + font-size: 0.9rem; + + b { + color: rgba($navbar-dark-active-color, 0.7); + } + + p { + margin-bottom: 0.5rem; + } +} + +.icon-spacer { + width: 1.7rem; + display: inline-block; + text-align: center; +} + +.login-logo { + position: relative; + top: 10px; + z-index: 2; +} + +.warning-feedback { + display: block; + width: 100%; + margin-top: 0.25rem; + font-size: 70%; + color: $warning; +} + +.suggestion { + position: absolute; + top: 2.4rem; + right: 1.4rem; +} + +.suggestion-icon { + color: $warning; +} + +.suggestion-bubble { + position: absolute; + top: 2.2rem; + right: -1.5rem; + background-color: white; + border: 1px solid $warning; + border-radius: 3px; + padding: 0.6rem; + max-width: 20rem; + min-width: 14rem; + z-index: $zindex-popover; + + &::before { + content: ' '; + position: absolute; + top: -0.5rem; + right: 1.4rem; + width: 1rem; + height: 1rem; + background-color: white; + border-top: 1.4px solid $warning; + border-left: 1.4px solid $warning; + transform: rotate(45deg); + } +} + +.device-data-piechart { + max-height: 20em; + height: 100%; +} + +.square { + display: inline-block; + width: 1em; + height: 1em; + vertical-align: middle; +} + +.device-event-container { + height: 50em; + overflow-y: scroll; + background-color: #fbfbfb; +} + +.status-column, +.action-column { + width: 4em; +} + +.action-icon { + cursor: pointer; +} + +/* Bootstrap overwrite */ + +.table th { + border-top: 0; +} diff --git a/astarte-dashboard/src/types/dashboardConfig.ts b/astarte-dashboard/src/types/dashboardConfig.ts new file mode 100644 index 0000000000..e71d3c7236 --- /dev/null +++ b/astarte-dashboard/src/types/dashboardConfig.ts @@ -0,0 +1,49 @@ +/* eslint-disable camelcase */ +/* + This file is part of Astarte. + + Copyright 2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +type DashboardAuthConfig = + | { + auth: [{ type: 'token' }]; + defaultAuth?: 'token'; + defaultRealm?: string; + } + | { + auth: [{ type: 'oauth'; oauth_api_url?: string }]; + defaultAuth?: 'oauth'; + defaultRealm?: string; + } + | { + auth: [{ type: 'token' }, { type: 'oauth'; oauth_api_url?: string }]; + defaultAuth?: 'token' | 'oauth'; + defaultRealm?: string; + }; + +type DashboardConfig = { + astarteApiUrl: string; + appEngineApiUrl?: string; + realmManagementApiUrl?: string; + pairingApiUrl?: string; + flowApiUrl?: string; + enableFlowPreview: boolean; + ui: { + hideSidebar: boolean; + }; +} & DashboardAuthConfig; + +export type { DashboardConfig }; diff --git a/astarte-dashboard/src/types/index.ts b/astarte-dashboard/src/types/index.ts new file mode 100644 index 0000000000..45cc1b4d39 --- /dev/null +++ b/astarte-dashboard/src/types/index.ts @@ -0,0 +1,21 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +export * from './dashboardConfig'; +export * from './timestamp'; +export * from './uuid'; diff --git a/astarte-dashboard/src/types/timestamp.ts b/astarte-dashboard/src/types/timestamp.ts new file mode 100644 index 0000000000..4b4b64347d --- /dev/null +++ b/astarte-dashboard/src/types/timestamp.ts @@ -0,0 +1,23 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +export type TimestampMilliseconds = number; + +export type TimestampUTC = string; + +export type Timestamp = TimestampMilliseconds | TimestampUTC; diff --git a/astarte-dashboard/src/types/uuid.ts b/astarte-dashboard/src/types/uuid.ts new file mode 100644 index 0000000000..f830b4969f --- /dev/null +++ b/astarte-dashboard/src/types/uuid.ts @@ -0,0 +1,19 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +export type UUIDv4 = string; diff --git a/astarte-dashboard/src/ui/BackButton.tsx b/astarte-dashboard/src/ui/BackButton.tsx new file mode 100644 index 0000000000..c2d44cfa41 --- /dev/null +++ b/astarte-dashboard/src/ui/BackButton.tsx @@ -0,0 +1,34 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React from 'react'; +import { Link } from 'react-router-dom'; + +import Icon from '../components/Icon'; + +interface Props { + href: string; +} + +export default function BackButton({ href }: Props): React.ReactElement { + return ( + + + + ); +} diff --git a/astarte-dashboard/src/ui/CheckableDeviceTable.tsx b/astarte-dashboard/src/ui/CheckableDeviceTable.tsx new file mode 100644 index 0000000000..1961af63d4 --- /dev/null +++ b/astarte-dashboard/src/ui/CheckableDeviceTable.tsx @@ -0,0 +1,150 @@ +/* + This file is part of Astarte. + + Copyright 2024 SECO Mind Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React, { useCallback, useMemo } from 'react'; +import { Form, Table } from 'react-bootstrap'; +import { AstarteDevice } from 'astarte-client'; + +interface HighlightProps { + text: string; + word?: string; +} + +const Highlight = ({ text, word }: HighlightProps): React.ReactElement => { + if (!word) { + return {text}; + } + + return ( + <> + {text.split(new RegExp(`(${word})`, 'gi')).map((part, index) => + part.toLowerCase() === word?.toLowerCase() ? ( + + {part} + + ) : ( + {part} + ), + )} + + ); +}; + +interface DeviceTableRowProps { + deviceId: string; + deviceAliases: Array<[string, string]>; + filter?: string; + selected: boolean; + onToggleDevice: (deviceId: string, checked: boolean) => void; +} + +const DeviceTableRow = ({ + deviceId, + deviceAliases, + filter, + selected, + onToggleDevice, +}: DeviceTableRowProps) => { + const onToggleChange = useCallback( + (event: React.ChangeEvent) => { + const { checked } = event.target; + onToggleDevice(deviceId, checked); + }, + [deviceId, onToggleDevice], + ); + return ( + + + + + + + + +
      + {deviceAliases.map(([aliasTag, alias]) => ( +
    • + +
    • + ))} +
    + + + ); +}; + +interface CheckableDeviceTableProps { + devices: AstarteDevice[]; + filter?: string; + selectedDevices: Set; + onToggleDevice: DeviceTableRowProps['onToggleDevice']; +} + +const CheckableDeviceTable = ({ + devices, + filter, + selectedDevices, + onToggleDevice, +}: CheckableDeviceTableProps): React.ReactElement => { + const filteredDevices = useMemo(() => { + if (filter) { + return devices.filter((device) => { + const aliases = Array.from(device.aliases.values()); + return ( + device.id.includes(filter) || aliases.filter((alias) => alias.includes(filter)).length > 0 + ); + }); + } + return devices; + }, [devices, filter]); + + if (!filteredDevices.length) { + return

    No device matched the current filter

    ; + } + + return ( + + + + + + + + + + {filteredDevices.map((device) => ( + + ))} + +
    SelectedDevice IDAliases
    + ); +}; + +export default CheckableDeviceTable; diff --git a/astarte-dashboard/src/ui/SingleCardPage.tsx b/astarte-dashboard/src/ui/SingleCardPage.tsx new file mode 100644 index 0000000000..0f003cb899 --- /dev/null +++ b/astarte-dashboard/src/ui/SingleCardPage.tsx @@ -0,0 +1,59 @@ +/* + This file is part of Astarte. + + Copyright 2020 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React from 'react'; +import { Container } from 'react-bootstrap'; + +import BackButton from './BackButton'; +import Icon from '../components/Icon'; + +interface Props { + backLink?: string; + children: React.ReactNode; + docsLink?: string; + title: string; +} + +export default function SingleCardPage({ + backLink, + children, + docsLink, + title, +}: Props): React.ReactElement { + return ( + +
    +

    + {backLink && } + {title} +

    + {docsLink && ( + + )} +
    + + {children} + +
    + ); +} diff --git a/astarte-dashboard/src/ui/Snackbar.tsx b/astarte-dashboard/src/ui/Snackbar.tsx new file mode 100644 index 0000000000..fd893a4b81 --- /dev/null +++ b/astarte-dashboard/src/ui/Snackbar.tsx @@ -0,0 +1,53 @@ +/* + This file is part of Astarte. + + Copyright 2020-2021 Ispirata Srl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import React from 'react'; +import { Container, Toast, ToastProps } from 'react-bootstrap'; + +import { useGlobalAlertsState, IAlert } from '../AlertManager'; +import useRelativeTime from '../hooks/useRelativeTime'; + +type SnackbarAlertProps = ToastProps & { + alert: IAlert; +}; + +const SnackbarAlert = ({ alert, ...props }: SnackbarAlertProps) => { + const alertRelativeTime = useRelativeTime(alert.timestamp); + return ( + + + {alertRelativeTime} + + {alert.message} + + ); +}; + +export default (): React.ReactElement | null => { + const alerts = useGlobalAlertsState(); + if (!alerts || alerts.length === 0) { + return null; + } + return ( + + {alerts.map((alert) => ( + + ))} + + ); +}; diff --git a/astarte-dashboard/src/vite.env.d.ts b/astarte-dashboard/src/vite.env.d.ts new file mode 100644 index 0000000000..11f02fe2a0 --- /dev/null +++ b/astarte-dashboard/src/vite.env.d.ts @@ -0,0 +1 @@ +/// diff --git a/astarte-dashboard/tsconfig.json b/astarte-dashboard/tsconfig.json new file mode 100644 index 0000000000..abad9ed3a6 --- /dev/null +++ b/astarte-dashboard/tsconfig.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "target": "es2018", + "lib": [ + "dom", + "dom.iterable", + "es5" + ], + "allowJs": false, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noFallthroughCasesInSwitch": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + "baseUrl": "./src", + "types": ["vitest/globals"] + }, + "include": [ + "src" + ] +} diff --git a/astarte-dashboard/tsconfig.node.json b/astarte-dashboard/tsconfig.node.json new file mode 100644 index 0000000000..9112d7e3e3 --- /dev/null +++ b/astarte-dashboard/tsconfig.node.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "composite": true, + "module": "esnext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/astarte-dashboard/vite.config.js b/astarte-dashboard/vite.config.js new file mode 100644 index 0000000000..9a789559ef --- /dev/null +++ b/astarte-dashboard/vite.config.js @@ -0,0 +1,21 @@ +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; +import eslint from 'vite-plugin-eslint'; +import viteTsconfigPaths from 'vite-tsconfig-paths'; + +export default defineConfig(() => ({ + server: { + host: 'dashboard.astarte.localhost', + open: true, + port: 8080, + }, + build: { + outDir: 'build', + }, + plugins: [react(), eslint(), viteTsconfigPaths()], + test: { + environment: 'jsdom', + globals: true, + setupFiles: './src/setupTests.ts', + }, +}));