diff --git a/.github/workflows/automated_tests.yml b/.github/workflows/automated_tests.yml index 367ae81c94..1f3d164788 100644 --- a/.github/workflows/automated_tests.yml +++ b/.github/workflows/automated_tests.yml @@ -1,4 +1,4 @@ -name: "Automated Tests" +name: API Unit Tests on: pull_request: @@ -7,7 +7,8 @@ on: - "patch/**" jobs: - automated_tests: + api_unit_tests: + name: API Unit Tests runs-on: ubuntu-20.04 container: node:18.16.1 services: diff --git a/.github/workflows/cypress_tests.yml b/.github/workflows/cypress_tests.yml index 5102a74305..5965a2cc49 100644 --- a/.github/workflows/cypress_tests.yml +++ b/.github/workflows/cypress_tests.yml @@ -2,42 +2,52 @@ name: Run cypress happy path test on: workflow_dispatch: - # pull_request: - # branches: - # - integration + pull_request: + types: [enqueued] + branches: + - integration + merge_group: jobs: - build: - runs-on: ubuntu-20.04 + cypress-tests: + name: Cypress E2E Tests + runs-on: ubuntu-latest timeout-minutes: 30 + services: + postgres: + image: postgres + env: + POSTGRES_DB: "pg-litefarm" + POSTGRES_USER: "postgres" + POSTGRES_PASSWORD: "postgres" + # POSTGRES_HOST: localhost + # POSTGRES_HOST: postgres + options: >- + --health-cmd pg_isready + --health-interval 5s + --health-timeout 5s + --health-retries 5 + ports: + # Maps tcp port 5432 on service container to the host + - 5432:5432 + volumes: + - ./initdb.d:/docker-entrypoint-initdb.d + - postgres-data:/var/lib/postgresql/data + strategy: + matrix: + node-version: [18.16.1] env: - JWT_INVITE_SECRET: ${{secrets.JWT_INVITE_SECRET}} - JWT_RESET_SECRET: ${{secrets.JWT_RESET_SECRET}} - JWT_SCHEDULER_SECRET: ${{secrets.JWT_SCHEDULER_SECRET}} - JWT_SECRET: ${{secrets.JWT_SECRET}} - TEST_USER: ${{secrets.TEST_USER}} - TEST_USER_ID: ${{secrets.TEST_USER_ID}} - DEV_DATABASE_HOST: localhost - DEV_DATABASE: pg-litefarm - DEV_DATABASE_USER: postgres - DEV_DATABASE_PASSWORD: postgres + JWT_SECRET: This_will_(really)_work + JWT_INVITE_SECRET: Any_arbitrary_string_will_do + JWT_RESET_SECRET: Production_is_secured_with_a_long_random_string + JWT_FARM_SECRET: Here_we_can_use_friendly_explanations + JWT_SCHEDULER_SECRET: Another_token_was_needed_for_the_scheduler GOOGLE_API_KEY: ${{secrets.VITE_GOOGLE_MAPS_API_KEY}} VITE_GOOGLE_MAPS_API_KEY: ${{secrets.VITE_GOOGLE_MAPS_API_KEY}} VITE_WEATHER_API_KEY: ${{secrets.VITE_WEATHER_API_KEY}} NODE_ENV: development - strategy: - matrix: - node-version: [16.15.0] - steps: - - uses: ikalnytskyi/action-setup-postgres@v3 - with: - username: ${{env.DEV_DATABASE_USER}} - password: ${{env.DEV_DATABASE_PASSWORD}} - database: ${{env.DEV_DATABASE}} - port: 5432 - - uses: actions/checkout@v2 - name: Use Node.js ${{ matrix.node-version }} @@ -53,53 +63,43 @@ jobs: npm run start & env: PORT: 5000 + DEV_DATABASE_HOST: localhost + DEV_DATABASE: pg-litefarm + DEV_DATABASE_USER: postgres + DEV_DATABASE_PASSWORD: postgres + NODE_ENV: development - - name: Install pnpm - uses: pnpm/action-setup@v2 + - uses: pnpm/action-setup@v2 with: version: latest - - - name: Run and test app + - name: Run Webapp + working-directory: packages/webapp + run: | + pnpm install --config.auto-install-peers=true --no-frozen-lockfile --force + pnpm dev & env: - VITE_WEATHER_API_KEY: ${{secrets.VITE_WEATHER_API_KEY}} VITE_ENV: development VITE_GOOGLE_OAUTH_CLIENT_ID: ${{secrets.VITE_GOOGLE_OAUTH_CLIENT_ID}} VITE_DO_BUCKET_NAME: litefarm NODE_ENV: development VITE_API_URL: http://localhost:5000 - CYPRESS_RECORD_KEY: "2630f414-4914-48b0-907d-aa3a9cc6a30b" - uses: cypress-io/github-action@v4.2.0 + CYPRESS_COVERAGE: true + - name: Run E2E test (English) + env: + CYPRESS_RECORD_KEY: ${{secrets.CYPRESS_RECORD_KEY}} + CYPRESS_USER: 0 + uses: cypress-io/github-action@v6 with: - working-directory: packages/webapp - install-command: pnpm install --config.auto-install-peers=true --no-frozen-lockfile --force - install: true - start: pnpm dev - wait-on: "http://localhost:3000" - wait-on-timeout: 120 + working-directory: packages/end-to-end headed: true browser: chrome record: true - parallel: true + parallel: false group: "UI - Chrome" - spec: cypress/e2e/happyPath.spec.js + ci-build-id: ${{ github.run_id }} - - name: set code coverage badge - run: npx -p check-code-coverage update-badge --from '${GITHUB_WORKSPACE}/packages/webapp/coverage/coverage-summary.json' - env: - GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} - - - name: Archive code coverage results + - name: Archive backend logs uses: actions/upload-artifact@v3 - continue-on-error: true with: - name: code-coverage-report - working-directory: packages/webapp - path: coverage/coverage-summary.json - - - name: Set code coverage commit status - continue-on-error: true - working-directory: packages/webapp - run: npx set-gh-status - env: - GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} - GH_SHA: ${{ github.event.after }} + name: logs + path: packages/api/logs diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 3950bd6242..219f60e926 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,4 +1,4 @@ -name: 'Deploy' +name: "Deploy" on: workflow_dispatch: @@ -26,8 +26,8 @@ jobs: with: script_stop: true host: ${{ secrets.BETA_SSH_HOST }} - username: ${{ secrets.BETA_SSH_USER }} - passphrase: ${{ secrets.BETA_SSH_PASS }} - key: ${{ secrets.BETA_SSH_KEY }} + username: ${{ secrets.BETA_SSH_USER_NEW }} + passphrase: ${{ secrets.BETA_SSH_PASS_NEW }} + key: ${{ secrets.BETA_SSH_KEY_NEW }} command_timeout: 20m script: ${{ steps.script.outputs.content }} diff --git a/.github/workflows/webapp_unit_tests.yml b/.github/workflows/webapp_unit_tests.yml index 621a3930b1..3d81403dca 100644 --- a/.github/workflows/webapp_unit_tests.yml +++ b/.github/workflows/webapp_unit_tests.yml @@ -1,4 +1,4 @@ -name: "Webapp Unit Tests" +name: Webapp Unit Tests on: pull_request: @@ -7,6 +7,7 @@ on: jobs: webapp_unit_tests: + name: Webapp Unit Tests runs-on: ubuntu-latest defaults: run: diff --git a/.gitignore b/.gitignore index 8279658770..4dc50f895e 100644 --- a/.gitignore +++ b/.gitignore @@ -6,8 +6,9 @@ packages/api/.env.local packages/api/tickets packages/api/.env packages/webapp/.env -packages/webapp/cypress/videos -packages/webapp/cypress/screenshots +packages/end-to-end/cypress/videos +packages/end-to-end/cypress/screenshots +packages/end-to-end/coverage packages/webapp/.nyc_output packages/webapp/.nyc_output/out.json packages/webapp/cypress.env.json diff --git a/.husky/commit-msg b/.husky/commit-msg new file mode 100755 index 0000000000..7fa70086f3 --- /dev/null +++ b/.husky/commit-msg @@ -0,0 +1,2 @@ +#!/bin/sh +node .husky/commit-msg.js $1 \ No newline at end of file diff --git a/.husky/commit-msg.js b/.husky/commit-msg.js new file mode 100755 index 0000000000..9f8027190e --- /dev/null +++ b/.husky/commit-msg.js @@ -0,0 +1,59 @@ +import fs from "node:fs"; +import { fileURLToPath } from "node:url"; +import { execSync } from "node:child_process"; + +const ticketNumberRegex = /LF-\d+/; +const commitMessageFilePath = process.argv[2]; + +const git = { + getCurrentBranchName: () => + execSync("git rev-parse --abbrev-ref HEAD").toString().trim(), + readCommitMsg: () => fs.readFileSync(commitMessageFilePath, "utf8"), + writeCommitMsg: (msg) => fs.writeFileSync(commitMessageFilePath, msg), +}; + +function processCommitMsg() { + try { + const branchName = git.getCurrentBranchName(); + const match = branchName.match(ticketNumberRegex); + + // Branch name doesn't contain ticket number + if (!match) { + console.warn( + "JIRA ticket number not found in branch name. Proceeding without modification." + ); + return; + } + + const commitMessage = git.readCommitMsg(); + + const filteredCommitMessage = commitMessage + .split("\n") + .filter((line) => !line.trim().startsWith("#")) + .join("\n") + .trim(); + + if (filteredCommitMessage === "") return; + + // Check if commit already contains ticket number + if (filteredCommitMessage.match(ticketNumberRegex)) { + console.log( + "Commit message already contains a JIRA ticket number. Proceeding without modification." + ); + return; + } + + // Modify commit message + git.writeCommitMsg(match[0] + " " + filteredCommitMessage); + } catch (error) { + console.error("Error processing commit message:", error); + } +} + +// Call the hook only when this file is executed directly by node. +// This is needed to ensure proper execution of tests. +if (process.argv[1] === fileURLToPath(import.meta.url)) { + processCommitMsg(); +} + +export { git, processCommitMsg }; diff --git a/README.md b/README.md index aaafa456ad..3c24264996 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,3 @@ -| Test | Coverage | -| ----------- | ------------------------------------------------------------------------------- | -| E2E FE Test | ![check-code-coverage](https://img.shields.io/badge/code--coverage-51.2%25-red) | - # LiteFarm LiteFarm is the world’s first community-led, not-for-profit, digital platform joining farmers and scientists together for participatory assessment of social, environmental and economic outputs of farming systems. LiteFarm is the first application of its kind specifically tailored to the needs of diversified farmers with built-in pathways to provide expert decision support and help them earn additional income through payment for ecological services (PES) schemes and in-app certifications (such as organic). These approaches serve the multiple purposes of incentivizing adoption of sustainable land use practices through the provision of evidence-based decision support, and significantly increasing the amount of data being collected by diversified farming operations around the globe. It was developed with farmers at the center of the design process and built from the ground up with accessibility and approachability in mind. We are proud of our mission: @@ -50,7 +46,7 @@ Run `docker compose up` in the root directory to configure and start all develop For more information, see [services (local development dependencies)](#services-local-development-dependencies) below. -Once the database container is running and the `.env` files have been configured [as described below](#adding-environment-files), in a terminal navigate to the `packages/api` folder. Execute `npm run migrate:dev:db` to run the [migrations](https://knexjs.org/#Migrations) that set up the PostgreSQL database used by the app. +Once the database container is running and the `.env` files have been configured [as described above](#adding-environment-files), in a terminal navigate to the `packages/api` folder. Execute `npm run migrate:dev:db` to run the [migrations](https://knexjs.org/#Migrations) that set up the PostgreSQL database used by the app. ### Database - Native installation @@ -310,7 +306,7 @@ Notes: You can use Storybook to visualize and test out the UI components used throughout the app. -- To view Storybook on your local environment, run `pnmp storybook` on the `packages/webapp` directory and navigate to http://localhost:6006 +- To view Storybook on your local environment, run `pnpm storybook` on the `packages/webapp` directory and navigate to http://localhost:6006 - To view the deployed version of Storybook, which is updated automatically with the latest changes on the integration branch, go to https://65316fc4f177c73a9181a843-yobioprfjv.chromatic.com ## How to Contribute diff --git a/lint-staged.config.js b/lint-staged.config.js index d7425ba3bb..d5bbe81aa0 100644 --- a/lint-staged.config.js +++ b/lint-staged.config.js @@ -1,3 +1,3 @@ -module.exports = { - '*.{md,yml}': 'prettier --write' +export default { + "*.{md,yml,json,js}": "prettier --write", }; diff --git a/package-lock.json b/package-lock.json index 911486d7c2..48f3204041 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2266,12 +2266,12 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -3097,9 +3097,9 @@ "dev": true }, "node_modules/ejs": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", - "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", "dev": true, "dependencies": { "jake": "^10.8.5" @@ -3360,9 +3360,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "dependencies": { "to-regex-range": "^5.0.1" @@ -3394,9 +3394,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "dev": true, "funding": [ { @@ -4165,9 +4165,9 @@ } }, "node_modules/ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.1.tgz", + "integrity": "sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==", "dev": true }, "node_modules/is-arrayish": { @@ -5383,12 +5383,12 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { diff --git a/package.json b/package.json index 87c6bce5a9..a197324667 100644 --- a/package.json +++ b/package.json @@ -10,12 +10,13 @@ "lint": "lerna run lint", "start": "lerna run start", "bootstrap": "lerna bootstrap", - "prepare": "husky install", + "prepare": "husky install && chmod u+x .husky/*", "ngrok": "ngrok start --config=./ngrok/ngrok.yml --all", "ngrok:setup": "node ./ngrok/ngrok-setup.js", "ngrok:api": "ngrok start --config=./ngrok/ngrok.yml api", "ngrok:webapp": "ngrok start --config=./ngrok/ngrok.yml webapp" }, + "type": "module", "jest": { "testPathIgnorePatterns": [ "[/\\\\](node_modules|packages/webapp/scripts)[/\\\\]" diff --git a/packages/api/.env.default b/packages/api/.env.default index 784f28265d..26f5280e05 100644 --- a/packages/api/.env.default +++ b/packages/api/.env.default @@ -93,3 +93,8 @@ API_HOST=localhost #For sentry error logging #SENTRY_DSN=? + +# For displaying an OOO message in the emails sent out in response to help requests +OOO_MESSAGE_ENABLED= +# Format YYYY/MM/DD +OOO_END_DATE= diff --git a/packages/api/db/migration/20240112220609_create_animal_type_tables.js b/packages/api/db/migration/20240112220609_create_animal_type_tables.js new file mode 100644 index 0000000000..decf384da0 --- /dev/null +++ b/packages/api/db/migration/20240112220609_create_animal_type_tables.js @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +export const up = async function (knex) { + await knex.schema.createTable('default_animal_type', (table) => { + table.increments('id').primary(); + table.string('key').notNullable(); + }); + + await knex.schema.createTable('custom_animal_type', (table) => { + table.increments('id').primary(); + table.uuid('farm_id').references('farm_id').inTable('farm').notNullable(); + table.string('type').notNullable(); + table.boolean('deleted').notNullable().defaultTo(false); + table.string('created_by_user_id').references('user_id').inTable('users'); + table.string('updated_by_user_id').references('user_id').inTable('users'); + table.dateTime('created_at').defaultTo(new Date('2000/1/1').toISOString()).notNullable(); + table.dateTime('updated_at').defaultTo(new Date('2000/1/1').toISOString()).notNullable(); + }); + + // Add initial default types + const defaultTypeKeys = ['CATTLE', 'PIGS', 'CHICKEN_BROILERS', 'CHICKEN_LAYERS']; + + for (const typeKey of defaultTypeKeys) { + await knex('default_animal_type').insert({ + key: typeKey, + }); + } + + // Add permissions + await knex('permissions').insert([ + { permission_id: 143, name: 'add:animal_types', description: 'add animal types' }, + { permission_id: 144, name: 'delete:animal_types', description: 'delete animal types' }, + { permission_id: 145, name: 'edit:animal_types', description: 'edit animal types' }, + { permission_id: 146, name: 'get:animal_types', description: 'get animal types' }, + ]); + + await knex('rolePermissions').insert([ + { role_id: 1, permission_id: 143 }, + { role_id: 2, permission_id: 143 }, + { role_id: 5, permission_id: 143 }, + { role_id: 1, permission_id: 144 }, + { role_id: 2, permission_id: 144 }, + { role_id: 5, permission_id: 144 }, + { role_id: 1, permission_id: 145 }, + { role_id: 2, permission_id: 145 }, + { role_id: 5, permission_id: 145 }, + { role_id: 1, permission_id: 146 }, + { role_id: 2, permission_id: 146 }, + { role_id: 3, permission_id: 146 }, + { role_id: 5, permission_id: 146 }, + ]); +}; + +export const down = async function (knex) { + const permissions = [143, 144, 145, 146]; + + await knex('rolePermissions').whereIn('permission_id', permissions).del(); + await knex('permissions').whereIn('permission_id', permissions).del(); + + await knex.schema.dropTable('custom_animal_type'); + await knex.schema.dropTable('default_animal_type'); +}; diff --git a/packages/api/db/migration/20240115182150_create_animal_breed_tables.js b/packages/api/db/migration/20240115182150_create_animal_breed_tables.js new file mode 100644 index 0000000000..afba9797a3 --- /dev/null +++ b/packages/api/db/migration/20240115182150_create_animal_breed_tables.js @@ -0,0 +1,130 @@ +/* + * Copyright (c) 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +export const up = async function (knex) { + await knex.schema.createTable('default_animal_breed', (table) => { + table.increments('id').primary(); + table.integer('default_type_id').notNullable().references('id').inTable('default_animal_type'); + table.string('key').notNullable(); + }); + + await knex.schema.createTable('custom_animal_breed', (table) => { + table.increments('id').primary(); + table.uuid('farm_id').notNullable().references('farm_id').inTable('farm'); + table.integer('default_type_id').references('id').inTable('default_animal_type'); + table.integer('custom_type_id').references('id').inTable('custom_animal_type'); + table.string('breed').notNullable(); + table.boolean('deleted').notNullable().defaultTo(false); + table + .string('created_by_user_id') + .notNullable() + .references('user_id') + .inTable('users') + .defaultTo('1'); + table + .string('updated_by_user_id') + .notNullable() + .references('user_id') + .inTable('users') + .defaultTo('1'); + table.dateTime('created_at').notNullable().defaultTo(new Date('2000/1/1').toISOString()); + table.dateTime('updated_at').notNullable().defaultTo(new Date('2000/1/1').toISOString()); + table.check( + '?? is not null or ?? is not null', + ['default_type_id', 'custom_type_id'], + 'not_null_type_id_check', + ); + table.check( + '?? is null or ?? is null', + ['default_type_id', 'custom_type_id'], + 'null_type_id_check', + ); + }); + + // Update animal types table created_by_user_id and updated_by_user_id to match defaults used here + await knex.schema.alterTable('custom_animal_type', (table) => { + table.string('created_by_user_id').notNullable().defaultTo('1').alter(); + table.string('updated_by_user_id').notNullable().defaultTo('1').alter(); + }); + + // Add initial default breeds + const defaultBreedKeys = [ + { + typeKey: 'CATTLE', + breedKeys: ['ANGUS', 'HEREFORD', 'CHAROLAIS'], + }, + { + typeKey: 'PIGS', + breedKeys: ['YORKSHIRE_LARGE_WHITE', 'LANDRACE', 'DUROC'], + }, + { + typeKey: 'CHICKEN_BROILERS', + breedKeys: ['CORNISH_CROSS', 'ROSS_308', 'COBB_500'], + }, + { + typeKey: 'CHICKEN_LAYERS', + breedKeys: ['LEGHORN', 'RHODE_ISLAND_RED', 'PLYMOUTH_ROCK'], + }, + ]; + + const rows = []; + + for (const entry of defaultBreedKeys) { + const { typeKey, breedKeys } = entry; + const { id: typeId } = await knex('default_animal_type').where('key', typeKey).first(); + breedKeys.forEach((breedKey) => + rows.push({ + default_type_id: typeId, + key: breedKey, + }), + ); + } + + await knex('default_animal_breed').insert(rows); + + // Add permissions + await knex('permissions').insert([ + { permission_id: 147, name: 'add:animal_breeds', description: 'add animal breeds' }, + { permission_id: 148, name: 'delete:animal_breeds', description: 'delete animal breeds' }, + { permission_id: 149, name: 'edit:animal_breeds', description: 'edit animal breeds' }, + { permission_id: 150, name: 'get:animal_breeds', description: 'get animal breeds' }, + ]); + + await knex('rolePermissions').insert([ + { role_id: 1, permission_id: 147 }, + { role_id: 2, permission_id: 147 }, + { role_id: 5, permission_id: 147 }, + { role_id: 1, permission_id: 148 }, + { role_id: 2, permission_id: 148 }, + { role_id: 5, permission_id: 148 }, + { role_id: 1, permission_id: 149 }, + { role_id: 2, permission_id: 149 }, + { role_id: 5, permission_id: 149 }, + { role_id: 1, permission_id: 150 }, + { role_id: 2, permission_id: 150 }, + { role_id: 3, permission_id: 150 }, + { role_id: 5, permission_id: 150 }, + ]); +}; + +export const down = async function (knex) { + const permissions = [147, 148, 149, 150]; + + await knex('rolePermissions').whereIn('permission_id', permissions).del(); + await knex('permissions').whereIn('permission_id', permissions).del(); + + await knex.schema.dropTable('default_animal_breed'); + await knex.schema.dropTable('custom_animal_breed'); +}; diff --git a/packages/api/db/migration/20240116175706_create_animal_tables.js b/packages/api/db/migration/20240116175706_create_animal_tables.js new file mode 100644 index 0000000000..8e2b84738b --- /dev/null +++ b/packages/api/db/migration/20240116175706_create_animal_tables.js @@ -0,0 +1,213 @@ +/* + * Copyright (c) 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +export const up = async function (knex) { + await knex.schema.createTable('animal_sex', (table) => { + table.increments('id').primary(); + table.string('key').notNullable(); + }); + + await knex.schema.createTable('animal_identifier_color', (table) => { + table.increments('id').primary(); + table.string('key').notNullable(); + }); + + await knex.schema.createTable('animal_identifier_placement', (table) => { + table.increments('id').primary(); + table.integer('default_type_id').references('id').inTable('default_animal_type').notNullable(); + table.string('key').notNullable(); + }); + + await knex.schema.createTable('animal_origin', (table) => { + table.increments('id').primary(); + table.string('key').notNullable(); + }); + + await knex.schema.createTable('animal', (table) => { + table.increments('id').primary(); + table.uuid('farm_id').notNullable().references('farm_id').inTable('farm'); + table.integer('default_type_id').references('id').inTable('default_animal_type'); + table.integer('custom_type_id').references('id').inTable('custom_animal_type'); + table.integer('default_breed_id').references('id').inTable('default_animal_breed'); + table.integer('custom_breed_id').references('id').inTable('custom_animal_breed'); + table.integer('sex_id').references('id').inTable('animal_sex'); + table.string('name'); + table.dateTime('birth_date'); + table.string('identifier'); + table.integer('identifier_color_id').references('id').inTable('animal_identifier_color'); + table + .integer('identifier_placement_id') + .references('id') + .inTable('animal_identifier_placement'); + table.integer('origin_id').references('id').inTable('animal_origin'); + table.string('dam'); + table.string('sire'); + table.dateTime('brought_in_date'); + table.dateTime('weaning_date'); + table.text('notes'); + table.boolean('deleted').notNullable().defaultTo(false); + table + .string('created_by_user_id') + .notNullable() + .references('user_id') + .inTable('users') + .defaultTo(1); + table + .string('updated_by_user_id') + .notNullable() + .references('user_id') + .inTable('users') + .defaultTo(1); + table.dateTime('created_at').notNullable().defaultTo(new Date('2000/1/1').toISOString()); + table.dateTime('updated_at').notNullable().defaultTo(new Date('2000/1/1').toISOString()); + table.check( + '?? is not null or ?? is not null', + ['default_type_id', 'custom_type_id'], + 'not_null_type_id_check', + ); + table.check( + '?? is null or ?? is null', + ['default_type_id', 'custom_type_id'], + 'null_type_id_check', + ); + table.check( + '?? is null or ?? is null', + ['default_breed_id', 'custom_breed_id'], + 'null_breed_id_check', + ); + table.check( + '?? is not null or ?? is not null', + ['name', 'identifier'], + 'name_identifier_check', + ); + }); + + // Add enums + const enumTableKeys = { + animal_sex: ['MALE', 'FEMALE'], + animal_identifier_color: ['YELLOW', 'WHITE', 'ORANGE', 'GREEN', 'BLUE', 'RED'], + animal_origin: ['BROUGHT_IN', 'BORN_AT_FARM'], + }; + + const identifierPlacementKeys = [ + { + typeKeys: ['CATTLE', 'PIGS'], + keys: ['LEFT_EAR', 'RIGHT_EAR'], + }, + { + typeKeys: ['CHICKEN_BROILERS', 'CHICKEN_LAYERS'], + keys: ['LEFT_LEG', 'RIGHT_LEG'], + }, + ]; + + let rows = []; + + for (const table in enumTableKeys) { + rows = []; + const keys = enumTableKeys[table]; + + for (const key of keys) { + rows.push({ + key, + }); + } + + await knex(table).insert(rows); + } + + rows = []; + + for (const entry of identifierPlacementKeys) { + const { typeKeys, keys } = entry; + + for (const typeKey of typeKeys) { + const { id: typeId } = await knex('default_animal_type').where('key', typeKey).first(); + + for (const key of keys) { + rows.push({ + default_type_id: typeId, + key, + }); + } + } + } + + await knex('animal_identifier_placement').insert(rows); + + // Add permissions + await knex('permissions').insert([ + { permission_id: 151, name: 'add:animals', description: 'add animal breeds' }, + { permission_id: 152, name: 'delete:animals', description: 'delete animal breeds' }, + { permission_id: 153, name: 'edit:animals', description: 'edit animal breeds' }, + { permission_id: 154, name: 'get:animals', description: 'get animal breeds' }, + { + permission_id: 155, + name: 'get:animal_identifier_colors', + description: 'get animal identifier colors', + }, + { + permission_id: 156, + name: 'get:animal_identifier_placements', + description: 'get animal identifier placements', + }, + { permission_id: 157, name: 'get:animal_sexes', description: 'get animal sexes' }, + { permission_id: 158, name: 'get:animal_origins', description: 'get animal origins' }, + ]); + + await knex('rolePermissions').insert([ + { role_id: 1, permission_id: 151 }, + { role_id: 2, permission_id: 151 }, + { role_id: 5, permission_id: 151 }, + { role_id: 1, permission_id: 152 }, + { role_id: 2, permission_id: 152 }, + { role_id: 5, permission_id: 152 }, + { role_id: 1, permission_id: 153 }, + { role_id: 2, permission_id: 153 }, + { role_id: 5, permission_id: 153 }, + { role_id: 1, permission_id: 154 }, + { role_id: 2, permission_id: 154 }, + { role_id: 3, permission_id: 154 }, + { role_id: 5, permission_id: 154 }, + { role_id: 1, permission_id: 155 }, + { role_id: 2, permission_id: 155 }, + { role_id: 3, permission_id: 155 }, + { role_id: 5, permission_id: 155 }, + { role_id: 1, permission_id: 156 }, + { role_id: 2, permission_id: 156 }, + { role_id: 3, permission_id: 156 }, + { role_id: 5, permission_id: 156 }, + { role_id: 1, permission_id: 157 }, + { role_id: 2, permission_id: 157 }, + { role_id: 3, permission_id: 157 }, + { role_id: 5, permission_id: 157 }, + { role_id: 1, permission_id: 158 }, + { role_id: 2, permission_id: 158 }, + { role_id: 3, permission_id: 158 }, + { role_id: 5, permission_id: 158 }, + ]); +}; + +export const down = async function (knex) { + const permissions = [151, 152, 153, 154, 155, 156, 157, 158]; + + await knex('rolePermissions').whereIn('permission_id', permissions).del(); + await knex('permissions').whereIn('permission_id', permissions).del(); + + await knex.schema.dropTable('animal'); + await knex.schema.dropTable('animal_sex'); + await knex.schema.dropTable('animal_identifier_color'); + await knex.schema.dropTable('animal_identifier_placement'); + await knex.schema.dropTable('animal_origin'); +}; diff --git a/packages/api/db/migration/20240125214641_create_animal_batch_and_batch_sex_tables.js b/packages/api/db/migration/20240125214641_create_animal_batch_and_batch_sex_tables.js new file mode 100644 index 0000000000..51ad125282 --- /dev/null +++ b/packages/api/db/migration/20240125214641_create_animal_batch_and_batch_sex_tables.js @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +export const up = async function (knex) { + await knex.schema.createTable('animal_batch', (table) => { + table.increments('id').primary(); + table.uuid('farm_id').notNullable().references('farm_id').inTable('farm'); + table.integer('default_type_id').references('id').inTable('default_animal_type'); + table.integer('custom_type_id').references('id').inTable('custom_animal_type'); + table.integer('default_breed_id').references('id').inTable('default_animal_breed'); + table.integer('custom_breed_id').references('id').inTable('custom_animal_breed'); + table.string('name').notNullable(); + table.text('notes').nullable(); + table.integer('count').notNullable(); + table.boolean('deleted').notNullable().defaultTo(false); + table + .string('created_by_user_id') + .notNullable() + .references('user_id') + .inTable('users') + .defaultTo(1); + table + .string('updated_by_user_id') + .notNullable() + .references('user_id') + .inTable('users') + .defaultTo(1); + table.dateTime('created_at').notNullable().defaultTo(new Date('2000/1/1').toISOString()); + table.dateTime('updated_at').notNullable().defaultTo(new Date('2000/1/1').toISOString()); + table.check( + '?? is null or ?? is null', + ['default_breed_id', 'custom_breed_id'], + 'null_breed_id_check', + ); + table.check( + '?? is not null or ?? is not null', + ['default_type_id', 'custom_type_id'], + 'not_null_type_id_check', + ); + table.check( + '?? is null or ?? is null', + ['default_type_id', 'custom_type_id'], + 'null_type_id_check', + ); + }); + + await knex.schema.createTable('animal_batch_sex_detail', (table) => { + table.increments('id').primary(); + table.integer('batch_id').notNullable().references('id').inTable('animal_batch'); + table.integer('sex_id').notNullable().references('id').inTable('animal_sex'); + table.integer('count').notNullable(); + table.boolean('deleted').notNullable().defaultTo(false); + table + .string('created_by_user_id') + .notNullable() + .references('user_id') + .inTable('users') + .defaultTo(1); + table + .string('updated_by_user_id') + .notNullable() + .references('user_id') + .inTable('users') + .defaultTo(1); + table.dateTime('created_at').notNullable().defaultTo(new Date('2000/1/1').toISOString()); + table.dateTime('updated_at').notNullable().defaultTo(new Date('2000/1/1').toISOString()); + }); + + // Add permissions + await knex('permissions').insert([ + { permission_id: 159, name: 'add:animal_batch', description: 'add animal_batch' }, + { permission_id: 160, name: 'delete:animal_batch', description: 'delete animal_batch' }, + { permission_id: 161, name: 'edit:animal_batch', description: 'edit animal_batch' }, + { permission_id: 162, name: 'get:animal_batch', description: 'get animal_batch' }, + ]); + + await knex('rolePermissions').insert([ + { role_id: 1, permission_id: 159 }, + { role_id: 2, permission_id: 159 }, + { role_id: 5, permission_id: 159 }, + { role_id: 1, permission_id: 160 }, + { role_id: 2, permission_id: 160 }, + { role_id: 5, permission_id: 160 }, + { role_id: 1, permission_id: 161 }, + { role_id: 2, permission_id: 161 }, + { role_id: 5, permission_id: 161 }, + { role_id: 1, permission_id: 162 }, + { role_id: 2, permission_id: 162 }, + { role_id: 3, permission_id: 162 }, + { role_id: 5, permission_id: 162 }, + ]); +}; + +export const down = async function (knex) { + const permissions = [159, 160, 161, 162]; + + await knex('rolePermissions').whereIn('permission_id', permissions).del(); + await knex('permissions').whereIn('permission_id', permissions).del(); + + await knex.schema.dropTable('animal_batch_sex_detail'); + await knex.schema.dropTable('animal_batch'); +}; diff --git a/packages/api/db/migration/20240130190029_create_animal_group_tables.js b/packages/api/db/migration/20240130190029_create_animal_group_tables.js new file mode 100644 index 0000000000..d4c54106cd --- /dev/null +++ b/packages/api/db/migration/20240130190029_create_animal_group_tables.js @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +export const up = async function (knex) { + await knex.schema.createTable('animal_group', (table) => { + table.increments('id').primary(); + table.string('farm_id').notNullable(); + table.string('name').notNullable(); + table.string('notes'); + table.boolean('deleted').notNullable().defaultTo(false); + table + .string('created_by_user_id') + .notNullable() + .references('user_id') + .inTable('users') + .defaultTo(1); + table + .string('updated_by_user_id') + .notNullable() + .references('user_id') + .inTable('users') + .defaultTo(1); + table.dateTime('created_at').notNullable().defaultTo(new Date('2000/1/1').toISOString()); + table.dateTime('updated_at').notNullable().defaultTo(new Date('2000/1/1').toISOString()); + }); + + await knex.schema.createTable('animal_group_relationship', (table) => { + table.increments('id').primary(); + table.integer('animal_id').references('id').inTable('animal').notNullable(); + table.integer('animal_group_id').references('id').inTable('animal_group').notNullable(); + }); + + await knex.schema.createTable('animal_batch_group_relationship', (table) => { + table.increments('id').primary(); + table.integer('animal_batch_id').references('id').inTable('animal_batch').notNullable(); + table.integer('animal_group_id').references('id').inTable('animal_group').notNullable(); + }); + + // Add permissions + await knex('permissions').insert([ + { permission_id: 163, name: 'add:animal_groups', description: 'add animal groups' }, + { permission_id: 164, name: 'delete:animal_groups', description: 'delete animal groups' }, + { permission_id: 165, name: 'edit:animal_groups', description: 'edit animal groups' }, + { permission_id: 166, name: 'get:animal_groups', description: 'get animal groups' }, + ]); + + await knex('rolePermissions').insert([ + { role_id: 1, permission_id: 163 }, + { role_id: 2, permission_id: 163 }, + { role_id: 5, permission_id: 163 }, + { role_id: 1, permission_id: 164 }, + { role_id: 2, permission_id: 164 }, + { role_id: 5, permission_id: 164 }, + { role_id: 1, permission_id: 165 }, + { role_id: 2, permission_id: 165 }, + { role_id: 5, permission_id: 165 }, + { role_id: 1, permission_id: 166 }, + { role_id: 2, permission_id: 166 }, + { role_id: 3, permission_id: 166 }, + { role_id: 5, permission_id: 166 }, + ]); +}; + +export const down = async function (knex) { + const permissions = [163, 164, 165, 166]; + + await knex('rolePermissions').whereIn('permission_id', permissions).del(); + await knex('permissions').whereIn('permission_id', permissions).del(); + + await knex.schema.dropTable('animal_group_relationship'); + await knex.schema.dropTable('animal_batch_group_relationship'); + await knex.schema.dropTable('animal_group'); +}; diff --git a/packages/api/db/migration/20240202201923_update_animal_batch_permissions.js b/packages/api/db/migration/20240202201923_update_animal_batch_permissions.js new file mode 100644 index 0000000000..7f0c32992f --- /dev/null +++ b/packages/api/db/migration/20240202201923_update_animal_batch_permissions.js @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +export const up = async function (knex) { + await knex.schema.alterTable('animal_batch_sex_detail', (t) => { + t.renameColumn('batch_id', 'animal_batch_id'); + }); + + await knex('permissions') + .where({ permission_id: 159 }) + .update({ name: 'add:animal_batches', description: 'add animal_batches' }); + await knex('permissions') + .where({ permission_id: 160 }) + .update({ name: 'delete:animal_batches', description: 'delete animal_batches' }); + await knex('permissions') + .where({ permission_id: 161 }) + .update({ name: 'edit:animal_batches', description: 'edit animal_batches' }); + await knex('permissions') + .where({ permission_id: 162 }) + .update({ name: 'get:animal_batches', description: 'get animal_batches' }); +}; + +export const down = async function (knex) { + await knex.schema.alterTable('animal_batch_sex_detail', (t) => { + t.renameColumn('animal_batch_id', 'batch_id'); + }); + + await knex('permissions') + .where({ permission_id: 159 }) + .update({ name: 'add:animal_batch', description: 'add animal_batch' }); + await knex('permissions') + .where({ permission_id: 160 }) + .update({ name: 'delete:animal_batch', description: 'delete animal_batch' }); + await knex('permissions') + .where({ permission_id: 161 }) + .update({ name: 'edit:animal_batch', description: 'edit animal_batch' }); + await knex('permissions') + .where({ permission_id: 162 }) + .update({ name: 'get:animal_batch', description: 'get animal_batch' }); +}; diff --git a/packages/api/db/migration/20240207214919_create_animal_union_batch_internal_id_view_modify_animal_batch_tables.js b/packages/api/db/migration/20240207214919_create_animal_union_batch_internal_id_view_modify_animal_batch_tables.js new file mode 100644 index 0000000000..c7abcb471b --- /dev/null +++ b/packages/api/db/migration/20240207214919_create_animal_union_batch_internal_id_view_modify_animal_batch_tables.js @@ -0,0 +1,68 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import { fileURLToPath } from 'url'; +import path, { dirname } from 'path'; +import fs from 'fs'; + +/** + * @param { import("knex").Knex } knex + * @returns { Promise } + */ +export const up = async function (knex) { + try { + await knex.schema.alterTable('animal', (table) => { + table.string('photo_url'); + table.dropChecks(['name_identifier_check']); + }); + + await knex.schema.alterTable('animal_batch', (table) => { + table.string('photo_url'); + table.string('name').nullable().alter(); + }); + + // Create animal_union_batch_id_view VIEW + const __filename = fileURLToPath(import.meta.url); + const __dirname = dirname(__filename); + const sqlFilePath = path.join( + __dirname, + '../sql/20240207214919_animal_union_batch_id_view.sql', + ); + const sqlQuery = fs.readFileSync(sqlFilePath).toString(); + await knex.raw(sqlQuery); + } catch (error) { + console.error('Error in migration up:', error); + throw error; // Rethrow the error to ensure the migration fails + } +}; + +/** + * @param { import("knex").Knex } knex + * @returns { Promise } + */ +export const down = async (knex) => { + await knex.schema.dropView('animal_union_batch_id_view'); + + await knex.schema.alterTable('animal', (table) => { + table.dropColumn('photo_url'); + // ?? does not work in alterTable + table.check('name IS NOT NULL OR identifier IS NOT NULL', [], 'name_identifier_check'); + }); + + await knex.schema.alterTable('animal_batch', (table) => { + table.dropColumn('photo_url'); + table.string('name').notNullable().alter(); + }); +}; diff --git a/packages/api/db/migration/20240216181636_add_animal_and_animal_batch_removal.js b/packages/api/db/migration/20240216181636_add_animal_and_animal_batch_removal.js new file mode 100644 index 0000000000..cf26955884 --- /dev/null +++ b/packages/api/db/migration/20240216181636_add_animal_and_animal_batch_removal.js @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +export const up = async function (knex) { + await knex.schema.createTable('animal_removal_reason', (table) => { + table.increments('id').primary(); + table.string('key').notNullable(); + }); + + const removalReasonKeys = [ + 'SOLD', + 'SLAUGHTERED_FOR_SALE', + 'SLAUGHTERED_FOR_CONSUMPTION', + 'NATURAL_DEATH', + 'CULLED', + 'OTHER', + ]; + + for (const key of removalReasonKeys) { + await knex('animal_removal_reason').insert({ + key, + }); + } + + for (const tableName of ['animal', 'animal_batch']) { + await knex.schema.alterTable(tableName, (table) => { + table.integer('animal_removal_reason_id').references('id').inTable('animal_removal_reason'); + table.string('removal_explanation'); + }); + } + + // Permissions for enum table + await knex('permissions').insert([ + { + permission_id: 167, + name: 'get:animal_removal_reasons', + description: 'get animal removal reasons', + }, + ]); + + await knex('rolePermissions').insert([ + { role_id: 1, permission_id: 167 }, + { role_id: 2, permission_id: 167 }, + { role_id: 3, permission_id: 167 }, + { role_id: 5, permission_id: 167 }, + ]); +}; + +export const down = async function (knex) { + const permissions = [167]; + + await knex('rolePermissions').whereIn('permission_id', permissions).del(); + await knex('permissions').whereIn('permission_id', permissions).del(); + + for (const tableName of ['animal', 'animal_batch']) { + await knex.schema.alterTable(tableName, (table) => { + table.dropColumn('removal_explanation'); + table.dropColumn('animal_removal_reason_id'); + }); + } + + await knex.schema.dropTable('animal_removal_reason'); +}; diff --git a/packages/api/db/migration/20240311212608_add_animal_removal_date.js b/packages/api/db/migration/20240311212608_add_animal_removal_date.js new file mode 100644 index 0000000000..bea93275d6 --- /dev/null +++ b/packages/api/db/migration/20240311212608_add_animal_removal_date.js @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +export const up = async function (knex) { + for (const tableName of ['animal', 'animal_batch']) { + await knex.schema.alterTable(tableName, (table) => { + table.timestamp('removal_date').nullable(); + }); + + // Amend existing data (beta + local only) + await knex(tableName) + .whereNotNull('animal_removal_reason_id') + .update({ removal_date: new Date('2000/1/1').toISOString() }); + + await knex.schema.alterTable(tableName, (table) => { + table.check( + '(animal_removal_reason_id IS NULL) OR (animal_removal_reason_id IS NOT NULL AND removal_date IS NOT NULL)', + [], + 'removal_date_provided_check', + ); + table.check( + '(animal_removal_reason_id IS NOT NULL) OR (removal_date IS NULL AND removal_explanation IS NULL)', + [], + 'removal_fields_null_if_not_removed_check', + ); + }); + } +}; + +export const down = async function (knex) { + for (const tableName of ['animal', 'animal_batch']) { + await knex.schema.alterTable(tableName, (table) => { + table.dropColumn('removal_date'); + table.dropChecks[('removal_date_provided_check', 'removal_fields_null_if_not_removed_check')]; + }); + } +}; diff --git a/packages/api/db/migration/20240403202900_data_migration_fix_default_types_chicken.js b/packages/api/db/migration/20240403202900_data_migration_fix_default_types_chicken.js new file mode 100644 index 0000000000..1bd97a3986 --- /dev/null +++ b/packages/api/db/migration/20240403202900_data_migration_fix_default_types_chicken.js @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +export const up = async function (knex) { + const { id: keepRowId } = await knex('default_animal_type') + .where('key', 'CHICKEN_BROILERS') + .first(); + const { id: deleteRowId } = await knex('default_animal_type') + .where('key', 'CHICKEN_LAYERS') + .first(); + + // custom animal breeds + await knex('custom_animal_breed') + .where('default_type_id', deleteRowId) + .update({ default_type_id: keepRowId }); + // default animal breeds + await knex('default_animal_breed') + .where('default_type_id', deleteRowId) + .update({ default_type_id: keepRowId }); + // animal + await knex('animal').where('default_type_id', deleteRowId).update({ default_type_id: keepRowId }); + // animal batch + await knex('animal_batch') + .where('default_type_id', deleteRowId) + .update({ default_type_id: keepRowId }); + + // animal identifier placement + await knex('animal_identifier_placement').where('default_type_id', deleteRowId).del(); + + // now complete deletion and renaming excess default type + await knex('default_animal_type').where('id', keepRowId).update({ key: 'CHICKEN' }); + await knex('default_animal_type').where('id', deleteRowId).del(); +}; + +export const down = async function (knex) { + const breedKey = { + CHICKEN_BROILERS: ['CORNISH_CROSS', 'ROSS_308', 'COBB_500'], + CHICKEN_LAYERS: ['LEGHORN', 'RHODE_ISLAND_RED', 'PLYMOUTH_ROCK'], + }; + + // Migrated data is not recoverable but schema can be replaced + const [keepType] = await knex('default_animal_type') + .where('key', 'CHICKEN') + .update({ key: 'CHICKEN_BROILERS' }) + .returning('id'); + const [deletedType] = await knex('default_animal_type') + .insert({ key: 'CHICKEN_LAYERS' }) + .returning('id'); + + await knex('default_animal_breed') + .whereIn('key', breedKey.CHICKEN_BROILERS) + .update({ default_type_id: keepType.id }); + await knex('default_animal_breed') + .whereIn('key', breedKey.CHICKEN_LAYERS) + .update({ default_type_id: deletedType.id }); + + await knex('animal_identifier_placement').insert({ + default_type_id: deletedType.id, + key: 'LEFT_LEG', + }); + await knex('animal_identifier_placement').insert({ + default_type_id: deletedType.id, + key: 'RIGHT_LEG', + }); +}; diff --git a/packages/api/db/migration/20240423195650_create_animal_use_table.js b/packages/api/db/migration/20240423195650_create_animal_use_table.js new file mode 100644 index 0000000000..9850ed0b64 --- /dev/null +++ b/packages/api/db/migration/20240423195650_create_animal_use_table.js @@ -0,0 +1,129 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +/** + * @param { import("knex").Knex } knex + * @returns { Promise } + */ +export const up = async function (knex) { + await knex.schema.createTable('animal_use', (table) => { + table.increments('id').primary(); + table.string('key').notNullable(); + }); + + const uses = [ + 'MILK', + 'EGGS', + 'FAT', + 'MEAT', + 'ANIMAL_FIBERS_AND_SKINS', + 'LABOUR_AND_DRAFT', + 'BREEDING', + 'RECREATIONAL_OR_CULTURAL_USE', + 'COMPANIONSHIP', + 'OTHER', + ]; + + const rows = uses.map((use) => ({ key: use })); + await knex('animal_use').insert(rows); + + const usesData = await knex('animal_use'); + const usesKeyIdMap = usesData.reduce((map, row) => { + map[row.key] = row.id; + return map; + }, {}); + + await knex.schema.createTable('animal_type_use_relationship', (table) => { + table.integer('default_type_id').references('id').inTable('default_animal_type').notNullable(); + table.integer('animal_use_id').references('id').inTable('animal_use').notNullable(); + }); + + const typeUsesRelathionships = [ + [ + 'CATTLE', + [ + 'MILK', + 'FAT', + 'MEAT', + 'ANIMAL_FIBERS_AND_SKINS', + 'LABOUR_AND_DRAFT', + 'BREEDING', + 'RECREATIONAL_OR_CULTURAL_USE', + 'COMPANIONSHIP', + 'OTHER', + ], + ], + [ + 'PIGS', + [ + 'FAT', + 'MEAT', + 'ANIMAL_FIBERS_AND_SKINS', + 'LABOUR_AND_DRAFT', + 'BREEDING', + 'RECREATIONAL_OR_CULTURAL_USE', + 'COMPANIONSHIP', + 'OTHER', + ], + ], + [ + 'CHICKEN', + [ + 'EGGS', + 'FAT', + 'MEAT', + 'ANIMAL_FIBERS_AND_SKINS', + 'BREEDING', + 'RECREATIONAL_OR_CULTURAL_USE', + 'COMPANIONSHIP', + 'OTHER', + ], + ], + ]; + + for (const [type, uses] of typeUsesRelathionships) { + const rows = []; + const [typeId] = await knex('default_animal_type').where({ key: type }).pluck('id'); + + for (const use of uses) { + const useId = usesKeyIdMap[use]; + rows.push({ default_type_id: typeId, animal_use_id: useId }); + } + + await knex('animal_type_use_relationship').insert(rows); + } + + await knex('permissions').insert([ + { permission_id: 168, name: 'get:animal_uses', description: 'get animal uses' }, + ]); + await knex('rolePermissions').insert([ + { role_id: 1, permission_id: 168 }, + { role_id: 2, permission_id: 168 }, + { role_id: 3, permission_id: 168 }, + { role_id: 5, permission_id: 168 }, + ]); +}; + +/** + * @param { import("knex").Knex } knex + * @returns { Promise } + */ +export const down = async function (knex) { + await knex('rolePermissions').where('permission_id', 168).del(); + await knex('permissions').where('permission_id', 168).del(); + + await knex.schema.dropTable('animal_type_use_relationship'); + await knex.schema.dropTable('animal_use'); +}; diff --git a/packages/api/db/migration/20240808140746_create_animal_identifier_type_table.js b/packages/api/db/migration/20240808140746_create_animal_identifier_type_table.js new file mode 100644 index 0000000000..ae59e325ec --- /dev/null +++ b/packages/api/db/migration/20240808140746_create_animal_identifier_type_table.js @@ -0,0 +1,53 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +/** + * @param { import("knex").Knex } knex + * @returns { Promise } + */ + +export const up = async function (knex) { + await knex.schema.createTable('animal_identifier_type', (table) => { + table.increments('id').primary(); + table.string('key').notNullable(); + }); + + await knex('animal_identifier_type').insert([ + { key: 'EAR_TAG' }, + { key: 'LEG_BAND' }, + { key: 'OTHER' }, + ]); + + await knex('permissions').insert({ + permission_id: 171, + name: 'get:animal_identifier_types', + description: 'get animal identifier types', + }); + + await knex('rolePermissions').insert( + [1, 2, 3, 5].map((role_id) => ({ role_id, permission_id: 171 })), + ); +}; + +/** + * @param { import("knex").Knex } knex + * @returns { Promise } + */ + +export const down = async function (knex) { + await knex.schema.dropTable('animal_identifier_type'); + await knex('rolePermissions').where('permission_id', 171).del(); + await knex('permissions').where('permission_id', 171).del(); +}; diff --git a/packages/api/db/migration/20240809121112_add-animal-and-batch-creation-details.js b/packages/api/db/migration/20240809121112_add-animal-and-batch-creation-details.js new file mode 100644 index 0000000000..b560d69d55 --- /dev/null +++ b/packages/api/db/migration/20240809121112_add-animal-and-batch-creation-details.js @@ -0,0 +1,110 @@ +/* + * Copyright (c) 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +export const up = async function (knex) { + const otherUse = await knex('animal_use').select('*').where({ key: 'OTHER' }).first(); + const otherIdentifierType = await knex('animal_identifier_type') + .select('*') + .where({ key: 'OTHER' }) + .first(); + + /*---------------------------------------- + Update animal with new details + ----------------------------------------*/ + await knex.schema.alterTable('animal', (table) => { + table + .integer('identifier_type_id') + .references('id') + .inTable('animal_identifier_type') + .nullable(); + table.string('identifier_type_other').nullable(); + table.check( + `(identifier_type_other IS NOT NULL AND identifier_type_id = ${otherIdentifierType.id}) OR (identifier_type_other IS NULL)`, + [], + 'identifier_type_other_id_check', + ); + table + .enu('organic_status', ['Non-Organic', 'Transitional', 'Organic']) + .notNullable() + .defaultTo('Non-Organic'); + table.string('supplier').nullable(); + table.float('price').unsigned().nullable(); + }); + + await knex.schema.createTable('animal_use_relationship', (table) => { + table.integer('animal_id').references('id').inTable('animal').notNullable(); + table.integer('use_id').references('id').inTable('animal_use').notNullable(); + table.primary(['animal_id', 'use_id']); + table.string('other_use'); + table.check( + `(other_use IS NOT NULL AND use_id = ${otherUse.id}) OR (other_use IS NULL)`, + [], + 'other_use_id_check', + ); + }); + + /*---------------------------------------- + Update animal batch with new details + ----------------------------------------*/ + await knex.schema.alterTable('animal_batch', (table) => { + table + .enu('organic_status', ['Non-Organic', 'Transitional', 'Organic']) + .notNullable() + .defaultTo('Non-Organic'); + table.string('supplier').nullable(); + table.float('price').unsigned().nullable(); + table.string('dam').nullable(); + table.string('sire').nullable(); + }); + + await knex.schema.createTable('animal_batch_use_relationship', (table) => { + table.integer('animal_batch_id').references('id').inTable('animal_batch').notNullable(); + table.integer('use_id').references('id').inTable('animal_use').notNullable(); + table.primary(['animal_batch_id', 'use_id']); + table.string('other_use'); + table.check( + `(other_use IS NOT NULL AND use_id = ${otherUse.id}) OR (other_use IS NULL)`, + [], + 'other_use_id_check', + ); + }); +}; + +export const down = async function (knex) { + /*---------------------------------------- + Undo: Update animal with new details + ----------------------------------------*/ + await knex.schema.alterTable('animal', (table) => { + table.dropChecks(['identifier_type_other_id_check']); + table.dropColumns([ + 'identifier_type_id', + 'identifier_type_other', + 'organic_status', + 'supplier', + 'price', + ]); + }); + + await knex.schema.dropTable('animal_use_relationship'); + + /*---------------------------------------- + Undo: Update animal batch with new details + ----------------------------------------*/ + await knex.schema.alterTable('animal_batch', (table) => { + table.dropColumns(['organic_status', 'supplier', 'price', 'dam', 'sire']); + }); + + await knex.schema.dropTable('animal_batch_use_relationship'); +}; diff --git a/packages/api/db/migration/20240809134416_remove_animal_identifier_placement.js b/packages/api/db/migration/20240809134416_remove_animal_identifier_placement.js new file mode 100644 index 0000000000..4d86207186 --- /dev/null +++ b/packages/api/db/migration/20240809134416_remove_animal_identifier_placement.js @@ -0,0 +1,94 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +/** + * @param { import("knex").Knex } knex + * @returns { Promise } + */ + +export const up = async function (knex) { + await knex.schema.alterTable('animal', (table) => { + table.dropColumn('identifier_placement_id'); + }); + + await knex.schema.dropTable('animal_identifier_placement'); + + await knex('rolePermissions').where('permission_id', 156).del(); + await knex('permissions').where('permission_id', 156).del(); +}; + +/** + * @param { import("knex").Knex } knex + * @returns { Promise } + */ + +export const down = async function (knex) { + // Copied (approximately) from /LiteFarm/packages/api/db/migration/20240116175706_create_animal_tables.js + await knex.schema.createTable('animal_identifier_placement', (table) => { + table.increments('id').primary(); + table.integer('default_type_id').references('id').inTable('default_animal_type').notNullable(); + table.string('key').notNullable(); + }); + + await knex.schema.alterTable('animal', (table) => { + table + .integer('identifier_placement_id') + .references('id') + .inTable('animal_identifier_placement'); + }); + + const identifierPlacementKeys = [ + { + typeKeys: ['CATTLE', 'PIGS'], + keys: ['LEFT_EAR', 'RIGHT_EAR'], + }, + { + typeKeys: ['CHICKEN'], + keys: ['LEFT_LEG', 'RIGHT_LEG'], + }, + ]; + + const rows = []; + + for (const entry of identifierPlacementKeys) { + const { typeKeys, keys } = entry; + + for (const typeKey of typeKeys) { + const { id: typeId } = await knex('default_animal_type').where('key', typeKey).first(); + + for (const key of keys) { + rows.push({ + default_type_id: typeId, + key, + }); + } + } + } + + await knex('animal_identifier_placement').insert(rows); + + // Add permissions + await knex('permissions').insert([ + { + permission_id: 156, + name: 'get:animal_identifier_placements', + description: 'get animal identifier placements', + }, + ]); + + await knex('rolePermissions').insert( + [1, 2, 3, 5].map((role_id) => ({ role_id, permission_id: 156 })), + ); +}; diff --git a/packages/api/db/migration/20240828191003_add_brought_in_date_birth_date_and_origin_id_to_animal_batch_table.js b/packages/api/db/migration/20240828191003_add_brought_in_date_birth_date_and_origin_id_to_animal_batch_table.js new file mode 100644 index 0000000000..62e3ac42a1 --- /dev/null +++ b/packages/api/db/migration/20240828191003_add_brought_in_date_birth_date_and_origin_id_to_animal_batch_table.js @@ -0,0 +1,30 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +export const up = async function (knex) { + await knex.schema.alterTable('animal_batch', (table) => { + table.datetime('brought_in_date'); + table.datetime('birth_date'); + table.integer('origin_id').references('id').inTable('animal_origin'); + }); +}; + +export const down = async function (knex) { + await knex.schema.alterTable('animal_batch', (table) => { + table.dropColumn('brought_in_date'); + table.dropColumn('birth_date'); + table.dropColumn('origin_id'); + }); +}; diff --git a/packages/api/db/migration/20241016204145_create_animal_movement_task_tables.js b/packages/api/db/migration/20241016204145_create_animal_movement_task_tables.js new file mode 100644 index 0000000000..190fbc2a4f --- /dev/null +++ b/packages/api/db/migration/20241016204145_create_animal_movement_task_tables.js @@ -0,0 +1,115 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +/** + * @param { import("knex").Knex } knex + * @returns { Promise } + */ +export const up = async (knex) => { + // Add new animal_movement entry to task_type table + await knex('task_type').insert({ + task_name: 'Movement', + task_translation_key: 'MOVEMENT_TASK', + }); + + // Add location_id column to animal and animal_batch tables (foreign key to location table) + await knex.schema.alterTable('animal', (table) => { + table.uuid('location_id').references('location_id').inTable('location'); + }); + await knex.schema.alterTable('animal_batch', (table) => { + table.uuid('location_id').references('location_id').inTable('location'); + }); + + // Create animal_movement_purpose enum table + await knex.schema.createTable('animal_movement_purpose', (table) => { + table.increments('id').primary(); + table.string('key').notNullable(); + }); + await knex('animal_movement_purpose').insert( + [ + 'GRAZING', + 'MILKING', + 'MANURE_MANAGEMENT', + 'PEST_OR_DISEASE_CONTROL', + 'BREEDING', + 'FEEDING', + 'VETERINARY_CARE', + 'BIRTHING', + 'WEANING', + 'TRANSPORTATION', + 'BEHAVIORAL_AND_SOCIAL_MANAGEMENT', + 'EXERCISE', + 'QUARANTINE', + 'OTHER', + ].map((key) => ({ key })), + ); + + // Create animal_movement_task table + await knex.schema.createTable('animal_movement_task', (table) => { + table.integer('task_id').references('task_id').inTable('task').primary(); + }); + + const [{ id: otherPurposeId }] = await knex('animal_movement_purpose').where({ key: 'OTHER' }); + + // Create animal_movement_task_purpose_relationship table + await knex.schema.createTable('animal_movement_task_purpose_relationship', (table) => { + table.integer('task_id').references('task_id').inTable('task').notNullable(); + table.integer('purpose_id').references('id').inTable('animal_movement_purpose').notNullable(); + table.primary(['task_id', 'purpose_id']); + table.string('other_purpose'); + table.check( + `(other_purpose IS NOT NULL AND purpose_id = ${otherPurposeId}) OR (other_purpose IS NULL)`, + [], + 'other_purpose_id_check', + ); + }); + + // Create task_animal_relationship table (links the task to the animals that are to be moved) + await knex.schema.createTable('task_animal_relationship', (table) => { + table.integer('task_id').references('task_id').inTable('task').notNullable(); + table.integer('animal_id').references('id').inTable('animal').notNullable(); + }); + + // Create task_animal_batch_relationship table (similar to above but for batches) + await knex.schema.createTable('task_animal_batch_relationship', (table) => { + table.integer('task_id').references('task_id').inTable('task').notNullable(); + table.integer('animal_batch_id').references('id').inTable('animal_batch').notNullable(); + }); +}; + +/** + * @param { import("knex").Knex } knex + * @returns { Promise } + */ +export const down = async (knex) => { + await knex('task_type') + .where({ task_translation_key: 'MOVEMENT_TASK' }) + .andWhere({ farm_id: null }) + .del(); + await knex.schema.alterTable('animal', (table) => table.dropColumn('location_id')); + await knex.schema.alterTable('animal_batch', (table) => table.dropColumn('location_id')); + + const tablesToDelete = [ + 'animal_movement_task', + 'animal_movement_task_purpose_relationship', + 'animal_movement_purpose', + 'task_animal_relationship', + 'task_animal_batch_relationship', + ]; + + for (const table of tablesToDelete) { + await knex.schema.dropTable(table); + } +}; diff --git a/packages/api/db/migration/20241108052304_update_animal_union_batch_internal_id_view.js b/packages/api/db/migration/20241108052304_update_animal_union_batch_internal_id_view.js new file mode 100644 index 0000000000..dec237edf7 --- /dev/null +++ b/packages/api/db/migration/20241108052304_update_animal_union_batch_internal_id_view.js @@ -0,0 +1,63 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import { fileURLToPath } from 'url'; +import path, { dirname } from 'path'; +import fs from 'fs'; + +/** + * @param { import("knex").Knex } knex + * @returns { Promise } + */ +export const up = async function (knex) { + try { + await knex.schema.dropView('animal_union_batch_id_view'); + + // Recreate animal_union_batch_id_view VIEW + const __filename = fileURLToPath(import.meta.url); + const __dirname = dirname(__filename); + const sqlFilePath = path.join( + __dirname, + '../sql/20241108052304_animal_union_batch_id_view.sql', + ); + const sqlQuery = fs.readFileSync(sqlFilePath).toString(); + await knex.raw(sqlQuery); + } catch (error) { + console.error('Error in migration up:', error); + throw error; // Rethrow the error to ensure the migration fails + } +}; + +/** + * @param { import("knex").Knex } knex + * @returns { Promise } + */ +export const down = async (knex) => { + try { + await knex.schema.dropView('animal_union_batch_id_view'); + + const __filename = fileURLToPath(import.meta.url); + const __dirname = dirname(__filename); + const sqlFilePath = path.join( + __dirname, + '../sql/20240207214919_animal_union_batch_id_view.sql', + ); + const sqlQuery = fs.readFileSync(sqlFilePath).toString(); + await knex.raw(sqlQuery); + } catch (error) { + console.error('Error in migration down:', error); + throw error; // Rethrow the error to ensure the migration fails + } +}; diff --git a/packages/api/db/migration/20241118191954_add_constraint_to_task_abandonment_reason.js b/packages/api/db/migration/20241118191954_add_constraint_to_task_abandonment_reason.js new file mode 100644 index 0000000000..24fb6c9b7b --- /dev/null +++ b/packages/api/db/migration/20241118191954_add_constraint_to_task_abandonment_reason.js @@ -0,0 +1,43 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +/** + * @param { import("knex").Knex } knex + * @returns { Promise } + */ +export const up = async (knex) => { + const reasons = [ + 'OTHER', + 'CROP_FAILURE', + 'LABOUR_ISSUE', + 'MARKET_PROBLEM', + 'WEATHER', + 'MACHINERY_ISSUE', + 'SCHEDULING_ISSUE', + 'NO_ANIMALS', + ]; + await knex.raw(` + ALTER TABLE task ADD CONSTRAINT abandonment_reason_check + CHECK (abandonment_reason = ANY (ARRAY['${reasons.join(`'::text,'`)}'::text])) + `); +}; + +/** + * @param { import("knex").Knex } knex + * @returns { Promise } + */ +export const down = async (knex) => { + await knex.raw('ALTER TABLE task DROP CONSTRAINT abandonment_reason_check'); +}; diff --git a/packages/api/db/migration/20241121151043_add_animals_beta_spotlight.js b/packages/api/db/migration/20241121151043_add_animals_beta_spotlight.js new file mode 100644 index 0000000000..49229e1edf --- /dev/null +++ b/packages/api/db/migration/20241121151043_add_animals_beta_spotlight.js @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +export const up = async function (knex) { + await knex.schema.alterTable('showedSpotlight', (t) => { + t.boolean('animals_beta').defaultTo(false); + t.timestamp('animals_beta_end').nullable().defaultTo(null); + }); +}; + +export const down = async function (knex) { + await knex.schema.alterTable('showedSpotlight', (t) => { + t.dropColumn('animals_beta'); + t.dropColumn('animals_beta_end'); + }); +}; diff --git a/packages/api/db/sql/20240207214919_animal_union_batch_id_view.sql b/packages/api/db/sql/20240207214919_animal_union_batch_id_view.sql new file mode 100644 index 0000000000..473062135b --- /dev/null +++ b/packages/api/db/sql/20240207214919_animal_union_batch_id_view.sql @@ -0,0 +1,40 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +CREATE VIEW animal_union_batch_id_view AS +SELECT + *, + ROW_NUMBER() OVER (PARTITION BY farm_id ORDER BY created_at)::INTEGER AS internal_identifier +FROM ( + SELECT + id, + farm_id, + FALSE AS batch, + created_at + FROM + animal a + + UNION ALL + + SELECT + id, + farm_id, + TRUE AS batch, + created_at + FROM + animal_batch ab +) animal_union_batch_id_view +ORDER BY + created_at; diff --git a/packages/api/db/sql/20241108052304_animal_union_batch_id_view.sql b/packages/api/db/sql/20241108052304_animal_union_batch_id_view.sql new file mode 100644 index 0000000000..788b5b7a1a --- /dev/null +++ b/packages/api/db/sql/20241108052304_animal_union_batch_id_view.sql @@ -0,0 +1,40 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +CREATE VIEW animal_union_batch_id_view AS +SELECT + *, + ROW_NUMBER() OVER (PARTITION BY farm_id ORDER BY created_at, id, batch)::INTEGER AS internal_identifier +FROM ( + SELECT + id, + farm_id, + FALSE AS batch, + created_at + FROM + animal a + + UNION ALL + + SELECT + id, + farm_id, + TRUE AS batch, + created_at + FROM + animal_batch ab +) animal_union_batch_id_view +ORDER BY + created_at, id, batch; diff --git a/packages/api/package-lock.json b/packages/api/package-lock.json index d07226c498..b85f67734a 100644 --- a/packages/api/package-lock.json +++ b/packages/api/package-lock.json @@ -1,20 +1,20 @@ { "name": "litefarm-api", - "version": "3.6.8", + "version": "3.7.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "litefarm-api", - "version": "3.6.8", + "version": "3.7.0", "dependencies": { - "@aws-sdk/client-s3": "^3.456.0", + "@aws-sdk/client-s3": "^3.622.0", "@googlemaps/google-maps-services-js": "^3.3.14", - "@sentry/node": "^7.56.0", + "@sentry/node": "^7.119.2", "adm-zip": "^0.4.16", "ajv-formats": "^2.1.1", "async-file": "^2.0.2", - "axios": "^0.21.4", + "axios": "^0.28.0", "bcryptjs": "^2.4.3", "bull": "^3.22.9", "chai": "^4.2.0", @@ -25,7 +25,7 @@ "dotenv": "^8.2.0", "email-templates": "^8.0.4", "exceljs": "4.3.0", - "express": "^4.17.1", + "express": "^4.21.1", "express-jwt": "^8.4.1", "express-jwt-authz": "^2.4.1", "express-oas-generator": "^1.0.44", @@ -42,11 +42,10 @@ "lodash": "^4.17.20", "multer": "^1.4.2", "node-schedule": "^1.3.2", - "nodemailer": "^6.6.0", + "nodemailer": "^6.9.9", "objection": "^3.0.1", "objection-soft-delete": "^1.0.7", "pg": "^8.5.1", - "pug": "^3.0.2", "puppeteer": "^13.3.1", "request": "^2.87.0", "request-promise": "^4.2.2", @@ -94,150 +93,43 @@ "node": ">=6.0.0" } }, - "node_modules/@aws-crypto/crc32": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-3.0.0.tgz", - "integrity": "sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==", - "dependencies": { - "@aws-crypto/util": "^3.0.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^1.11.1" - } - }, "node_modules/@aws-crypto/crc32c": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-3.0.0.tgz", - "integrity": "sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz", + "integrity": "sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==", "dependencies": { - "@aws-crypto/util": "^3.0.0", + "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", - "tslib": "^1.11.1" + "tslib": "^2.6.2" } }, - "node_modules/@aws-crypto/ie11-detection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", - "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", - "dependencies": { - "tslib": "^1.11.1" - } + "node_modules/@aws-crypto/crc32c/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/@aws-crypto/sha1-browser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-3.0.0.tgz", - "integrity": "sha512-NJth5c997GLHs6nOYTzFKTbYdMNA6/1XlKVgnZoaZcQ7z7UJlOgj2JdbHE8tiYLS3fzXNCguct77SPGat2raSw==", - "dependencies": { - "@aws-crypto/ie11-detection": "^3.0.0", - "@aws-crypto/supports-web-crypto": "^3.0.0", - "@aws-crypto/util": "^3.0.0", - "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-locate-window": "^3.0.0", - "@aws-sdk/util-utf8-browser": "^3.0.0", - "tslib": "^1.11.1" - } - }, - "node_modules/@aws-crypto/sha256-browser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz", - "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz", + "integrity": "sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==", "dependencies": { - "@aws-crypto/ie11-detection": "^3.0.0", - "@aws-crypto/sha256-js": "^3.0.0", - "@aws-crypto/supports-web-crypto": "^3.0.0", - "@aws-crypto/util": "^3.0.0", + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-locate-window": "^3.0.0", - "@aws-sdk/util-utf8-browser": "^3.0.0", - "tslib": "^1.11.1" - } - }, - "node_modules/@aws-crypto/sha256-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", - "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", - "dependencies": { - "@aws-crypto/util": "^3.0.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^1.11.1" - } - }, - "node_modules/@aws-crypto/supports-web-crypto": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", - "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", - "dependencies": { - "tslib": "^1.11.1" - } - }, - "node_modules/@aws-crypto/util": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", - "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", - "dependencies": { - "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-utf8-browser": "^3.0.0", - "tslib": "^1.11.1" - } - }, - "node_modules/@aws-sdk/client-cognito-identity": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.654.0.tgz", - "integrity": "sha512-3K806KJVivVP011R7Wf4ujGKP8R6d7KFlo9t0Swr9YFnStCdSdjmRX1yW8RpzSzRC4xyuUw+bo8wPf+tE/YxnA==", - "optional": true, - "peer": true, - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.654.0", - "@aws-sdk/client-sts": "3.654.0", - "@aws-sdk/core": "3.654.0", - "@aws-sdk/credential-provider-node": "3.654.0", - "@aws-sdk/middleware-host-header": "3.654.0", - "@aws-sdk/middleware-logger": "3.654.0", - "@aws-sdk/middleware-recursion-detection": "3.654.0", - "@aws-sdk/middleware-user-agent": "3.654.0", - "@aws-sdk/region-config-resolver": "3.654.0", - "@aws-sdk/types": "3.654.0", - "@aws-sdk/util-endpoints": "3.654.0", - "@aws-sdk/util-user-agent-browser": "3.654.0", - "@aws-sdk/util-user-agent-node": "3.654.0", - "@smithy/config-resolver": "^3.0.8", - "@smithy/core": "^2.4.3", - "@smithy/fetch-http-handler": "^3.2.7", - "@smithy/hash-node": "^3.0.6", - "@smithy/invalid-dependency": "^3.0.6", - "@smithy/middleware-content-length": "^3.0.8", - "@smithy/middleware-endpoint": "^3.1.3", - "@smithy/middleware-retry": "^3.0.18", - "@smithy/middleware-serde": "^3.0.6", - "@smithy/middleware-stack": "^3.0.6", - "@smithy/node-config-provider": "^3.1.7", - "@smithy/node-http-handler": "^3.2.2", - "@smithy/protocol-http": "^4.1.3", - "@smithy/smithy-client": "^3.3.2", - "@smithy/types": "^3.4.2", - "@smithy/url-parser": "^3.0.6", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-body-length-browser": "^3.0.0", - "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.18", - "@smithy/util-defaults-mode-node": "^3.0.18", - "@smithy/util-endpoints": "^2.1.2", - "@smithy/util-middleware": "^3.0.6", - "@smithy/util-retry": "^3.0.6", - "@smithy/util-utf8": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-crypto/sha256-browser": { + "node_modules/@aws-crypto/sha1-browser/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@aws-crypto/sha256-browser": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", - "optional": true, - "peer": true, "dependencies": { "@aws-crypto/sha256-js": "^5.2.0", "@aws-crypto/supports-web-crypto": "^5.2.0", @@ -248,53 +140,15 @@ "tslib": "^2.6.2" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } + "node_modules/@aws-crypto/sha256-browser/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-crypto/sha256-js": { + "node_modules/@aws-crypto/sha256-js": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", - "optional": true, - "peer": true, "dependencies": { "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", @@ -304,409 +158,593 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-crypto/supports-web-crypto": { + "node_modules/@aws-crypto/sha256-js/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@aws-crypto/supports-web-crypto": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", - "optional": true, - "peer": true, "dependencies": { "tslib": "^2.6.2" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-crypto/util": { + "node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@aws-crypto/util": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", - "optional": true, - "peer": true, "dependencies": { "@aws-sdk/types": "^3.222.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.6.2" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "node_modules/@aws-crypto/util/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@aws-sdk/client-cognito-identity": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.622.0.tgz", + "integrity": "sha512-VE4Mi6HMrs0Fpq8Nhgt3wBm5i7SyfTYD+FFW+Ofq1zMRWWePPqbs9HMSp6mLwynWL0SNcefYoIKqz2H/2e4mwQ==", "optional": true, "peer": true, "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sso-oidc": "3.622.0", + "@aws-sdk/client-sts": "3.622.0", + "@aws-sdk/core": "3.622.0", + "@aws-sdk/credential-provider-node": "3.622.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-logger": "3.609.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.620.0", + "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.614.0", + "@aws-sdk/util-user-agent-browser": "3.609.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.3.2", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/hash-node": "^3.0.3", + "@smithy/invalid-dependency": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.14", + "@smithy/util-defaults-mode-node": "^3.0.14", + "@smithy/util-endpoints": "^2.0.5", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/is-array-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", + "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", "optional": true, "peer": true, "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/util-buffer-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", "optional": true, "peer": true, "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", + "@smithy/is-array-buffer": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/core": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.654.0.tgz", - "integrity": "sha512-4Rwx7BVaNaFqmXBDmnOkMbyuIFFbpZ+ru4lr660p45zY1QoNNSalechfoRffcokLFOZO+VWEJkdcorPUUU993w==", + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", "optional": true, "peer": true, "dependencies": { - "@smithy/core": "^2.4.3", - "@smithy/node-config-provider": "^3.1.7", - "@smithy/property-provider": "^3.1.6", - "@smithy/protocol-http": "^4.1.3", - "@smithy/signature-v4": "^4.1.3", - "@smithy/smithy-client": "^3.3.2", - "@smithy/types": "^3.4.2", - "@smithy/util-middleware": "^3.0.6", - "fast-xml-parser": "4.4.1", + "@smithy/util-buffer-from": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.654.0.tgz", - "integrity": "sha512-ydGOrXJxj3x0sJhsXyTmvJVLAE0xxuTWFJihTl67RtaO7VRNtd82I3P3bwoMMaDn5WpmV5mPo8fEUDRlBm3fPg==", + "node_modules/@aws-sdk/client-cognito-identity/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", "optional": true, - "peer": true, + "peer": true + }, + "node_modules/@aws-sdk/client-s3": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.622.0.tgz", + "integrity": "sha512-2lpvuQn/qymQPfwR2SxLyRy/Wi/RrEYpbQyoc9SYfhartw9TBY8c34yZkd8zNU7Y/KG3h+PLrCmNpncocuB3YA==", "dependencies": { - "@aws-sdk/types": "3.654.0", - "@smithy/node-config-provider": "^3.1.7", - "@smithy/types": "^3.4.2", - "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.6", + "@aws-crypto/sha1-browser": "5.2.0", + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sso-oidc": "3.622.0", + "@aws-sdk/client-sts": "3.622.0", + "@aws-sdk/core": "3.622.0", + "@aws-sdk/credential-provider-node": "3.622.0", + "@aws-sdk/middleware-bucket-endpoint": "3.620.0", + "@aws-sdk/middleware-expect-continue": "3.620.0", + "@aws-sdk/middleware-flexible-checksums": "3.620.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-location-constraint": "3.609.0", + "@aws-sdk/middleware-logger": "3.609.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-sdk-s3": "3.622.0", + "@aws-sdk/middleware-signing": "3.620.0", + "@aws-sdk/middleware-ssec": "3.609.0", + "@aws-sdk/middleware-user-agent": "3.620.0", + "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/signature-v4-multi-region": "3.622.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.614.0", + "@aws-sdk/util-user-agent-browser": "3.609.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@aws-sdk/xml-builder": "3.609.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.3.2", + "@smithy/eventstream-serde-browser": "^3.0.5", + "@smithy/eventstream-serde-config-resolver": "^3.0.3", + "@smithy/eventstream-serde-node": "^3.0.4", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/hash-blob-browser": "^3.1.2", + "@smithy/hash-node": "^3.0.3", + "@smithy/hash-stream-node": "^3.1.2", + "@smithy/invalid-dependency": "^3.0.3", + "@smithy/md5-js": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.14", + "@smithy/util-defaults-mode-node": "^3.0.14", + "@smithy/util-endpoints": "^2.0.5", + "@smithy/util-retry": "^3.0.3", + "@smithy/util-stream": "^3.1.3", + "@smithy/util-utf8": "^3.0.0", + "@smithy/util-waiter": "^3.1.2", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/abort-controller": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.1.4.tgz", - "integrity": "sha512-VupaALAQlXViW3/enTf/f5l5JZYSAxoJL7f0nanhNNKnww6DGCg1oYIuNP78KDugnkwthBO6iEcym16HhWV8RQ==", - "optional": true, - "peer": true, + "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-signing": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.620.0.tgz", + "integrity": "sha512-gxI7rubiaanUXaLfJ4NybERa9MGPNg2Ycl/OqANsozrBnR3Pw8vqy3EuVImQOyn2pJ2IFvl8ZPoSMHf4pX56FQ==", "dependencies": { - "@smithy/types": "^3.4.2", + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/protocol-http": "^4.1.0", + "@smithy/signature-v4": "^4.1.0", + "@smithy/types": "^3.3.0", + "@smithy/util-middleware": "^3.0.3", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/config-resolver": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.8.tgz", - "integrity": "sha512-Tv1obAC18XOd2OnDAjSWmmthzx6Pdeh63FbLin8MlPiuJ2ATpKkq0NcNOJFr0dO+JmZXnwu8FQxKJ3TKJ3Hulw==", - "optional": true, - "peer": true, + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/is-array-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", + "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", "dependencies": { - "@smithy/node-config-provider": "^3.1.7", - "@smithy/types": "^3.4.2", - "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.6", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/credential-provider-imds": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.3.tgz", - "integrity": "sha512-VoxMzSzdvkkjMJNE38yQgx4CfnmT+Z+5EUXkg4x7yag93eQkVQgZvN3XBSHC/ylfBbLbAtdu7flTCChX9I+mVg==", - "optional": true, - "peer": true, + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/signature-v4": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-4.1.0.tgz", + "integrity": "sha512-aRryp2XNZeRcOtuJoxjydO6QTaVhxx/vjaR+gx7ZjaFgrgPRyZ3HCTbfwqYj6ZWEBHkCSUfcaymKPURaByukag==", "dependencies": { - "@smithy/node-config-provider": "^3.1.7", - "@smithy/property-provider": "^3.1.6", - "@smithy/types": "^3.4.2", - "@smithy/url-parser": "^3.0.6", + "@smithy/is-array-buffer": "^3.0.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-uri-escape": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/fetch-http-handler": { - "version": "3.2.8", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.8.tgz", - "integrity": "sha512-Lqe0B8F5RM7zkw//6avq1SJ8AfaRd3ubFUS1eVp5WszV7p6Ne5hQ4dSuMHDpNRPhgTvj4va9Kd/pcVigHEHRow==", - "optional": true, - "peer": true, + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/util-buffer-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", "dependencies": { - "@smithy/protocol-http": "^4.1.3", - "@smithy/querystring-builder": "^3.0.6", - "@smithy/types": "^3.4.2", - "@smithy/util-base64": "^3.0.0", + "@smithy/is-array-buffer": "^3.0.0", "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/hash-node": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.6.tgz", - "integrity": "sha512-c/FHEdKK/7DU2z6ZE91L36ahyXWayR3B+FzELjnYq7wH5YqIseM24V+pWCS9kFn1Ln8OFGTf+pyYPiHZuX0s/Q==", - "optional": true, - "peer": true, + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", "dependencies": { - "@smithy/types": "^3.4.2", "@smithy/util-buffer-from": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/invalid-dependency": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.6.tgz", - "integrity": "sha512-czM7Ioq3s8pIXht7oD+vmgy4Wfb4XavU/k/irO8NdXFFOx7YAlsCCcKOh/lJD1mJSYQqiR7NmpZ9JviryD/7AQ==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - } + "node_modules/@aws-sdk/client-s3/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/is-array-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", - "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", - "optional": true, - "peer": true, + "node_modules/@aws-sdk/client-sso": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.622.0.tgz", + "integrity": "sha512-DJwUqVR/O2lImbktUHOpaQ8XElNBx3JmWzTT2USg6jh3ErgG1CS6LIV+VUlgtxGl+tFN/G6AcAV8SdnnGydB8Q==", "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.622.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-logger": "3.609.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.620.0", + "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.614.0", + "@aws-sdk/util-user-agent-browser": "3.609.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.3.2", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/hash-node": "^3.0.3", + "@smithy/invalid-dependency": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.14", + "@smithy/util-defaults-mode-node": "^3.0.14", + "@smithy/util-endpoints": "^2.0.5", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/middleware-content-length": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.8.tgz", - "integrity": "sha512-VuyszlSO49WKh3H9/kIO2kf07VUwGV80QRiaDxUfP8P8UKlokz381ETJvwLhwuypBYhLymCYyNhB3fLAGBX2og==", - "optional": true, - "peer": true, + "node_modules/@aws-sdk/client-sso-oidc": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.622.0.tgz", + "integrity": "sha512-dwWDfN+S98npeY77Ugyv8VIHKRHN+n/70PWE4EgolcjaMrTINjvUh9a/SypFEs5JmBOAeCQt8S2QpM3Wvzp+pQ==", "dependencies": { - "@smithy/protocol-http": "^4.1.3", - "@smithy/types": "^3.4.2", + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.622.0", + "@aws-sdk/credential-provider-node": "3.622.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-logger": "3.609.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.620.0", + "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.614.0", + "@aws-sdk/util-user-agent-browser": "3.609.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.3.2", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/hash-node": "^3.0.3", + "@smithy/invalid-dependency": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.14", + "@smithy/util-defaults-mode-node": "^3.0.14", + "@smithy/util-endpoints": "^2.0.5", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.622.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/middleware-endpoint": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.3.tgz", - "integrity": "sha512-KeM/OrK8MVFUsoJsmCN0MZMVPjKKLudn13xpgwIMpGTYpA8QZB2Xq5tJ+RE6iu3A6NhOI4VajDTwBsm8pwwrhg==", - "optional": true, - "peer": true, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/is-array-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", + "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", "dependencies": { - "@smithy/middleware-serde": "^3.0.6", - "@smithy/node-config-provider": "^3.1.7", - "@smithy/shared-ini-file-loader": "^3.1.7", - "@smithy/types": "^3.4.2", - "@smithy/url-parser": "^3.0.6", - "@smithy/util-middleware": "^3.0.6", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/middleware-retry": { - "version": "3.0.20", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.20.tgz", - "integrity": "sha512-HELCOVwYw5hFDBm69d+LmmGjBCjWnwp/t7SJiHmp+c4u9vgfIaCjdSeIdnlOsLrr5ic5jGTJXvJFUQnd987b/g==", - "optional": true, - "peer": true, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-buffer-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", "dependencies": { - "@smithy/node-config-provider": "^3.1.7", - "@smithy/protocol-http": "^4.1.3", - "@smithy/service-error-classification": "^3.0.6", - "@smithy/smithy-client": "^3.3.4", - "@smithy/types": "^3.4.2", - "@smithy/util-middleware": "^3.0.6", - "@smithy/util-retry": "^3.0.6", - "tslib": "^2.6.2", - "uuid": "^9.0.1" + "@smithy/is-array-buffer": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/middleware-serde": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.6.tgz", - "integrity": "sha512-KKTUSl1MzOM0MAjGbudeaVNtIDo+PpekTBkCNwvfZlKndodrnvRo+00USatiyLOc0ujjO9UydMRu3O9dYML7ag==", - "optional": true, - "peer": true, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", "dependencies": { - "@smithy/types": "^3.4.2", + "@smithy/util-buffer-from": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/middleware-stack": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.6.tgz", - "integrity": "sha512-2c0eSYhTQ8xQqHMcRxLMpadFbTXg6Zla5l0mwNftFCZMQmuhI7EbAJMx6R5eqfuV3YbJ3QGyS3d5uSmrHV8Khg==", - "optional": true, - "peer": true, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@aws-sdk/client-sso/node_modules/@smithy/is-array-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", + "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", "dependencies": { - "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/node-config-provider": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.7.tgz", - "integrity": "sha512-g3mfnC3Oo8pOI0dYuPXLtdW1WGVb3bR2tkV21GNkm0ZvQjLTtamXAwCWt/FCb0HGvKt3gHHmF1XerG0ICfalOg==", - "optional": true, - "peer": true, + "node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-buffer-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", "dependencies": { - "@smithy/property-provider": "^3.1.6", - "@smithy/shared-ini-file-loader": "^3.1.7", - "@smithy/types": "^3.4.2", + "@smithy/is-array-buffer": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/node-http-handler": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.2.3.tgz", - "integrity": "sha512-/gcm5DJ3k1b1zEInzBGAZC8ntJ+jwrz1NcSIu+9dSXd1FfG0G6QgkDI40tt8/WYUbHtLyo8fEqtm2v29koWo/w==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/abort-controller": "^3.1.4", - "@smithy/protocol-http": "^4.1.3", - "@smithy/querystring-builder": "^3.0.6", - "@smithy/types": "^3.4.2", + "node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", + "dependencies": { + "@smithy/util-buffer-from": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/property-provider": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.6.tgz", - "integrity": "sha512-NK3y/T7Q/Bw+Z8vsVs9MYIQ5v7gOX7clyrXcwhhIBQhbPgRl6JDrZbusO9qWDhcEus75Tg+VCxtIRfo3H76fpw==", - "optional": true, - "peer": true, + "node_modules/@aws-sdk/client-sso/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@aws-sdk/client-sts": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.622.0.tgz", + "integrity": "sha512-Yqtdf/wn3lcFVS42tR+zbz4HLyWxSmztjVW9L/yeMlvS7uza5nSkWqP/7ca+RxZnXLyrnA4jJtSHqykcErlhyg==", "dependencies": { - "@smithy/types": "^3.4.2", + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sso-oidc": "3.622.0", + "@aws-sdk/core": "3.622.0", + "@aws-sdk/credential-provider-node": "3.622.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-logger": "3.609.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.620.0", + "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.614.0", + "@aws-sdk/util-user-agent-browser": "3.609.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.3.2", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/hash-node": "^3.0.3", + "@smithy/invalid-dependency": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.14", + "@smithy/util-defaults-mode-node": "^3.0.14", + "@smithy/util-endpoints": "^2.0.5", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/querystring-builder": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.6.tgz", - "integrity": "sha512-sQe08RunoObe+Usujn9+R2zrLuQERi3CWvRO3BvnoWSYUaIrLKuAIeY7cMeDax6xGyfIP3x/yFWbEKSXvOnvVg==", - "optional": true, - "peer": true, + "node_modules/@aws-sdk/client-sts/node_modules/@smithy/is-array-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", + "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", "dependencies": { - "@smithy/types": "^3.4.2", - "@smithy/util-uri-escape": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/querystring-parser": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.6.tgz", - "integrity": "sha512-UJKw4LlEkytzz2Wq+uIdHf6qOtFfee/o7ruH0jF5I6UAuU+19r9QV7nU3P/uI0l6+oElRHmG/5cBBcGJrD7Ozg==", - "optional": true, - "peer": true, + "node_modules/@aws-sdk/client-sts/node_modules/@smithy/util-buffer-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", "dependencies": { - "@smithy/types": "^3.4.2", + "@smithy/is-array-buffer": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/service-error-classification": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.6.tgz", - "integrity": "sha512-53SpchU3+DUZrN7J6sBx9tBiCVGzsib2e4sc512Q7K9fpC5zkJKs6Z9s+qbMxSYrkEkle6hnMtrts7XNkMJJMg==", - "optional": true, - "peer": true, + "node_modules/@aws-sdk/client-sts/node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", "dependencies": { - "@smithy/types": "^3.4.2" + "@smithy/util-buffer-from": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/shared-ini-file-loader": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.7.tgz", - "integrity": "sha512-IA4K2qTJYXkF5OfVN4vsY1hfnUZjaslEE8Fsr/gGFza4TAC2A9NfnZuSY2srQIbt9bwtjHiAayrRVgKse4Q7fA==", - "optional": true, - "peer": true, + "node_modules/@aws-sdk/client-sts/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@aws-sdk/core": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.622.0.tgz", + "integrity": "sha512-q1Ct2AjPxGtQBKtDpqm1umu3f4cuWMnEHTuDa6zjjaj+Aq/C6yxLgZJo9SlcU0tMl8rUCN7oFonszfTtp4Y0MA==", + "dependencies": { + "@smithy/core": "^2.3.2", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/signature-v4": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/util-middleware": "^3.0.3", + "fast-xml-parser": "4.4.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/core/node_modules/@smithy/is-array-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", + "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", "dependencies": { - "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/signature-v4": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-4.1.4.tgz", - "integrity": "sha512-72MiK7xYukNsnLJI9NqvUHqTu0ziEsfMsYNlWpiJfuGQnCTFKpckThlEatirvcA/LmT1h7rRO+pJD06PYsPu9Q==", - "optional": true, - "peer": true, + "node_modules/@aws-sdk/core/node_modules/@smithy/signature-v4": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-4.1.0.tgz", + "integrity": "sha512-aRryp2XNZeRcOtuJoxjydO6QTaVhxx/vjaR+gx7ZjaFgrgPRyZ3HCTbfwqYj6ZWEBHkCSUfcaymKPURaByukag==", "dependencies": { "@smithy/is-array-buffer": "^3.0.0", - "@smithy/protocol-http": "^4.1.3", - "@smithy/types": "^3.4.2", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", "@smithy/util-hex-encoding": "^3.0.0", - "@smithy/util-middleware": "^3.0.6", + "@smithy/util-middleware": "^3.0.3", "@smithy/util-uri-escape": "^3.0.0", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" @@ -715,246 +753,377 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/smithy-client": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.3.4.tgz", - "integrity": "sha512-NKw/2XxOW/Rg3rzB90HxsmGok5oS6vRzJgMh/JN4BHaOQQ4q5OuX999GmOGxEp730wbpIXIowfKZmIMXkG4v0Q==", - "optional": true, - "peer": true, + "node_modules/@aws-sdk/core/node_modules/@smithy/util-buffer-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", "dependencies": { - "@smithy/middleware-endpoint": "^3.1.3", - "@smithy/middleware-stack": "^3.0.6", - "@smithy/protocol-http": "^4.1.3", - "@smithy/types": "^3.4.2", - "@smithy/util-stream": "^3.1.8", + "@smithy/is-array-buffer": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/types": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.4.2.tgz", - "integrity": "sha512-tHiFcfcVedVBHpmHUEUHOCCih8iZbIAYn9NvPsNzaPm/237I3imdDdZoOC8c87H5HBAVEa06tTgb+OcSWV9g5w==", - "optional": true, - "peer": true, + "node_modules/@aws-sdk/core/node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", "dependencies": { + "@smithy/util-buffer-from": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/url-parser": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.6.tgz", - "integrity": "sha512-47Op/NU8Opt49KyGpHtVdnmmJMsp2hEwBdyjuFB9M2V5QVOwA7pBhhxKN5z6ztKGrMw76gd8MlbPuzzvaAncuQ==", + "node_modules/@aws-sdk/core/node_modules/fast-xml-parser": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", + "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + ], + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/@aws-sdk/core/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@aws-sdk/credential-provider-cognito-identity": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.622.0.tgz", + "integrity": "sha512-WXfTA1Q1bntE/KgoW+Vo2L2hgwr9YCHrfXgZLGQzCZwKQpW9iMWMxylSdn0NAHldN3fwiV/Oj6DqN0Tc8ScgNQ==", "optional": true, "peer": true, "dependencies": { - "@smithy/querystring-parser": "^3.0.6", - "@smithy/types": "^3.4.2", + "@aws-sdk/client-cognito-identity": "3.622.0", + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/util-base64": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz", - "integrity": "sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==", + "node_modules/@aws-sdk/credential-provider-cognito-identity/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", "optional": true, - "peer": true, + "peer": true + }, + "node_modules/@aws-sdk/credential-provider-env": { + "version": "3.620.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.620.1.tgz", + "integrity": "sha512-ExuILJ2qLW5ZO+rgkNRj0xiAipKT16Rk77buvPP8csR7kkCflT/gXTyzRe/uzIiETTxM7tr8xuO9MP/DQXqkfg==", "dependencies": { - "@smithy/util-buffer-from": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/util-body-length-browser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz", - "integrity": "sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==", - "optional": true, - "peer": true, + "node_modules/@aws-sdk/credential-provider-env/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@aws-sdk/credential-provider-http": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.622.0.tgz", + "integrity": "sha512-VUHbr24Oll1RK3WR8XLUugLpgK9ZuxEm/NVeVqyFts1Ck9gsKpRg1x4eH7L7tW3SJ4TDEQNMbD7/7J+eoL2svg==", "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/property-provider": "^3.1.3", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/util-stream": "^3.1.3", "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/util-body-length-node": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz", - "integrity": "sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==", - "optional": true, - "peer": true, + "node_modules/@aws-sdk/credential-provider-http/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.622.0.tgz", + "integrity": "sha512-cD/6O9jOfzQyo8oyAbTKnyRO89BIMSTzwaN4NxGySC6pYVTqxNSWdRwaqg/vKbwJpjbPGGYYXpXEW11kop7dlg==", "dependencies": { + "@aws-sdk/credential-provider-env": "3.620.1", + "@aws-sdk/credential-provider-http": "3.622.0", + "@aws-sdk/credential-provider-process": "3.620.1", + "@aws-sdk/credential-provider-sso": "3.622.0", + "@aws-sdk/credential-provider-web-identity": "3.621.0", + "@aws-sdk/types": "3.609.0", + "@smithy/credential-provider-imds": "^3.2.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.622.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/util-buffer-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", - "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", - "optional": true, - "peer": true, + "node_modules/@aws-sdk/credential-provider-ini/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@aws-sdk/credential-provider-node": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.622.0.tgz", + "integrity": "sha512-keldwz4Q/6TYc37JH6m43HumN7Vi+R0AuGuHn5tBV40Vi7IiqEzjpiE+yvsHIN+duUheFLL3j/o0H32jb+14DQ==", "dependencies": { - "@smithy/is-array-buffer": "^3.0.0", + "@aws-sdk/credential-provider-env": "3.620.1", + "@aws-sdk/credential-provider-http": "3.622.0", + "@aws-sdk/credential-provider-ini": "3.622.0", + "@aws-sdk/credential-provider-process": "3.620.1", + "@aws-sdk/credential-provider-sso": "3.622.0", + "@aws-sdk/credential-provider-web-identity": "3.621.0", + "@aws-sdk/types": "3.609.0", + "@smithy/credential-provider-imds": "^3.2.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/util-config-provider": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz", - "integrity": "sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==", - "optional": true, - "peer": true, + "node_modules/@aws-sdk/credential-provider-node/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@aws-sdk/credential-provider-process": { + "version": "3.620.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.620.1.tgz", + "integrity": "sha512-hWqFMidqLAkaV9G460+1at6qa9vySbjQKKc04p59OT7lZ5cO5VH5S4aI05e+m4j364MBROjjk2ugNvfNf/8ILg==", "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/util-defaults-mode-browser": { - "version": "3.0.20", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.20.tgz", - "integrity": "sha512-HpYmCpEThQJpCKzwzrGrklhdegRfuXI9keHRrHidbyEMliCdgic6t38MikJeZEkdIcEMhO1g95HIYMzjUzB+xg==", - "optional": true, - "peer": true, + "node_modules/@aws-sdk/credential-provider-process/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.622.0.tgz", + "integrity": "sha512-zrSoBVM2JlwvkBtrcUd4J/9CrG+T+hUy9r6jwo5gonFIN3QkneR/pqpbUn/n32Zy3zlzCo2VfB31g7MjG7kJmg==", "dependencies": { - "@smithy/property-provider": "^3.1.6", - "@smithy/smithy-client": "^3.3.4", - "@smithy/types": "^3.4.2", - "bowser": "^2.11.0", + "@aws-sdk/client-sso": "3.622.0", + "@aws-sdk/token-providers": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { - "node": ">= 10.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/util-defaults-mode-node": { - "version": "3.0.20", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.20.tgz", - "integrity": "sha512-atdsHNtAX0rwTvRRGsrONU0C0XzapH6tI8T1y/OReOvWN7uBwXqqWRft6m8egU2DgeReU0xqT3PHdGCe5VRaaQ==", - "optional": true, - "peer": true, + "node_modules/@aws-sdk/credential-provider-sso/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.621.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.621.0.tgz", + "integrity": "sha512-w7ASSyfNvcx7+bYGep3VBgC3K6vEdLmlpjT7nSIHxxQf+WSdvy+HynwJosrpZax0sK5q0D1Jpn/5q+r5lwwW6w==", "dependencies": { - "@smithy/config-resolver": "^3.0.8", - "@smithy/credential-provider-imds": "^3.2.3", - "@smithy/node-config-provider": "^3.1.7", - "@smithy/property-provider": "^3.1.6", - "@smithy/smithy-client": "^3.3.4", - "@smithy/types": "^3.4.2", + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { - "node": ">= 10.0.0" + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.621.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/util-endpoints": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.1.2.tgz", - "integrity": "sha512-FEISzffb4H8DLzGq1g4MuDpcv6CIG15fXoQzDH9SjpRJv6h7J++1STFWWinilG0tQh9H1v2UKWG19Jjr2B16zQ==", + "node_modules/@aws-sdk/credential-provider-web-identity/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@aws-sdk/credential-providers": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.622.0.tgz", + "integrity": "sha512-ImfpItaPwnwNBRG04x6iDwRAclvtW2+kSu4amGiMWF+EvnjnRTnyejAA/7rdBuxA4nwM4nb8jed0jnRkZyTu7A==", "optional": true, "peer": true, "dependencies": { - "@smithy/node-config-provider": "^3.1.7", - "@smithy/types": "^3.4.2", + "@aws-sdk/client-cognito-identity": "3.622.0", + "@aws-sdk/client-sso": "3.622.0", + "@aws-sdk/client-sts": "3.622.0", + "@aws-sdk/credential-provider-cognito-identity": "3.622.0", + "@aws-sdk/credential-provider-env": "3.620.1", + "@aws-sdk/credential-provider-http": "3.622.0", + "@aws-sdk/credential-provider-ini": "3.622.0", + "@aws-sdk/credential-provider-node": "3.622.0", + "@aws-sdk/credential-provider-process": "3.620.1", + "@aws-sdk/credential-provider-sso": "3.622.0", + "@aws-sdk/credential-provider-web-identity": "3.621.0", + "@aws-sdk/types": "3.609.0", + "@smithy/credential-provider-imds": "^3.2.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/util-hex-encoding": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz", - "integrity": "sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==", + "node_modules/@aws-sdk/credential-providers/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "optional": true, - "peer": true, + "peer": true + }, + "node_modules/@aws-sdk/middleware-bucket-endpoint": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.620.0.tgz", + "integrity": "sha512-eGLL0W6L3HDb3OACyetZYOWpHJ+gLo0TehQKeQyy2G8vTYXqNTeqYhuI6up9HVjBzU9eQiULVQETmgQs7TFaRg==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-arn-parser": "3.568.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "@smithy/util-config-provider": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-bucket-endpoint/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@aws-sdk/middleware-expect-continue": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.620.0.tgz", + "integrity": "sha512-QXeRFMLfyQ31nAHLbiTLtk0oHzG9QLMaof5jIfqcUwnOkO8YnQdeqzakrg1Alpy/VQ7aqzIi8qypkBe2KXZz0A==", "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/util-middleware": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.6.tgz", - "integrity": "sha512-BxbX4aBhI1O9p87/xM+zWy0GzT3CEVcXFPBRDoHAM+pV0eSW156pR+PSYEz0DQHDMYDsYAflC2bQNz2uaDBUZQ==", - "optional": true, - "peer": true, + "node_modules/@aws-sdk/middleware-expect-continue/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@aws-sdk/middleware-flexible-checksums": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.620.0.tgz", + "integrity": "sha512-ftz+NW7qka2sVuwnnO1IzBku5ccP+s5qZGeRTPgrKB7OzRW85gthvIo1vQR2w+OwHFk7WJbbhhWwbCbktnP4UA==", "dependencies": { - "@smithy/types": "^3.4.2", + "@aws-crypto/crc32": "5.2.0", + "@aws-crypto/crc32c": "5.2.0", + "@aws-sdk/types": "3.609.0", + "@smithy/is-array-buffer": "^3.0.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/util-retry": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.6.tgz", - "integrity": "sha512-BRZiuF7IwDntAbevqMco67an0Sr9oLQJqqRCsSPZZHYRnehS0LHDAkJk/pSmI7Z8c/1Vet294H7fY2fWUgB+Rg==", - "optional": true, - "peer": true, + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@aws-crypto/crc32": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", + "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", "dependencies": { - "@smithy/service-error-classification": "^3.0.6", - "@smithy/types": "^3.4.2", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/util-stream": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.1.8.tgz", - "integrity": "sha512-hoKOqSmb8FD3WLObuB5hwbM7bNIWgcnvkThokTvVq7J5PKjlLUK5qQQcB9zWLHIoSaIlf3VIv2OxZY2wtQjcRQ==", - "optional": true, - "peer": true, + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/is-array-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", + "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", "dependencies": { - "@smithy/fetch-http-handler": "^3.2.8", - "@smithy/node-http-handler": "^3.2.3", - "@smithy/types": "^3.4.2", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-buffer-from": "^3.0.0", - "@smithy/util-hex-encoding": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/util-uri-escape": { + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/util-buffer-from": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz", - "integrity": "sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==", - "optional": true, - "peer": true, + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", "dependencies": { + "@smithy/is-array-buffer": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/util-utf8": { + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/util-utf8": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", - "optional": true, - "peer": true, "dependencies": { "@smithy/util-buffer-from": "^3.0.0", "tslib": "^2.6.2" @@ -963,4879 +1132,447 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/fast-xml-parser": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", - "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - }, - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - } - ], - "optional": true, - "peer": true, + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@aws-sdk/middleware-host-header": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.620.0.tgz", + "integrity": "sha512-VMtPEZwqYrII/oUkffYsNWY9PZ9xpNJpMgmyU0rlDQ25O1c0Hk3fJmZRe6pEkAJ0omD7kLrqGl1DUjQVxpd/Rg==", "dependencies": { - "strnum": "^1.0.5" + "@aws-sdk/types": "3.609.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, - "bin": { - "fxparser": "src/cli/cli.js" + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "optional": true, - "peer": true + "node_modules/@aws-sdk/middleware-host-header/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, - "node_modules/@aws-sdk/client-cognito-identity/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" - ], - "optional": true, - "peer": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@aws-sdk/client-s3": { - "version": "3.456.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.456.0.tgz", - "integrity": "sha512-987Mls+9w+mpdq4Vpc/OEQ93afkM12H7l97lIejcidZySuLVo5tdOM9ErekmgjAuotFzBgu2ExL83XtYIMgA0g==", - "dependencies": { - "@aws-crypto/sha1-browser": "3.0.0", - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.454.0", - "@aws-sdk/core": "3.451.0", - "@aws-sdk/credential-provider-node": "3.451.0", - "@aws-sdk/middleware-bucket-endpoint": "3.451.0", - "@aws-sdk/middleware-expect-continue": "3.451.0", - "@aws-sdk/middleware-flexible-checksums": "3.451.0", - "@aws-sdk/middleware-host-header": "3.451.0", - "@aws-sdk/middleware-location-constraint": "3.451.0", - "@aws-sdk/middleware-logger": "3.451.0", - "@aws-sdk/middleware-recursion-detection": "3.451.0", - "@aws-sdk/middleware-sdk-s3": "3.451.0", - "@aws-sdk/middleware-signing": "3.451.0", - "@aws-sdk/middleware-ssec": "3.451.0", - "@aws-sdk/middleware-user-agent": "3.451.0", - "@aws-sdk/region-config-resolver": "3.451.0", - "@aws-sdk/signature-v4-multi-region": "3.451.0", - "@aws-sdk/types": "3.451.0", - "@aws-sdk/util-endpoints": "3.451.0", - "@aws-sdk/util-user-agent-browser": "3.451.0", - "@aws-sdk/util-user-agent-node": "3.451.0", - "@aws-sdk/xml-builder": "3.310.0", - "@smithy/config-resolver": "^2.0.18", - "@smithy/eventstream-serde-browser": "^2.0.13", - "@smithy/eventstream-serde-config-resolver": "^2.0.13", - "@smithy/eventstream-serde-node": "^2.0.13", - "@smithy/fetch-http-handler": "^2.2.6", - "@smithy/hash-blob-browser": "^2.0.14", - "@smithy/hash-node": "^2.0.15", - "@smithy/hash-stream-node": "^2.0.15", - "@smithy/invalid-dependency": "^2.0.13", - "@smithy/md5-js": "^2.0.15", - "@smithy/middleware-content-length": "^2.0.15", - "@smithy/middleware-endpoint": "^2.2.0", - "@smithy/middleware-retry": "^2.0.20", - "@smithy/middleware-serde": "^2.0.13", - "@smithy/middleware-stack": "^2.0.7", - "@smithy/node-config-provider": "^2.1.5", - "@smithy/node-http-handler": "^2.1.9", - "@smithy/protocol-http": "^3.0.9", - "@smithy/smithy-client": "^2.1.15", - "@smithy/types": "^2.5.0", - "@smithy/url-parser": "^2.0.13", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.0", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.19", - "@smithy/util-defaults-mode-node": "^2.0.25", - "@smithy/util-endpoints": "^1.0.4", - "@smithy/util-retry": "^2.0.6", - "@smithy/util-stream": "^2.0.20", - "@smithy/util-utf8": "^2.0.2", - "@smithy/util-waiter": "^2.0.13", - "fast-xml-parser": "4.2.5", - "tslib": "^2.5.0" + "node_modules/@aws-sdk/middleware-location-constraint": { + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.609.0.tgz", + "integrity": "sha512-xzsdoTkszGVqGVPjUmgoP7TORiByLueMHieI1fhQL888WPdqctwAx3ES6d/bA9Q/i8jnc6hs+Fjhy8UvBTkE9A==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/client-sso": { - "version": "3.451.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.451.0.tgz", - "integrity": "sha512-KkYSke3Pdv3MfVH/5fT528+MKjMyPKlcLcd4zQb0x6/7Bl7EHrPh1JZYjzPLHelb+UY5X0qN8+cb8iSu1eiwIQ==", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.451.0", - "@aws-sdk/middleware-host-header": "3.451.0", - "@aws-sdk/middleware-logger": "3.451.0", - "@aws-sdk/middleware-recursion-detection": "3.451.0", - "@aws-sdk/middleware-user-agent": "3.451.0", - "@aws-sdk/region-config-resolver": "3.451.0", - "@aws-sdk/types": "3.451.0", - "@aws-sdk/util-endpoints": "3.451.0", - "@aws-sdk/util-user-agent-browser": "3.451.0", - "@aws-sdk/util-user-agent-node": "3.451.0", - "@smithy/config-resolver": "^2.0.18", - "@smithy/fetch-http-handler": "^2.2.6", - "@smithy/hash-node": "^2.0.15", - "@smithy/invalid-dependency": "^2.0.13", - "@smithy/middleware-content-length": "^2.0.15", - "@smithy/middleware-endpoint": "^2.2.0", - "@smithy/middleware-retry": "^2.0.20", - "@smithy/middleware-serde": "^2.0.13", - "@smithy/middleware-stack": "^2.0.7", - "@smithy/node-config-provider": "^2.1.5", - "@smithy/node-http-handler": "^2.1.9", - "@smithy/protocol-http": "^3.0.9", - "@smithy/smithy-client": "^2.1.15", - "@smithy/types": "^2.5.0", - "@smithy/url-parser": "^2.0.13", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.0", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.19", - "@smithy/util-defaults-mode-node": "^2.0.25", - "@smithy/util-endpoints": "^1.0.4", - "@smithy/util-retry": "^2.0.6", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } + "node_modules/@aws-sdk/middleware-location-constraint/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/client-sts": { - "version": "3.454.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.454.0.tgz", - "integrity": "sha512-0fDvr8WeB6IYO8BUCzcivWmahgGl/zDbaYfakzGnt4mrl5ztYaXE875WI6b7+oFcKMRvN+KLvwu5TtyFuNY+GQ==", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.451.0", - "@aws-sdk/credential-provider-node": "3.451.0", - "@aws-sdk/middleware-host-header": "3.451.0", - "@aws-sdk/middleware-logger": "3.451.0", - "@aws-sdk/middleware-recursion-detection": "3.451.0", - "@aws-sdk/middleware-sdk-sts": "3.451.0", - "@aws-sdk/middleware-signing": "3.451.0", - "@aws-sdk/middleware-user-agent": "3.451.0", - "@aws-sdk/region-config-resolver": "3.451.0", - "@aws-sdk/types": "3.451.0", - "@aws-sdk/util-endpoints": "3.451.0", - "@aws-sdk/util-user-agent-browser": "3.451.0", - "@aws-sdk/util-user-agent-node": "3.451.0", - "@smithy/config-resolver": "^2.0.18", - "@smithy/fetch-http-handler": "^2.2.6", - "@smithy/hash-node": "^2.0.15", - "@smithy/invalid-dependency": "^2.0.13", - "@smithy/middleware-content-length": "^2.0.15", - "@smithy/middleware-endpoint": "^2.2.0", - "@smithy/middleware-retry": "^2.0.20", - "@smithy/middleware-serde": "^2.0.13", - "@smithy/middleware-stack": "^2.0.7", - "@smithy/node-config-provider": "^2.1.5", - "@smithy/node-http-handler": "^2.1.9", - "@smithy/protocol-http": "^3.0.9", - "@smithy/smithy-client": "^2.1.15", - "@smithy/types": "^2.5.0", - "@smithy/url-parser": "^2.0.13", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.0", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.19", - "@smithy/util-defaults-mode-node": "^2.0.25", - "@smithy/util-endpoints": "^1.0.4", - "@smithy/util-retry": "^2.0.6", - "@smithy/util-utf8": "^2.0.2", - "fast-xml-parser": "4.2.5", - "tslib": "^2.5.0" + "node_modules/@aws-sdk/middleware-logger": { + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.609.0.tgz", + "integrity": "sha512-S62U2dy4jMDhDFDK5gZ4VxFdWzCtLzwbYyFZx2uvPYTECkepLUfzLic2BHg2Qvtu4QjX+oGE3P/7fwaGIsGNuQ==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.451.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.451.0.tgz", - "integrity": "sha512-9dAav7DcRgaF7xCJEQR5ER9ErXxnu/tdnVJ+UPmb1NPeIZdESv1A3lxFDEq1Fs8c4/lzAj9BpshGyJVIZwZDKg==", + "node_modules/@aws-sdk/middleware-logger/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.620.0.tgz", + "integrity": "sha512-nh91S7aGK3e/o1ck64sA/CyoFw+gAYj2BDOnoNa6ouyCrVJED96ZXWbhye/fz9SgmNUZR2g7GdVpiLpMKZoI5w==", "dependencies": { - "@aws-sdk/types": "3.451.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.609.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.451.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.451.0.tgz", - "integrity": "sha512-TySt64Ci5/ZbqFw1F9Z0FIGvYx5JSC9e6gqDnizIYd8eMnn8wFRUscRrD7pIHKfrhvVKN5h0GdYovmMO/FMCBw==", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.451.0", - "@aws-sdk/credential-provider-process": "3.451.0", - "@aws-sdk/credential-provider-sso": "3.451.0", - "@aws-sdk/credential-provider-web-identity": "3.451.0", - "@aws-sdk/types": "3.451.0", - "@smithy/credential-provider-imds": "^2.0.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } + "node_modules/@aws-sdk/middleware-recursion-detection/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.451.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.451.0.tgz", - "integrity": "sha512-AEwM1WPyxUdKrKyUsKyFqqRFGU70e4qlDyrtBxJnSU9NRLZI8tfEZ67bN7fHSxBUBODgDXpMSlSvJiBLh5/3pw==", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.451.0", - "@aws-sdk/credential-provider-ini": "3.451.0", - "@aws-sdk/credential-provider-process": "3.451.0", - "@aws-sdk/credential-provider-sso": "3.451.0", - "@aws-sdk/credential-provider-web-identity": "3.451.0", - "@aws-sdk/types": "3.451.0", - "@smithy/credential-provider-imds": "^2.0.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" + "node_modules/@aws-sdk/middleware-sdk-s3": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.622.0.tgz", + "integrity": "sha512-tX9wZ2ALx5Ez4bkY+SvSj6DpNZ6TmY4zlsVsdgV95LZFLjNwqnZkKkS+uKnsIyLBiBp6g92JVQwnUEIp7ov2Zw==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-arn-parser": "3.568.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/signature-v4": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-stream": "^3.1.3", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-process": { - "version": "3.451.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.451.0.tgz", - "integrity": "sha512-HQywSdKeD5PErcLLnZfSyCJO+6T+ZyzF+Lm/QgscSC+CbSUSIPi//s15qhBRVely/3KBV6AywxwNH+5eYgt4lQ==", + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/is-array-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", + "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", "dependencies": { - "@aws-sdk/types": "3.451.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.451.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.451.0.tgz", - "integrity": "sha512-Usm/N51+unOt8ID4HnQzxIjUJDrkAQ1vyTOC0gSEEJ7h64NSSPGD5yhN7il5WcErtRd3EEtT1a8/GTC5TdBctg==", + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/signature-v4": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-4.1.0.tgz", + "integrity": "sha512-aRryp2XNZeRcOtuJoxjydO6QTaVhxx/vjaR+gx7ZjaFgrgPRyZ3HCTbfwqYj6ZWEBHkCSUfcaymKPURaByukag==", "dependencies": { - "@aws-sdk/client-sso": "3.451.0", - "@aws-sdk/token-providers": "3.451.0", - "@aws-sdk/types": "3.451.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" + "@smithy/is-array-buffer": "^3.0.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-uri-escape": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.451.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.451.0.tgz", - "integrity": "sha512-Xtg3Qw65EfDjWNG7o2xD6sEmumPfsy3WDGjk2phEzVg8s7hcZGxf5wYwe6UY7RJvlEKrU0rFA+AMn6Hfj5oOzg==", + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/util-buffer-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", "dependencies": { - "@aws-sdk/types": "3.451.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" + "@smithy/is-array-buffer": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.451.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.451.0.tgz", - "integrity": "sha512-j8a5jAfhWmsK99i2k8oR8zzQgXrsJtgrLxc3js6U+525mcZytoiDndkWTmD5fjJ1byU1U2E5TaPq+QJeDip05Q==", + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", "dependencies": { - "@aws-sdk/types": "3.451.0", - "@smithy/protocol-http": "^3.0.9", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" + "@smithy/util-buffer-from": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-logger": { - "version": "3.451.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.451.0.tgz", - "integrity": "sha512-0kHrYEyVeB2QBfP6TfbI240aRtatLZtcErJbhpiNUb+CQPgEL3crIjgVE8yYiJumZ7f0jyjo8HLPkwD1/2APaw==", + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@aws-sdk/middleware-ssec": { + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.609.0.tgz", + "integrity": "sha512-GZSD1s7+JswWOTamVap79QiDaIV7byJFssBW68GYjyRS5EBjNfwA/8s+6uE6g39R3ojyTbYOmvcANoZEhSULXg==", "dependencies": { - "@aws-sdk/types": "3.451.0", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.609.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.451.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.451.0.tgz", - "integrity": "sha512-J6jL6gJ7orjHGM70KDRcCP7so/J2SnkN4vZ9YRLTeeZY6zvBuHDjX8GCIgSqPn/nXFXckZO8XSnA7u6+3TAT0w==", + "node_modules/@aws-sdk/middleware-ssec/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.620.0.tgz", + "integrity": "sha512-bvS6etn+KsuL32ubY5D3xNof1qkenpbJXf/ugGXbg0n98DvDFQ/F+SMLxHgbnER5dsKYchNnhmtI6/FC3HFu/A==", "dependencies": { - "@aws-sdk/types": "3.451.0", - "@smithy/protocol-http": "^3.0.9", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.614.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-sdk-sts": { - "version": "3.451.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.451.0.tgz", - "integrity": "sha512-UJ6UfVUEgp0KIztxpAeelPXI5MLj9wUtUCqYeIMP7C1ZhoEMNm3G39VLkGN43dNhBf1LqjsV9jkKMZbVfYXuwg==", + "node_modules/@aws-sdk/middleware-user-agent/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@aws-sdk/region-config-resolver": { + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.614.0.tgz", + "integrity": "sha512-vDCeMXvic/LU0KFIUjpC3RiSTIkkvESsEfbVHiHH0YINfl8HnEqR5rj+L8+phsCeVg2+LmYwYxd5NRz4PHxt5g==", "dependencies": { - "@aws-sdk/middleware-signing": "3.451.0", - "@aws-sdk/types": "3.451.0", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.609.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/types": "^3.3.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.3", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-signing": { - "version": "3.451.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.451.0.tgz", - "integrity": "sha512-s5ZlcIoLNg1Huj4Qp06iKniE8nJt/Pj1B/fjhWc6cCPCM7XJYUCejCnRh6C5ZJoBEYodjuwZBejPc1Wh3j+znA==", - "dependencies": { - "@aws-sdk/types": "3.451.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/protocol-http": "^3.0.9", - "@smithy/signature-v4": "^2.0.0", - "@smithy/types": "^2.5.0", - "@smithy/util-middleware": "^2.0.6", - "tslib": "^2.5.0" + "node_modules/@aws-sdk/region-config-resolver/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@aws-sdk/signature-v4-multi-region": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.622.0.tgz", + "integrity": "sha512-K7ddofVNzwTFRjmLZLfs/v+hiE9m5LguajHk8WULxXQgkcDI3nPgOfmMMGuslYohaQhRwW+ic+dzYlateLUudQ==", + "dependencies": { + "@aws-sdk/middleware-sdk-s3": "3.622.0", + "@aws-sdk/types": "3.609.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/signature-v4": "^4.1.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.451.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.451.0.tgz", - "integrity": "sha512-8NM/0JiKLNvT9wtAQVl1DFW0cEO7OvZyLSUBLNLTHqyvOZxKaZ8YFk7d8PL6l76LeUKRxq4NMxfZQlUIRe0eSA==", + "node_modules/@aws-sdk/signature-v4-multi-region/node_modules/@smithy/is-array-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", + "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", "dependencies": { - "@aws-sdk/types": "3.451.0", - "@aws-sdk/util-endpoints": "3.451.0", - "@smithy/protocol-http": "^3.0.9", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/token-providers": { - "version": "3.451.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.451.0.tgz", - "integrity": "sha512-ij1L5iUbn6CwxVOT1PG4NFjsrsKN9c4N1YEM0lkl6DwmaNOscjLKGSNyj9M118vSWsOs1ZDbTwtj++h0O/BWrQ==", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/middleware-host-header": "3.451.0", - "@aws-sdk/middleware-logger": "3.451.0", - "@aws-sdk/middleware-recursion-detection": "3.451.0", - "@aws-sdk/middleware-user-agent": "3.451.0", - "@aws-sdk/region-config-resolver": "3.451.0", - "@aws-sdk/types": "3.451.0", - "@aws-sdk/util-endpoints": "3.451.0", - "@aws-sdk/util-user-agent-browser": "3.451.0", - "@aws-sdk/util-user-agent-node": "3.451.0", - "@smithy/config-resolver": "^2.0.18", - "@smithy/fetch-http-handler": "^2.2.6", - "@smithy/hash-node": "^2.0.15", - "@smithy/invalid-dependency": "^2.0.13", - "@smithy/middleware-content-length": "^2.0.15", - "@smithy/middleware-endpoint": "^2.2.0", - "@smithy/middleware-retry": "^2.0.20", - "@smithy/middleware-serde": "^2.0.13", - "@smithy/middleware-stack": "^2.0.7", - "@smithy/node-config-provider": "^2.1.5", - "@smithy/node-http-handler": "^2.1.9", - "@smithy/property-provider": "^2.0.0", - "@smithy/protocol-http": "^3.0.9", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/smithy-client": "^2.1.15", - "@smithy/types": "^2.5.0", - "@smithy/url-parser": "^2.0.13", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.0", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.19", - "@smithy/util-defaults-mode-node": "^2.0.25", - "@smithy/util-endpoints": "^1.0.4", - "@smithy/util-retry": "^2.0.6", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" + "node_modules/@aws-sdk/signature-v4-multi-region/node_modules/@smithy/signature-v4": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-4.1.0.tgz", + "integrity": "sha512-aRryp2XNZeRcOtuJoxjydO6QTaVhxx/vjaR+gx7ZjaFgrgPRyZ3HCTbfwqYj6ZWEBHkCSUfcaymKPURaByukag==", + "dependencies": { + "@smithy/is-array-buffer": "^3.0.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-uri-escape": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/types": { - "version": "3.451.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.451.0.tgz", - "integrity": "sha512-rhK+qeYwCIs+laJfWCcrYEjay2FR/9VABZJ2NRM89jV/fKqGVQR52E5DQqrI+oEIL5JHMhhnr4N4fyECMS35lw==", + "node_modules/@aws-sdk/signature-v4-multi-region/node_modules/@smithy/util-buffer-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", "dependencies": { - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" + "@smithy/is-array-buffer": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/util-endpoints": { - "version": "3.451.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.451.0.tgz", - "integrity": "sha512-giqLGBTnRIcKkDqwU7+GQhKbtJ5Ku35cjGQIfMyOga6pwTBUbaK0xW1Sdd8sBQ1GhApscnChzI9o/R9x0368vw==", + "node_modules/@aws-sdk/signature-v4-multi-region/node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", "dependencies": { - "@aws-sdk/types": "3.451.0", - "@smithy/util-endpoints": "^1.0.4", - "tslib": "^2.5.0" + "@smithy/util-buffer-from": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.451.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.451.0.tgz", - "integrity": "sha512-Ws5mG3J0TQifH7OTcMrCTexo7HeSAc3cBgjfhS/ofzPUzVCtsyg0G7I6T7wl7vJJETix2Kst2cpOsxygPgPD9w==", - "dependencies": { - "@aws-sdk/types": "3.451.0", - "@smithy/types": "^2.5.0", - "bowser": "^2.11.0", - "tslib": "^2.5.0" - } + "node_modules/@aws-sdk/signature-v4-multi-region/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.451.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.451.0.tgz", - "integrity": "sha512-TBzm6P+ql4mkGFAjPlO1CI+w3yUT+NulaiALjl/jNX/nnUp6HsJsVxJf4nVFQTG5KRV0iqMypcs7I3KIhH+LmA==", + "node_modules/@aws-sdk/token-providers": { + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.614.0.tgz", + "integrity": "sha512-okItqyY6L9IHdxqs+Z116y5/nda7rHxLvROxtAJdLavWTYDydxrZstImNgGWTeVdmc0xX2gJCI77UYUTQWnhRw==", "dependencies": { - "@aws-sdk/types": "3.451.0", - "@smithy/node-config-provider": "^2.1.5", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" }, "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } + "@aws-sdk/client-sso-oidc": "^3.614.0" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@smithy/protocol-http": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.0.10.tgz", - "integrity": "sha512-6+tjNk7rXW7YTeGo9qwxXj/2BFpJTe37kTj3EnZCoX/nH+NP/WLA7O83fz8XhkGqsaAhLUPo/bB12vvd47nsmg==", + "node_modules/@aws-sdk/token-providers/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@aws-sdk/types": { + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.609.0.tgz", + "integrity": "sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q==", "dependencies": { - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-s3/node_modules/tslib": { + "node_modules/@aws-sdk/types/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/@aws-sdk/client-sso": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.654.0.tgz", - "integrity": "sha512-4kBxs2IzCDtj6a6lRXa/lXK5wWpMGzwKtb+HMXf/rJYVM6x7wYRzc1hYrOd3DYkFQ/sR3dUFj+0mTP0os3aAbA==", - "optional": true, - "peer": true, + "node_modules/@aws-sdk/util-arn-parser": { + "version": "3.568.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.568.0.tgz", + "integrity": "sha512-XUKJWWo+KOB7fbnPP0+g/o5Ulku/X53t7i/h+sPHr5xxYTJJ9CYnbToo95mzxe7xWvkLrsNtJ8L+MnNn9INs2w==", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.654.0", - "@aws-sdk/middleware-host-header": "3.654.0", - "@aws-sdk/middleware-logger": "3.654.0", - "@aws-sdk/middleware-recursion-detection": "3.654.0", - "@aws-sdk/middleware-user-agent": "3.654.0", - "@aws-sdk/region-config-resolver": "3.654.0", - "@aws-sdk/types": "3.654.0", - "@aws-sdk/util-endpoints": "3.654.0", - "@aws-sdk/util-user-agent-browser": "3.654.0", - "@aws-sdk/util-user-agent-node": "3.654.0", - "@smithy/config-resolver": "^3.0.8", - "@smithy/core": "^2.4.3", - "@smithy/fetch-http-handler": "^3.2.7", - "@smithy/hash-node": "^3.0.6", - "@smithy/invalid-dependency": "^3.0.6", - "@smithy/middleware-content-length": "^3.0.8", - "@smithy/middleware-endpoint": "^3.1.3", - "@smithy/middleware-retry": "^3.0.18", - "@smithy/middleware-serde": "^3.0.6", - "@smithy/middleware-stack": "^3.0.6", - "@smithy/node-config-provider": "^3.1.7", - "@smithy/node-http-handler": "^3.2.2", - "@smithy/protocol-http": "^4.1.3", - "@smithy/smithy-client": "^3.3.2", - "@smithy/types": "^3.4.2", - "@smithy/url-parser": "^3.0.6", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-body-length-browser": "^3.0.0", - "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.18", - "@smithy/util-defaults-mode-node": "^3.0.18", - "@smithy/util-endpoints": "^2.1.2", - "@smithy/util-middleware": "^3.0.6", - "@smithy/util-retry": "^3.0.6", - "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.654.0.tgz", - "integrity": "sha512-gbHrKsEnaAtmkNCVQzLyiqMzpDaThV/bWl/ODEklI+t6stW3Pe3oDMstEHLfJ6JU5g8sYnx4VLuxlnJMtUkvPw==", - "optional": true, - "peer": true, + "node_modules/@aws-sdk/util-arn-parser/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@aws-sdk/util-endpoints": { + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.614.0.tgz", + "integrity": "sha512-wK2cdrXHH4oz4IomV/yrGkftU9A+ITB6nFL+rxxyO78is2ifHJpFdV4aqk4LSkXYPi6CXWNru/Dqc7yiKXgJPw==", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.654.0", - "@aws-sdk/credential-provider-node": "3.654.0", - "@aws-sdk/middleware-host-header": "3.654.0", - "@aws-sdk/middleware-logger": "3.654.0", - "@aws-sdk/middleware-recursion-detection": "3.654.0", - "@aws-sdk/middleware-user-agent": "3.654.0", - "@aws-sdk/region-config-resolver": "3.654.0", - "@aws-sdk/types": "3.654.0", - "@aws-sdk/util-endpoints": "3.654.0", - "@aws-sdk/util-user-agent-browser": "3.654.0", - "@aws-sdk/util-user-agent-node": "3.654.0", - "@smithy/config-resolver": "^3.0.8", - "@smithy/core": "^2.4.3", - "@smithy/fetch-http-handler": "^3.2.7", - "@smithy/hash-node": "^3.0.6", - "@smithy/invalid-dependency": "^3.0.6", - "@smithy/middleware-content-length": "^3.0.8", - "@smithy/middleware-endpoint": "^3.1.3", - "@smithy/middleware-retry": "^3.0.18", - "@smithy/middleware-serde": "^3.0.6", - "@smithy/middleware-stack": "^3.0.6", - "@smithy/node-config-provider": "^3.1.7", - "@smithy/node-http-handler": "^3.2.2", - "@smithy/protocol-http": "^4.1.3", - "@smithy/smithy-client": "^3.3.2", - "@smithy/types": "^3.4.2", - "@smithy/url-parser": "^3.0.6", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-body-length-browser": "^3.0.0", - "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.18", - "@smithy/util-defaults-mode-node": "^3.0.18", - "@smithy/util-endpoints": "^2.1.2", - "@smithy/util-middleware": "^3.0.6", - "@smithy/util-retry": "^3.0.6", - "@smithy/util-utf8": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/types": "^3.3.0", + "@smithy/util-endpoints": "^2.0.5", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.654.0" } }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-crypto/sha256-browser": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", - "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", - "optional": true, - "peer": true, - "dependencies": { - "@aws-crypto/sha256-js": "^5.2.0", - "@aws-crypto/supports-web-crypto": "^5.2.0", - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-locate-window": "^3.0.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.6.2" - } + "node_modules/@aws-sdk/util-endpoints/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "optional": true, - "peer": true, + "node_modules/@aws-sdk/util-locate-window": { + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.310.0.tgz", + "integrity": "sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==", "dependencies": { - "tslib": "^2.6.2" + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "optional": true, - "peer": true, + "node_modules/@aws-sdk/util-locate-window/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.609.0.tgz", + "integrity": "sha512-fojPU+mNahzQ0YHYBsx0ZIhmMA96H+ZIZ665ObU9tl+SGdbLneVZVikGve+NmHTQwHzwkFsZYYnVKAkreJLAtA==", "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", + "@aws-sdk/types": "3.609.0", + "@smithy/types": "^3.3.0", + "bowser": "^2.11.0", "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "optional": true, - "peer": true, + "node_modules/@aws-sdk/util-user-agent-browser/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.614.0.tgz", + "integrity": "sha512-15ElZT88peoHnq5TEoEtZwoXTXRxNrk60TZNdpl/TUBJ5oNJ9Dqb5Z4ryb8ofN6nm9aFf59GVAerFDz8iUoHBA==", "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", + "@aws-sdk/types": "3.609.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } } }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-crypto/sha256-js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", - "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", - "optional": true, - "peer": true, + "node_modules/@aws-sdk/util-user-agent-node/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@aws-sdk/xml-builder": { + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.609.0.tgz", + "integrity": "sha512-l9XxNcA4HX98rwCC2/KoiWcmEiRfZe4G+mYwDbCFT87JIMj6GBhLDkAzr/W8KAaA2IDr8Vc6J8fZPgVulxxfMA==", "dependencies": { - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-crypto/supports-web-crypto": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", - "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-crypto/util": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", - "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", - "optional": true, - "peer": true, - "dependencies": { - "@aws-sdk/types": "^3.222.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/core": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.654.0.tgz", - "integrity": "sha512-4Rwx7BVaNaFqmXBDmnOkMbyuIFFbpZ+ru4lr660p45zY1QoNNSalechfoRffcokLFOZO+VWEJkdcorPUUU993w==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/core": "^2.4.3", - "@smithy/node-config-provider": "^3.1.7", - "@smithy/property-provider": "^3.1.6", - "@smithy/protocol-http": "^4.1.3", - "@smithy/signature-v4": "^4.1.3", - "@smithy/smithy-client": "^3.3.2", - "@smithy/types": "^3.4.2", - "@smithy/util-middleware": "^3.0.6", - "fast-xml-parser": "4.4.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.654.0.tgz", - "integrity": "sha512-ydGOrXJxj3x0sJhsXyTmvJVLAE0xxuTWFJihTl67RtaO7VRNtd82I3P3bwoMMaDn5WpmV5mPo8fEUDRlBm3fPg==", - "optional": true, - "peer": true, - "dependencies": { - "@aws-sdk/types": "3.654.0", - "@smithy/node-config-provider": "^3.1.7", - "@smithy/types": "^3.4.2", - "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.6", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/abort-controller": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.1.4.tgz", - "integrity": "sha512-VupaALAQlXViW3/enTf/f5l5JZYSAxoJL7f0nanhNNKnww6DGCg1oYIuNP78KDugnkwthBO6iEcym16HhWV8RQ==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/config-resolver": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.8.tgz", - "integrity": "sha512-Tv1obAC18XOd2OnDAjSWmmthzx6Pdeh63FbLin8MlPiuJ2ATpKkq0NcNOJFr0dO+JmZXnwu8FQxKJ3TKJ3Hulw==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/node-config-provider": "^3.1.7", - "@smithy/types": "^3.4.2", - "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.6", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/credential-provider-imds": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.3.tgz", - "integrity": "sha512-VoxMzSzdvkkjMJNE38yQgx4CfnmT+Z+5EUXkg4x7yag93eQkVQgZvN3XBSHC/ylfBbLbAtdu7flTCChX9I+mVg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/node-config-provider": "^3.1.7", - "@smithy/property-provider": "^3.1.6", - "@smithy/types": "^3.4.2", - "@smithy/url-parser": "^3.0.6", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/fetch-http-handler": { - "version": "3.2.8", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.8.tgz", - "integrity": "sha512-Lqe0B8F5RM7zkw//6avq1SJ8AfaRd3ubFUS1eVp5WszV7p6Ne5hQ4dSuMHDpNRPhgTvj4va9Kd/pcVigHEHRow==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/protocol-http": "^4.1.3", - "@smithy/querystring-builder": "^3.0.6", - "@smithy/types": "^3.4.2", - "@smithy/util-base64": "^3.0.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/hash-node": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.6.tgz", - "integrity": "sha512-c/FHEdKK/7DU2z6ZE91L36ahyXWayR3B+FzELjnYq7wH5YqIseM24V+pWCS9kFn1Ln8OFGTf+pyYPiHZuX0s/Q==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "@smithy/util-buffer-from": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/invalid-dependency": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.6.tgz", - "integrity": "sha512-czM7Ioq3s8pIXht7oD+vmgy4Wfb4XavU/k/irO8NdXFFOx7YAlsCCcKOh/lJD1mJSYQqiR7NmpZ9JviryD/7AQ==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/is-array-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", - "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/middleware-content-length": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.8.tgz", - "integrity": "sha512-VuyszlSO49WKh3H9/kIO2kf07VUwGV80QRiaDxUfP8P8UKlokz381ETJvwLhwuypBYhLymCYyNhB3fLAGBX2og==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/protocol-http": "^4.1.3", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/middleware-endpoint": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.3.tgz", - "integrity": "sha512-KeM/OrK8MVFUsoJsmCN0MZMVPjKKLudn13xpgwIMpGTYpA8QZB2Xq5tJ+RE6iu3A6NhOI4VajDTwBsm8pwwrhg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/middleware-serde": "^3.0.6", - "@smithy/node-config-provider": "^3.1.7", - "@smithy/shared-ini-file-loader": "^3.1.7", - "@smithy/types": "^3.4.2", - "@smithy/url-parser": "^3.0.6", - "@smithy/util-middleware": "^3.0.6", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/middleware-retry": { - "version": "3.0.20", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.20.tgz", - "integrity": "sha512-HELCOVwYw5hFDBm69d+LmmGjBCjWnwp/t7SJiHmp+c4u9vgfIaCjdSeIdnlOsLrr5ic5jGTJXvJFUQnd987b/g==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/node-config-provider": "^3.1.7", - "@smithy/protocol-http": "^4.1.3", - "@smithy/service-error-classification": "^3.0.6", - "@smithy/smithy-client": "^3.3.4", - "@smithy/types": "^3.4.2", - "@smithy/util-middleware": "^3.0.6", - "@smithy/util-retry": "^3.0.6", - "tslib": "^2.6.2", - "uuid": "^9.0.1" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/middleware-serde": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.6.tgz", - "integrity": "sha512-KKTUSl1MzOM0MAjGbudeaVNtIDo+PpekTBkCNwvfZlKndodrnvRo+00USatiyLOc0ujjO9UydMRu3O9dYML7ag==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/middleware-stack": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.6.tgz", - "integrity": "sha512-2c0eSYhTQ8xQqHMcRxLMpadFbTXg6Zla5l0mwNftFCZMQmuhI7EbAJMx6R5eqfuV3YbJ3QGyS3d5uSmrHV8Khg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/node-config-provider": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.7.tgz", - "integrity": "sha512-g3mfnC3Oo8pOI0dYuPXLtdW1WGVb3bR2tkV21GNkm0ZvQjLTtamXAwCWt/FCb0HGvKt3gHHmF1XerG0ICfalOg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/property-provider": "^3.1.6", - "@smithy/shared-ini-file-loader": "^3.1.7", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/node-http-handler": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.2.3.tgz", - "integrity": "sha512-/gcm5DJ3k1b1zEInzBGAZC8ntJ+jwrz1NcSIu+9dSXd1FfG0G6QgkDI40tt8/WYUbHtLyo8fEqtm2v29koWo/w==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/abort-controller": "^3.1.4", - "@smithy/protocol-http": "^4.1.3", - "@smithy/querystring-builder": "^3.0.6", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/property-provider": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.6.tgz", - "integrity": "sha512-NK3y/T7Q/Bw+Z8vsVs9MYIQ5v7gOX7clyrXcwhhIBQhbPgRl6JDrZbusO9qWDhcEus75Tg+VCxtIRfo3H76fpw==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/querystring-builder": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.6.tgz", - "integrity": "sha512-sQe08RunoObe+Usujn9+R2zrLuQERi3CWvRO3BvnoWSYUaIrLKuAIeY7cMeDax6xGyfIP3x/yFWbEKSXvOnvVg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "@smithy/util-uri-escape": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/querystring-parser": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.6.tgz", - "integrity": "sha512-UJKw4LlEkytzz2Wq+uIdHf6qOtFfee/o7ruH0jF5I6UAuU+19r9QV7nU3P/uI0l6+oElRHmG/5cBBcGJrD7Ozg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/service-error-classification": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.6.tgz", - "integrity": "sha512-53SpchU3+DUZrN7J6sBx9tBiCVGzsib2e4sc512Q7K9fpC5zkJKs6Z9s+qbMxSYrkEkle6hnMtrts7XNkMJJMg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/shared-ini-file-loader": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.7.tgz", - "integrity": "sha512-IA4K2qTJYXkF5OfVN4vsY1hfnUZjaslEE8Fsr/gGFza4TAC2A9NfnZuSY2srQIbt9bwtjHiAayrRVgKse4Q7fA==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/signature-v4": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-4.1.4.tgz", - "integrity": "sha512-72MiK7xYukNsnLJI9NqvUHqTu0ziEsfMsYNlWpiJfuGQnCTFKpckThlEatirvcA/LmT1h7rRO+pJD06PYsPu9Q==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/is-array-buffer": "^3.0.0", - "@smithy/protocol-http": "^4.1.3", - "@smithy/types": "^3.4.2", - "@smithy/util-hex-encoding": "^3.0.0", - "@smithy/util-middleware": "^3.0.6", - "@smithy/util-uri-escape": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/smithy-client": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.3.4.tgz", - "integrity": "sha512-NKw/2XxOW/Rg3rzB90HxsmGok5oS6vRzJgMh/JN4BHaOQQ4q5OuX999GmOGxEp730wbpIXIowfKZmIMXkG4v0Q==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/middleware-endpoint": "^3.1.3", - "@smithy/middleware-stack": "^3.0.6", - "@smithy/protocol-http": "^4.1.3", - "@smithy/types": "^3.4.2", - "@smithy/util-stream": "^3.1.8", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/types": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.4.2.tgz", - "integrity": "sha512-tHiFcfcVedVBHpmHUEUHOCCih8iZbIAYn9NvPsNzaPm/237I3imdDdZoOC8c87H5HBAVEa06tTgb+OcSWV9g5w==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/url-parser": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.6.tgz", - "integrity": "sha512-47Op/NU8Opt49KyGpHtVdnmmJMsp2hEwBdyjuFB9M2V5QVOwA7pBhhxKN5z6ztKGrMw76gd8MlbPuzzvaAncuQ==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/querystring-parser": "^3.0.6", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-base64": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz", - "integrity": "sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/util-buffer-from": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-body-length-browser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz", - "integrity": "sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-body-length-node": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz", - "integrity": "sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-buffer-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", - "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/is-array-buffer": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-config-provider": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz", - "integrity": "sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-defaults-mode-browser": { - "version": "3.0.20", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.20.tgz", - "integrity": "sha512-HpYmCpEThQJpCKzwzrGrklhdegRfuXI9keHRrHidbyEMliCdgic6t38MikJeZEkdIcEMhO1g95HIYMzjUzB+xg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/property-provider": "^3.1.6", - "@smithy/smithy-client": "^3.3.4", - "@smithy/types": "^3.4.2", - "bowser": "^2.11.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-defaults-mode-node": { - "version": "3.0.20", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.20.tgz", - "integrity": "sha512-atdsHNtAX0rwTvRRGsrONU0C0XzapH6tI8T1y/OReOvWN7uBwXqqWRft6m8egU2DgeReU0xqT3PHdGCe5VRaaQ==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/config-resolver": "^3.0.8", - "@smithy/credential-provider-imds": "^3.2.3", - "@smithy/node-config-provider": "^3.1.7", - "@smithy/property-provider": "^3.1.6", - "@smithy/smithy-client": "^3.3.4", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-endpoints": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.1.2.tgz", - "integrity": "sha512-FEISzffb4H8DLzGq1g4MuDpcv6CIG15fXoQzDH9SjpRJv6h7J++1STFWWinilG0tQh9H1v2UKWG19Jjr2B16zQ==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/node-config-provider": "^3.1.7", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-hex-encoding": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz", - "integrity": "sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-middleware": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.6.tgz", - "integrity": "sha512-BxbX4aBhI1O9p87/xM+zWy0GzT3CEVcXFPBRDoHAM+pV0eSW156pR+PSYEz0DQHDMYDsYAflC2bQNz2uaDBUZQ==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-retry": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.6.tgz", - "integrity": "sha512-BRZiuF7IwDntAbevqMco67an0Sr9oLQJqqRCsSPZZHYRnehS0LHDAkJk/pSmI7Z8c/1Vet294H7fY2fWUgB+Rg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/service-error-classification": "^3.0.6", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-stream": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.1.8.tgz", - "integrity": "sha512-hoKOqSmb8FD3WLObuB5hwbM7bNIWgcnvkThokTvVq7J5PKjlLUK5qQQcB9zWLHIoSaIlf3VIv2OxZY2wtQjcRQ==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/fetch-http-handler": "^3.2.8", - "@smithy/node-http-handler": "^3.2.3", - "@smithy/types": "^3.4.2", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-buffer-from": "^3.0.0", - "@smithy/util-hex-encoding": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-uri-escape": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz", - "integrity": "sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", - "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/util-buffer-from": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/fast-xml-parser": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", - "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - }, - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - } - ], - "optional": true, - "peer": true, - "dependencies": { - "strnum": "^1.0.5" - }, - "bin": { - "fxparser": "src/cli/cli.js" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "optional": true, - "peer": true - }, - "node_modules/@aws-sdk/client-sso-oidc/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" - ], - "optional": true, - "peer": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@aws-crypto/sha256-browser": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", - "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", - "optional": true, - "peer": true, - "dependencies": { - "@aws-crypto/sha256-js": "^5.2.0", - "@aws-crypto/supports-web-crypto": "^5.2.0", - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-locate-window": "^3.0.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@aws-crypto/sha256-js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", - "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", - "optional": true, - "peer": true, - "dependencies": { - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@aws-crypto/supports-web-crypto": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", - "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@aws-crypto/util": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", - "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", - "optional": true, - "peer": true, - "dependencies": { - "@aws-sdk/types": "^3.222.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.654.0.tgz", - "integrity": "sha512-4Rwx7BVaNaFqmXBDmnOkMbyuIFFbpZ+ru4lr660p45zY1QoNNSalechfoRffcokLFOZO+VWEJkdcorPUUU993w==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/core": "^2.4.3", - "@smithy/node-config-provider": "^3.1.7", - "@smithy/property-provider": "^3.1.6", - "@smithy/protocol-http": "^4.1.3", - "@smithy/signature-v4": "^4.1.3", - "@smithy/smithy-client": "^3.3.2", - "@smithy/types": "^3.4.2", - "@smithy/util-middleware": "^3.0.6", - "fast-xml-parser": "4.4.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.654.0.tgz", - "integrity": "sha512-ydGOrXJxj3x0sJhsXyTmvJVLAE0xxuTWFJihTl67RtaO7VRNtd82I3P3bwoMMaDn5WpmV5mPo8fEUDRlBm3fPg==", - "optional": true, - "peer": true, - "dependencies": { - "@aws-sdk/types": "3.654.0", - "@smithy/node-config-provider": "^3.1.7", - "@smithy/types": "^3.4.2", - "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.6", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/abort-controller": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.1.4.tgz", - "integrity": "sha512-VupaALAQlXViW3/enTf/f5l5JZYSAxoJL7f0nanhNNKnww6DGCg1oYIuNP78KDugnkwthBO6iEcym16HhWV8RQ==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.8.tgz", - "integrity": "sha512-Tv1obAC18XOd2OnDAjSWmmthzx6Pdeh63FbLin8MlPiuJ2ATpKkq0NcNOJFr0dO+JmZXnwu8FQxKJ3TKJ3Hulw==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/node-config-provider": "^3.1.7", - "@smithy/types": "^3.4.2", - "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.6", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.3.tgz", - "integrity": "sha512-VoxMzSzdvkkjMJNE38yQgx4CfnmT+Z+5EUXkg4x7yag93eQkVQgZvN3XBSHC/ylfBbLbAtdu7flTCChX9I+mVg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/node-config-provider": "^3.1.7", - "@smithy/property-provider": "^3.1.6", - "@smithy/types": "^3.4.2", - "@smithy/url-parser": "^3.0.6", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/fetch-http-handler": { - "version": "3.2.8", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.8.tgz", - "integrity": "sha512-Lqe0B8F5RM7zkw//6avq1SJ8AfaRd3ubFUS1eVp5WszV7p6Ne5hQ4dSuMHDpNRPhgTvj4va9Kd/pcVigHEHRow==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/protocol-http": "^4.1.3", - "@smithy/querystring-builder": "^3.0.6", - "@smithy/types": "^3.4.2", - "@smithy/util-base64": "^3.0.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/hash-node": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.6.tgz", - "integrity": "sha512-c/FHEdKK/7DU2z6ZE91L36ahyXWayR3B+FzELjnYq7wH5YqIseM24V+pWCS9kFn1Ln8OFGTf+pyYPiHZuX0s/Q==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "@smithy/util-buffer-from": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/invalid-dependency": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.6.tgz", - "integrity": "sha512-czM7Ioq3s8pIXht7oD+vmgy4Wfb4XavU/k/irO8NdXFFOx7YAlsCCcKOh/lJD1mJSYQqiR7NmpZ9JviryD/7AQ==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/is-array-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", - "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-content-length": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.8.tgz", - "integrity": "sha512-VuyszlSO49WKh3H9/kIO2kf07VUwGV80QRiaDxUfP8P8UKlokz381ETJvwLhwuypBYhLymCYyNhB3fLAGBX2og==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/protocol-http": "^4.1.3", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.3.tgz", - "integrity": "sha512-KeM/OrK8MVFUsoJsmCN0MZMVPjKKLudn13xpgwIMpGTYpA8QZB2Xq5tJ+RE6iu3A6NhOI4VajDTwBsm8pwwrhg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/middleware-serde": "^3.0.6", - "@smithy/node-config-provider": "^3.1.7", - "@smithy/shared-ini-file-loader": "^3.1.7", - "@smithy/types": "^3.4.2", - "@smithy/url-parser": "^3.0.6", - "@smithy/util-middleware": "^3.0.6", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry": { - "version": "3.0.20", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.20.tgz", - "integrity": "sha512-HELCOVwYw5hFDBm69d+LmmGjBCjWnwp/t7SJiHmp+c4u9vgfIaCjdSeIdnlOsLrr5ic5jGTJXvJFUQnd987b/g==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/node-config-provider": "^3.1.7", - "@smithy/protocol-http": "^4.1.3", - "@smithy/service-error-classification": "^3.0.6", - "@smithy/smithy-client": "^3.3.4", - "@smithy/types": "^3.4.2", - "@smithy/util-middleware": "^3.0.6", - "@smithy/util-retry": "^3.0.6", - "tslib": "^2.6.2", - "uuid": "^9.0.1" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-serde": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.6.tgz", - "integrity": "sha512-KKTUSl1MzOM0MAjGbudeaVNtIDo+PpekTBkCNwvfZlKndodrnvRo+00USatiyLOc0ujjO9UydMRu3O9dYML7ag==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-stack": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.6.tgz", - "integrity": "sha512-2c0eSYhTQ8xQqHMcRxLMpadFbTXg6Zla5l0mwNftFCZMQmuhI7EbAJMx6R5eqfuV3YbJ3QGyS3d5uSmrHV8Khg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-config-provider": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.7.tgz", - "integrity": "sha512-g3mfnC3Oo8pOI0dYuPXLtdW1WGVb3bR2tkV21GNkm0ZvQjLTtamXAwCWt/FCb0HGvKt3gHHmF1XerG0ICfalOg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/property-provider": "^3.1.6", - "@smithy/shared-ini-file-loader": "^3.1.7", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.2.3.tgz", - "integrity": "sha512-/gcm5DJ3k1b1zEInzBGAZC8ntJ+jwrz1NcSIu+9dSXd1FfG0G6QgkDI40tt8/WYUbHtLyo8fEqtm2v29koWo/w==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/abort-controller": "^3.1.4", - "@smithy/protocol-http": "^4.1.3", - "@smithy/querystring-builder": "^3.0.6", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/property-provider": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.6.tgz", - "integrity": "sha512-NK3y/T7Q/Bw+Z8vsVs9MYIQ5v7gOX7clyrXcwhhIBQhbPgRl6JDrZbusO9qWDhcEus75Tg+VCxtIRfo3H76fpw==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/querystring-builder": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.6.tgz", - "integrity": "sha512-sQe08RunoObe+Usujn9+R2zrLuQERi3CWvRO3BvnoWSYUaIrLKuAIeY7cMeDax6xGyfIP3x/yFWbEKSXvOnvVg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "@smithy/util-uri-escape": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/querystring-parser": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.6.tgz", - "integrity": "sha512-UJKw4LlEkytzz2Wq+uIdHf6qOtFfee/o7ruH0jF5I6UAuU+19r9QV7nU3P/uI0l6+oElRHmG/5cBBcGJrD7Ozg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/service-error-classification": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.6.tgz", - "integrity": "sha512-53SpchU3+DUZrN7J6sBx9tBiCVGzsib2e4sc512Q7K9fpC5zkJKs6Z9s+qbMxSYrkEkle6hnMtrts7XNkMJJMg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/shared-ini-file-loader": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.7.tgz", - "integrity": "sha512-IA4K2qTJYXkF5OfVN4vsY1hfnUZjaslEE8Fsr/gGFza4TAC2A9NfnZuSY2srQIbt9bwtjHiAayrRVgKse4Q7fA==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/signature-v4": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-4.1.4.tgz", - "integrity": "sha512-72MiK7xYukNsnLJI9NqvUHqTu0ziEsfMsYNlWpiJfuGQnCTFKpckThlEatirvcA/LmT1h7rRO+pJD06PYsPu9Q==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/is-array-buffer": "^3.0.0", - "@smithy/protocol-http": "^4.1.3", - "@smithy/types": "^3.4.2", - "@smithy/util-hex-encoding": "^3.0.0", - "@smithy/util-middleware": "^3.0.6", - "@smithy/util-uri-escape": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.3.4.tgz", - "integrity": "sha512-NKw/2XxOW/Rg3rzB90HxsmGok5oS6vRzJgMh/JN4BHaOQQ4q5OuX999GmOGxEp730wbpIXIowfKZmIMXkG4v0Q==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/middleware-endpoint": "^3.1.3", - "@smithy/middleware-stack": "^3.0.6", - "@smithy/protocol-http": "^4.1.3", - "@smithy/types": "^3.4.2", - "@smithy/util-stream": "^3.1.8", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/types": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.4.2.tgz", - "integrity": "sha512-tHiFcfcVedVBHpmHUEUHOCCih8iZbIAYn9NvPsNzaPm/237I3imdDdZoOC8c87H5HBAVEa06tTgb+OcSWV9g5w==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/url-parser": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.6.tgz", - "integrity": "sha512-47Op/NU8Opt49KyGpHtVdnmmJMsp2hEwBdyjuFB9M2V5QVOwA7pBhhxKN5z6ztKGrMw76gd8MlbPuzzvaAncuQ==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/querystring-parser": "^3.0.6", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-base64": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz", - "integrity": "sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/util-buffer-from": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-body-length-browser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz", - "integrity": "sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-body-length-node": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz", - "integrity": "sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-buffer-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", - "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/is-array-buffer": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-config-provider": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz", - "integrity": "sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-defaults-mode-browser": { - "version": "3.0.20", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.20.tgz", - "integrity": "sha512-HpYmCpEThQJpCKzwzrGrklhdegRfuXI9keHRrHidbyEMliCdgic6t38MikJeZEkdIcEMhO1g95HIYMzjUzB+xg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/property-provider": "^3.1.6", - "@smithy/smithy-client": "^3.3.4", - "@smithy/types": "^3.4.2", - "bowser": "^2.11.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-defaults-mode-node": { - "version": "3.0.20", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.20.tgz", - "integrity": "sha512-atdsHNtAX0rwTvRRGsrONU0C0XzapH6tI8T1y/OReOvWN7uBwXqqWRft6m8egU2DgeReU0xqT3PHdGCe5VRaaQ==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/config-resolver": "^3.0.8", - "@smithy/credential-provider-imds": "^3.2.3", - "@smithy/node-config-provider": "^3.1.7", - "@smithy/property-provider": "^3.1.6", - "@smithy/smithy-client": "^3.3.4", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-endpoints": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.1.2.tgz", - "integrity": "sha512-FEISzffb4H8DLzGq1g4MuDpcv6CIG15fXoQzDH9SjpRJv6h7J++1STFWWinilG0tQh9H1v2UKWG19Jjr2B16zQ==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/node-config-provider": "^3.1.7", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-hex-encoding": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz", - "integrity": "sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-middleware": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.6.tgz", - "integrity": "sha512-BxbX4aBhI1O9p87/xM+zWy0GzT3CEVcXFPBRDoHAM+pV0eSW156pR+PSYEz0DQHDMYDsYAflC2bQNz2uaDBUZQ==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-retry": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.6.tgz", - "integrity": "sha512-BRZiuF7IwDntAbevqMco67an0Sr9oLQJqqRCsSPZZHYRnehS0LHDAkJk/pSmI7Z8c/1Vet294H7fY2fWUgB+Rg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/service-error-classification": "^3.0.6", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.1.8.tgz", - "integrity": "sha512-hoKOqSmb8FD3WLObuB5hwbM7bNIWgcnvkThokTvVq7J5PKjlLUK5qQQcB9zWLHIoSaIlf3VIv2OxZY2wtQjcRQ==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/fetch-http-handler": "^3.2.8", - "@smithy/node-http-handler": "^3.2.3", - "@smithy/types": "^3.4.2", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-buffer-from": "^3.0.0", - "@smithy/util-hex-encoding": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-uri-escape": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz", - "integrity": "sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", - "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/util-buffer-from": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/fast-xml-parser": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", - "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - }, - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - } - ], - "optional": true, - "peer": true, - "dependencies": { - "strnum": "^1.0.5" - }, - "bin": { - "fxparser": "src/cli/cli.js" - } - }, - "node_modules/@aws-sdk/client-sso/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "optional": true, - "peer": true - }, - "node_modules/@aws-sdk/client-sso/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" - ], - "optional": true, - "peer": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@aws-sdk/client-sts": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.654.0.tgz", - "integrity": "sha512-tyHa8jsBy+/NQZFHm6Q2Q09Vi9p3EH4yPy6PU8yPewpi2klreObtrUd0anJa6nzjS9SSuqnlZWsRic3cQ4QwCg==", - "optional": true, - "peer": true, - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.654.0", - "@aws-sdk/core": "3.654.0", - "@aws-sdk/credential-provider-node": "3.654.0", - "@aws-sdk/middleware-host-header": "3.654.0", - "@aws-sdk/middleware-logger": "3.654.0", - "@aws-sdk/middleware-recursion-detection": "3.654.0", - "@aws-sdk/middleware-user-agent": "3.654.0", - "@aws-sdk/region-config-resolver": "3.654.0", - "@aws-sdk/types": "3.654.0", - "@aws-sdk/util-endpoints": "3.654.0", - "@aws-sdk/util-user-agent-browser": "3.654.0", - "@aws-sdk/util-user-agent-node": "3.654.0", - "@smithy/config-resolver": "^3.0.8", - "@smithy/core": "^2.4.3", - "@smithy/fetch-http-handler": "^3.2.7", - "@smithy/hash-node": "^3.0.6", - "@smithy/invalid-dependency": "^3.0.6", - "@smithy/middleware-content-length": "^3.0.8", - "@smithy/middleware-endpoint": "^3.1.3", - "@smithy/middleware-retry": "^3.0.18", - "@smithy/middleware-serde": "^3.0.6", - "@smithy/middleware-stack": "^3.0.6", - "@smithy/node-config-provider": "^3.1.7", - "@smithy/node-http-handler": "^3.2.2", - "@smithy/protocol-http": "^4.1.3", - "@smithy/smithy-client": "^3.3.2", - "@smithy/types": "^3.4.2", - "@smithy/url-parser": "^3.0.6", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-body-length-browser": "^3.0.0", - "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.18", - "@smithy/util-defaults-mode-node": "^3.0.18", - "@smithy/util-endpoints": "^2.1.2", - "@smithy/util-middleware": "^3.0.6", - "@smithy/util-retry": "^3.0.6", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@aws-crypto/sha256-browser": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", - "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", - "optional": true, - "peer": true, - "dependencies": { - "@aws-crypto/sha256-js": "^5.2.0", - "@aws-crypto/supports-web-crypto": "^5.2.0", - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-locate-window": "^3.0.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@aws-crypto/sha256-js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", - "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", - "optional": true, - "peer": true, - "dependencies": { - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@aws-crypto/supports-web-crypto": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", - "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@aws-crypto/util": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", - "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", - "optional": true, - "peer": true, - "dependencies": { - "@aws-sdk/types": "^3.222.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/core": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.654.0.tgz", - "integrity": "sha512-4Rwx7BVaNaFqmXBDmnOkMbyuIFFbpZ+ru4lr660p45zY1QoNNSalechfoRffcokLFOZO+VWEJkdcorPUUU993w==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/core": "^2.4.3", - "@smithy/node-config-provider": "^3.1.7", - "@smithy/property-provider": "^3.1.6", - "@smithy/protocol-http": "^4.1.3", - "@smithy/signature-v4": "^4.1.3", - "@smithy/smithy-client": "^3.3.2", - "@smithy/types": "^3.4.2", - "@smithy/util-middleware": "^3.0.6", - "fast-xml-parser": "4.4.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.654.0.tgz", - "integrity": "sha512-ydGOrXJxj3x0sJhsXyTmvJVLAE0xxuTWFJihTl67RtaO7VRNtd82I3P3bwoMMaDn5WpmV5mPo8fEUDRlBm3fPg==", - "optional": true, - "peer": true, - "dependencies": { - "@aws-sdk/types": "3.654.0", - "@smithy/node-config-provider": "^3.1.7", - "@smithy/types": "^3.4.2", - "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.6", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/abort-controller": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.1.4.tgz", - "integrity": "sha512-VupaALAQlXViW3/enTf/f5l5JZYSAxoJL7f0nanhNNKnww6DGCg1oYIuNP78KDugnkwthBO6iEcym16HhWV8RQ==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/config-resolver": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.8.tgz", - "integrity": "sha512-Tv1obAC18XOd2OnDAjSWmmthzx6Pdeh63FbLin8MlPiuJ2ATpKkq0NcNOJFr0dO+JmZXnwu8FQxKJ3TKJ3Hulw==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/node-config-provider": "^3.1.7", - "@smithy/types": "^3.4.2", - "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.6", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/credential-provider-imds": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.3.tgz", - "integrity": "sha512-VoxMzSzdvkkjMJNE38yQgx4CfnmT+Z+5EUXkg4x7yag93eQkVQgZvN3XBSHC/ylfBbLbAtdu7flTCChX9I+mVg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/node-config-provider": "^3.1.7", - "@smithy/property-provider": "^3.1.6", - "@smithy/types": "^3.4.2", - "@smithy/url-parser": "^3.0.6", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/fetch-http-handler": { - "version": "3.2.8", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.8.tgz", - "integrity": "sha512-Lqe0B8F5RM7zkw//6avq1SJ8AfaRd3ubFUS1eVp5WszV7p6Ne5hQ4dSuMHDpNRPhgTvj4va9Kd/pcVigHEHRow==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/protocol-http": "^4.1.3", - "@smithy/querystring-builder": "^3.0.6", - "@smithy/types": "^3.4.2", - "@smithy/util-base64": "^3.0.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/hash-node": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.6.tgz", - "integrity": "sha512-c/FHEdKK/7DU2z6ZE91L36ahyXWayR3B+FzELjnYq7wH5YqIseM24V+pWCS9kFn1Ln8OFGTf+pyYPiHZuX0s/Q==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "@smithy/util-buffer-from": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/invalid-dependency": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.6.tgz", - "integrity": "sha512-czM7Ioq3s8pIXht7oD+vmgy4Wfb4XavU/k/irO8NdXFFOx7YAlsCCcKOh/lJD1mJSYQqiR7NmpZ9JviryD/7AQ==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/is-array-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", - "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/middleware-content-length": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.8.tgz", - "integrity": "sha512-VuyszlSO49WKh3H9/kIO2kf07VUwGV80QRiaDxUfP8P8UKlokz381ETJvwLhwuypBYhLymCYyNhB3fLAGBX2og==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/protocol-http": "^4.1.3", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/middleware-endpoint": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.3.tgz", - "integrity": "sha512-KeM/OrK8MVFUsoJsmCN0MZMVPjKKLudn13xpgwIMpGTYpA8QZB2Xq5tJ+RE6iu3A6NhOI4VajDTwBsm8pwwrhg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/middleware-serde": "^3.0.6", - "@smithy/node-config-provider": "^3.1.7", - "@smithy/shared-ini-file-loader": "^3.1.7", - "@smithy/types": "^3.4.2", - "@smithy/url-parser": "^3.0.6", - "@smithy/util-middleware": "^3.0.6", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/middleware-retry": { - "version": "3.0.20", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.20.tgz", - "integrity": "sha512-HELCOVwYw5hFDBm69d+LmmGjBCjWnwp/t7SJiHmp+c4u9vgfIaCjdSeIdnlOsLrr5ic5jGTJXvJFUQnd987b/g==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/node-config-provider": "^3.1.7", - "@smithy/protocol-http": "^4.1.3", - "@smithy/service-error-classification": "^3.0.6", - "@smithy/smithy-client": "^3.3.4", - "@smithy/types": "^3.4.2", - "@smithy/util-middleware": "^3.0.6", - "@smithy/util-retry": "^3.0.6", - "tslib": "^2.6.2", - "uuid": "^9.0.1" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/middleware-serde": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.6.tgz", - "integrity": "sha512-KKTUSl1MzOM0MAjGbudeaVNtIDo+PpekTBkCNwvfZlKndodrnvRo+00USatiyLOc0ujjO9UydMRu3O9dYML7ag==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/middleware-stack": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.6.tgz", - "integrity": "sha512-2c0eSYhTQ8xQqHMcRxLMpadFbTXg6Zla5l0mwNftFCZMQmuhI7EbAJMx6R5eqfuV3YbJ3QGyS3d5uSmrHV8Khg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/node-config-provider": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.7.tgz", - "integrity": "sha512-g3mfnC3Oo8pOI0dYuPXLtdW1WGVb3bR2tkV21GNkm0ZvQjLTtamXAwCWt/FCb0HGvKt3gHHmF1XerG0ICfalOg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/property-provider": "^3.1.6", - "@smithy/shared-ini-file-loader": "^3.1.7", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/node-http-handler": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.2.3.tgz", - "integrity": "sha512-/gcm5DJ3k1b1zEInzBGAZC8ntJ+jwrz1NcSIu+9dSXd1FfG0G6QgkDI40tt8/WYUbHtLyo8fEqtm2v29koWo/w==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/abort-controller": "^3.1.4", - "@smithy/protocol-http": "^4.1.3", - "@smithy/querystring-builder": "^3.0.6", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/property-provider": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.6.tgz", - "integrity": "sha512-NK3y/T7Q/Bw+Z8vsVs9MYIQ5v7gOX7clyrXcwhhIBQhbPgRl6JDrZbusO9qWDhcEus75Tg+VCxtIRfo3H76fpw==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/querystring-builder": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.6.tgz", - "integrity": "sha512-sQe08RunoObe+Usujn9+R2zrLuQERi3CWvRO3BvnoWSYUaIrLKuAIeY7cMeDax6xGyfIP3x/yFWbEKSXvOnvVg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "@smithy/util-uri-escape": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/querystring-parser": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.6.tgz", - "integrity": "sha512-UJKw4LlEkytzz2Wq+uIdHf6qOtFfee/o7ruH0jF5I6UAuU+19r9QV7nU3P/uI0l6+oElRHmG/5cBBcGJrD7Ozg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/service-error-classification": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.6.tgz", - "integrity": "sha512-53SpchU3+DUZrN7J6sBx9tBiCVGzsib2e4sc512Q7K9fpC5zkJKs6Z9s+qbMxSYrkEkle6hnMtrts7XNkMJJMg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/shared-ini-file-loader": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.7.tgz", - "integrity": "sha512-IA4K2qTJYXkF5OfVN4vsY1hfnUZjaslEE8Fsr/gGFza4TAC2A9NfnZuSY2srQIbt9bwtjHiAayrRVgKse4Q7fA==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/signature-v4": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-4.1.4.tgz", - "integrity": "sha512-72MiK7xYukNsnLJI9NqvUHqTu0ziEsfMsYNlWpiJfuGQnCTFKpckThlEatirvcA/LmT1h7rRO+pJD06PYsPu9Q==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/is-array-buffer": "^3.0.0", - "@smithy/protocol-http": "^4.1.3", - "@smithy/types": "^3.4.2", - "@smithy/util-hex-encoding": "^3.0.0", - "@smithy/util-middleware": "^3.0.6", - "@smithy/util-uri-escape": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/smithy-client": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.3.4.tgz", - "integrity": "sha512-NKw/2XxOW/Rg3rzB90HxsmGok5oS6vRzJgMh/JN4BHaOQQ4q5OuX999GmOGxEp730wbpIXIowfKZmIMXkG4v0Q==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/middleware-endpoint": "^3.1.3", - "@smithy/middleware-stack": "^3.0.6", - "@smithy/protocol-http": "^4.1.3", - "@smithy/types": "^3.4.2", - "@smithy/util-stream": "^3.1.8", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/types": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.4.2.tgz", - "integrity": "sha512-tHiFcfcVedVBHpmHUEUHOCCih8iZbIAYn9NvPsNzaPm/237I3imdDdZoOC8c87H5HBAVEa06tTgb+OcSWV9g5w==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/url-parser": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.6.tgz", - "integrity": "sha512-47Op/NU8Opt49KyGpHtVdnmmJMsp2hEwBdyjuFB9M2V5QVOwA7pBhhxKN5z6ztKGrMw76gd8MlbPuzzvaAncuQ==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/querystring-parser": "^3.0.6", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/util-base64": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz", - "integrity": "sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/util-buffer-from": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/util-body-length-browser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz", - "integrity": "sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/util-body-length-node": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz", - "integrity": "sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/util-buffer-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", - "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/is-array-buffer": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/util-config-provider": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz", - "integrity": "sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/util-defaults-mode-browser": { - "version": "3.0.20", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.20.tgz", - "integrity": "sha512-HpYmCpEThQJpCKzwzrGrklhdegRfuXI9keHRrHidbyEMliCdgic6t38MikJeZEkdIcEMhO1g95HIYMzjUzB+xg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/property-provider": "^3.1.6", - "@smithy/smithy-client": "^3.3.4", - "@smithy/types": "^3.4.2", - "bowser": "^2.11.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/util-defaults-mode-node": { - "version": "3.0.20", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.20.tgz", - "integrity": "sha512-atdsHNtAX0rwTvRRGsrONU0C0XzapH6tI8T1y/OReOvWN7uBwXqqWRft6m8egU2DgeReU0xqT3PHdGCe5VRaaQ==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/config-resolver": "^3.0.8", - "@smithy/credential-provider-imds": "^3.2.3", - "@smithy/node-config-provider": "^3.1.7", - "@smithy/property-provider": "^3.1.6", - "@smithy/smithy-client": "^3.3.4", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/util-endpoints": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.1.2.tgz", - "integrity": "sha512-FEISzffb4H8DLzGq1g4MuDpcv6CIG15fXoQzDH9SjpRJv6h7J++1STFWWinilG0tQh9H1v2UKWG19Jjr2B16zQ==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/node-config-provider": "^3.1.7", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/util-hex-encoding": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz", - "integrity": "sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/util-middleware": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.6.tgz", - "integrity": "sha512-BxbX4aBhI1O9p87/xM+zWy0GzT3CEVcXFPBRDoHAM+pV0eSW156pR+PSYEz0DQHDMYDsYAflC2bQNz2uaDBUZQ==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/util-retry": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.6.tgz", - "integrity": "sha512-BRZiuF7IwDntAbevqMco67an0Sr9oLQJqqRCsSPZZHYRnehS0LHDAkJk/pSmI7Z8c/1Vet294H7fY2fWUgB+Rg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/service-error-classification": "^3.0.6", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/util-stream": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.1.8.tgz", - "integrity": "sha512-hoKOqSmb8FD3WLObuB5hwbM7bNIWgcnvkThokTvVq7J5PKjlLUK5qQQcB9zWLHIoSaIlf3VIv2OxZY2wtQjcRQ==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/fetch-http-handler": "^3.2.8", - "@smithy/node-http-handler": "^3.2.3", - "@smithy/types": "^3.4.2", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-buffer-from": "^3.0.0", - "@smithy/util-hex-encoding": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/util-uri-escape": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz", - "integrity": "sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/util-utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", - "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/util-buffer-from": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/fast-xml-parser": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", - "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - }, - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - } - ], - "optional": true, - "peer": true, - "dependencies": { - "strnum": "^1.0.5" - }, - "bin": { - "fxparser": "src/cli/cli.js" - } - }, - "node_modules/@aws-sdk/client-sts/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "optional": true, - "peer": true - }, - "node_modules/@aws-sdk/client-sts/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" - ], - "optional": true, - "peer": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@aws-sdk/core": { - "version": "3.451.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.451.0.tgz", - "integrity": "sha512-SamWW2zHEf1ZKe3j1w0Piauryl8BQIlej0TBS18A4ACzhjhWXhCs13bO1S88LvPR5mBFXok3XOT6zPOnKDFktw==", - "dependencies": { - "@smithy/smithy-client": "^2.1.15", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/core/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@aws-sdk/credential-provider-cognito-identity": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.654.0.tgz", - "integrity": "sha512-0aq4Ri9VYjixS7AZKNmuJc/5MlQdfrkgtzHV1TBisoroi/ed1WWnZmQvUFi3ZqRkt1Cvi7oZi6J1gZEfzq8p8g==", - "optional": true, - "peer": true, - "dependencies": { - "@aws-sdk/client-cognito-identity": "3.654.0", - "@aws-sdk/types": "3.654.0", - "@smithy/property-provider": "^3.1.6", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-cognito-identity/node_modules/@smithy/property-provider": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.6.tgz", - "integrity": "sha512-NK3y/T7Q/Bw+Z8vsVs9MYIQ5v7gOX7clyrXcwhhIBQhbPgRl6JDrZbusO9qWDhcEus75Tg+VCxtIRfo3H76fpw==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-cognito-identity/node_modules/@smithy/types": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.4.2.tgz", - "integrity": "sha512-tHiFcfcVedVBHpmHUEUHOCCih8iZbIAYn9NvPsNzaPm/237I3imdDdZoOC8c87H5HBAVEa06tTgb+OcSWV9g5w==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-cognito-identity/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "optional": true, - "peer": true - }, - "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.654.0.tgz", - "integrity": "sha512-kogsx3Ql81JouHS7DkheCDU9MYAvK0AokxjcshDveGmf7BbgbWCA8Fnb9wjQyNDaOXNvkZu8Z8rgkX91z324/w==", - "optional": true, - "peer": true, - "dependencies": { - "@aws-sdk/types": "3.654.0", - "@smithy/property-provider": "^3.1.6", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-env/node_modules/@smithy/property-provider": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.6.tgz", - "integrity": "sha512-NK3y/T7Q/Bw+Z8vsVs9MYIQ5v7gOX7clyrXcwhhIBQhbPgRl6JDrZbusO9qWDhcEus75Tg+VCxtIRfo3H76fpw==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-env/node_modules/@smithy/types": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.4.2.tgz", - "integrity": "sha512-tHiFcfcVedVBHpmHUEUHOCCih8iZbIAYn9NvPsNzaPm/237I3imdDdZoOC8c87H5HBAVEa06tTgb+OcSWV9g5w==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-env/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "optional": true, - "peer": true - }, - "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.654.0.tgz", - "integrity": "sha512-tgmAH4MBi/aDR882lfw48+tDV95ZH3GWc1Eoe6DpNLiM3GN2VfU/cZwuHmi6aq+vAbdIlswBHJ/+va0fOvlyjw==", - "optional": true, - "peer": true, - "dependencies": { - "@aws-sdk/types": "3.654.0", - "@smithy/fetch-http-handler": "^3.2.7", - "@smithy/node-http-handler": "^3.2.2", - "@smithy/property-provider": "^3.1.6", - "@smithy/protocol-http": "^4.1.3", - "@smithy/smithy-client": "^3.3.2", - "@smithy/types": "^3.4.2", - "@smithy/util-stream": "^3.1.6", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/abort-controller": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.1.4.tgz", - "integrity": "sha512-VupaALAQlXViW3/enTf/f5l5JZYSAxoJL7f0nanhNNKnww6DGCg1oYIuNP78KDugnkwthBO6iEcym16HhWV8RQ==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/fetch-http-handler": { - "version": "3.2.8", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.8.tgz", - "integrity": "sha512-Lqe0B8F5RM7zkw//6avq1SJ8AfaRd3ubFUS1eVp5WszV7p6Ne5hQ4dSuMHDpNRPhgTvj4va9Kd/pcVigHEHRow==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/protocol-http": "^4.1.3", - "@smithy/querystring-builder": "^3.0.6", - "@smithy/types": "^3.4.2", - "@smithy/util-base64": "^3.0.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/is-array-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", - "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/middleware-endpoint": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.3.tgz", - "integrity": "sha512-KeM/OrK8MVFUsoJsmCN0MZMVPjKKLudn13xpgwIMpGTYpA8QZB2Xq5tJ+RE6iu3A6NhOI4VajDTwBsm8pwwrhg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/middleware-serde": "^3.0.6", - "@smithy/node-config-provider": "^3.1.7", - "@smithy/shared-ini-file-loader": "^3.1.7", - "@smithy/types": "^3.4.2", - "@smithy/url-parser": "^3.0.6", - "@smithy/util-middleware": "^3.0.6", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/middleware-serde": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.6.tgz", - "integrity": "sha512-KKTUSl1MzOM0MAjGbudeaVNtIDo+PpekTBkCNwvfZlKndodrnvRo+00USatiyLOc0ujjO9UydMRu3O9dYML7ag==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/middleware-stack": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.6.tgz", - "integrity": "sha512-2c0eSYhTQ8xQqHMcRxLMpadFbTXg6Zla5l0mwNftFCZMQmuhI7EbAJMx6R5eqfuV3YbJ3QGyS3d5uSmrHV8Khg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/node-config-provider": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.7.tgz", - "integrity": "sha512-g3mfnC3Oo8pOI0dYuPXLtdW1WGVb3bR2tkV21GNkm0ZvQjLTtamXAwCWt/FCb0HGvKt3gHHmF1XerG0ICfalOg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/property-provider": "^3.1.6", - "@smithy/shared-ini-file-loader": "^3.1.7", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/node-http-handler": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.2.3.tgz", - "integrity": "sha512-/gcm5DJ3k1b1zEInzBGAZC8ntJ+jwrz1NcSIu+9dSXd1FfG0G6QgkDI40tt8/WYUbHtLyo8fEqtm2v29koWo/w==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/abort-controller": "^3.1.4", - "@smithy/protocol-http": "^4.1.3", - "@smithy/querystring-builder": "^3.0.6", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/property-provider": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.6.tgz", - "integrity": "sha512-NK3y/T7Q/Bw+Z8vsVs9MYIQ5v7gOX7clyrXcwhhIBQhbPgRl6JDrZbusO9qWDhcEus75Tg+VCxtIRfo3H76fpw==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/querystring-builder": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.6.tgz", - "integrity": "sha512-sQe08RunoObe+Usujn9+R2zrLuQERi3CWvRO3BvnoWSYUaIrLKuAIeY7cMeDax6xGyfIP3x/yFWbEKSXvOnvVg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "@smithy/util-uri-escape": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/querystring-parser": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.6.tgz", - "integrity": "sha512-UJKw4LlEkytzz2Wq+uIdHf6qOtFfee/o7ruH0jF5I6UAuU+19r9QV7nU3P/uI0l6+oElRHmG/5cBBcGJrD7Ozg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/shared-ini-file-loader": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.7.tgz", - "integrity": "sha512-IA4K2qTJYXkF5OfVN4vsY1hfnUZjaslEE8Fsr/gGFza4TAC2A9NfnZuSY2srQIbt9bwtjHiAayrRVgKse4Q7fA==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/smithy-client": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.3.4.tgz", - "integrity": "sha512-NKw/2XxOW/Rg3rzB90HxsmGok5oS6vRzJgMh/JN4BHaOQQ4q5OuX999GmOGxEp730wbpIXIowfKZmIMXkG4v0Q==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/middleware-endpoint": "^3.1.3", - "@smithy/middleware-stack": "^3.0.6", - "@smithy/protocol-http": "^4.1.3", - "@smithy/types": "^3.4.2", - "@smithy/util-stream": "^3.1.8", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/types": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.4.2.tgz", - "integrity": "sha512-tHiFcfcVedVBHpmHUEUHOCCih8iZbIAYn9NvPsNzaPm/237I3imdDdZoOC8c87H5HBAVEa06tTgb+OcSWV9g5w==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/url-parser": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.6.tgz", - "integrity": "sha512-47Op/NU8Opt49KyGpHtVdnmmJMsp2hEwBdyjuFB9M2V5QVOwA7pBhhxKN5z6ztKGrMw76gd8MlbPuzzvaAncuQ==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/querystring-parser": "^3.0.6", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/util-base64": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz", - "integrity": "sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/util-buffer-from": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/util-buffer-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", - "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/is-array-buffer": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/util-hex-encoding": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz", - "integrity": "sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/util-middleware": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.6.tgz", - "integrity": "sha512-BxbX4aBhI1O9p87/xM+zWy0GzT3CEVcXFPBRDoHAM+pV0eSW156pR+PSYEz0DQHDMYDsYAflC2bQNz2uaDBUZQ==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/util-stream": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.1.8.tgz", - "integrity": "sha512-hoKOqSmb8FD3WLObuB5hwbM7bNIWgcnvkThokTvVq7J5PKjlLUK5qQQcB9zWLHIoSaIlf3VIv2OxZY2wtQjcRQ==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/fetch-http-handler": "^3.2.8", - "@smithy/node-http-handler": "^3.2.3", - "@smithy/types": "^3.4.2", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-buffer-from": "^3.0.0", - "@smithy/util-hex-encoding": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/util-uri-escape": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz", - "integrity": "sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/util-utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", - "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/util-buffer-from": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-http/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "optional": true, - "peer": true - }, - "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.654.0.tgz", - "integrity": "sha512-DKSdaNu2hwdmuvnm9KnA0NLqMWxxmxSOLWjSUSoFIm++wGXUjPrRMFYKvMktaXnPuyf5my8gF/yGbwzPZ8wlTg==", - "optional": true, - "peer": true, - "dependencies": { - "@aws-sdk/credential-provider-env": "3.654.0", - "@aws-sdk/credential-provider-http": "3.654.0", - "@aws-sdk/credential-provider-process": "3.654.0", - "@aws-sdk/credential-provider-sso": "3.654.0", - "@aws-sdk/credential-provider-web-identity": "3.654.0", - "@aws-sdk/types": "3.654.0", - "@smithy/credential-provider-imds": "^3.2.3", - "@smithy/property-provider": "^3.1.6", - "@smithy/shared-ini-file-loader": "^3.1.7", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.654.0" - } - }, - "node_modules/@aws-sdk/credential-provider-ini/node_modules/@smithy/credential-provider-imds": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.3.tgz", - "integrity": "sha512-VoxMzSzdvkkjMJNE38yQgx4CfnmT+Z+5EUXkg4x7yag93eQkVQgZvN3XBSHC/ylfBbLbAtdu7flTCChX9I+mVg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/node-config-provider": "^3.1.7", - "@smithy/property-provider": "^3.1.6", - "@smithy/types": "^3.4.2", - "@smithy/url-parser": "^3.0.6", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-ini/node_modules/@smithy/node-config-provider": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.7.tgz", - "integrity": "sha512-g3mfnC3Oo8pOI0dYuPXLtdW1WGVb3bR2tkV21GNkm0ZvQjLTtamXAwCWt/FCb0HGvKt3gHHmF1XerG0ICfalOg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/property-provider": "^3.1.6", - "@smithy/shared-ini-file-loader": "^3.1.7", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-ini/node_modules/@smithy/property-provider": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.6.tgz", - "integrity": "sha512-NK3y/T7Q/Bw+Z8vsVs9MYIQ5v7gOX7clyrXcwhhIBQhbPgRl6JDrZbusO9qWDhcEus75Tg+VCxtIRfo3H76fpw==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-ini/node_modules/@smithy/querystring-parser": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.6.tgz", - "integrity": "sha512-UJKw4LlEkytzz2Wq+uIdHf6qOtFfee/o7ruH0jF5I6UAuU+19r9QV7nU3P/uI0l6+oElRHmG/5cBBcGJrD7Ozg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-ini/node_modules/@smithy/shared-ini-file-loader": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.7.tgz", - "integrity": "sha512-IA4K2qTJYXkF5OfVN4vsY1hfnUZjaslEE8Fsr/gGFza4TAC2A9NfnZuSY2srQIbt9bwtjHiAayrRVgKse4Q7fA==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-ini/node_modules/@smithy/types": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.4.2.tgz", - "integrity": "sha512-tHiFcfcVedVBHpmHUEUHOCCih8iZbIAYn9NvPsNzaPm/237I3imdDdZoOC8c87H5HBAVEa06tTgb+OcSWV9g5w==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-ini/node_modules/@smithy/url-parser": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.6.tgz", - "integrity": "sha512-47Op/NU8Opt49KyGpHtVdnmmJMsp2hEwBdyjuFB9M2V5QVOwA7pBhhxKN5z6ztKGrMw76gd8MlbPuzzvaAncuQ==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/querystring-parser": "^3.0.6", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/credential-provider-ini/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "optional": true, - "peer": true - }, - "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.654.0.tgz", - "integrity": "sha512-wPV7CNYaXDEc+SS+3R0v8SZwkHRUE1z2k2j1d49tH5QBDT4tb/k2V/biXWkwSk3hbR+IMWXmuhJDv/5lybhIvg==", - "optional": true, - "peer": true, - "dependencies": { - "@aws-sdk/credential-provider-env": "3.654.0", - "@aws-sdk/credential-provider-http": "3.654.0", - "@aws-sdk/credential-provider-ini": "3.654.0", - "@aws-sdk/credential-provider-process": "3.654.0", - "@aws-sdk/credential-provider-sso": "3.654.0", - "@aws-sdk/credential-provider-web-identity": "3.654.0", - "@aws-sdk/types": "3.654.0", - "@smithy/credential-provider-imds": "^3.2.3", - "@smithy/property-provider": "^3.1.6", - "@smithy/shared-ini-file-loader": "^3.1.7", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-node/node_modules/@smithy/credential-provider-imds": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.3.tgz", - "integrity": "sha512-VoxMzSzdvkkjMJNE38yQgx4CfnmT+Z+5EUXkg4x7yag93eQkVQgZvN3XBSHC/ylfBbLbAtdu7flTCChX9I+mVg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/node-config-provider": "^3.1.7", - "@smithy/property-provider": "^3.1.6", - "@smithy/types": "^3.4.2", - "@smithy/url-parser": "^3.0.6", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-node/node_modules/@smithy/node-config-provider": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.7.tgz", - "integrity": "sha512-g3mfnC3Oo8pOI0dYuPXLtdW1WGVb3bR2tkV21GNkm0ZvQjLTtamXAwCWt/FCb0HGvKt3gHHmF1XerG0ICfalOg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/property-provider": "^3.1.6", - "@smithy/shared-ini-file-loader": "^3.1.7", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-node/node_modules/@smithy/property-provider": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.6.tgz", - "integrity": "sha512-NK3y/T7Q/Bw+Z8vsVs9MYIQ5v7gOX7clyrXcwhhIBQhbPgRl6JDrZbusO9qWDhcEus75Tg+VCxtIRfo3H76fpw==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-node/node_modules/@smithy/querystring-parser": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.6.tgz", - "integrity": "sha512-UJKw4LlEkytzz2Wq+uIdHf6qOtFfee/o7ruH0jF5I6UAuU+19r9QV7nU3P/uI0l6+oElRHmG/5cBBcGJrD7Ozg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-node/node_modules/@smithy/shared-ini-file-loader": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.7.tgz", - "integrity": "sha512-IA4K2qTJYXkF5OfVN4vsY1hfnUZjaslEE8Fsr/gGFza4TAC2A9NfnZuSY2srQIbt9bwtjHiAayrRVgKse4Q7fA==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-node/node_modules/@smithy/types": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.4.2.tgz", - "integrity": "sha512-tHiFcfcVedVBHpmHUEUHOCCih8iZbIAYn9NvPsNzaPm/237I3imdDdZoOC8c87H5HBAVEa06tTgb+OcSWV9g5w==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-node/node_modules/@smithy/url-parser": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.6.tgz", - "integrity": "sha512-47Op/NU8Opt49KyGpHtVdnmmJMsp2hEwBdyjuFB9M2V5QVOwA7pBhhxKN5z6ztKGrMw76gd8MlbPuzzvaAncuQ==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/querystring-parser": "^3.0.6", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/credential-provider-node/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "optional": true, - "peer": true - }, - "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.654.0.tgz", - "integrity": "sha512-PmQoo8sZ9Q2Ow8OMzK++Z9lI7MsRUG7sNq3E72DVA215dhtTICTDQwGlXH2AAmIp7n+G9LLRds+4wo2ehG4mkg==", - "optional": true, - "peer": true, - "dependencies": { - "@aws-sdk/types": "3.654.0", - "@smithy/property-provider": "^3.1.6", - "@smithy/shared-ini-file-loader": "^3.1.7", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-process/node_modules/@smithy/property-provider": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.6.tgz", - "integrity": "sha512-NK3y/T7Q/Bw+Z8vsVs9MYIQ5v7gOX7clyrXcwhhIBQhbPgRl6JDrZbusO9qWDhcEus75Tg+VCxtIRfo3H76fpw==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-process/node_modules/@smithy/shared-ini-file-loader": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.7.tgz", - "integrity": "sha512-IA4K2qTJYXkF5OfVN4vsY1hfnUZjaslEE8Fsr/gGFza4TAC2A9NfnZuSY2srQIbt9bwtjHiAayrRVgKse4Q7fA==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-process/node_modules/@smithy/types": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.4.2.tgz", - "integrity": "sha512-tHiFcfcVedVBHpmHUEUHOCCih8iZbIAYn9NvPsNzaPm/237I3imdDdZoOC8c87H5HBAVEa06tTgb+OcSWV9g5w==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-process/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "optional": true, - "peer": true - }, - "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.654.0.tgz", - "integrity": "sha512-7GFme6fWEdA/XYKzZPOAdj/jS6fMBy1NdSIZsDXikS0v9jU+ZzHrAaWt13YLzHyjgxB9Sg9id9ncdY1IiubQXQ==", - "optional": true, - "peer": true, - "dependencies": { - "@aws-sdk/client-sso": "3.654.0", - "@aws-sdk/token-providers": "3.654.0", - "@aws-sdk/types": "3.654.0", - "@smithy/property-provider": "^3.1.6", - "@smithy/shared-ini-file-loader": "^3.1.7", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-sso/node_modules/@smithy/property-provider": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.6.tgz", - "integrity": "sha512-NK3y/T7Q/Bw+Z8vsVs9MYIQ5v7gOX7clyrXcwhhIBQhbPgRl6JDrZbusO9qWDhcEus75Tg+VCxtIRfo3H76fpw==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-sso/node_modules/@smithy/shared-ini-file-loader": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.7.tgz", - "integrity": "sha512-IA4K2qTJYXkF5OfVN4vsY1hfnUZjaslEE8Fsr/gGFza4TAC2A9NfnZuSY2srQIbt9bwtjHiAayrRVgKse4Q7fA==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-sso/node_modules/@smithy/types": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.4.2.tgz", - "integrity": "sha512-tHiFcfcVedVBHpmHUEUHOCCih8iZbIAYn9NvPsNzaPm/237I3imdDdZoOC8c87H5HBAVEa06tTgb+OcSWV9g5w==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-sso/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "optional": true, - "peer": true - }, - "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.654.0.tgz", - "integrity": "sha512-6a2g9gMtZToqSu+CusjNK5zvbLJahQ9di7buO3iXgbizXpLXU1rnawCpWxwslMpT5fLgMSKDnKDrr6wdEk7jSw==", - "optional": true, - "peer": true, - "dependencies": { - "@aws-sdk/types": "3.654.0", - "@smithy/property-provider": "^3.1.6", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.654.0" - } - }, - "node_modules/@aws-sdk/credential-provider-web-identity/node_modules/@smithy/property-provider": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.6.tgz", - "integrity": "sha512-NK3y/T7Q/Bw+Z8vsVs9MYIQ5v7gOX7clyrXcwhhIBQhbPgRl6JDrZbusO9qWDhcEus75Tg+VCxtIRfo3H76fpw==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-web-identity/node_modules/@smithy/types": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.4.2.tgz", - "integrity": "sha512-tHiFcfcVedVBHpmHUEUHOCCih8iZbIAYn9NvPsNzaPm/237I3imdDdZoOC8c87H5HBAVEa06tTgb+OcSWV9g5w==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-web-identity/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "optional": true, - "peer": true - }, - "node_modules/@aws-sdk/credential-providers": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.654.0.tgz", - "integrity": "sha512-e9ZDKnmXOMOQW9e3RQyaLUcerZFzHCickRSPoSxAsGKnrhH/ltIm9Od3uyVILl1TGJoOCxVDMBE9nPfl+vNRzQ==", - "optional": true, - "peer": true, - "dependencies": { - "@aws-sdk/client-cognito-identity": "3.654.0", - "@aws-sdk/client-sso": "3.654.0", - "@aws-sdk/client-sts": "3.654.0", - "@aws-sdk/credential-provider-cognito-identity": "3.654.0", - "@aws-sdk/credential-provider-env": "3.654.0", - "@aws-sdk/credential-provider-http": "3.654.0", - "@aws-sdk/credential-provider-ini": "3.654.0", - "@aws-sdk/credential-provider-node": "3.654.0", - "@aws-sdk/credential-provider-process": "3.654.0", - "@aws-sdk/credential-provider-sso": "3.654.0", - "@aws-sdk/credential-provider-web-identity": "3.654.0", - "@aws-sdk/types": "3.654.0", - "@smithy/credential-provider-imds": "^3.2.3", - "@smithy/property-provider": "^3.1.6", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/credential-provider-imds": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.3.tgz", - "integrity": "sha512-VoxMzSzdvkkjMJNE38yQgx4CfnmT+Z+5EUXkg4x7yag93eQkVQgZvN3XBSHC/ylfBbLbAtdu7flTCChX9I+mVg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/node-config-provider": "^3.1.7", - "@smithy/property-provider": "^3.1.6", - "@smithy/types": "^3.4.2", - "@smithy/url-parser": "^3.0.6", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/node-config-provider": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.7.tgz", - "integrity": "sha512-g3mfnC3Oo8pOI0dYuPXLtdW1WGVb3bR2tkV21GNkm0ZvQjLTtamXAwCWt/FCb0HGvKt3gHHmF1XerG0ICfalOg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/property-provider": "^3.1.6", - "@smithy/shared-ini-file-loader": "^3.1.7", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/property-provider": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.6.tgz", - "integrity": "sha512-NK3y/T7Q/Bw+Z8vsVs9MYIQ5v7gOX7clyrXcwhhIBQhbPgRl6JDrZbusO9qWDhcEus75Tg+VCxtIRfo3H76fpw==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/querystring-parser": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.6.tgz", - "integrity": "sha512-UJKw4LlEkytzz2Wq+uIdHf6qOtFfee/o7ruH0jF5I6UAuU+19r9QV7nU3P/uI0l6+oElRHmG/5cBBcGJrD7Ozg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/shared-ini-file-loader": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.7.tgz", - "integrity": "sha512-IA4K2qTJYXkF5OfVN4vsY1hfnUZjaslEE8Fsr/gGFza4TAC2A9NfnZuSY2srQIbt9bwtjHiAayrRVgKse4Q7fA==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/types": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.4.2.tgz", - "integrity": "sha512-tHiFcfcVedVBHpmHUEUHOCCih8iZbIAYn9NvPsNzaPm/237I3imdDdZoOC8c87H5HBAVEa06tTgb+OcSWV9g5w==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/url-parser": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.6.tgz", - "integrity": "sha512-47Op/NU8Opt49KyGpHtVdnmmJMsp2hEwBdyjuFB9M2V5QVOwA7pBhhxKN5z6ztKGrMw76gd8MlbPuzzvaAncuQ==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/querystring-parser": "^3.0.6", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/credential-providers/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "optional": true, - "peer": true - }, - "node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.451.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.451.0.tgz", - "integrity": "sha512-KWyZ1JGnYz2QbHuJtYTP1BVnMOfVopR8rP8dTinVb/JR5HfAYz4imICJlJUbOYRjN7wpA3PrRI8dNRjrSBjWJg==", - "dependencies": { - "@aws-sdk/types": "3.451.0", - "@aws-sdk/util-arn-parser": "3.310.0", - "@smithy/node-config-provider": "^2.1.5", - "@smithy/protocol-http": "^3.0.9", - "@smithy/types": "^2.5.0", - "@smithy/util-config-provider": "^2.0.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-bucket-endpoint/node_modules/@aws-sdk/types": { - "version": "3.451.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.451.0.tgz", - "integrity": "sha512-rhK+qeYwCIs+laJfWCcrYEjay2FR/9VABZJ2NRM89jV/fKqGVQR52E5DQqrI+oEIL5JHMhhnr4N4fyECMS35lw==", - "dependencies": { - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-bucket-endpoint/node_modules/@smithy/protocol-http": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.0.10.tgz", - "integrity": "sha512-6+tjNk7rXW7YTeGo9qwxXj/2BFpJTe37kTj3EnZCoX/nH+NP/WLA7O83fz8XhkGqsaAhLUPo/bB12vvd47nsmg==", - "dependencies": { - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-bucket-endpoint/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@aws-sdk/middleware-expect-continue": { - "version": "3.451.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.451.0.tgz", - "integrity": "sha512-vwG8o2Uk6biLDlOZnqXemsO4dS2HvrprUdxyouwu6hlzLFskg8nL122butn19JqXJKgcVLuSSLzT+xwqBWy2Rg==", - "dependencies": { - "@aws-sdk/types": "3.451.0", - "@smithy/protocol-http": "^3.0.9", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-expect-continue/node_modules/@aws-sdk/types": { - "version": "3.451.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.451.0.tgz", - "integrity": "sha512-rhK+qeYwCIs+laJfWCcrYEjay2FR/9VABZJ2NRM89jV/fKqGVQR52E5DQqrI+oEIL5JHMhhnr4N4fyECMS35lw==", - "dependencies": { - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-expect-continue/node_modules/@smithy/protocol-http": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.0.10.tgz", - "integrity": "sha512-6+tjNk7rXW7YTeGo9qwxXj/2BFpJTe37kTj3EnZCoX/nH+NP/WLA7O83fz8XhkGqsaAhLUPo/bB12vvd47nsmg==", - "dependencies": { - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-expect-continue/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.451.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.451.0.tgz", - "integrity": "sha512-eOkpcC2zgAvqs1w7Yp5nsk9LBIj6qLU5kaZuZEBOiFbNKIrTnPo6dQuhgvDcKHD6Y5W/cUjSBiFMs/ROb5aoug==", - "dependencies": { - "@aws-crypto/crc32": "3.0.0", - "@aws-crypto/crc32c": "3.0.0", - "@aws-sdk/types": "3.451.0", - "@smithy/is-array-buffer": "^2.0.0", - "@smithy/protocol-http": "^3.0.9", - "@smithy/types": "^2.5.0", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@aws-sdk/types": { - "version": "3.451.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.451.0.tgz", - "integrity": "sha512-rhK+qeYwCIs+laJfWCcrYEjay2FR/9VABZJ2NRM89jV/fKqGVQR52E5DQqrI+oEIL5JHMhhnr4N4fyECMS35lw==", - "dependencies": { - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/protocol-http": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.0.10.tgz", - "integrity": "sha512-6+tjNk7rXW7YTeGo9qwxXj/2BFpJTe37kTj3EnZCoX/nH+NP/WLA7O83fz8XhkGqsaAhLUPo/bB12vvd47nsmg==", - "dependencies": { - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.654.0.tgz", - "integrity": "sha512-rxGgVHWKp8U2ubMv+t+vlIk7QYUaRCHaVpmUlJv0Wv6Q0KeO9a42T9FxHphjOTlCGQOLcjCreL9CF8Qhtb4mdQ==", - "optional": true, - "peer": true, - "dependencies": { - "@aws-sdk/types": "3.654.0", - "@smithy/protocol-http": "^4.1.3", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/middleware-host-header/node_modules/@smithy/types": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.4.2.tgz", - "integrity": "sha512-tHiFcfcVedVBHpmHUEUHOCCih8iZbIAYn9NvPsNzaPm/237I3imdDdZoOC8c87H5HBAVEa06tTgb+OcSWV9g5w==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/middleware-host-header/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "optional": true, - "peer": true - }, - "node_modules/@aws-sdk/middleware-location-constraint": { - "version": "3.451.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.451.0.tgz", - "integrity": "sha512-R4U2G7mybP0BMiQBJWTcB47g49F4PSXTiCsvMDp5WOEhpWvGQuO1ZIhTxCl5s5lgTSne063Os8W6KSdK2yG2TQ==", - "dependencies": { - "@aws-sdk/types": "3.451.0", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-location-constraint/node_modules/@aws-sdk/types": { - "version": "3.451.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.451.0.tgz", - "integrity": "sha512-rhK+qeYwCIs+laJfWCcrYEjay2FR/9VABZJ2NRM89jV/fKqGVQR52E5DQqrI+oEIL5JHMhhnr4N4fyECMS35lw==", - "dependencies": { - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-location-constraint/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@aws-sdk/middleware-logger": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.654.0.tgz", - "integrity": "sha512-OQYb+nWlmASyXfRb989pwkJ9EVUMP1CrKn2eyTk3usl20JZmKo2Vjis6I0tLUkMSxMhnBJJlQKyWkRpD/u1FVg==", - "optional": true, - "peer": true, - "dependencies": { - "@aws-sdk/types": "3.654.0", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/middleware-logger/node_modules/@smithy/types": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.4.2.tgz", - "integrity": "sha512-tHiFcfcVedVBHpmHUEUHOCCih8iZbIAYn9NvPsNzaPm/237I3imdDdZoOC8c87H5HBAVEa06tTgb+OcSWV9g5w==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/middleware-logger/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "optional": true, - "peer": true - }, - "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.654.0.tgz", - "integrity": "sha512-gKSomgltKVmsT8sC6W7CrADZ4GHwX9epk3GcH6QhebVO3LA9LRbkL3TwOPUXakxxOLLUTYdOZLIOtFf7iH00lg==", - "optional": true, - "peer": true, - "dependencies": { - "@aws-sdk/types": "3.654.0", - "@smithy/protocol-http": "^4.1.3", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/middleware-recursion-detection/node_modules/@smithy/types": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.4.2.tgz", - "integrity": "sha512-tHiFcfcVedVBHpmHUEUHOCCih8iZbIAYn9NvPsNzaPm/237I3imdDdZoOC8c87H5HBAVEa06tTgb+OcSWV9g5w==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/middleware-recursion-detection/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "optional": true, - "peer": true - }, - "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.451.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.451.0.tgz", - "integrity": "sha512-XF4Cw8HrYUwGLKOqKtWs6ss1WXoxvQUcgGLACGSqn9a0p51446NiS5671x7qJUsfBuygdKlIKcOc8pPr9a+5Ow==", - "dependencies": { - "@aws-sdk/types": "3.451.0", - "@aws-sdk/util-arn-parser": "3.310.0", - "@smithy/protocol-http": "^3.0.9", - "@smithy/smithy-client": "^2.1.15", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@aws-sdk/types": { - "version": "3.451.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.451.0.tgz", - "integrity": "sha512-rhK+qeYwCIs+laJfWCcrYEjay2FR/9VABZJ2NRM89jV/fKqGVQR52E5DQqrI+oEIL5JHMhhnr4N4fyECMS35lw==", - "dependencies": { - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/protocol-http": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.0.10.tgz", - "integrity": "sha512-6+tjNk7rXW7YTeGo9qwxXj/2BFpJTe37kTj3EnZCoX/nH+NP/WLA7O83fz8XhkGqsaAhLUPo/bB12vvd47nsmg==", - "dependencies": { - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@aws-sdk/middleware-ssec": { - "version": "3.451.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.451.0.tgz", - "integrity": "sha512-hDkeBUiRsvuDbvsPha0/uJHE680WDzjAOoE6ZnLBoWsw7ry+Bw1ULMj0sCmpBVrQ7Gpivi/6zbezhClVmt3ITw==", - "dependencies": { - "@aws-sdk/types": "3.451.0", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-ssec/node_modules/@aws-sdk/types": { - "version": "3.451.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.451.0.tgz", - "integrity": "sha512-rhK+qeYwCIs+laJfWCcrYEjay2FR/9VABZJ2NRM89jV/fKqGVQR52E5DQqrI+oEIL5JHMhhnr4N4fyECMS35lw==", - "dependencies": { - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-ssec/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.654.0.tgz", - "integrity": "sha512-liCcqPAyRsr53cy2tYu4qeH4MMN0eh9g6k56XzI5xd4SghXH5YWh4qOYAlQ8T66ZV4nPMtD8GLtLXGzsH8moFg==", - "optional": true, - "peer": true, - "dependencies": { - "@aws-sdk/types": "3.654.0", - "@aws-sdk/util-endpoints": "3.654.0", - "@smithy/protocol-http": "^4.1.3", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/middleware-user-agent/node_modules/@smithy/types": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.4.2.tgz", - "integrity": "sha512-tHiFcfcVedVBHpmHUEUHOCCih8iZbIAYn9NvPsNzaPm/237I3imdDdZoOC8c87H5HBAVEa06tTgb+OcSWV9g5w==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/middleware-user-agent/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "optional": true, - "peer": true - }, - "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.451.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.451.0.tgz", - "integrity": "sha512-3iMf4OwzrFb4tAAmoROXaiORUk2FvSejnHIw/XHvf/jjR4EqGGF95NZP/n/MeFZMizJWVssrwS412GmoEyoqhg==", - "dependencies": { - "@smithy/node-config-provider": "^2.1.5", - "@smithy/types": "^2.5.0", - "@smithy/util-config-provider": "^2.0.0", - "@smithy/util-middleware": "^2.0.6", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/region-config-resolver/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.451.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.451.0.tgz", - "integrity": "sha512-qQKY7/txeNUTLyRL3WxUWEwaZ5sf76EIZgu9kLaR96cAYSxwQi/qQB3ijbfD6u7sJIA8aROMxeYK0VmRsQg0CA==", - "dependencies": { - "@aws-sdk/types": "3.451.0", - "@smithy/protocol-http": "^3.0.9", - "@smithy/signature-v4": "^2.0.0", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/signature-v4-multi-region/node_modules/@aws-sdk/types": { - "version": "3.451.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.451.0.tgz", - "integrity": "sha512-rhK+qeYwCIs+laJfWCcrYEjay2FR/9VABZJ2NRM89jV/fKqGVQR52E5DQqrI+oEIL5JHMhhnr4N4fyECMS35lw==", - "dependencies": { - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/signature-v4-multi-region/node_modules/@smithy/protocol-http": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.0.10.tgz", - "integrity": "sha512-6+tjNk7rXW7YTeGo9qwxXj/2BFpJTe37kTj3EnZCoX/nH+NP/WLA7O83fz8XhkGqsaAhLUPo/bB12vvd47nsmg==", - "dependencies": { - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/signature-v4-multi-region/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@aws-sdk/token-providers": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.654.0.tgz", - "integrity": "sha512-D8GeJYmvbfWkQDtTB4owmIobSMexZel0fOoetwvgCQ/7L8VPph3Q2bn1TRRIXvH7wdt6DcDxA3tKMHPBkT3GlA==", - "optional": true, - "peer": true, - "dependencies": { - "@aws-sdk/types": "3.654.0", - "@smithy/property-provider": "^3.1.6", - "@smithy/shared-ini-file-loader": "^3.1.7", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sso-oidc": "^3.654.0" - } - }, - "node_modules/@aws-sdk/token-providers/node_modules/@smithy/property-provider": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.6.tgz", - "integrity": "sha512-NK3y/T7Q/Bw+Z8vsVs9MYIQ5v7gOX7clyrXcwhhIBQhbPgRl6JDrZbusO9qWDhcEus75Tg+VCxtIRfo3H76fpw==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/token-providers/node_modules/@smithy/shared-ini-file-loader": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.7.tgz", - "integrity": "sha512-IA4K2qTJYXkF5OfVN4vsY1hfnUZjaslEE8Fsr/gGFza4TAC2A9NfnZuSY2srQIbt9bwtjHiAayrRVgKse4Q7fA==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/token-providers/node_modules/@smithy/types": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.4.2.tgz", - "integrity": "sha512-tHiFcfcVedVBHpmHUEUHOCCih8iZbIAYn9NvPsNzaPm/237I3imdDdZoOC8c87H5HBAVEa06tTgb+OcSWV9g5w==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/token-providers/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "optional": true, - "peer": true - }, - "node_modules/@aws-sdk/types": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", - "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/types/node_modules/@smithy/types": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.4.2.tgz", - "integrity": "sha512-tHiFcfcVedVBHpmHUEUHOCCih8iZbIAYn9NvPsNzaPm/237I3imdDdZoOC8c87H5HBAVEa06tTgb+OcSWV9g5w==", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/types/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@aws-sdk/util-arn-parser": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.310.0.tgz", - "integrity": "sha512-jL8509owp/xB9+Or0pvn3Fe+b94qfklc2yPowZZIFAkFcCSIdkIglz18cPDWnYAcy9JGewpMS1COXKIUhZkJsA==", - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/util-arn-parser/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@aws-sdk/util-endpoints": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.654.0.tgz", - "integrity": "sha512-i902fcBknHs0Irgdpi62+QMvzxE+bczvILXigYrlHL4+PiEnlMVpni5L5W1qCkNZXf8AaMrSBuR1NZAGp6UOUw==", - "optional": true, - "peer": true, - "dependencies": { - "@aws-sdk/types": "3.654.0", - "@smithy/types": "^3.4.2", - "@smithy/util-endpoints": "^2.1.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/util-endpoints/node_modules/@smithy/node-config-provider": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.7.tgz", - "integrity": "sha512-g3mfnC3Oo8pOI0dYuPXLtdW1WGVb3bR2tkV21GNkm0ZvQjLTtamXAwCWt/FCb0HGvKt3gHHmF1XerG0ICfalOg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/property-provider": "^3.1.6", - "@smithy/shared-ini-file-loader": "^3.1.7", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/util-endpoints/node_modules/@smithy/property-provider": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.6.tgz", - "integrity": "sha512-NK3y/T7Q/Bw+Z8vsVs9MYIQ5v7gOX7clyrXcwhhIBQhbPgRl6JDrZbusO9qWDhcEus75Tg+VCxtIRfo3H76fpw==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/util-endpoints/node_modules/@smithy/shared-ini-file-loader": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.7.tgz", - "integrity": "sha512-IA4K2qTJYXkF5OfVN4vsY1hfnUZjaslEE8Fsr/gGFza4TAC2A9NfnZuSY2srQIbt9bwtjHiAayrRVgKse4Q7fA==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/util-endpoints/node_modules/@smithy/types": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.4.2.tgz", - "integrity": "sha512-tHiFcfcVedVBHpmHUEUHOCCih8iZbIAYn9NvPsNzaPm/237I3imdDdZoOC8c87H5HBAVEa06tTgb+OcSWV9g5w==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/util-endpoints/node_modules/@smithy/util-endpoints": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.1.2.tgz", - "integrity": "sha512-FEISzffb4H8DLzGq1g4MuDpcv6CIG15fXoQzDH9SjpRJv6h7J++1STFWWinilG0tQh9H1v2UKWG19Jjr2B16zQ==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/node-config-provider": "^3.1.7", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/util-endpoints/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "optional": true, - "peer": true - }, - "node_modules/@aws-sdk/util-locate-window": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.310.0.tgz", - "integrity": "sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==", - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/util-locate-window/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.654.0.tgz", - "integrity": "sha512-ykYAJqvnxLt7wfrqya28wuH3/7NdrwzfiFd7NqEVQf7dXVxL5RPEpD7DxjcyQo3DsHvvdUvGZVaQhozycn1pzA==", - "optional": true, - "peer": true, - "dependencies": { - "@aws-sdk/types": "3.654.0", - "@smithy/types": "^3.4.2", - "bowser": "^2.11.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/util-user-agent-browser/node_modules/@smithy/types": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.4.2.tgz", - "integrity": "sha512-tHiFcfcVedVBHpmHUEUHOCCih8iZbIAYn9NvPsNzaPm/237I3imdDdZoOC8c87H5HBAVEa06tTgb+OcSWV9g5w==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/util-user-agent-browser/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "optional": true, - "peer": true - }, - "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.654.0.tgz", - "integrity": "sha512-a0ojjdBN6pqv6gB4H/QPPSfhs7mFtlVwnmKCM/QrTaFzN0U810PJ1BST3lBx5sa23I5jWHGaoFY+5q65C3clLQ==", - "optional": true, - "peer": true, - "dependencies": { - "@aws-sdk/types": "3.654.0", - "@smithy/node-config-provider": "^3.1.7", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } - } - }, - "node_modules/@aws-sdk/util-user-agent-node/node_modules/@smithy/node-config-provider": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.7.tgz", - "integrity": "sha512-g3mfnC3Oo8pOI0dYuPXLtdW1WGVb3bR2tkV21GNkm0ZvQjLTtamXAwCWt/FCb0HGvKt3gHHmF1XerG0ICfalOg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/property-provider": "^3.1.6", - "@smithy/shared-ini-file-loader": "^3.1.7", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/util-user-agent-node/node_modules/@smithy/property-provider": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.6.tgz", - "integrity": "sha512-NK3y/T7Q/Bw+Z8vsVs9MYIQ5v7gOX7clyrXcwhhIBQhbPgRl6JDrZbusO9qWDhcEus75Tg+VCxtIRfo3H76fpw==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/util-user-agent-node/node_modules/@smithy/shared-ini-file-loader": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.7.tgz", - "integrity": "sha512-IA4K2qTJYXkF5OfVN4vsY1hfnUZjaslEE8Fsr/gGFza4TAC2A9NfnZuSY2srQIbt9bwtjHiAayrRVgKse4Q7fA==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/util-user-agent-node/node_modules/@smithy/types": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.4.2.tgz", - "integrity": "sha512-tHiFcfcVedVBHpmHUEUHOCCih8iZbIAYn9NvPsNzaPm/237I3imdDdZoOC8c87H5HBAVEa06tTgb+OcSWV9g5w==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/util-user-agent-node/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "optional": true, - "peer": true - }, - "node_modules/@aws-sdk/util-utf8-browser": { - "version": "3.259.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", - "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", - "dependencies": { - "tslib": "^2.3.1" - } - }, - "node_modules/@aws-sdk/util-utf8-browser/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@aws-sdk/xml-builder": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.310.0.tgz", - "integrity": "sha512-TqELu4mOuSIKQCqj63fGVs86Yh+vBx5nHRpWKNUNhB2nPTpfbziTs5c1X358be3peVWA4wPxW7Nt53KIg1tnNw==", - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-sdk/xml-builder/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/@babel/code-frame": { "version": "7.22.13", @@ -9355,9 +5092,9 @@ } }, "node_modules/@mongodb-js/saslprep": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.9.tgz", - "integrity": "sha512-tVkljjeEaAhCqTzajSdgbQ6gE6f3oneVwa3iXR6csiEwXXOFsiC6Uh9iAjAhXPtqa/XMDHWjjeNH/77m/Yq2dw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.4.tgz", + "integrity": "sha512-8zJ8N1x51xo9hwPh6AWnKdLGEC5N3lDa6kms1YHmFBoRhTpJR6HG8wWk0td1MVCu9cD4YBrvjZEtd5Obw0Fbnw==", "optional": true, "peer": true, "dependencies": { @@ -9385,66 +5122,74 @@ "url": "https://ko-fi.com/killymxi" } }, - "node_modules/@sentry-internal/tracing": { - "version": "7.56.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.56.0.tgz", - "integrity": "sha512-OKI4Pz/O13gng8hT9rNc+gRV3+P7nnk1HnHlV8fgaQydS6DsRxoDL1sHa42tZGbh7K9jqNAP3TC6VjBOsr2tXA==", + "node_modules/@sentry-internal/tracing": { + "version": "7.119.2", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.119.2.tgz", + "integrity": "sha512-V2W+STWrafyGJhQv3ulMFXYDwWHiU6wHQAQBShsHVACiFaDrJ2kPRet38FKv4dMLlLlP2xN+ss2e5zv3tYlTiQ==", + "dependencies": { + "@sentry/core": "7.119.2", + "@sentry/types": "7.119.2", + "@sentry/utils": "7.119.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/core": { + "version": "7.119.2", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.119.2.tgz", + "integrity": "sha512-hQr3d2yWq/2lMvoyBPOwXw1IHqTrCjOsU1vYKhAa6w9vGbJZFGhKGGE2KEi/92c3gqGn+gW/PC7cV6waCTDuVA==", "dependencies": { - "@sentry/core": "7.56.0", - "@sentry/types": "7.56.0", - "@sentry/utils": "7.56.0", - "tslib": "^1.9.3" + "@sentry/types": "7.119.2", + "@sentry/utils": "7.119.2" }, "engines": { "node": ">=8" } }, - "node_modules/@sentry/core": { - "version": "7.56.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.56.0.tgz", - "integrity": "sha512-Nuyyfh09Yz27kPo74fXHlrdmZeK6zrlJVtxQ6LkwuoaTBcNcesNXVaOtr6gjvUGUmsfriVPP3Jero5LXufV7GQ==", + "node_modules/@sentry/integrations": { + "version": "7.119.2", + "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.119.2.tgz", + "integrity": "sha512-dCuXKvbUE3gXVVa696SYMjlhSP6CxpMH/gl4Jk26naEB8Xjsn98z/hqEoXLg6Nab73rjR9c/9AdKqBbwVMHyrQ==", "dependencies": { - "@sentry/types": "7.56.0", - "@sentry/utils": "7.56.0", - "tslib": "^1.9.3" + "@sentry/core": "7.119.2", + "@sentry/types": "7.119.2", + "@sentry/utils": "7.119.2", + "localforage": "^1.8.1" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/node": { - "version": "7.56.0", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.56.0.tgz", - "integrity": "sha512-QXbWy/ypRxfFd8iP6zLvHInYZyjGKPrkVNYt43mhKAZHm764NxX/29vDfj1FztgG9Z6lVLIG2eyqTvLruYmsWw==", - "dependencies": { - "@sentry-internal/tracing": "7.56.0", - "@sentry/core": "7.56.0", - "@sentry/types": "7.56.0", - "@sentry/utils": "7.56.0", - "cookie": "^0.4.1", - "https-proxy-agent": "^5.0.0", - "lru_map": "^0.3.3", - "tslib": "^1.9.3" + "version": "7.119.2", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.119.2.tgz", + "integrity": "sha512-TPNnqxh+Myooe4jTyRiXrzrM2SH08R4+nrmBls4T7lKp2E5R/3mDSe/YTn5rRcUt1k1hPx1NgO/taG0DoS5cXA==", + "dependencies": { + "@sentry-internal/tracing": "7.119.2", + "@sentry/core": "7.119.2", + "@sentry/integrations": "7.119.2", + "@sentry/types": "7.119.2", + "@sentry/utils": "7.119.2" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/types": { - "version": "7.56.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.56.0.tgz", - "integrity": "sha512-5WjhVOQm75ItOytOx2jTx+5yw8/qJ316+g1Di8dS9+kgIi1zniqdMcX00C2yYe3FMUgFB49PegCUYulm9Evapw==", + "version": "7.119.2", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.119.2.tgz", + "integrity": "sha512-ydq1tWsdG7QW+yFaTp0gFaowMLNVikIqM70wxWNK+u98QzKnVY/3XTixxNLsUtnAB4Y+isAzFhrc6Vb5GFdFeg==", "engines": { "node": ">=8" } }, "node_modules/@sentry/utils": { - "version": "7.56.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.56.0.tgz", - "integrity": "sha512-wgeX7bufxc//TjjSIE+gCMm8hVId7Jzvc+f441bYrWnNZBuzPIDW2BummCcPrKzSYe5GeYZDTZGV8YZGMLGBjw==", + "version": "7.119.2", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.119.2.tgz", + "integrity": "sha512-TLdUCvcNgzKP0r9YD7tgCL1PEUp42TObISridsPJ5rhpVGQJvpr+Six0zIkfDUxerLYWZoK8QMm9KgFlPLNQzA==", "dependencies": { - "@sentry/types": "7.56.0", - "tslib": "^1.9.3" + "@sentry/types": "7.119.2" }, "engines": { "node": ">=8" @@ -9509,702 +5254,365 @@ "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==" }, "node_modules/@smithy/abort-controller": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.0.14.tgz", - "integrity": "sha512-zXtteuYLWbSXnzI3O6xq3FYvigYZFW8mdytGibfarLL2lxHto9L3ILtGVnVGmFZa7SDh62l39EnU5hesLN87Fw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.1.1.tgz", + "integrity": "sha512-MBJBiidoe+0cTFhyxT8g+9g7CeVccLM0IOKKUMCNQ1CNMJ/eIfoo0RTfVrXOONEI1UCN1W+zkiHSbzUNE9dZtQ==", "dependencies": { - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/abort-controller/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/@smithy/chunked-blob-reader": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-2.0.0.tgz", - "integrity": "sha512-k+J4GHJsMSAIQPChGBrjEmGS+WbPonCXesoqP9fynIqjn7rdOThdH8FAeCmokP9mxTYKQAKoHCLPzNlm6gh7Wg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-3.0.0.tgz", + "integrity": "sha512-sbnURCwjF0gSToGlsBiAmd1lRCmSn72nu9axfJu5lIx6RUEgHu6GwTMbqCdhQSi0Pumcm5vFxsi9XWXb2mTaoA==", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" } }, "node_modules/@smithy/chunked-blob-reader-native": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-2.0.1.tgz", - "integrity": "sha512-N2oCZRglhWKm7iMBu7S6wDzXirjAofi7tAd26cxmgibRYOBS4D3hGfmkwCpHdASZzwZDD8rluh0Rcqw1JeZDRw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-3.0.0.tgz", + "integrity": "sha512-VDkpCYW+peSuM4zJip5WDfqvg2Mo/e8yxOv3VF1m11y7B8KKMKVFtmZWDe36Fvk8rGuWrPZHHXZ7rR7uM5yWyg==", "dependencies": { - "@smithy/util-base64": "^2.0.1", - "tslib": "^2.5.0" + "@smithy/util-base64": "^3.0.0", + "tslib": "^2.6.2" } }, "node_modules/@smithy/chunked-blob-reader-native/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/@smithy/chunked-blob-reader/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/@smithy/config-resolver": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.0.19.tgz", - "integrity": "sha512-JsghnQ5zjWmjEVY8TFOulLdEOCj09SjRLugrHlkPZTIBBm7PQitCFVLThbsKPZQOP7N3ME1DU1nKUc1UaVnBog==", - "dependencies": { - "@smithy/node-config-provider": "^2.1.6", - "@smithy/types": "^2.6.0", - "@smithy/util-config-provider": "^2.0.0", - "@smithy/util-middleware": "^2.0.7", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@smithy/config-resolver/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@smithy/core": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.4.5.tgz", - "integrity": "sha512-Z0qlPXgZ0pouYgnu/cZTEYeRAvniiKZmVl4wIbZHX/nEMHkMDV9ao6KFArsU9KndE0TuhL149xcRx45wfw1YCA==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/middleware-endpoint": "^3.1.3", - "@smithy/middleware-retry": "^3.0.20", - "@smithy/middleware-serde": "^3.0.6", - "@smithy/protocol-http": "^4.1.3", - "@smithy/smithy-client": "^3.3.4", - "@smithy/types": "^3.4.2", - "@smithy/util-body-length-browser": "^3.0.0", - "@smithy/util-middleware": "^3.0.6", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/core/node_modules/@smithy/abort-controller": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.1.4.tgz", - "integrity": "sha512-VupaALAQlXViW3/enTf/f5l5JZYSAxoJL7f0nanhNNKnww6DGCg1oYIuNP78KDugnkwthBO6iEcym16HhWV8RQ==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/core/node_modules/@smithy/fetch-http-handler": { - "version": "3.2.8", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.8.tgz", - "integrity": "sha512-Lqe0B8F5RM7zkw//6avq1SJ8AfaRd3ubFUS1eVp5WszV7p6Ne5hQ4dSuMHDpNRPhgTvj4va9Kd/pcVigHEHRow==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/protocol-http": "^4.1.3", - "@smithy/querystring-builder": "^3.0.6", - "@smithy/types": "^3.4.2", - "@smithy/util-base64": "^3.0.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@smithy/core/node_modules/@smithy/is-array-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", - "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/core/node_modules/@smithy/middleware-endpoint": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.3.tgz", - "integrity": "sha512-KeM/OrK8MVFUsoJsmCN0MZMVPjKKLudn13xpgwIMpGTYpA8QZB2Xq5tJ+RE6iu3A6NhOI4VajDTwBsm8pwwrhg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/middleware-serde": "^3.0.6", - "@smithy/node-config-provider": "^3.1.7", - "@smithy/shared-ini-file-loader": "^3.1.7", - "@smithy/types": "^3.4.2", - "@smithy/url-parser": "^3.0.6", - "@smithy/util-middleware": "^3.0.6", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/core/node_modules/@smithy/middleware-retry": { - "version": "3.0.20", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.20.tgz", - "integrity": "sha512-HELCOVwYw5hFDBm69d+LmmGjBCjWnwp/t7SJiHmp+c4u9vgfIaCjdSeIdnlOsLrr5ic5jGTJXvJFUQnd987b/g==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/node-config-provider": "^3.1.7", - "@smithy/protocol-http": "^4.1.3", - "@smithy/service-error-classification": "^3.0.6", - "@smithy/smithy-client": "^3.3.4", - "@smithy/types": "^3.4.2", - "@smithy/util-middleware": "^3.0.6", - "@smithy/util-retry": "^3.0.6", - "tslib": "^2.6.2", - "uuid": "^9.0.1" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/core/node_modules/@smithy/middleware-serde": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.6.tgz", - "integrity": "sha512-KKTUSl1MzOM0MAjGbudeaVNtIDo+PpekTBkCNwvfZlKndodrnvRo+00USatiyLOc0ujjO9UydMRu3O9dYML7ag==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/core/node_modules/@smithy/middleware-stack": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.6.tgz", - "integrity": "sha512-2c0eSYhTQ8xQqHMcRxLMpadFbTXg6Zla5l0mwNftFCZMQmuhI7EbAJMx6R5eqfuV3YbJ3QGyS3d5uSmrHV8Khg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/core/node_modules/@smithy/node-config-provider": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.7.tgz", - "integrity": "sha512-g3mfnC3Oo8pOI0dYuPXLtdW1WGVb3bR2tkV21GNkm0ZvQjLTtamXAwCWt/FCb0HGvKt3gHHmF1XerG0ICfalOg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/property-provider": "^3.1.6", - "@smithy/shared-ini-file-loader": "^3.1.7", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/core/node_modules/@smithy/node-http-handler": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.2.3.tgz", - "integrity": "sha512-/gcm5DJ3k1b1zEInzBGAZC8ntJ+jwrz1NcSIu+9dSXd1FfG0G6QgkDI40tt8/WYUbHtLyo8fEqtm2v29koWo/w==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/abort-controller": "^3.1.4", - "@smithy/protocol-http": "^4.1.3", - "@smithy/querystring-builder": "^3.0.6", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/core/node_modules/@smithy/property-provider": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.6.tgz", - "integrity": "sha512-NK3y/T7Q/Bw+Z8vsVs9MYIQ5v7gOX7clyrXcwhhIBQhbPgRl6JDrZbusO9qWDhcEus75Tg+VCxtIRfo3H76fpw==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/core/node_modules/@smithy/querystring-builder": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.6.tgz", - "integrity": "sha512-sQe08RunoObe+Usujn9+R2zrLuQERi3CWvRO3BvnoWSYUaIrLKuAIeY7cMeDax6xGyfIP3x/yFWbEKSXvOnvVg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "@smithy/util-uri-escape": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/core/node_modules/@smithy/querystring-parser": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.6.tgz", - "integrity": "sha512-UJKw4LlEkytzz2Wq+uIdHf6qOtFfee/o7ruH0jF5I6UAuU+19r9QV7nU3P/uI0l6+oElRHmG/5cBBcGJrD7Ozg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/core/node_modules/@smithy/service-error-classification": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.6.tgz", - "integrity": "sha512-53SpchU3+DUZrN7J6sBx9tBiCVGzsib2e4sc512Q7K9fpC5zkJKs6Z9s+qbMxSYrkEkle6hnMtrts7XNkMJJMg==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/core/node_modules/@smithy/shared-ini-file-loader": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.7.tgz", - "integrity": "sha512-IA4K2qTJYXkF5OfVN4vsY1hfnUZjaslEE8Fsr/gGFza4TAC2A9NfnZuSY2srQIbt9bwtjHiAayrRVgKse4Q7fA==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/core/node_modules/@smithy/smithy-client": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.3.4.tgz", - "integrity": "sha512-NKw/2XxOW/Rg3rzB90HxsmGok5oS6vRzJgMh/JN4BHaOQQ4q5OuX999GmOGxEp730wbpIXIowfKZmIMXkG4v0Q==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/middleware-endpoint": "^3.1.3", - "@smithy/middleware-stack": "^3.0.6", - "@smithy/protocol-http": "^4.1.3", - "@smithy/types": "^3.4.2", - "@smithy/util-stream": "^3.1.8", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/core/node_modules/@smithy/types": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.4.2.tgz", - "integrity": "sha512-tHiFcfcVedVBHpmHUEUHOCCih8iZbIAYn9NvPsNzaPm/237I3imdDdZoOC8c87H5HBAVEa06tTgb+OcSWV9g5w==", - "optional": true, - "peer": true, + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.5.tgz", + "integrity": "sha512-SkW5LxfkSI1bUC74OtfBbdz+grQXYiPYolyu8VfpLIjEoN/sHVBlLeGXMQ1vX4ejkgfv6sxVbQJ32yF2cl1veA==", "dependencies": { + "@smithy/node-config-provider": "^3.1.4", + "@smithy/types": "^3.3.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.3", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@smithy/core/node_modules/@smithy/url-parser": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.6.tgz", - "integrity": "sha512-47Op/NU8Opt49KyGpHtVdnmmJMsp2hEwBdyjuFB9M2V5QVOwA7pBhhxKN5z6ztKGrMw76gd8MlbPuzzvaAncuQ==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/querystring-parser": "^3.0.6", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - } + "node_modules/@smithy/config-resolver/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, - "node_modules/@smithy/core/node_modules/@smithy/util-base64": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz", - "integrity": "sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==", - "optional": true, - "peer": true, + "node_modules/@smithy/core": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.3.2.tgz", + "integrity": "sha512-in5wwt6chDBcUv1Lw1+QzZxN9fBffi+qOixfb65yK4sDuKG7zAUO9HAFqmVzsZM3N+3tTyvZjtnDXePpvp007Q==", "dependencies": { - "@smithy/util-buffer-from": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/util-middleware": "^3.0.3", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@smithy/core/node_modules/@smithy/util-body-length-browser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz", - "integrity": "sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - } + "node_modules/@smithy/core/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, - "node_modules/@smithy/core/node_modules/@smithy/util-buffer-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", - "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", - "optional": true, - "peer": true, + "node_modules/@smithy/credential-provider-imds": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.0.tgz", + "integrity": "sha512-0SCIzgd8LYZ9EJxUjLXBmEKSZR/P/w6l7Rz/pab9culE/RWuqelAKGJvn5qUOl8BgX8Yj5HWM50A5hiB/RzsgA==", "dependencies": { - "@smithy/is-array-buffer": "^3.0.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/property-provider": "^3.1.3", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@smithy/core/node_modules/@smithy/util-hex-encoding": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz", - "integrity": "sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } + "node_modules/@smithy/credential-provider-imds/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, - "node_modules/@smithy/core/node_modules/@smithy/util-middleware": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.6.tgz", - "integrity": "sha512-BxbX4aBhI1O9p87/xM+zWy0GzT3CEVcXFPBRDoHAM+pV0eSW156pR+PSYEz0DQHDMYDsYAflC2bQNz2uaDBUZQ==", - "optional": true, - "peer": true, + "node_modules/@smithy/eventstream-serde-browser": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.5.tgz", + "integrity": "sha512-dEyiUYL/ekDfk+2Ra4GxV+xNnFoCmk1nuIXg+fMChFTrM2uI/1r9AdiTYzPqgb72yIv/NtAj6C3dG//1wwgakQ==", "dependencies": { - "@smithy/types": "^3.4.2", + "@smithy/eventstream-serde-universal": "^3.0.4", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@smithy/core/node_modules/@smithy/util-retry": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.6.tgz", - "integrity": "sha512-BRZiuF7IwDntAbevqMco67an0Sr9oLQJqqRCsSPZZHYRnehS0LHDAkJk/pSmI7Z8c/1Vet294H7fY2fWUgB+Rg==", - "optional": true, - "peer": true, + "node_modules/@smithy/eventstream-serde-browser/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@smithy/eventstream-serde-config-resolver": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.3.tgz", + "integrity": "sha512-NVTYjOuYpGfrN/VbRQgn31x73KDLfCXCsFdad8DiIc3IcdxL+dYA9zEQPyOP7Fy2QL8CPy2WE4WCUD+ZsLNfaQ==", "dependencies": { - "@smithy/service-error-classification": "^3.0.6", - "@smithy/types": "^3.4.2", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@smithy/core/node_modules/@smithy/util-stream": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.1.8.tgz", - "integrity": "sha512-hoKOqSmb8FD3WLObuB5hwbM7bNIWgcnvkThokTvVq7J5PKjlLUK5qQQcB9zWLHIoSaIlf3VIv2OxZY2wtQjcRQ==", - "optional": true, - "peer": true, + "node_modules/@smithy/eventstream-serde-config-resolver/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@smithy/eventstream-serde-node": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.4.tgz", + "integrity": "sha512-mjlG0OzGAYuUpdUpflfb9zyLrBGgmQmrobNT8b42ZTsGv/J03+t24uhhtVEKG/b2jFtPIHF74Bq+VUtbzEKOKg==", "dependencies": { - "@smithy/fetch-http-handler": "^3.2.8", - "@smithy/node-http-handler": "^3.2.3", - "@smithy/types": "^3.4.2", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-buffer-from": "^3.0.0", - "@smithy/util-hex-encoding": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", + "@smithy/eventstream-serde-universal": "^3.0.4", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@smithy/core/node_modules/@smithy/util-uri-escape": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz", - "integrity": "sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==", - "optional": true, - "peer": true, + "node_modules/@smithy/eventstream-serde-node/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@smithy/eventstream-serde-universal": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.4.tgz", + "integrity": "sha512-Od9dv8zh3PgOD7Vj4T3HSuox16n0VG8jJIM2gvKASL6aCtcS8CfHZDWe1Ik3ZXW6xBouU+45Q5wgoliWDZiJ0A==", "dependencies": { + "@smithy/eventstream-codec": "^3.1.2", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@smithy/core/node_modules/@smithy/util-utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", - "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", - "optional": true, - "peer": true, + "node_modules/@smithy/eventstream-serde-universal/node_modules/@aws-crypto/crc32": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", + "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", "dependencies": { - "@smithy/util-buffer-from": "^3.0.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@smithy/core/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "optional": true, - "peer": true - }, - "node_modules/@smithy/core/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" - ], - "optional": true, - "peer": true, - "bin": { - "uuid": "dist/bin/uuid" + "node_modules/@smithy/eventstream-serde-universal/node_modules/@smithy/eventstream-codec": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-3.1.2.tgz", + "integrity": "sha512-0mBcu49JWt4MXhrhRAlxASNy0IjDRFU+aWNDRal9OtUJvJNiwDuyKMUONSOjLjSCeGwZaE0wOErdqULer8r7yw==", + "dependencies": { + "@aws-crypto/crc32": "5.2.0", + "@smithy/types": "^3.3.0", + "@smithy/util-hex-encoding": "^3.0.0", + "tslib": "^2.6.2" } }, - "node_modules/@smithy/credential-provider-imds": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.1.2.tgz", - "integrity": "sha512-Y62jBWdoLPSYjr9fFvJf+KwTa1EunjVr6NryTEWCnwIY93OJxwV4t0qxjwdPl/XMsUkq79ppNJSEQN6Ohnhxjw==", + "node_modules/@smithy/eventstream-serde-universal/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@smithy/fetch-http-handler": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.4.tgz", + "integrity": "sha512-kBprh5Gs5h7ug4nBWZi1FZthdqSM+T7zMmsZxx0IBvWUn7dK3diz2SHn7Bs4dQGFDk8plDv375gzenDoNwrXjg==", "dependencies": { - "@smithy/node-config-provider": "^2.1.6", - "@smithy/property-provider": "^2.0.15", - "@smithy/types": "^2.6.0", - "@smithy/url-parser": "^2.0.14", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" + "@smithy/protocol-http": "^4.1.0", + "@smithy/querystring-builder": "^3.0.3", + "@smithy/types": "^3.3.0", + "@smithy/util-base64": "^3.0.0", + "tslib": "^2.6.2" } }, - "node_modules/@smithy/credential-provider-imds/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "node_modules/@smithy/fetch-http-handler/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, - "node_modules/@smithy/eventstream-codec": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-2.0.14.tgz", - "integrity": "sha512-g/OU/MeWGfHDygoXgMWfG/Xb0QqDnAGcM9t2FRrVAhleXYRddGOEnfanR5cmHgB9ue52MJsyorqFjckzXsylaA==", + "node_modules/@smithy/hash-blob-browser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-3.1.2.tgz", + "integrity": "sha512-hAbfqN2UbISltakCC2TP0kx4LqXBttEv2MqSPE98gVuDFMf05lU+TpC41QtqGP3Ff5A3GwZMPfKnEy0VmEUpmg==", "dependencies": { - "@aws-crypto/crc32": "3.0.0", - "@smithy/types": "^2.6.0", - "@smithy/util-hex-encoding": "^2.0.0", - "tslib": "^2.5.0" + "@smithy/chunked-blob-reader": "^3.0.0", + "@smithy/chunked-blob-reader-native": "^3.0.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" } }, - "node_modules/@smithy/eventstream-codec/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "node_modules/@smithy/hash-blob-browser/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, - "node_modules/@smithy/eventstream-serde-browser": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-2.0.14.tgz", - "integrity": "sha512-41wmYE9smDGJi1ZXp+LogH6BR7MkSsQD91wneIFISF/mupKULvoOJUkv/Nf0NMRxWlM3Bf1Vvi9FlR2oV4KU8Q==", + "node_modules/@smithy/hash-node": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.3.tgz", + "integrity": "sha512-2ctBXpPMG+B3BtWSGNnKELJ7SH9e4TNefJS0cd2eSkOOROeBnnVBnAy9LtJ8tY4vUEoe55N4CNPxzbWvR39iBw==", "dependencies": { - "@smithy/eventstream-serde-universal": "^2.0.14", - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/types": "^3.3.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/eventstream-serde-browser/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@smithy/eventstream-serde-config-resolver": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-2.0.14.tgz", - "integrity": "sha512-43IyRIzQ82s+5X+t/3Ood00CcWtAXQdmUIUKMed2Qg9REPk8SVIHhpm3rwewLwg+3G2Nh8NOxXlEQu6DsPUcMw==", + "node_modules/@smithy/hash-node/node_modules/@smithy/is-array-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", + "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", "dependencies": { - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/eventstream-serde-config-resolver/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@smithy/eventstream-serde-node": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-2.0.14.tgz", - "integrity": "sha512-jVh9E2qAr6DxH5tWfCAl9HV6tI0pEQ3JVmu85JknDvYTC66djcjDdhctPV2EHuKWf2kjRiFJcMIn0eercW4THA==", + "node_modules/@smithy/hash-node/node_modules/@smithy/util-buffer-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", "dependencies": { - "@smithy/eventstream-serde-universal": "^2.0.14", - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/is-array-buffer": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/eventstream-serde-node/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@smithy/eventstream-serde-universal": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-2.0.14.tgz", - "integrity": "sha512-Ie35+AISNn1NmEjn5b2SchIE49pvKp4Q74bE9ME5RULWI1MgXyGkQUajWd5E6OBSr/sqGcs+rD3IjPErXnCm9g==", + "node_modules/@smithy/hash-node/node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", "dependencies": { - "@smithy/eventstream-codec": "^2.0.14", - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/util-buffer-from": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/eventstream-serde-universal/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@smithy/fetch-http-handler": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.2.7.tgz", - "integrity": "sha512-iSDBjxuH9TgrtMYAr7j5evjvkvgwLY3y+9D547uep+JNkZ1ZT+BaeU20j6I/bO/i26ilCWFImrlXTPsfQtZdIQ==", - "dependencies": { - "@smithy/protocol-http": "^3.0.10", - "@smithy/querystring-builder": "^2.0.14", - "@smithy/types": "^2.6.0", - "@smithy/util-base64": "^2.0.1", - "tslib": "^2.5.0" - } + "node_modules/@smithy/hash-node/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, - "node_modules/@smithy/fetch-http-handler/node_modules/@smithy/protocol-http": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.0.10.tgz", - "integrity": "sha512-6+tjNk7rXW7YTeGo9qwxXj/2BFpJTe37kTj3EnZCoX/nH+NP/WLA7O83fz8XhkGqsaAhLUPo/bB12vvd47nsmg==", + "node_modules/@smithy/hash-stream-node": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-3.1.2.tgz", + "integrity": "sha512-PBgDMeEdDzi6JxKwbfBtwQG9eT9cVwsf0dZzLXoJF4sHKHs5HEo/3lJWpn6jibfJwT34I1EBXpBnZE8AxAft6g==", "dependencies": { - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/types": "^3.3.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/fetch-http-handler/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@smithy/hash-blob-browser": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-2.0.15.tgz", - "integrity": "sha512-HX/7GIyPUT/HDWVYe2HYQu0iRnSYpF4uZVNhAhZsObPRawk5Mv0PbyluBgIFI2DDCCKgL/tloCYYwycff1GtQg==", + "node_modules/@smithy/hash-stream-node/node_modules/@smithy/is-array-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", + "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", "dependencies": { - "@smithy/chunked-blob-reader": "^2.0.0", - "@smithy/chunked-blob-reader-native": "^2.0.1", - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@smithy/hash-blob-browser/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@smithy/hash-node": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.0.16.tgz", - "integrity": "sha512-Wbi9A0PacMYUOwjAulQP90Wl3mQ6NDwnyrZQzFjDz+UzjXOSyQMgBrTkUBz+pVoYVlX3DUu24gWMZBcit+wOGg==", + "node_modules/@smithy/hash-stream-node/node_modules/@smithy/util-buffer-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", "dependencies": { - "@smithy/types": "^2.6.0", - "@smithy/util-buffer-from": "^2.0.0", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" + "@smithy/is-array-buffer": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/hash-node/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@smithy/hash-stream-node": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-2.0.16.tgz", - "integrity": "sha512-4x24GFdeWos1Z49MC5sYdM1j+z32zcUr6oWM9Ggm3WudFAcRIcbG9uDQ1XgJ0Kl+ZTjpqLKniG0iuWvQb2Ud1A==", + "node_modules/@smithy/hash-stream-node/node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", "dependencies": { - "@smithy/types": "^2.6.0", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" + "@smithy/util-buffer-from": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/hash-stream-node/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/@smithy/invalid-dependency": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.0.14.tgz", - "integrity": "sha512-d8ohpwZo9RzTpGlAfsWtfm1SHBSU7+N4iuZ6MzR10xDTujJJWtmXYHK1uzcr7rggbpUTaWyHpPFgnf91q0EFqQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.3.tgz", + "integrity": "sha512-ID1eL/zpDULmHJbflb864k72/SNOZCADRc9i7Exq3RUNJw6raWUSlFEQ+3PX3EYs++bTxZB2dE9mEHTQLv61tw==", "dependencies": { - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" } }, "node_modules/@smithy/invalid-dependency/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/@smithy/is-array-buffer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.0.0.tgz", - "integrity": "sha512-z3PjFjMyZNI98JFRJi/U0nGoLWMSJlDjAW4QUX2WNZLas5C0CmVV6LJ01JI0k90l7FvpmixjWxPFmENSClQ7ug==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.1.1.tgz", + "integrity": "sha512-xozSQrcUinPpNPNPds4S7z/FakDTh1MZWtRP/2vQtYB/u3HYrX2UXuZs+VhaKBd6Vc7g2XPr2ZtwGBNDN6fNKQ==", "dependencies": { "tslib": "^2.5.0" }, @@ -10218,230 +5626,227 @@ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/md5-js": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-2.0.16.tgz", - "integrity": "sha512-YhWt9aKl+EMSNXyUTUo7I01WHf3HcCkPu/Hl2QmTNwrHT49eWaY7hptAMaERZuHFH0V5xHgPKgKZo2I93DFtgQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-3.0.3.tgz", + "integrity": "sha512-O/SAkGVwpWmelpj/8yDtsaVe6sINHLB1q8YE/+ZQbDxIw3SRLbTZuRaI10K12sVoENdnHqzPp5i3/H+BcZ3m3Q==", "dependencies": { - "@smithy/types": "^2.6.0", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" + "@smithy/types": "^3.3.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" } }, - "node_modules/@smithy/md5-js/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "node_modules/@smithy/md5-js/node_modules/@smithy/is-array-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", + "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } }, - "node_modules/@smithy/middleware-content-length": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.0.16.tgz", - "integrity": "sha512-9ddDia3pp1d3XzLXKcm7QebGxLq9iwKf+J1LapvlSOhpF8EM9SjMeSrMOOFgG+2TfW5K3+qz4IAJYYm7INYCng==", + "node_modules/@smithy/md5-js/node_modules/@smithy/util-buffer-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", "dependencies": { - "@smithy/protocol-http": "^3.0.10", - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/is-array-buffer": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/middleware-content-length/node_modules/@smithy/protocol-http": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.0.10.tgz", - "integrity": "sha512-6+tjNk7rXW7YTeGo9qwxXj/2BFpJTe37kTj3EnZCoX/nH+NP/WLA7O83fz8XhkGqsaAhLUPo/bB12vvd47nsmg==", + "node_modules/@smithy/md5-js/node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", "dependencies": { - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/util-buffer-from": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/middleware-content-length/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "node_modules/@smithy/md5-js/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, - "node_modules/@smithy/middleware-endpoint": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.2.1.tgz", - "integrity": "sha512-dVDS7HNJl/wb0lpByXor6whqDbb1YlLoaoWYoelyYzLHioXOE7y/0iDwJWtDcN36/tVCw9EPBFZ3aans84jLpg==", - "dependencies": { - "@smithy/middleware-serde": "^2.0.14", - "@smithy/node-config-provider": "^2.1.6", - "@smithy/shared-ini-file-loader": "^2.2.5", - "@smithy/types": "^2.6.0", - "@smithy/url-parser": "^2.0.14", - "@smithy/util-middleware": "^2.0.7", - "tslib": "^2.5.0" + "node_modules/@smithy/middleware-content-length": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.5.tgz", + "integrity": "sha512-ILEzC2eyxx6ncej3zZSwMpB5RJ0zuqH7eMptxC4KN3f+v9bqT8ohssKbhNR78k/2tWW+KS5Spw+tbPF4Ejyqvw==", + "dependencies": { + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/middleware-endpoint/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "node_modules/@smithy/middleware-content-length/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, - "node_modules/@smithy/middleware-retry": { - "version": "2.0.21", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.0.21.tgz", - "integrity": "sha512-EZS1EXv1k6IJX6hyu/0yNQuPcPaXwG8SWljQHYueyRbOxmqYgoWMWPtfZj0xRRQ4YtLawQSpBgAeiJltq8/MPw==", + "node_modules/@smithy/middleware-endpoint": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.0.tgz", + "integrity": "sha512-5y5aiKCEwg9TDPB4yFE7H6tYvGFf1OJHNczeY10/EFF8Ir8jZbNntQJxMWNfeQjC1mxPsaQ6mR9cvQbf+0YeMw==", "dependencies": { - "@smithy/node-config-provider": "^2.1.6", - "@smithy/protocol-http": "^3.0.10", - "@smithy/service-error-classification": "^2.0.7", - "@smithy/types": "^2.6.0", - "@smithy/util-middleware": "^2.0.7", - "@smithy/util-retry": "^2.0.7", - "tslib": "^2.5.0", - "uuid": "^8.3.2" + "@smithy/middleware-serde": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "@smithy/util-middleware": "^3.0.3", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/middleware-retry/node_modules/@smithy/protocol-http": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.0.10.tgz", - "integrity": "sha512-6+tjNk7rXW7YTeGo9qwxXj/2BFpJTe37kTj3EnZCoX/nH+NP/WLA7O83fz8XhkGqsaAhLUPo/bB12vvd47nsmg==", - "dependencies": { - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "node_modules/@smithy/middleware-endpoint/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@smithy/middleware-retry": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.14.tgz", + "integrity": "sha512-7ZaWZJOjUxa5hgmuMspyt8v/zVsh0GXYuF7OvCmdcbVa/xbnKQoYC+uYKunAqRGTkxjOyuOCw9rmFUFOqqC0eQ==", + "dependencies": { + "@smithy/node-config-provider": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/service-error-classification": "^3.0.3", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", + "tslib": "^2.6.2", + "uuid": "^9.0.1" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/middleware-retry/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@smithy/middleware-retry/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" + ], + "bin": { + "uuid": "dist/bin/uuid" + } }, "node_modules/@smithy/middleware-serde": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.0.14.tgz", - "integrity": "sha512-hFi3FqoYWDntCYA2IGY6gJ6FKjq2gye+1tfxF2HnIJB5uW8y2DhpRNBSUMoqP+qvYzRqZ6ntv4kgbG+o3pX57g==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.3.tgz", + "integrity": "sha512-puUbyJQBcg9eSErFXjKNiGILJGtiqmuuNKEYNYfUD57fUl4i9+mfmThtQhvFXU0hCVG0iEJhvQUipUf+/SsFdA==", "dependencies": { - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/middleware-serde/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/@smithy/middleware-stack": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-2.0.8.tgz", - "integrity": "sha512-7/N59j0zWqVEKExJcA14MrLDZ/IeN+d6nbkN8ucs+eURyaDUXWYlZrQmMOd/TyptcQv0+RDlgag/zSTTV62y/Q==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.3.tgz", + "integrity": "sha512-r4klY9nFudB0r9UdSMaGSyjyQK5adUyPnQN/ZM6M75phTxOdnc/AhpvGD1fQUvgmqjQEBGCwpnPbDm8pH5PapA==", "dependencies": { - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/middleware-stack/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/@smithy/node-config-provider": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.1.6.tgz", - "integrity": "sha512-HLqTs6O78m3M3z1cPLFxddxhEPv5MkVatfPuxoVO3A+cHZanNd/H5I6btcdHy6N2CB1MJ/lihJC92h30SESsBA==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.4.tgz", + "integrity": "sha512-YvnElQy8HR4vDcAjoy7Xkx9YT8xZP4cBXcbJSgm/kxmiQu08DwUwj8rkGnyoJTpfl/3xYHH+d8zE+eHqoDCSdQ==", "dependencies": { - "@smithy/property-provider": "^2.0.15", - "@smithy/shared-ini-file-loader": "^2.2.5", - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/node-config-provider/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/@smithy/node-http-handler": { - "version": "2.1.10", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.1.10.tgz", - "integrity": "sha512-lkALAwtN6odygIM4nB8aHDahINM6WXXjNrZmWQAh0RSossySRT2qa31cFv0ZBuAYVWeprskRk13AFvvLmf1WLw==", - "dependencies": { - "@smithy/abort-controller": "^2.0.14", - "@smithy/protocol-http": "^3.0.10", - "@smithy/querystring-builder": "^2.0.14", - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@smithy/node-http-handler/node_modules/@smithy/protocol-http": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.0.10.tgz", - "integrity": "sha512-6+tjNk7rXW7YTeGo9qwxXj/2BFpJTe37kTj3EnZCoX/nH+NP/WLA7O83fz8XhkGqsaAhLUPo/bB12vvd47nsmg==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.1.4.tgz", + "integrity": "sha512-+UmxgixgOr/yLsUxcEKGH0fMNVteJFGkmRltYFHnBMlogyFdpzn2CwqWmxOrfJELhV34v0WSlaqG1UtE1uXlJg==", "dependencies": { - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/abort-controller": "^3.1.1", + "@smithy/protocol-http": "^4.1.0", + "@smithy/querystring-builder": "^3.0.3", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/node-http-handler/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/@smithy/property-provider": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.0.15.tgz", - "integrity": "sha512-YbRFBn8oiiC3o1Kn3a4KjGa6k47rCM9++5W9cWqYn9WnkyH+hBWgfJAckuxpyA2Hq6Ys4eFrWzXq6fqHEw7iew==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.3.tgz", + "integrity": "sha512-zahyOVR9Q4PEoguJ/NrFP4O7SMAfYO1HLhB18M+q+Z4KFd4V2obiMnlVoUFzFLSPeVt1POyNWneHHrZaTMoc/g==", "dependencies": { - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/property-provider/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/@smithy/protocol-http": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.3.tgz", - "integrity": "sha512-GcbMmOYpH9iRqtC05RbRnc/0FssxSTHlmaNhYBTgSgNCYpdR3Kt88u5GAZTBmouzv+Zlj/VRv92J9ruuDeJuEw==", - "optional": true, - "peer": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/protocol-http/node_modules/@smithy/types": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.4.2.tgz", - "integrity": "sha512-tHiFcfcVedVBHpmHUEUHOCCih8iZbIAYn9NvPsNzaPm/237I3imdDdZoOC8c87H5HBAVEa06tTgb+OcSWV9g5w==", - "optional": true, - "peer": true, + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.0.tgz", + "integrity": "sha512-dPVoHYQ2wcHooGXg3LQisa1hH0e4y0pAddPMeeUPipI1tEOqL6A4N0/G7abeq+K8wrwSgjk4C0wnD1XZpJm5aA==", "dependencies": { + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -10449,200 +5854,213 @@ } }, "node_modules/@smithy/protocol-http/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "optional": true, - "peer": true + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/@smithy/querystring-builder": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.0.14.tgz", - "integrity": "sha512-lQ4pm9vTv9nIhl5jt6uVMPludr6syE2FyJmHsIJJuOD7QPIJnrf9HhUGf1iHh9KJ4CUv21tpOU3X6s0rB6uJ0g==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.3.tgz", + "integrity": "sha512-vyWckeUeesFKzCDaRwWLUA1Xym9McaA6XpFfAK5qI9DKJ4M33ooQGqvM4J+LalH4u/Dq9nFiC8U6Qn1qi0+9zw==", "dependencies": { - "@smithy/types": "^2.6.0", - "@smithy/util-uri-escape": "^2.0.0", - "tslib": "^2.5.0" + "@smithy/types": "^3.3.0", + "@smithy/util-uri-escape": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/querystring-builder/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/@smithy/querystring-parser": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.0.14.tgz", - "integrity": "sha512-+cbtXWI9tNtQjlgQg3CA+pvL3zKTAxPnG3Pj6MP89CR3vi3QMmD0SOWoq84tqZDnJCxlsusbgIXk1ngMReXo+A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.3.tgz", + "integrity": "sha512-zahM1lQv2YjmznnfQsWbYojFe55l0SLG/988brlLv1i8z3dubloLF+75ATRsqPBboUXsW6I9CPGE5rQgLfY0vQ==", "dependencies": { - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/querystring-parser/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/@smithy/service-error-classification": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.0.7.tgz", - "integrity": "sha512-LLxgW12qGz8doYto15kZ4x1rHjtXl0BnCG6T6Wb8z2DI4PT9cJfOSvzbuLzy7+5I24PAepKgFeWHRd9GYy3Z9w==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.3.tgz", + "integrity": "sha512-Jn39sSl8cim/VlkLsUhRFq/dKDnRUFlfRkvhOJaUbLBXUsLRLNf9WaxDv/z9BjuQ3A6k/qE8af1lsqcwm7+DaQ==", "dependencies": { - "@smithy/types": "^2.6.0" + "@smithy/types": "^3.3.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/shared-ini-file-loader": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.2.5.tgz", - "integrity": "sha512-LHA68Iu7SmNwfAVe8egmjDCy648/7iJR/fK1UnVw+iAOUJoEYhX2DLgVd5pWllqdDiRbQQzgaHLcRokM+UFR1w==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.4.tgz", + "integrity": "sha512-qMxS4hBGB8FY2GQqshcRUy1K6k8aBWP5vwm8qKkCT3A9K2dawUwOIJfqh9Yste/Bl0J2lzosVyrXDj68kLcHXQ==", "dependencies": { - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/shared-ini-file-loader/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@smithy/signature-v4": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.0.5.tgz", - "integrity": "sha512-ABIzXmUDXK4n2c9cXjQLELgH2RdtABpYKT+U131e2I6RbCypFZmxIHmIBufJzU2kdMCQ3+thBGDWorAITFW04A==", - "dependencies": { - "@smithy/eventstream-codec": "^2.0.5", - "@smithy/is-array-buffer": "^2.0.0", - "@smithy/types": "^2.2.2", - "@smithy/util-hex-encoding": "^2.0.0", - "@smithy/util-middleware": "^2.0.0", - "@smithy/util-uri-escape": "^2.0.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@smithy/signature-v4/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/@smithy/smithy-client": { - "version": "2.1.16", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.1.16.tgz", - "integrity": "sha512-Lw67+yQSpLl4YkDLUzI2KgS8TXclXmbzSeOJUmRFS4ueT56B4pw3RZRF/SRzvgyxM/HxgkUan8oSHXCujPDafQ==", + "version": "3.1.12", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.1.12.tgz", + "integrity": "sha512-wtm8JtsycthkHy1YA4zjIh2thJgIQ9vGkoR639DBx5lLlLNU0v4GARpQZkr2WjXue74nZ7MiTSWfVrLkyD8RkA==", "dependencies": { - "@smithy/middleware-stack": "^2.0.8", - "@smithy/types": "^2.6.0", - "@smithy/util-stream": "^2.0.21", - "tslib": "^2.5.0" + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "@smithy/util-stream": "^3.1.3", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/smithy-client/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/@smithy/types": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.6.0.tgz", - "integrity": "sha512-PgqxJq2IcdMF9iAasxcqZqqoOXBHufEfmbEUdN1pmJrJltT42b0Sc8UiYSWWzKkciIp9/mZDpzYi4qYG1qqg6g==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.3.0.tgz", + "integrity": "sha512-IxvBBCTFDHbVoK7zIxqA1ZOdc4QfM5HM7rGleCuHi7L1wnKv5Pn69xXJQ9hgxH60ZVygH9/JG0jRgtUncE3QUA==", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/types/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/@smithy/url-parser": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.0.14.tgz", - "integrity": "sha512-kbu17Y1AFXi5lNlySdDj7ZzmvupyWKCX/0jNZ8ffquRyGdbDZb+eBh0QnWqsSmnZa/ctyWaTf7n4l/pXLExrnw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.3.tgz", + "integrity": "sha512-pw3VtZtX2rg+s6HMs6/+u9+hu6oY6U7IohGhVNnjbgKy86wcIsSZwgHrFR+t67Uyxvp4Xz3p3kGXXIpTNisq8A==", "dependencies": { - "@smithy/querystring-parser": "^2.0.14", - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/querystring-parser": "^3.0.3", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" } }, "node_modules/@smithy/url-parser/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/@smithy/util-base64": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-2.0.1.tgz", - "integrity": "sha512-DlI6XFYDMsIVN+GH9JtcRp3j02JEVuWIn/QOZisVzpIAprdsxGveFed0bjbMRCqmIFe8uetn5rxzNrBtIGrPIQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz", + "integrity": "sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==", "dependencies": { - "@smithy/util-buffer-from": "^2.0.0", - "tslib": "^2.5.0" + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-base64/node_modules/@smithy/is-array-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", + "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-base64/node_modules/@smithy/util-buffer-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", + "dependencies": { + "@smithy/is-array-buffer": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-base64/node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", + "dependencies": { + "@smithy/util-buffer-from": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, "node_modules/@smithy/util-base64/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/@smithy/util-body-length-browser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-2.0.0.tgz", - "integrity": "sha512-JdDuS4ircJt+FDnaQj88TzZY3+njZ6O+D3uakS32f2VNnDo3vyEuNdBOh/oFd8Df1zSZOuH1HEChk2AOYDezZg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz", + "integrity": "sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" } }, "node_modules/@smithy/util-body-length-browser/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/@smithy/util-body-length-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-2.1.0.tgz", - "integrity": "sha512-/li0/kj/y3fQ3vyzn36NTLGmUwAICb7Jbe/CsWCktW363gh1MOcpEcSO3mJ344Gv2dqz8YJCLQpb6hju/0qOWw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz", + "integrity": "sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-body-length-node/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/@smithy/util-buffer-from": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.0.0.tgz", - "integrity": "sha512-/YNnLoHsR+4W4Vf2wL5lGv0ksg8Bmk3GEGxn2vEQt52AQaPSCuaO5PM5VM7lP1K9qHRKHwrPGktqVoAHKWHxzw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.1.1.tgz", + "integrity": "sha512-clhNjbyfqIv9Md2Mg6FffGVrJxw7bgK7s3Iax36xnfVj6cg0fUG7I4RH0XgXJF8bxi+saY5HR21g2UPKSxVCXg==", "dependencies": { - "@smithy/is-array-buffer": "^2.0.0", + "@smithy/is-array-buffer": "^2.1.1", "tslib": "^2.5.0" }, "engines": { @@ -10655,177 +6073,212 @@ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/util-config-provider": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-2.0.0.tgz", - "integrity": "sha512-xCQ6UapcIWKxXHEU4Mcs2s7LcFQRiU3XEluM2WcCjjBtQkUN71Tb+ydGmJFPxMUrW/GWMgQEEGipLym4XG0jZg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz", + "integrity": "sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-config-provider/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/@smithy/util-defaults-mode-browser": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.0.20.tgz", - "integrity": "sha512-QJtnbTIl0/BbEASkx1MUFf6EaoWqWW1/IM90N++8NNscePvPf77GheYfpoPis6CBQawUWq8QepTP2QUSAdrVkw==", + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.14.tgz", + "integrity": "sha512-0iwTgKKmAIf+vFLV8fji21Jb2px11ktKVxbX6LIDPAUJyWQqGqBVfwba7xwa1f2FZUoolYQgLvxQEpJycXuQ5w==", "dependencies": { - "@smithy/property-provider": "^2.0.15", - "@smithy/smithy-client": "^2.1.16", - "@smithy/types": "^2.6.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", "bowser": "^2.11.0", - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { "node": ">= 10.0.0" } }, "node_modules/@smithy/util-defaults-mode-browser/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/@smithy/util-defaults-mode-node": { - "version": "2.0.26", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.0.26.tgz", - "integrity": "sha512-lGFPOFCHv1ql019oegYqa54BZH7HREw6EBqjDLbAr0wquMX0BDi2sg8TJ6Eq+JGLijkZbJB73m4+aK8OFAapMg==", - "dependencies": { - "@smithy/config-resolver": "^2.0.19", - "@smithy/credential-provider-imds": "^2.1.2", - "@smithy/node-config-provider": "^2.1.6", - "@smithy/property-provider": "^2.0.15", - "@smithy/smithy-client": "^2.1.16", - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.14.tgz", + "integrity": "sha512-e9uQarJKfXApkTMMruIdxHprhcXivH1flYCe8JRDTzkkLx8dA3V5J8GZlST9yfDiRWkJpZJlUXGN9Rc9Ade3OQ==", + "dependencies": { + "@smithy/config-resolver": "^3.0.5", + "@smithy/credential-provider-imds": "^3.2.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/property-provider": "^3.1.3", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { "node": ">= 10.0.0" } }, "node_modules/@smithy/util-defaults-mode-node/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/@smithy/util-endpoints": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-1.0.5.tgz", - "integrity": "sha512-K7qNuCOD5K/90MjHvHm9kJldrfm40UxWYQxNEShMFxV/lCCCRIg8R4uu1PFAxRvPxNpIdcrh1uK6I1ISjDXZJw==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.0.5.tgz", + "integrity": "sha512-ReQP0BWihIE68OAblC/WQmDD40Gx+QY1Ez8mTdFMXpmjfxSyz2fVQu3A4zXRfQU9sZXtewk3GmhfOHswvX+eNg==", "dependencies": { - "@smithy/node-config-provider": "^2.1.6", - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/node-config-provider": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-endpoints/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/@smithy/util-hex-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.0.0.tgz", - "integrity": "sha512-c5xY+NUnFqG6d7HFh1IFfrm3mGl29lC+vF+geHv4ToiuJCBmIfzx6IeHLg+OgRdPFKDXIw6pvi+p3CsscaMcMA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz", + "integrity": "sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-hex-encoding/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/@smithy/util-middleware": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.0.7.tgz", - "integrity": "sha512-tRINOTlf1G9B0ECarFQAtTgMhpnrMPSa+5j4ZEwEawCLfTFTavk6757sxhE4RY5RMlD/I3x+DCS8ZUiR8ho9Pw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.3.tgz", + "integrity": "sha512-l+StyYYK/eO3DlVPbU+4Bi06Jjal+PFLSMmlWM1BEwyLxZ3aKkf1ROnoIakfaA7mC6uw3ny7JBkau4Yc+5zfWw==", "dependencies": { - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-middleware/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/@smithy/util-retry": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-2.0.7.tgz", - "integrity": "sha512-fIe5yARaF0+xVT1XKcrdnHKTJ1Vc4+3e3tLDjCuIcE9b6fkBzzGFY7AFiX4M+vj6yM98DrwkuZeHf7/hmtVp0Q==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.3.tgz", + "integrity": "sha512-AFw+hjpbtVApzpNDhbjNG5NA3kyoMs7vx0gsgmlJF4s+yz1Zlepde7J58zpIRIsdjc+emhpAITxA88qLkPF26w==", "dependencies": { - "@smithy/service-error-classification": "^2.0.7", - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/service-error-classification": "^3.0.3", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-retry/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/@smithy/util-stream": { - "version": "2.0.21", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.0.21.tgz", - "integrity": "sha512-0BUE16d7n1x7pi1YluXJdB33jOTyBChT0j/BlOkFa9uxfg6YqXieHxjHNuCdJRARa7AZEj32LLLEPJ1fSa4inA==", - "dependencies": { - "@smithy/fetch-http-handler": "^2.2.7", - "@smithy/node-http-handler": "^2.1.10", - "@smithy/types": "^2.6.0", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-buffer-from": "^2.0.0", - "@smithy/util-hex-encoding": "^2.0.0", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.1.3.tgz", + "integrity": "sha512-FIv/bRhIlAxC0U7xM1BCnF2aDRPq0UaelqBHkM2lsCp26mcBbgI0tCVTv+jGdsQLUmAMybua/bjDsSu8RQHbmw==", + "dependencies": { + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/types": "^3.3.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-stream/node_modules/@smithy/is-array-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", + "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-stream/node_modules/@smithy/util-buffer-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", + "dependencies": { + "@smithy/is-array-buffer": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-stream/node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", + "dependencies": { + "@smithy/util-buffer-from": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, "node_modules/@smithy/util-stream/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/@smithy/util-uri-escape": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.0.0.tgz", - "integrity": "sha512-ebkxsqinSdEooQduuk9CbKcI+wheijxEb3utGXkCoYQkJnwTnLbH1JXGimJtUkQwNQbsbuYwG2+aFVyZf5TLaw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz", + "integrity": "sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-uri-escape/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/@smithy/util-utf8": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.0.2.tgz", - "integrity": "sha512-qOiVORSPm6Ce4/Yu6hbSgNHABLP2VMv8QOC3tTDNHHlWY19pPyc++fBTbZPtx6egPXi4HQxKDnMxVxpbtX2GoA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.1.1.tgz", + "integrity": "sha512-BqTpzYEcUMDwAKr7/mVRUtHDhs6ZoXDi9NypMvMfOr/+u1NW7JgqodPDECiiLboEm6bobcPcECxzjtQh865e9A==", "dependencies": { - "@smithy/util-buffer-from": "^2.0.0", + "@smithy/util-buffer-from": "^2.1.1", "tslib": "^2.5.0" }, "engines": { @@ -10838,22 +6291,22 @@ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/util-waiter": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-2.0.14.tgz", - "integrity": "sha512-Q6gSz4GUNjNGhrfNg+2Mjy+7K4pEI3r82x1b/+3dSc03MQqobMiUrRVN/YK/4nHVagvBELCoXsiHAFQJNQ5BeA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-3.1.2.tgz", + "integrity": "sha512-4pP0EV3iTsexDx+8PPGAKCQpd/6hsQBaQhqWzU4hqKPHN5epPsxKbvUTIiYIHTxaKt6/kEaqPBpu/ufvfbrRzw==", "dependencies": { - "@smithy/abort-controller": "^2.0.14", - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/abort-controller": "^3.1.1", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-waiter/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/@tootallnate/once": { "version": "1.1.2", @@ -11679,11 +7132,13 @@ "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" }, "node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.28.0.tgz", + "integrity": "sha512-Tu7NYoGY4Yoc7I+Npf9HhUMtEEpV7ZiLH9yndTCoNhcpBH0kwcvFbzYN9/u5QKI5A6uefjsNNWaz5olJVYS62Q==", "dependencies": { - "follow-redirects": "^1.14.0" + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, "node_modules/babel-code-frame": { @@ -12241,20 +7696,20 @@ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "dependencies": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", + "qs": "6.13.0", + "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" }, @@ -12276,20 +7731,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, - "node_modules/body-parser/node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -12315,12 +7756,12 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -12652,12 +8093,18 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -13488,9 +8935,9 @@ "dev": true }, "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", "engines": { "node": ">= 0.6" } @@ -13916,6 +9363,22 @@ "node": ">=0.10.0" } }, + "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==", + "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.0", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", @@ -14331,9 +9794,9 @@ "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" }, "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "engines": { "node": ">= 0.8" } @@ -14447,6 +9910,25 @@ "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "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==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-set-tostringtag": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", @@ -15348,36 +10830,36 @@ } }, "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", + "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.1", + "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.7.1", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", + "finalhandler": "1.3.1", "fresh": "0.5.2", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", - "qs": "6.11.0", + "qs": "6.13.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "0.19.0", + "serve-static": "1.16.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -15467,14 +10949,6 @@ "resolved": "https://registry.npmjs.org/express-unless/-/express-unless-2.1.3.tgz", "integrity": "sha512-wj4tLMyCVYuIIKHGt0FhCtIViBcwzWejX0EjNxveAa6dG+0XBCQhMbx+PnkLkFCxLC69qoFrxds4pIyL88inaQ==" }, - "node_modules/express/node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/express/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -15488,20 +10962,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, - "node_modules/express/node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -15652,27 +11112,6 @@ "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz", "integrity": "sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==" }, - "node_modules/fast-xml-parser": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", - "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==", - "funding": [ - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - }, - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], - "dependencies": { - "strnum": "^1.0.5" - }, - "bin": { - "fxparser": "src/cli/cli.js" - } - }, "node_modules/fb-watchman": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", @@ -15716,9 +11155,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "dependencies": { "to-regex-range": "^5.0.1" @@ -15736,12 +11175,12 @@ } }, "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dependencies": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", @@ -15919,9 +11358,9 @@ "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "funding": [ { "type": "individual", @@ -16212,9 +11651,12 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/function.prototype.name": { "version": "1.1.5", @@ -16312,14 +11754,18 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -16764,11 +12210,11 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dependencies": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -16873,6 +12319,17 @@ "node": ">=0.10.0" } }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -17365,29 +12822,10 @@ "url": "https://opencollective.com/ioredis" } }, - "node_modules/ip-address": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", - "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", - "peer": true, - "dependencies": { - "jsbn": "1.1.0", - "sprintf-js": "^1.1.3" - }, - "engines": { - "node": ">= 12" - } - }, - "node_modules/ip-address/node_modules/jsbn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", - "peer": true - }, - "node_modules/ip-address/node_modules/sprintf-js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "node_modules/ip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.1.tgz", + "integrity": "sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==", "peer": true }, "node_modules/ip-regex": { @@ -20914,9 +16352,9 @@ } }, "node_modules/jose": { - "version": "4.14.4", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.14.4.tgz", - "integrity": "sha512-j8GhLiKmUAh+dsFXlX1aJCbt5KMibuKb+d7j1JaOJG6s2UjX1PQlW+OKB/sD4a/5ZYF4RcmYmLSndOoU3Lt/3g==", + "version": "4.15.5", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.5.tgz", + "integrity": "sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg==", "funding": { "url": "https://github.com/sponsors/panva" } @@ -21717,6 +17155,22 @@ "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==", "dev": true }, + "node_modules/localforage": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", + "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", + "dependencies": { + "lie": "3.1.1" + } + }, + "node_modules/localforage/node_modules/lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", + "dependencies": { + "immediate": "~3.0.5" + } + }, "node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -22041,11 +17495,6 @@ "get-func-name": "^2.0.0" } }, - "node_modules/lru_map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", - "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==" - }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -22370,9 +17819,12 @@ "integrity": "sha512-IAeFvcOnV9V0Yk+bFhYR07O3yNina9ANIN5MoXBKYJ/RLYPurd2d0yw14MDhpr9/momp0WofT1bPUh3hkzdi/g==" }, "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/merge-stream": { "version": "2.0.0", @@ -22389,12 +17841,12 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -22579,9 +18031,9 @@ } }, "node_modules/mongoose": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.13.2.tgz", - "integrity": "sha512-v99W8JS/9iz1f76A3q/G/E1e16p0QuUZdSFzE21kLMgg5LYtM//sqkFFwCDDqJSTQeCnGGDYWzGSCgpjsN1kAg==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.12.6.tgz", + "integrity": "sha512-VFxDnWj8esgswwplmpQYMT+lYcvuIhl76WDLz/vgp41/FOhBPM/n3GjyztK8R3r2ljsM6kudvKgqLhfcZEih1Q==", "peer": true, "dependencies": { "bson": "^4.7.2", @@ -22966,9 +18418,9 @@ } }, "node_modules/nodemailer": { - "version": "6.9.3", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.3.tgz", - "integrity": "sha512-fy9v3NgTzBngrMFkDsKEj0r02U7jm6XfC3b52eoNV+GCrGj+s8pt5OqhiJdWKuw51zCTdiNR/IUD1z33LIIGpg==", + "version": "6.9.9", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.9.tgz", + "integrity": "sha512-dexTll8zqQoVJEZPwQAKzxxtFn0qTnjdQTchoU6Re9BUUGBJiOy3YMn/0ShTW6J5M0dfQ1NeDeRTTl4oIWgQMA==", "engines": { "node": ">=6.0.0" } @@ -23324,9 +18776,12 @@ } }, "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -23799,9 +19254,9 @@ "dev": true }, "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==" }, "node_modules/path-type": { "version": "4.0.0", @@ -24316,11 +19771,11 @@ "dev": true }, "node_modules/pug": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.2.tgz", - "integrity": "sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.3.tgz", + "integrity": "sha512-uBi6kmc9f3SZ3PXxqcHiUZLmIXgfgWooKWXcwSGwQd2Zi5Rb0bT14+8CJjJgI8AB+nndLaNgHGrcc6bPIB665g==", "dependencies": { - "pug-code-gen": "^3.0.2", + "pug-code-gen": "^3.0.3", "pug-filters": "^4.0.0", "pug-lexer": "^5.0.1", "pug-linker": "^4.0.0", @@ -24341,24 +19796,24 @@ } }, "node_modules/pug-code-gen": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.2.tgz", - "integrity": "sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.3.tgz", + "integrity": "sha512-cYQg0JW0w32Ux+XTeZnBEeuWrAY7/HNE6TWnhiHGnnRYlCgyAUPoyh9KzCMa9WhcJlJ1AtQqpEYHc+vbCzA+Aw==", "dependencies": { "constantinople": "^4.0.1", "doctypes": "^1.1.0", "js-stringify": "^1.0.2", "pug-attrs": "^3.0.0", - "pug-error": "^2.0.0", - "pug-runtime": "^3.0.0", + "pug-error": "^2.1.0", + "pug-runtime": "^3.0.1", "void-elements": "^3.1.0", "with": "^7.0.0" } }, "node_modules/pug-error": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.0.0.tgz", - "integrity": "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.1.0.tgz", + "integrity": "sha512-lv7sU9e5Jk8IeUheHata6/UThZ7RK2jnaaNztxfPYUY+VxZyk/ePVaNZ/vwmH8WqGvDz3LrNYt/+gA55NDg6Pg==" }, "node_modules/pug-filters": { "version": "4.0.0", @@ -24510,11 +19965,11 @@ } }, "node_modules/qs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", - "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -24594,9 +20049,9 @@ } }, "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -25792,9 +21247,9 @@ "dev": true }, "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -25827,20 +21282,28 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/send/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==" }, "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dependencies": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "0.19.0" }, "engines": { "node": ">= 0.8.0" @@ -25852,6 +21315,22 @@ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, + "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==", + "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-value": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", @@ -25975,13 +21454,17 @@ "integrity": "sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g==" }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -26346,16 +21829,16 @@ } }, "node_modules/socks": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", - "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", "peer": true, "dependencies": { - "ip-address": "^9.0.5", + "ip": "^2.0.0", "smart-buffer": "^4.2.0" }, "engines": { - "node": ">= 10.0.0", + "node": ">= 10.13.0", "npm": ">= 3.0.0" } }, diff --git a/packages/api/package.json b/packages/api/package.json index 929b0aa898..990a0ecb8e 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -1,6 +1,6 @@ { "name": "litefarm-api", - "version": "3.6.8", + "version": "3.7.0", "description": "LiteFarm API server", "main": "./api/src/server.js", "type": "module", @@ -48,13 +48,13 @@ ] }, "dependencies": { - "@aws-sdk/client-s3": "^3.456.0", + "@aws-sdk/client-s3": "^3.622.0", "@googlemaps/google-maps-services-js": "^3.3.14", - "@sentry/node": "^7.56.0", + "@sentry/node": "^7.119.2", "adm-zip": "^0.4.16", "ajv-formats": "^2.1.1", "async-file": "^2.0.2", - "axios": "^0.21.4", + "axios": "^0.28.0", "bcryptjs": "^2.4.3", "bull": "^3.22.9", "chai": "^4.2.0", @@ -65,7 +65,7 @@ "dotenv": "^8.2.0", "email-templates": "^8.0.4", "exceljs": "4.3.0", - "express": "^4.17.1", + "express": "^4.21.1", "express-jwt": "^8.4.1", "express-jwt-authz": "^2.4.1", "express-oas-generator": "^1.0.44", @@ -82,11 +82,10 @@ "lodash": "^4.17.20", "multer": "^1.4.2", "node-schedule": "^1.3.2", - "nodemailer": "^6.6.0", + "nodemailer": "^6.9.9", "objection": "^3.0.1", "objection-soft-delete": "^1.0.7", "pg": "^8.5.1", - "pug": "^3.0.2", "puppeteer": "^13.3.1", "request": "^2.87.0", "request-promise": "^4.2.2", diff --git a/packages/api/src/controllers/animalBatchController.js b/packages/api/src/controllers/animalBatchController.js new file mode 100644 index 0000000000..8306b9bd8f --- /dev/null +++ b/packages/api/src/controllers/animalBatchController.js @@ -0,0 +1,222 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import { Model, transaction } from 'objection'; +import AnimalBatchModel from '../models/animalBatchModel.js'; +import baseController from './baseController.js'; +import { handleObjectionError } from '../util/errorCodes.js'; +import { + assignInternalIdentifiers, + checkAndAddCustomTypeAndBreed, + handleIncompleteTasksForAnimalsAndBatches, +} from '../util/animal.js'; +import { uploadPublicImage } from '../util/imageUpload.js'; +import _pick from 'lodash/pick.js'; + +const animalBatchController = { + getFarmAnimalBatches() { + return async (req, res) => { + try { + const { farm_id } = req.headers; + const rows = await AnimalBatchModel.query() + .where({ farm_id }) + .whereNotDeleted() + .withGraphFetched({ + animal_union_batch: true, + sex_detail: true, + animal_batch_use_relationships: true, + }); + return res.status(200).send( + rows.map(({ animal_union_batch, ...rest }) => ({ + ...rest, + internal_identifier: animal_union_batch.internal_identifier, + })), + ); + } catch (error) { + console.error(error); + return res.status(500).json({ + error, + }); + } + }; + }, + + addAnimalBatches() { + return async (req, res) => { + const trx = await transaction.start(Model.knex()); + + try { + const { farm_id } = req.headers; + const result = []; + + // Create utility object used in type and breed + const typeIdsMap = {}; + const typeBreedIdsMap = {}; + + for (const animalBatch of req.body) { + await checkAndAddCustomTypeAndBreed( + req, + typeIdsMap, + typeBreedIdsMap, + animalBatch, + farm_id, + trx, + ); + + // Remove farm_id if it happens to be set in animal object since it should be obtained from header + delete animalBatch.farm_id; + + const individualAnimalBatchResult = await baseController.insertGraphWithResponse( + AnimalBatchModel, + { ...animalBatch, farm_id }, + req, + { trx }, + ); + + result.push(individualAnimalBatchResult); + } + + await trx.commit(); + + await assignInternalIdentifiers(result, 'batch'); + return res.status(201).send(result); + } catch (error) { + await handleObjectionError(error, res, trx); + } + }; + }, + + editAnimalBatches() { + return async (req, res) => { + const trx = await transaction.start(Model.knex()); + + try { + const { farm_id } = req.headers; + + // Create utility object used in type and breed + const typeIdsMap = {}; + const typeBreedIdsMap = {}; + + const desiredKeys = [ + 'id', + 'count', + 'custom_breed_id', + 'custom_type_id', + 'default_breed_id', + 'default_type_id', + 'name', + 'notes', + 'photo_url', + 'organic_status', + 'supplier', + 'price', + 'sex_detail', + 'origin_id', + 'animal_batch_use_relationships', + 'birth_date', + 'dam', + 'sire', + 'brought_in_date', + 'weaning_date', + ]; + + // select only allowed properties to edit + for (const animalBatch of req.body) { + await checkAndAddCustomTypeAndBreed( + req, + typeIdsMap, + typeBreedIdsMap, + animalBatch, + farm_id, + trx, + ); + + const keysExisting = desiredKeys.filter((key) => key in animalBatch); + const data = _pick(animalBatch, keysExisting); + + await baseController.upsertGraph(AnimalBatchModel, data, req, { trx }); + } + + await trx.commit(); + // Do not send result revalidate using tags on frontend + return res.status(204).send(); + } catch (error) { + handleObjectionError(error, res, trx); + } + }; + }, + + removeAnimalBatches() { + return async (req, res) => { + const trx = await transaction.start(Model.knex()); + const ids = []; + + try { + for (const animalBatch of req.body) { + const { id, animal_removal_reason_id, removal_explanation, removal_date } = animalBatch; + + await baseController.patch( + AnimalBatchModel, + id, + { + animal_removal_reason_id, + removal_explanation, + removal_date, + }, + req, + { trx }, + ); + + ids.push(id); + } + + const { removal_date } = req.body[0]; + await handleIncompleteTasksForAnimalsAndBatches(req, trx, 'batch', ids, removal_date); + await trx.commit(); + return res.status(204).send(); + } catch (error) { + handleObjectionError(error, res, trx); + } + }; + }, + + deleteAnimalBatches() { + return async (req, res) => { + const trx = await transaction.start(Model.knex()); + + try { + const { ids, date } = req.query; + const idsSet = new Set(ids.split(',')); + + for (const batchId of idsSet) { + await baseController.delete(AnimalBatchModel, batchId, req, { trx }); + } + + await handleIncompleteTasksForAnimalsAndBatches(req, trx, 'batch', [...idsSet], date); + await trx.commit(); + return res.status(204).send(); + } catch (error) { + handleObjectionError(error, res, trx); + } + }; + }, + uploadAnimalBatchImage() { + return async (req, res, next) => { + await uploadPublicImage('animal_batch')(req, res, next); + }; + }, +}; + +export default animalBatchController; diff --git a/packages/api/src/controllers/animalController.js b/packages/api/src/controllers/animalController.js new file mode 100644 index 0000000000..951dd9a38b --- /dev/null +++ b/packages/api/src/controllers/animalController.js @@ -0,0 +1,223 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import { Model, transaction } from 'objection'; +import AnimalModel from '../models/animalModel.js'; +import baseController from './baseController.js'; +import { + assignInternalIdentifiers, + checkAndAddCustomTypeAndBreed, + handleIncompleteTasksForAnimalsAndBatches, +} from '../util/animal.js'; +import { handleObjectionError } from '../util/errorCodes.js'; +import { uploadPublicImage } from '../util/imageUpload.js'; +import _pick from 'lodash/pick.js'; + +const animalController = { + getFarmAnimals() { + return async (req, res) => { + try { + const { farm_id } = req.headers; + const rows = await AnimalModel.query() + .where({ farm_id }) + .whereNotDeleted() + .withGraphFetched({ + animal_union_batch: true, + animal_use_relationships: true, + }); + return res.status(200).send( + rows.map(({ animal_union_batch, ...rest }) => ({ + ...rest, + internal_identifier: animal_union_batch.internal_identifier, + })), + ); + } catch (error) { + console.error(error); + return res.status(500).json({ + error, + }); + } + }; + }, + + addAnimals() { + return async (req, res) => { + const trx = await transaction.start(Model.knex()); + try { + const { farm_id } = req.headers; + const result = []; + + // Create utility object used in type and breed + const typeIdsMap = {}; + const typeBreedIdsMap = {}; + + for (const animal of req.body) { + await checkAndAddCustomTypeAndBreed( + req, + typeIdsMap, + typeBreedIdsMap, + animal, + farm_id, + trx, + ); + // Remove farm_id if it happens to be set in animal object since it should be obtained from header + delete animal.farm_id; + + const individualAnimalResult = await baseController.insertGraphWithResponse( + AnimalModel, + { ...animal, farm_id }, + req, + { trx }, + ); + + result.push(individualAnimalResult); + } + + await trx.commit(); + + await assignInternalIdentifiers(result, 'animal'); + + return res.status(201).send(result); + } catch (error) { + await handleObjectionError(error, res, trx); + } + }; + }, + editAnimals() { + return async (req, res) => { + const trx = await transaction.start(Model.knex()); + + try { + const { farm_id } = req.headers; + // Create utility object used in type and breed + const typeIdsMap = {}; + const typeBreedIdsMap = {}; + + const desiredKeys = [ + 'id', + 'custom_breed_id', + 'custom_type_id', + 'default_breed_id', + 'default_type_id', + 'sex_id', + 'name', + 'birth_date', + 'identifier', + 'identifier_color_id', + 'identifier_placement_id', + 'identifier_type_id', + 'identifier_type_other', + 'origin_id', + 'dam', + 'sire', + 'brought_in_date', + 'weaning_date', + 'notes', + 'photo_url', + 'organic_status', + 'supplier', + 'price', + 'sex_detail', + 'origin_id', + 'animal_use_relationships', + ]; + + // select only allowed properties to edit + for (const animal of req.body) { + await checkAndAddCustomTypeAndBreed( + req, + typeIdsMap, + typeBreedIdsMap, + animal, + farm_id, + trx, + ); + + const keysExisting = desiredKeys.filter((key) => key in animal); + const data = _pick(animal, keysExisting); + + await baseController.upsertGraph(AnimalModel, data, req, { trx }); + } + + await trx.commit(); + // Do not send result revalidate using tags on frontend + return res.status(204).send(); + } catch (error) { + handleObjectionError(error, res, trx); + } + }; + }, + removeAnimals() { + return async (req, res) => { + const trx = await transaction.start(Model.knex()); + const ids = []; + + try { + for (const animal of req.body) { + const { id, animal_removal_reason_id, removal_explanation, removal_date } = animal; + + await baseController.patch( + AnimalModel, + id, + { + animal_removal_reason_id, + removal_explanation, + removal_date, + }, + req, + { trx }, + ); + + ids.push(id); + } + + const { removal_date } = req.body[0]; + await handleIncompleteTasksForAnimalsAndBatches(req, trx, 'animal', ids, removal_date); + await trx.commit(); + return res.status(204).send(); + } catch (error) { + handleObjectionError(error, res, trx); + } + }; + }, + + deleteAnimals() { + return async (req, res) => { + const trx = await transaction.start(Model.knex()); + + try { + const { ids, date } = req.query; + const idsSet = new Set(ids.split(',')); + + for (const animalId of idsSet) { + await baseController.delete(AnimalModel, animalId, req, { trx }); + } + + await handleIncompleteTasksForAnimalsAndBatches(req, trx, 'animal', [...idsSet], date); + await trx.commit(); + return res.status(204).send(); + } catch (error) { + handleObjectionError(error, res, trx); + } + }; + }, + uploadAnimalImage() { + return async (req, res, next) => { + await uploadPublicImage('animal')(req, res, next); + }; + }, +}; + +export default animalController; diff --git a/packages/api/src/controllers/animalGroupController.js b/packages/api/src/controllers/animalGroupController.js new file mode 100644 index 0000000000..095d6f1932 --- /dev/null +++ b/packages/api/src/controllers/animalGroupController.js @@ -0,0 +1,147 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import { Model, transaction } from 'objection'; +import baseController from './baseController.js'; +import AnimalGroupModel from '../models/animalGroupModel.js'; +import AnimalGroupRelationshipModel from '../models/animalGroupRelationshipModel.js'; +import AnimalBatchGroupRelationshipModel from '../models/animalBatchGroupRelationshipModel.js'; +import AnimalModel from '../models/animalModel.js'; +import AnimalBatchModel from '../models/animalBatchModel.js'; +import { checkAndTrimString } from '../util/util.js'; +import { handleObjectionError } from '../util/errorCodes.js'; + +const animalGroupController = { + getFarmAnimalGroups() { + return async (req, res) => { + try { + const { farm_id } = req.headers; + const rows = await AnimalGroupModel.query() + .where({ farm_id }) + .whereNotDeleted() + .withGraphFetched({ animal_relationships: true, batch_relationships: true }); + return res.status(200).json( + rows.map(({ animal_relationships, batch_relationships, ...rest }) => ({ + ...rest, + related_animal_ids: animal_relationships.map(({ animal_id }) => animal_id), + related_batch_ids: batch_relationships.map(({ animal_batch_id }) => animal_batch_id), + })), + ); + } catch (error) { + console.error(error); + return res.status(500).json({ + error, + }); + } + }; + }, + + addAnimalGroup() { + return async (req, res) => { + const trx = await transaction.start(Model.knex()); + try { + const { farm_id } = req.headers; + const { related_animal_ids, related_batch_ids } = req.body; + let { name, notes } = req.body; + name = checkAndTrimString(name); + notes = checkAndTrimString(notes); + + const relatedAnimalIdSet = new Set(related_animal_ids); + const relatedBatchIdSet = new Set(related_batch_ids); + + // Check ownership of animals + const invalidAnimalIds = []; + for (const animalId of relatedAnimalIdSet) { + const animal = await AnimalModel.query(trx) + .findById(animalId) + .where({ farm_id }) + .whereNotDeleted(); + + if (!animal) { + invalidAnimalIds.push(animalId); + } + } + + // Check ownership of batches + const invalidBatchIds = []; + for (const batchId of relatedBatchIdSet) { + const animalBatch = await AnimalBatchModel.query(trx) + .findById(batchId) + .where({ farm_id }) + .whereNotDeleted(); + + if (!animalBatch) { + invalidBatchIds.push(batchId); + } + } + + if (invalidAnimalIds.length || invalidBatchIds.length) { + await trx.rollback(); + return res.status(400).json({ + error: 'Invalid ids', + invalidAnimalIds, + invalidBatchIds, + message: + 'Some animal IDs or animal batch IDs do not exist or are not associated with the given farm.', + }); + } + + const record = await baseController.existsInTable(trx, AnimalGroupModel, { + name, + farm_id, + deleted: false, + }); + + if (record) { + await trx.rollback(); + return res.status(409).send(); // Enforcing uniqueness on group name + } + + const result = await baseController.postWithResponse( + AnimalGroupModel, + { name, notes, farm_id }, + req, + { + trx, + }, + ); + + const groupId = result.id; + + // Insert into join tables + for (const animalId of relatedAnimalIdSet) { + await AnimalGroupRelationshipModel.query(trx).insert({ + animal_id: animalId, + animal_group_id: groupId, + }); + } + + for (const batchId of relatedBatchIdSet) { + await AnimalBatchGroupRelationshipModel.query(trx).insert({ + animal_batch_id: batchId, + animal_group_id: groupId, + }); + } + + await trx.commit(); + return res.status(201).send(result); + } catch (error) { + await handleObjectionError(error, res, trx); + } + }; + }, +}; + +export default animalGroupController; diff --git a/packages/api/src/controllers/animalIdentifierColorController.js b/packages/api/src/controllers/animalIdentifierColorController.js new file mode 100644 index 0000000000..767260a063 --- /dev/null +++ b/packages/api/src/controllers/animalIdentifierColorController.js @@ -0,0 +1,34 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import AnimalIdentifierColor from '../models/animalIdentifierColorModel.js'; + +const animalIdentifierColorController = { + getAnimalIdentifierColors() { + return async (_req, res) => { + try { + const rows = await AnimalIdentifierColor.query(); + return res.status(200).send(rows); + } catch (error) { + console.error(error); + return res.status(500).json({ + error, + }); + } + }; + }, +}; + +export default animalIdentifierColorController; diff --git a/packages/api/src/controllers/animalIdentifierTypeController.js b/packages/api/src/controllers/animalIdentifierTypeController.js new file mode 100644 index 0000000000..64b7fbd547 --- /dev/null +++ b/packages/api/src/controllers/animalIdentifierTypeController.js @@ -0,0 +1,29 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import AnimalIdentifierType from '../models/animalIdentifierTypeModel.js'; + +async function getIdentifierTypes(_, res) { + try { + return res.status(200).send(await AnimalIdentifierType.query()); + } catch (error) { + console.error(error); + return res.status(500).json({ + error, + }); + } +} + +export { getIdentifierTypes }; diff --git a/packages/api/src/controllers/animalMovementPurposeController.js b/packages/api/src/controllers/animalMovementPurposeController.js new file mode 100644 index 0000000000..8cc785feab --- /dev/null +++ b/packages/api/src/controllers/animalMovementPurposeController.js @@ -0,0 +1,34 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import AnimalMovementPurposeModel from '../models/animalMovementPurposeModel.js'; + +const animalMovementPurposeController = { + getAnimalMovementPurposes() { + return async (_req, res) => { + try { + const rows = await AnimalMovementPurposeModel.query(); + return res.status(200).send(rows); + } catch (error) { + console.error(error); + return res.status(500).json({ + error, + }); + } + }; + }, +}; + +export default animalMovementPurposeController; diff --git a/packages/api/src/controllers/animalOriginController.js b/packages/api/src/controllers/animalOriginController.js new file mode 100644 index 0000000000..877d220aa7 --- /dev/null +++ b/packages/api/src/controllers/animalOriginController.js @@ -0,0 +1,34 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import AnimalOrigin from '../models/animalOriginModel.js'; + +const animalOriginController = { + getAnimalOrigins() { + return async (_req, res) => { + try { + const rows = await AnimalOrigin.query(); + return res.status(200).send(rows); + } catch (error) { + console.error(error); + return res.status(500).json({ + error, + }); + } + }; + }, +}; + +export default animalOriginController; diff --git a/packages/api/src/controllers/animalRemovalReasonController.js b/packages/api/src/controllers/animalRemovalReasonController.js new file mode 100644 index 0000000000..274302888a --- /dev/null +++ b/packages/api/src/controllers/animalRemovalReasonController.js @@ -0,0 +1,34 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import AnimalRemovalReason from '../models/animalRemovalReasonModel.js'; + +const animalRemovalReasonController = { + getAnimalRemovalReasons() { + return async (_req, res) => { + try { + const rows = await AnimalRemovalReason.query(); + return res.status(200).send(rows); + } catch (error) { + console.error(error); + return res.status(500).json({ + error, + }); + } + }; + }, +}; + +export default animalRemovalReasonController; diff --git a/packages/api/src/controllers/animalSexController.js b/packages/api/src/controllers/animalSexController.js new file mode 100644 index 0000000000..5eb0676426 --- /dev/null +++ b/packages/api/src/controllers/animalSexController.js @@ -0,0 +1,34 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import AnimalSex from '../models/animalSexModel.js'; + +const animalSexController = { + getAnimalSexes() { + return async (_req, res) => { + try { + const rows = await AnimalSex.query(); + return res.status(200).send(rows); + } catch (error) { + console.error(error); + return res.status(500).json({ + error, + }); + } + }; + }, +}; + +export default animalSexController; diff --git a/packages/api/src/controllers/animalUseController.js b/packages/api/src/controllers/animalUseController.js new file mode 100644 index 0000000000..4a6529c269 --- /dev/null +++ b/packages/api/src/controllers/animalUseController.js @@ -0,0 +1,34 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import AnimalUse from '../models/animalUseModel.js'; + +const animalUseController = { + getAnimalUses() { + return async (_req, res) => { + try { + const uses = await AnimalUse.getAnimalUsesForTypes(); + return res.status(200).send(uses); + } catch (error) { + console.error(error); + return res.status(500).json({ + error, + }); + } + }; + }, +}; + +export default animalUseController; diff --git a/packages/api/src/controllers/baseController.js b/packages/api/src/controllers/baseController.js index bd7c1b43a5..6239a8dd17 100644 --- a/packages/api/src/controllers/baseController.js +++ b/packages/api/src/controllers/baseController.js @@ -191,21 +191,21 @@ export default { .upsertGraph(removeAdditionalPropertiesWithRelations(model, data), { insertMissing: true }); }, + // send back the resource that was just created + async insertGraphWithResponse(model, data, req, { trx, context = {} } = {}) { + return await model + .query(trx) + .context({ user_id: req?.auth?.user_id, ...context }) + .insertGraph(removeAdditionalPropertiesWithRelations(model, data)) + .returning('*'); + }, + // fetch an object and all of its related objects // see http://vincit.github.io/objection.js/#eager-loading async eager(model, subModel, trx) { return await model.query(trx).eager(subModel); }, - /** - * Format transaltion key - * @param {String} key - * @returns {String} - Formatted key - */ - formatTranslationKey(key) { - return key.toUpperCase().trim().replaceAll(' ', '_'); - }, - /** * To check if record is deleted or not * @param {Object} trx - Transaction object @@ -262,4 +262,3 @@ export default { return query.first(); }, }; -//export trx; diff --git a/packages/api/src/controllers/cropController.js b/packages/api/src/controllers/cropController.js index bc3e86d372..b99fc01053 100644 --- a/packages/api/src/controllers/cropController.js +++ b/packages/api/src/controllers/cropController.js @@ -19,14 +19,7 @@ import NominationCrop from '../models/nominationCropModel.js'; import CropModel from '../models/cropModel.js'; import CropVarietyModel from '../models/cropVarietyModel.js'; import objection from 'objection'; -import { - getPublicS3BucketName, - s3, - imaginaryPost, - getPublicS3Url, -} from '../util/digitalOceanSpaces.js'; -import { v4 as uuidv4 } from 'uuid'; -import { PutObjectCommand } from '@aws-sdk/client-s3'; +import { uploadPublicImage } from '../util/imageUpload.js'; const { transaction, Model, UniqueViolationError } = objection; @@ -213,40 +206,7 @@ const cropController = { uploadCropImage() { return async (req, res, next) => { - try { - const TYPE = 'webp'; - const fileName = `crop/${uuidv4()}.${TYPE}`; - - const THUMBNAIL_FORMAT = 'webp'; - const LENGTH = '208'; - - const compressedImage = await imaginaryPost( - req.file, - { - width: LENGTH, - height: LENGTH, - type: THUMBNAIL_FORMAT, - aspectratio: '1:1', - }, - { endpoint: 'smartcrop' }, - ); - - await s3.send( - new PutObjectCommand({ - Body: compressedImage.data, - Bucket: getPublicS3BucketName(), - Key: fileName, - ACL: 'public-read', - }), - ); - - return res.status(201).json({ - url: `${getPublicS3Url()}/${fileName}`, - }); - } catch (error) { - console.log(error); - return res.status(400).send('Fail to upload image'); - } + await uploadPublicImage('crop')(req, res, next); }; }, diff --git a/packages/api/src/controllers/cropVarietyController.js b/packages/api/src/controllers/cropVarietyController.js index ae546eabd1..aa0e680191 100644 --- a/packages/api/src/controllers/cropVarietyController.js +++ b/packages/api/src/controllers/cropVarietyController.js @@ -1,15 +1,9 @@ import CropVarietyModel from '../models/cropVarietyModel.js'; import ManagementPlanModel from '../models/managementPlanModel.js'; import CropModel from '../models/cropModel.js'; -import { - getPublicS3BucketName, - s3, - imaginaryPost, - getPublicS3Url, -} from '../util/digitalOceanSpaces.js'; -import { v4 as uuidv4 } from 'uuid'; import baseController from './baseController.js'; -import { PutObjectCommand } from '@aws-sdk/client-s3'; +import { uploadPublicImage } from '../util/imageUpload.js'; + const { post } = baseController; const cropVarietyController = { @@ -131,40 +125,7 @@ const cropVarietyController = { }, uploadCropImage() { return async (req, res, next) => { - try { - const TYPE = 'webp'; - const fileName = `crop_variety/${uuidv4()}.${TYPE}`; - - const THUMBNAIL_FORMAT = 'webp'; - const LENGTH = '208'; - - const compressedImage = await imaginaryPost( - req.file, - { - width: LENGTH, - height: LENGTH, - type: THUMBNAIL_FORMAT, - aspectratio: '1:1', - }, - { endpoint: 'smartcrop' }, - ); - - await s3.send( - new PutObjectCommand({ - Body: compressedImage.data, - Bucket: getPublicS3BucketName(), - Key: fileName, - ACL: 'public-read', - }), - ); - - return res.status(201).json({ - url: `${getPublicS3Url()}/${fileName}`, - }); - } catch (error) { - console.log(error); - return res.status(400).send('Fail to upload image'); - } + await uploadPublicImage('crop_variety')(req, res, next); }; }, }; diff --git a/packages/api/src/controllers/customAnimalBreedController.js b/packages/api/src/controllers/customAnimalBreedController.js new file mode 100644 index 0000000000..2d0b89e31d --- /dev/null +++ b/packages/api/src/controllers/customAnimalBreedController.js @@ -0,0 +1,108 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import CustomAnimalBreedModel from '../models/customAnimalBreedModel.js'; +import CustomAnimalTypeModel from '../models/customAnimalTypeModel.js'; +import { transaction, Model } from 'objection'; +import baseController from './baseController.js'; +import { checkAndTrimString } from '../util/util.js'; +import { handleObjectionError } from '../util/errorCodes.js'; + +const customAnimalBreedController = { + getCustomAnimalBreeds() { + return async (req, res) => { + try { + const { farm_id } = req.headers; + const { default_type_id, custom_type_id } = req.query; + + if (default_type_id && custom_type_id) { + return res.status(400).send('Only default_type_id or custom_type_id should be specified'); + } + + const rows = await CustomAnimalBreedModel.query() + .where({ farm_id }) + .modify((queryBuilder) => { + if (default_type_id) { + queryBuilder.where('default_type_id', default_type_id); + } else if (custom_type_id) { + queryBuilder.where('custom_type_id', custom_type_id); + } + }); + return res.status(200).send(rows); + } catch (error) { + console.error(error); + return res.status(500).json({ + error, + }); + } + }; + }, + + addCustomAnimalBreed() { + return async (req, res) => { + const trx = await transaction.start(Model.knex()); + try { + const { farm_id } = req.headers; + let { breed } = req.body; + const { default_type_id, custom_type_id } = req.body; + breed = checkAndTrimString(breed); + + const breedDetails = { breed }; + + if (custom_type_id) { + const customType = await CustomAnimalTypeModel.query().findById(custom_type_id); + if (customType && customType.farm_id !== farm_id) { + await trx.rollback(); + return res.status(400).send('custom_type_id has invalid value'); + } + breedDetails.custom_type_id = custom_type_id; + } + if (default_type_id) { + breedDetails.default_type_id = default_type_id; + } + + const record = await baseController.existsInTable(trx, CustomAnimalBreedModel, { + ...breedDetails, + farm_id, + deleted: false, + }); + + if (record) { + await trx.rollback(); + return res.status(409).send(); + } else { + const result = await baseController.postWithResponse( + CustomAnimalBreedModel, + { + ...breedDetails, + farm_id, + }, + req, + { + trx, + }, + ); + + await trx.commit(); + return res.status(201).send(result); + } + } catch (error) { + await handleObjectionError(error, res, trx); + } + }; + }, +}; + +export default customAnimalBreedController; diff --git a/packages/api/src/controllers/customAnimalTypeController.js b/packages/api/src/controllers/customAnimalTypeController.js new file mode 100644 index 0000000000..b9252901bf --- /dev/null +++ b/packages/api/src/controllers/customAnimalTypeController.js @@ -0,0 +1,80 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import { transaction, Model } from 'objection'; +import baseController from './baseController.js'; + +import CustomAnimalTypeModel from '../models/customAnimalTypeModel.js'; +import { checkAndTrimString } from '../util/util.js'; +import { handleObjectionError } from '../util/errorCodes.js'; + +const customAnimalTypeController = { + getCustomAnimalTypes() { + return async (req, res) => { + try { + const { farm_id } = req.headers; + const rows = + req.query.count === 'true' + ? await CustomAnimalTypeModel.getCustomAnimalTypesWithCountsByFarmId(farm_id) + : await CustomAnimalTypeModel.query().where({ farm_id }).whereNotDeleted(); + + return res.status(200).send(rows); + } catch (error) { + console.error(error); + return res.status(500).json({ + error, + }); + } + }; + }, + + addCustomAnimalType() { + return async (req, res) => { + const trx = await transaction.start(Model.knex()); + try { + const { farm_id } = req.headers; + let { type } = req.body; + type = checkAndTrimString(type); + + const record = await baseController.existsInTable(trx, CustomAnimalTypeModel, { + type, + farm_id, + deleted: false, + }); + + if (record) { + await trx.rollback(); + return res.status(409).send(); + } + + const result = await baseController.postWithResponse( + CustomAnimalTypeModel, + { type, farm_id }, + req, + { + trx, + }, + ); + + await trx.commit(); + return res.status(201).send(result); + } catch (error) { + await handleObjectionError(error, res, trx); + } + }; + }, +}; + +export default customAnimalTypeController; diff --git a/packages/api/src/controllers/defaultAnimalBreedController.js b/packages/api/src/controllers/defaultAnimalBreedController.js new file mode 100644 index 0000000000..751db16f02 --- /dev/null +++ b/packages/api/src/controllers/defaultAnimalBreedController.js @@ -0,0 +1,39 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import DefaultAnimalBreedModel from '../models/defaultAnimalBreedModel.js'; + +const defaultAnimalBreedController = { + getDefaultAnimalBreeds() { + return async (req, res) => { + try { + const { default_type_id } = req.query; + const rows = await DefaultAnimalBreedModel.query().modify((queryBuilder) => { + if (default_type_id) { + queryBuilder.where('default_type_id', default_type_id); + } + }); + return res.status(200).send(rows); + } catch (error) { + console.error(error); + return res.status(500).json({ + error, + }); + } + }; + }, +}; + +export default defaultAnimalBreedController; diff --git a/packages/api/src/controllers/defaultAnimalTypeController.js b/packages/api/src/controllers/defaultAnimalTypeController.js new file mode 100644 index 0000000000..2694427fe6 --- /dev/null +++ b/packages/api/src/controllers/defaultAnimalTypeController.js @@ -0,0 +1,43 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import DefaultAnimalTypeModel from '../models/defaultAnimalTypeModel.js'; + +const defaultAnimalTypeController = { + getDefaultAnimalTypes() { + return async (req, res) => { + try { + const { farm_id } = req.headers; + const rows = + req.query.count === 'true' + ? await DefaultAnimalTypeModel.getDefaultAnimalTypesWithCountsByFarmId(farm_id) + : await DefaultAnimalTypeModel.query(); + + if (!rows.length) { + return res.sendStatus(404); + } + + return res.status(200).send(rows); + } catch (error) { + console.error(error); + return res.status(500).json({ + error, + }); + } + }; + }, +}; + +export default defaultAnimalTypeController; diff --git a/packages/api/src/controllers/farmExpenseController.js b/packages/api/src/controllers/farmExpenseController.js index 79f19b7709..392e241774 100644 --- a/packages/api/src/controllers/farmExpenseController.js +++ b/packages/api/src/controllers/farmExpenseController.js @@ -16,6 +16,7 @@ import baseController from '../controllers/baseController.js'; import FarmExpenseModel from '../models/farmExpenseModel.js'; +import ExpenseType from '../models/expenseTypeModel.js'; import { transaction, Model } from 'objection'; const farmExpenseController = { @@ -78,6 +79,24 @@ const farmExpenseController = { const { user_id } = req.auth; const trx = await transaction.start(Model.knex()); + + // do not allow updates to deleted records + if (await baseController.isDeleted(trx, FarmExpenseModel, { farm_expense_id })) { + await trx.rollback(); + return res.status(409).send('expense deleted'); + } + + // do not allow to change to deleted expense type + if ( + 'expense_type_id' in data && + (await baseController.isDeleted(trx, ExpenseType, { + expense_type_id: data.expense_type_id, + })) + ) { + await trx.rollback(); + return res.status(409).send('expense type deleted'); + } + try { const result = await FarmExpenseModel.query(trx) .context({ user_id }) diff --git a/packages/api/src/controllers/farmExpenseTypeController.js b/packages/api/src/controllers/farmExpenseTypeController.js index 507365d958..3768c81ada 100644 --- a/packages/api/src/controllers/farmExpenseTypeController.js +++ b/packages/api/src/controllers/farmExpenseTypeController.js @@ -18,6 +18,7 @@ import baseController from '../controllers/baseController.js'; import ExpenseTypeModel from '../models/expenseTypeModel.js'; import FarmExpenseModel from '../models/farmExpenseModel.js'; import { transaction, Model } from 'objection'; +import { formatTranslationKey } from '../util/util.js'; const farmExpenseTypeController = { addFarmExpenseType() { @@ -26,7 +27,7 @@ const farmExpenseTypeController = { try { const farm_id = req.headers.farm_id; const data = req.body; - data.expense_translation_key = baseController.formatTranslationKey(data.expense_name); + data.expense_translation_key = formatTranslationKey(data.expense_name); //prevent empty strings data.custom_description = data.custom_description || null; @@ -168,7 +169,7 @@ const farmExpenseTypeController = { return res.status(409).send(); } - data.expense_translation_key = baseController.formatTranslationKey(data.expense_name); + data.expense_translation_key = formatTranslationKey(data.expense_name); //prevent empty strings data.custom_description = data.custom_description || null; diff --git a/packages/api/src/controllers/insightController.js b/packages/api/src/controllers/insightController.js index 0646d65d0e..a5c2c5411e 100644 --- a/packages/api/src/controllers/insightController.js +++ b/packages/api/src/controllers/insightController.js @@ -252,7 +252,8 @@ const insightController = { WHERE to_char(date(s.sale_date), 'YYYY-MM') >= to_char(date(?), 'YYYY-MM') and c.crop_id IN ( SELECT crop_variety.crop_id FROM "crop_variety" - where crop_variety.farm_id = ?) + WHERE crop_variety.farm_id = ?) + AND s.deleted = FALSE GROUP BY year_month, c.crop_common_name, c.crop_translation_key, fa.farm_id ORDER BY year_month, c.crop_common_name`, [startDate, farmID], diff --git a/packages/api/src/controllers/organicCertifierSurveyController.js b/packages/api/src/controllers/organicCertifierSurveyController.js index 264e02a5aa..e19d51ee57 100644 --- a/packages/api/src/controllers/organicCertifierSurveyController.js +++ b/packages/api/src/controllers/organicCertifierSurveyController.js @@ -161,8 +161,16 @@ const organicCertifierSurveyController = { }); } const organicCertifierSurvey = await knex('organicCertifierSurvey') - .where({ farm_id }) + .where({ farm_id, interested: true }) .first(); + + // Skip the whole flow in case this Farm is not pursuing any cert. + if (organicCertifierSurvey === undefined) { + return res + .status(400) + .json({ message: 'You are not currently pursuing any certifications.' }); + } + const certification = organicCertifierSurvey.certification_id ? await knex('certifications') .where({ certification_id: organicCertifierSurvey.certification_id }) diff --git a/packages/api/src/controllers/revenueTypeController.js b/packages/api/src/controllers/revenueTypeController.js index c716b58b0f..278e5cad92 100644 --- a/packages/api/src/controllers/revenueTypeController.js +++ b/packages/api/src/controllers/revenueTypeController.js @@ -18,6 +18,7 @@ import baseController from './baseController.js'; import RevenueTypeModel from '../models/revenueTypeModel.js'; import SaleModel from '../models/saleModel.js'; import { transaction, Model } from 'objection'; +import { formatTranslationKey } from '../util/util.js'; const revenueTypeController = { addType() { @@ -26,7 +27,7 @@ const revenueTypeController = { try { const farm_id = req.headers.farm_id; const data = req.body; - data.revenue_translation_key = baseController.formatTranslationKey(data.revenue_name); + data.revenue_translation_key = formatTranslationKey(data.revenue_name); //prevent empty strings data.custom_description = data.custom_description || null; @@ -181,7 +182,7 @@ const revenueTypeController = { return res.status(409).send(); } - data.revenue_translation_key = baseController.formatTranslationKey(data.revenue_name); + data.revenue_translation_key = formatTranslationKey(data.revenue_name); const result = await baseController.patch(RevenueTypeModel, revenue_type_id, data, req, { trx, diff --git a/packages/api/src/controllers/saleController.js b/packages/api/src/controllers/saleController.js index e5d69d77cf..75275813c6 100644 --- a/packages/api/src/controllers/saleController.js +++ b/packages/api/src/controllers/saleController.js @@ -90,6 +90,21 @@ const SaleController = { saleData.value = value; } + // do not allow updates to deleted records + if (await baseController.isDeleted(trx, SaleModel, { sale_id })) { + await trx.rollback(); + return res.status(409).send('sale deleted'); + } + + // do not allow to change to deleted sale/revenue type + if ( + revenue_type_id && + (await baseController.isDeleted(trx, RevenueTypeModel, { revenue_type_id })) + ) { + await trx.rollback(); + return res.status(409).send('revenue type deleted'); + } + const newSale = await SaleModel.query(trx) .context(req.auth) .where('sale_id', sale_id) diff --git a/packages/api/src/controllers/showedSpotlightController.js b/packages/api/src/controllers/showedSpotlightController.js index 315f210e01..4c888404b3 100644 --- a/packages/api/src/controllers/showedSpotlightController.js +++ b/packages/api/src/controllers/showedSpotlightController.js @@ -43,6 +43,7 @@ const showedSpotlightController = { 'repeat_management_plan_creation', 'manage_custom_expense_type', 'manage_custom_revenue_type', + 'animals_beta', ) .findById(user_id); res.status(200).send(data); diff --git a/packages/api/src/controllers/supportTicketController.js b/packages/api/src/controllers/supportTicketController.js index d8a69fd613..e97cb6b1bc 100644 --- a/packages/api/src/controllers/supportTicketController.js +++ b/packages/api/src/controllers/supportTicketController.js @@ -37,6 +37,7 @@ const supportTicketController = { contact_method: capitalize(result.contact_method), contact: result[result.contact_method], locale: user.language_preference, + ...getOOOMessageReplacements(user.language_preference), }; const email = data.contact_method === 'email' && data.email; if (email && email !== user.email) { @@ -60,6 +61,16 @@ const supportTicketController = { }, }; +const getOOOMessageReplacements = (locale) => { + const ooo_message_enabled = process.env.OOO_MESSAGE_ENABLED === 'true'; + let ooo_end_date = process.env.OOO_END_DATE; + if (ooo_message_enabled && ooo_end_date) { + const dateOptions = { year: 'numeric', month: 'long', day: 'numeric' }; + ooo_end_date = new Date(ooo_end_date).toLocaleDateString(locale, dateOptions); + } + return { ooo_message_enabled, ooo_end_date }; +}; + const capitalize = (string) => { return string[0].toUpperCase() + string.slice(1); }; diff --git a/packages/api/src/controllers/taskController.js b/packages/api/src/controllers/taskController.js index 0dc257a85e..7b1440a777 100644 --- a/packages/api/src/controllers/taskController.js +++ b/packages/api/src/controllers/taskController.js @@ -31,7 +31,14 @@ import FieldWorkTypeModel from '../models/fieldWorkTypeModel.js'; import locationDefaultsModel from '../models/locationDefaultsModel.js'; import Location from '../models/locationModel.js'; import TaskTypeModel from '../models/taskTypeModel.js'; +import AnimalModel from '../models/animalModel.js'; +import AnimalBatchModel from '../models/animalBatchModel.js'; import baseController from './baseController.js'; +import AnimalMovementPurposeModel from '../models/animalMovementPurposeModel.js'; +import { ANIMAL_TASKS } from '../util/animal.js'; +import { CUSTOM_TASK } from '../util/task.js'; +import { customError } from '../util/customErrors.js'; + const adminRoles = [1, 2, 5]; async function getTaskAssigneeAndFinalWage(farm_id, user_id, task_id) { @@ -58,6 +65,38 @@ async function getTaskAssigneeAndFinalWage(farm_id, user_id, task_id) { return { assignee_user_id, finalWage }; } +async function formatAnimalMovementTaskForDB(data) { + if (!data.animal_movement_task) { + return data; + } + + if (!('purpose_ids' in data.animal_movement_task)) { + delete data.animal_movement_task.other_purpose; + return data; + } + + data.animal_movement_task.purpose_relationships = []; + + if (data.animal_movement_task.purpose_ids?.length) { + const { id: otherPurposeId } = await AnimalMovementPurposeModel.query() + .select('id') + .where({ key: 'OTHER' }) + .first(); + + data.animal_movement_task.purpose_ids.forEach((id) => { + const purposeRelationship = { purpose_id: id }; + if (id === otherPurposeId) { + purposeRelationship.other_purpose = data.animal_movement_task.other_purpose; + } + data.animal_movement_task.purpose_relationships.push(purposeRelationship); + }); + } + delete data.animal_movement_task.purpose_ids; + delete data.animal_movement_task.other_purpose; + + return data; +} + async function updateTaskWithCompletedData( trx, user_id, @@ -67,48 +106,130 @@ async function updateTaskWithCompletedData( nonModifiable, typeOfTask, ) { - if (typeOfTask === 'soil_amendment_task') { - const { soil_amendment_task_products } = data; + switch (typeOfTask) { + case 'soil_amendment_task': { + const { soil_amendment_task_products } = data; + + if (soil_amendment_task_products) { + // Temporarily soft delete all with task_id since there is no constraint on deletions + await SoilAmendmentTaskProductsModel.query(trx) + .context({ user_id }) + .update({ deleted: true }) + .where('task_id', task_id); + + // Set deleted false for all in update query + soil_amendment_task_products.forEach((taskProduct) => { + taskProduct.deleted = false; + }); + } - if (soil_amendment_task_products) { - // Temporarily soft delete all with task_id since there is no constraint on deletions - await SoilAmendmentTaskProductsModel.query(trx) + // Allows the insertion of missing data if no id present + // Soft deletes table rows with soft delete option and hard deletes ones without + const task = await TaskModel.query(trx) .context({ user_id }) - .update({ deleted: true }) - .where('task_id', task_id); - - // Set deleted false for all in update query - soil_amendment_task_products.forEach((taskProduct) => { - taskProduct.deleted = false; - }); + .upsertGraph( + { task_id, ...data, ...wagePatchData }, + { + noUpdate: nonModifiable, + noDelete: nonModifiable, + noInsert: nonModifiable, + insertMissing: true, + }, + ); + return task; } - // Allows the insertion of missing data if no id present - // Soft deletes table rows with soft delete option and hard deletes ones without - const task = await TaskModel.query(trx) - .context({ user_id }) - .upsertGraph( - { task_id, ...data, ...wagePatchData }, - { - noUpdate: nonModifiable, - noDelete: nonModifiable, - noInsert: nonModifiable, - insertMissing: true, - }, - ); - return task; - } else { - const task = await TaskModel.query(trx) - .context({ user_id }) - .upsertGraph( - { task_id, ...data, ...wagePatchData }, - { - noUpdate: nonModifiable, - noDelete: true, - noInsert: true, - }, + case 'animal_movement_task': { + const { task_type_id, locations, animals, animal_batches } = await TaskModel.query(trx) + .select('task_type_id') + .withGraphFetched( + '[locations(selectLocationId, filterDeleted), animals(selectId), animal_batches(selectId)]', + ) + .where({ task_id }) + .first(); + + const locationId = locations?.[0]?.location_id; + + if (!locationId) { + throw customError('location deleted'); + } + + if (!data.animals && !data.animal_batches) { + data.animals = animals; + data.animal_batches = animal_batches; + } + + const updateEntityLocations = async (entities, getNewerCompletedTasks) => { + if (!entities?.length) { + return; + } + + const entitiesWithNewerCompletedTasks = await getNewerCompletedTasks( + entities.map(({ id }) => id), + task_type_id, + data.complete_date, + ); + + entities.forEach((entity) => { + const newerCompletedTasks = + entitiesWithNewerCompletedTasks.find(({ id }) => id === entity.id)?.tasks || []; + + // If there's no newer completed task, update the location + if (!newerCompletedTasks.length) { + entity.location_id = locationId; + } + }); + }; + + await updateEntityLocations(data.animals, AnimalModel.getAnimalsWithNewerCompletedTasks); + await updateEntityLocations( + data.animal_batches, + AnimalBatchModel.getBatchesWithNewerCompletedTasks, ); - return task; + + if (!data.animal_movement_task) { + data.animal_movement_task = {}; + } + // Prevent deletion of animal_movement_task and allow proper updates on purpose relationships + data.animal_movement_task.task_id = task_id; + + // If the request body do not have purposes, add 'animal_movement_task.purpose_relationships' + // to prevent existing purpose relationships from being deleted + const noDelete = data.animal_movement_task.purpose_relationships + ? nonModifiable + : [...nonModifiable, 'animal_movement_task.purpose_relationships']; + + const task = await TaskModel.query(trx) + .context({ user_id }) + .upsertGraph( + { task_id, ...data, ...wagePatchData }, + { + noUpdate: nonModifiable, + noDelete, + noInsert: [...nonModifiable, 'animal_movement_task'], + relate: ['animals', 'animal_batches'], + unrelate: ['animals', 'animal_batches'], + }, + ); + + return task; + } + + default: { + const task = await TaskModel.query(trx) + .context({ user_id }) + .upsertGraph( + { task_id, ...data, ...wagePatchData }, + { + noUpdate: nonModifiable, + noDelete: true, + noInsert: true, + relate: ['animals', 'animal_batches'], + unrelate: ['animals', 'animal_batches'], + }, + ); + return task; + } } } @@ -348,6 +469,12 @@ const taskController = { } data = await this.checkCustomDependencies(typeOfTask, data, req.headers.farm_id); + if ( + [...ANIMAL_TASKS, CUSTOM_TASK].includes(typeOfTask) && + ('related_animal_ids' in data || 'related_batch_ids' in data) + ) { + data = this.formatAnimalAndBatchIds(data); + } const result = await TaskModel.transaction(async (trx) => { const { task_id } = await TaskModel.query(trx) .context({ user_id: req.auth.user_id }) @@ -355,16 +482,32 @@ const taskController = { noUpdate: true, noDelete: true, noInsert: nonModifiable, - relate: ['locations', 'managementPlans'], + relate: ['locations', 'managementPlans', 'animals', 'animal_batches'], }); const [task] = await TaskModel.query(trx) .withGraphFetched( - ` - [locations.[location_defaults], managementPlans, taskType, soil_amendment_task, soil_amendment_task_products.[purpose_relationships], irrigation_task.[irrigation_type],scouting_task, - field_work_task.[field_work_task_type], cleaning_task, pest_control_task, soil_task, harvest_task, plant_task] - `, + `[ + locations.[location_defaults], + managementPlans, + taskType, + animals(filterDeleted, selectId).[animal_union_batch], + animal_batches(filterDeleted, selectId).[animal_union_batch], + soil_amendment_task, + soil_amendment_task_products.[purpose_relationships], + irrigation_task.[irrigation_type], + scouting_task, + field_work_task.[field_work_task_type], + cleaning_task, + pest_control_task, + soil_task, + harvest_task, + plant_task, + animal_movement_task.[purpose_relationships], + ]`, ) .where({ task_id }); + task.animals?.forEach(flattenInternalIdentifier); + task.animal_batches?.forEach(flattenInternalIdentifier); return removeNullTypes(task); }); if (result.assignee_user_id) { @@ -381,12 +524,41 @@ const taskController = { return res.status(201).send(result); } catch (error) { console.log(error); + + if (error.type === 'LiteFarmCustom') { + return error.body + ? res.status(error.code).json({ ...error.body, message: error.message }) + : res.status(error.code).send(error.message); + } return res.status(400).send({ error }); } }; }, + formatAnimalAndBatchIds(data) { + if ('related_animal_ids' in data) { + data.animals = data.related_animal_ids + ? [...new Set(data.related_animal_ids)].map((id) => ({ id })) + : null; + } + if ('related_batch_ids' in data) { + data.animal_batches = data.related_batch_ids + ? [...new Set(data.related_batch_ids)].map((id) => ({ id })) + : null; + } + + delete data.related_animal_ids; + delete data.related_batch_ids; + + return data; + }, + async checkCustomDependencies(typeOfTask, data, farm_id) { + // TODO: Move this validation to checkCreateTask and checkCompleteTask and apply the middleware to all relevant routes. + if ('animals' in data || 'animal_batches' in data) { + throw customError(`Invalid field: "animals" or "animal_batches" should not be included.`); + } + switch (typeOfTask) { case 'field_work_task': { return await this.checkAndAddCustomFieldWork(data, farm_id); @@ -417,6 +589,9 @@ const taskController = { delete data.location_defaults; return data; })(); + case 'animal_movement_task': { + return await formatAnimalMovementTaskForDB(data); + } default: { return data; } @@ -593,11 +768,14 @@ const taskController = { task_id, ); - const data = await this.checkCustomDependencies( + let data = await this.checkCustomDependencies( typeOfTask, { ...req.body, owner_user_id: user_id }, req.headers.farm_id, ); + if ([...ANIMAL_TASKS, CUSTOM_TASK].includes(typeOfTask)) { + data = this.formatAnimalAndBatchIds(data); + } const result = await TaskModel.transaction(async (trx) => { const task = await updateTaskWithCompletedData( trx, @@ -628,6 +806,11 @@ const taskController = { return res.status(404).send('Task not found'); } } catch (error) { + if (error.type === 'LiteFarmCustom') { + return error.body + ? res.status(error.code).json({ ...error.body, message: error.message }) + : res.status(error.code).send(error.message); + } if (error.message === "Not authorized to complete other people's task") { return res.status(403).send(error.message); } @@ -713,8 +896,22 @@ const taskController = { const graphTasks = await TaskModel.query() .whereNotDeleted() .withGraphFetched( - `[locations.[location_defaults], managementPlans, soil_amendment_task, soil_amendment_task_products(filterDeleted).[purpose_relationships], field_work_task.[field_work_task_type], cleaning_task, pest_control_task, harvest_task.[harvest_use], plant_task, transplant_task, irrigation_task.[irrigation_type]] - `, + `[ + locations.[location_defaults], + managementPlans, + animals(filterDeleted, selectId).[animal_union_batch], + animal_batches(filterDeleted, selectId).[animal_union_batch], + soil_amendment_task, + soil_amendment_task_products(filterDeleted).[purpose_relationships], + field_work_task.[field_work_task_type], + cleaning_task, + pest_control_task, + harvest_task.[harvest_use], + plant_task, + transplant_task, + irrigation_task.[irrigation_type], + animal_movement_task.[purpose_relationships], + ]`, ) .whereIn('task_id', taskIds); const filteredTasks = graphTasks.map(removeNullTypes); @@ -730,6 +927,8 @@ const taskController = { if (task.task_type_id !== soilAmendmentTypeId) { delete task.soil_amendment_task_products; } + task.animals?.forEach(flattenInternalIdentifier); + task.animal_batches?.forEach(flattenInternalIdentifier); }); if (graphTasks) { @@ -828,7 +1027,16 @@ function removeNullTypes(task) { //TODO: optimize after plant_task and transplant_task refactor async function getTasksForFarm(farm_id) { - const [managementTasks, locationTasks, plantTasks, transplantTasks] = await Promise.all([ + const customTaskTypesForFarm = await TaskTypeModel.query() + .select('task_type_id') + .where({ farm_id }); + const [ + managementTasks, + locationTasks, + plantTasks, + transplantTasks, + customTasks, + ] = await Promise.all([ TaskModel.query() .select('task.task_id') .whereNotDeleted() @@ -881,8 +1089,15 @@ async function getTasksForFarm(farm_id) { ) .join('crop_variety', 'crop_variety.crop_variety_id', 'management_plan.crop_variety_id') .where('crop_variety.farm_id', farm_id), + TaskModel.query() + .select('task.task_id') + .whereNotDeleted() + .whereIn( + 'task_type_id', + customTaskTypesForFarm.map(({ task_type_id }) => task_type_id), + ), ]); - return [...managementTasks, ...locationTasks, ...plantTasks, ...transplantTasks]; + return [...managementTasks, ...locationTasks, ...plantTasks, ...transplantTasks, ...customTasks]; } async function getManagementPlans(task_id, typeOfTask) { @@ -1084,3 +1299,8 @@ async function filterOutDeletedManagementPlans(data, req) { validPlantingMangementPlans.includes(planting_management_plan_id), ); } + +const flattenInternalIdentifier = (animalOrBatch) => { + animalOrBatch.internal_identifier = animalOrBatch.animal_union_batch.internal_identifier; + delete animalOrBatch.animal_union_batch; +}; diff --git a/packages/api/src/middleware/acl/hasFarmAccess.js b/packages/api/src/middleware/acl/hasFarmAccess.js index 9cfddb9b4f..66e700584a 100644 --- a/packages/api/src/middleware/acl/hasFarmAccess.js +++ b/packages/api/src/middleware/acl/hasFarmAccess.js @@ -84,6 +84,11 @@ async function fromTaskId(task_id) { .join('task_type', 'task.task_type_id', 'task_type.task_type_id') .where({ task_id }) .first(); + + if (taskType?.farm_id) { + return { farm_id: taskType.farm_id }; + } + //TODO: planting transplant task authorization test if (['PLANT_TASK', 'TRANSPLANT_TASK'].includes(taskType?.task_translation_key)) { const task_type = taskType.task_translation_key.toLowerCase(); diff --git a/packages/api/src/middleware/validation/checkAnimalOrBatch.js b/packages/api/src/middleware/validation/checkAnimalOrBatch.js new file mode 100644 index 0000000000..7480778228 --- /dev/null +++ b/packages/api/src/middleware/validation/checkAnimalOrBatch.js @@ -0,0 +1,663 @@ +/* + * Copyright (c) 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import { Model, transaction } from 'objection'; +import { handleObjectionError } from '../../util/errorCodes.js'; +import { someExists, someTruthy, setFalsyValuesToNull } from '../../util/middleware.js'; +import { + customError, + checkIsArray, + checkIdIsNumber, + checkExactlyOneIsProvided, + checkRecordBelongsToFarm, +} from '../../util/customErrors.js'; + +import AnimalModel from '../../models/animalModel.js'; +import AnimalBatchModel from '../../models/animalBatchModel.js'; +import CustomAnimalTypeModel from '../../models/customAnimalTypeModel.js'; +import DefaultAnimalBreedModel from '../../models/defaultAnimalBreedModel.js'; +import CustomAnimalBreedModel from '../../models/customAnimalBreedModel.js'; +import AnimalUseModel from '../../models/animalUseModel.js'; +import AnimalOriginModel from '../../models/animalOriginModel.js'; +import AnimalIdentifierType from '../../models/animalIdentifierTypeModel.js'; +import { ANIMAL_CREATE_LIMIT } from '../../util/animal.js'; +import { compareUpperCaseTrim, upperCaseTrim } from '../../util/util.js'; + +const AnimalOrBatchModel = { + animal: AnimalModel, + batch: AnimalBatchModel, +}; + +const checkValidAnimalOrBatchIds = async (animalOrBatchKey, ids, farm_id, trx) => { + if (!ids || !ids.length) { + throw customError('Must send ids'); + } + + const idsSet = new Set(ids.split(',')); + + // Check that all animals/batches exist and belong to the farm + const invalidIds = []; + + for (const id of idsSet) { + // For query syntax like ids=,,, which will pass the above check + checkIdIsNumber(id); + + const existingRecord = await AnimalOrBatchModel[animalOrBatchKey] + .query(trx) + .findById(id) + .where({ farm_id }) + .whereNotDeleted(); // prohibiting re-delete + + if (!existingRecord) { + invalidIds.push(id); + } + } + + if (invalidIds.length) { + throw customError( + 'Some entities do not exist, are already deleted, or are not associated with the given farm.', + 400, + { error: 'Invalid ids', invalidIds }, + ); + } +}; + +// For edit mode set creating to false +const checkAnimalType = async (animalOrBatch, farm_id, creating = true) => { + const { default_type_id, custom_type_id, type_name } = animalOrBatch; + const typeKeyOptions = ['default_type_id', 'custom_type_id', 'type_name']; + // Skip if all undefined or editing (!creating) + if (creating || someTruthy([default_type_id, custom_type_id, type_name])) { + checkExactlyOneIsProvided( + [default_type_id, custom_type_id, type_name], + 'default_type_id, custom_type_id, or type_name', + ); + } + // Overwrite with null in db if editing, post does not accept nulled values in oneOf schemas + if (!creating && someExists(typeKeyOptions, animalOrBatch)) { + setFalsyValuesToNull(typeKeyOptions, animalOrBatch); + } + if (custom_type_id) { + checkIdIsNumber(custom_type_id); + const customType = await CustomAnimalTypeModel.query().findById(custom_type_id); + if (!customType) { + throw customError('Custom type does not exist'); + } + await checkRecordBelongsToFarm(customType, farm_id, 'custom type'); + } +}; + +const checkDefaultBreedMatchesType = async ( + preexistingAnimalOrBatch, + default_breed_id, + default_type_id, +) => { + // One of these two should exist at this point + let defaultBreedId = default_breed_id; + let defaultTypeId = default_type_id; + + // If breed or type is not changed get from record + if (!defaultBreedId && preexistingAnimalOrBatch) { + defaultBreedId = preexistingAnimalOrBatch.default_breed_id; + } + if (!defaultTypeId && preexistingAnimalOrBatch) { + defaultTypeId = preexistingAnimalOrBatch.default_type_id; + } + + if (defaultTypeId && defaultBreedId) { + checkIdIsNumber(defaultBreedId); + const defaultBreed = await DefaultAnimalBreedModel.query().findById(defaultBreedId); + if (!defaultBreed) { + throw customError('Default breed does not exist'); + } + if (defaultBreed.default_type_id !== defaultTypeId) { + throw customError('Breed does not match type'); + } + } else if (!defaultTypeId) { + throw customError('Default breed must use default type'); + } +}; + +const checkCustomBreedMatchesType = ( + animalOrBatch, + preexistingAnimalOrBatch, + customBreed, + default_type_id, + custom_type_id, +) => { + // customBreed exists at this point + let defaultTypeId = default_type_id; + let customTypeId = custom_type_id; + const typeKeyOptions = ['default_type_id', 'custom_type_id', 'type_name']; + + // If not editing type, get record type + if (!someExists(typeKeyOptions, animalOrBatch) && preexistingAnimalOrBatch) { + defaultTypeId = preexistingAnimalOrBatch.default_type_id; + customTypeId = preexistingAnimalOrBatch.custom_type_id; + } + + // Custom breed does not match type if defaultId OR customTypeId does not match + if ( + (customBreed.default_type_id && customBreed.default_type_id !== defaultTypeId) || + (customBreed.custom_type_id && customBreed.custom_type_id !== customTypeId) + ) { + throw customError('Breed does not match type'); + } +}; + +const checkAnimalBreed = async ( + animalOrBatch, + farm_id, + preexistingAnimalOrBatch = undefined, + creating = true, +) => { + const { + default_breed_id, + custom_breed_id, + breed_name, + default_type_id, + custom_type_id, + type_name, + } = animalOrBatch; + const breedKeyOptions = ['default_breed_id', 'custom_breed_id', 'breed_name']; + const typeKeyOptions = ['default_type_id', 'custom_type_id', 'type_name']; + // If neither breed or type is specified, skip checks + if (someExists(breedKeyOptions, animalOrBatch) || someExists(typeKeyOptions, animalOrBatch)) { + // Check only one breed option is truthy + if (someTruthy([default_breed_id, custom_breed_id, breed_name])) { + checkExactlyOneIsProvided( + [default_breed_id, custom_breed_id, breed_name], + 'default_breed_id, custom_breed_id, or breed_name', + ); + } + // Overwrite all others with null in db if editing, post does not accept nulled values in oneOf schemas + if (!creating && someExists(breedKeyOptions, animalOrBatch)) { + setFalsyValuesToNull(breedKeyOptions, animalOrBatch); + } + + const isNotNullingAllBreedOptions = !( + someExists(breedKeyOptions, animalOrBatch) && + !someTruthy([default_breed_id, custom_breed_id, breed_name]) + ); + const isCreatingWithBreed = + creating && someTruthy([default_breed_id, custom_breed_id, breed_name]); + // Do checks on breed unless removing breed from the existing record or creating animal without breed + if (isNotNullingAllBreedOptions || isCreatingWithBreed) { + // Check if default breed or default type is present + if (default_breed_id || default_type_id) { + await checkDefaultBreedMatchesType( + preexistingAnimalOrBatch, + default_breed_id, + default_type_id, + ); + } + // Check if custom breed or new type is present + // Skip checks in some cases where new custom type or breed is added + if ((custom_breed_id && !type_name) || ((default_type_id || custom_type_id) && !breed_name)) { + let customBreed; + // Find customBreed if exists + if (custom_breed_id) { + checkIdIsNumber(custom_breed_id); + customBreed = await CustomAnimalBreedModel.query() + .whereNotDeleted() + .findById(custom_breed_id); + if (!customBreed) { + throw customError('Custom breed does not exist'); + } + } else if (preexistingAnimalOrBatch?.custom_breed_id) { + checkIdIsNumber(preexistingAnimalOrBatch?.custom_breed_id); + customBreed = await CustomAnimalBreedModel.query() + .whereNotDeleted() + .findById(preexistingAnimalOrBatch.custom_breed_id); + if (!customBreed) { + // This should not be possible unless concurrently deleted in between record get and this breed id check + throw customError('Custom breed does not exist'); + } + } + // Check custom breed if exists + if (customBreed) { + await checkRecordBelongsToFarm(customBreed, farm_id, 'custom breed'); + checkCustomBreedMatchesType( + animalOrBatch, + preexistingAnimalOrBatch, + customBreed, + default_type_id, + custom_type_id, + ); + } + } + } + } +}; + +const checkAnimalSexDetail = async ( + animalOrBatch, + animalOrBatchKey, + preexistingAnimalOrBatch = undefined, +) => { + if (animalOrBatchKey === 'batch') { + const count = animalOrBatch.count ?? preexistingAnimalOrBatch?.count; + const sexDetail = animalOrBatch.sex_detail ?? preexistingAnimalOrBatch?.sex_detail; + if (sexDetail?.length) { + const sexCount = sexDetail.reduce((sum, detail) => sum + detail.count, 0); + const sexIdSet = new Set(sexDetail.map((detail) => detail.sex_id)); + if (sexCount > count) { + throw customError('Batch count must be greater than or equal to sex detail count'); + } + if (sexDetail.length != sexIdSet.size) { + throw customError('Duplicate sex ids in detail'); + } + } + } +}; + +const checkOtherUseRelationshipNotes = async (relationships) => { + const otherUse = await AnimalUseModel.query().where({ key: 'OTHER' }).first(); + + for (const relationship of relationships) { + if (relationship.use_id != otherUse.id && relationship.other_use) { + throw customError('other_use notes is for other use type'); + } + } +}; + +const checkAnimalUseRelationship = async (animalOrBatch, animalOrBatchKey) => { + const relationshipsKey = + animalOrBatchKey === 'batch' ? 'animal_batch_use_relationships' : 'animal_use_relationships'; + + if (animalOrBatch[relationshipsKey]) { + checkIsArray(animalOrBatch[relationshipsKey], relationshipsKey); + await checkOtherUseRelationshipNotes(animalOrBatch[relationshipsKey]); + } +}; + +const checkAnimalOrigin = async (animalOrBatch, creating = true) => { + const { origin_id, brought_in_date } = animalOrBatch; + if (someExists(['origin_id', 'brought_in_date'], animalOrBatch)) { + const broughtInOrigin = await AnimalOriginModel.query().where({ key: 'BROUGHT_IN' }).first(); + // Overwrite date with null in db if editing origin_id + if (!creating && origin_id != broughtInOrigin.id) { + setFalsyValuesToNull(['brought_in_date'], animalOrBatch); + } + + if (origin_id != broughtInOrigin.id && brought_in_date) { + throw customError('Brought in date must be used with brought in origin'); + } + } +}; + +const checkAnimalIdentifier = async (animalOrBatch, animalOrBatchKey, creating = true) => { + if (animalOrBatchKey === 'animal') { + const { identifier_type_id, identifier_type_other } = animalOrBatch; + if (someExists(['identifier_type_id', 'identifier_type_other'], animalOrBatch)) { + const otherIdentifier = await AnimalIdentifierType.query().where({ key: 'OTHER' }).first(); + // Overwrite date with null in db if editing origin_id + if (!creating && identifier_type_id != otherIdentifier.id) { + setFalsyValuesToNull(['identifier_type_other'], animalOrBatch); + } + + if (identifier_type_id != otherIdentifier.id && identifier_type_other) { + throw customError('Other identifier notes must be used with "other" identifier'); + } + } + } +}; + +const checkAndAddCustomTypesOrBreeds = ( + animalOrBatch, + newTypesSet, + newBreedsSet, + preexistingAnimalOrBatch = undefined, +) => { + const { + type_name, + breed_name, + custom_type_id, + default_type_id, + default_breed_id, + custom_breed_id, + } = animalOrBatch; + if (type_name) { + let defaultBreedId = default_breed_id; + let customBreedId = custom_breed_id; + + if ( + !someExists(['default_breed_id', 'custom_breed_id'], animalOrBatch) && + preexistingAnimalOrBatch + ) { + defaultBreedId = preexistingAnimalOrBatch.default_breed_id; + customBreedId = preexistingAnimalOrBatch.custom_breed_id; + } + + if (defaultBreedId || customBreedId) { + throw customError('Cannot create a new type associated with an existing breed'); + } + newTypesSet.add(type_name); + } + + // newBreedsSet will be used to check if the combination of type + breed exists in DB. + // skip the process if the type is new (= type_name is passed) + if (!type_name && breed_name) { + let defaultTypeId = default_type_id; + let customTypeId = custom_type_id; + + if ( + !someExists(['default_type_id', 'custom_type_id'], animalOrBatch) && + preexistingAnimalOrBatch + ) { + defaultTypeId = preexistingAnimalOrBatch.default_type_id; + customTypeId = preexistingAnimalOrBatch.custom_type_id; + } + + const breedDetails = customTypeId + ? `custom_type_id/${customTypeId}/${breed_name}` + : `default_type_id/${defaultTypeId}/${breed_name}`; + + newBreedsSet.add(breedDetails); + } +}; + +const checkRemovalDataProvided = (animalOrBatch) => { + const { animal_removal_reason_id, removal_date } = animalOrBatch; + if (!animal_removal_reason_id || !removal_date) { + throw customError('Must send reason and date of removal'); + } +}; + +const getRecordIfExists = async (animalOrBatch, animalOrBatchKey, farm_id) => { + const relations = + animalOrBatchKey === 'batch' + ? { + sex_detail: true, + animal_batch_use_relationships: true, + } + : { + animal_use_relationships: true, + }; + return await AnimalOrBatchModel[animalOrBatchKey] + .query() + .findById(animalOrBatch.id) + .where({ farm_id, animal_removal_reason_id: null }) + .whereNotDeleted() + .withGraphFetched(relations); +}; + +// Checks for duplicates - no migration was made for pre-existing duplicates on beta +// Currently the only endpoint checking case +const checkCustomTypeAndBreedConflicts = async (newTypesSet, newBreedsSet, farm_id, trx) => { + if (newTypesSet.size) { + const customTypes = await CustomAnimalTypeModel.query(trx).where('farm_id', farm_id); + const formattedCustomTypes = [...customTypes].map((ct) => upperCaseTrim(ct.type)); + newTypesSet.forEach((newType) => { + if (formattedCustomTypes.includes(upperCaseTrim(newType))) { + throw customError('Animal type already exists', 409); + } + }); + } + + if (newBreedsSet.size) { + const typeBreedPairs = [...newBreedsSet].map((breed) => breed.split('/')); + const customBreeds = await CustomAnimalBreedModel.query(trx).where('farm_id', farm_id); + for (const newBreed of typeBreedPairs) { + const [typeColumn, typeId, breed] = newBreed; + if ( + [...customBreeds].some( + (cb) => cb[typeColumn] === +typeId && compareUpperCaseTrim(cb.breed, breed), + ) + ) { + throw customError('Animal breed already exists', 409); + } + } + } +}; + +const checkInvalidIds = async (invalidIds) => { + if (invalidIds.length) { + throw customError( + 'Some animals or batches do not exist or are not associated with the given farm.', + 400, + { error: 'Invalid ids', invalidIds }, + ); + } +}; + +export function checkCreateAnimalOrBatch(animalOrBatchKey) { + return async (req, res, next) => { + const trx = await transaction.start(Model.knex()); + + try { + const { farm_id } = req.headers; + const newTypesSet = new Set(); + const newBreedsSet = new Set(); + + checkIsArray(req.body, 'Request body'); + + if (req.body.length > ANIMAL_CREATE_LIMIT) { + return res.status(400).send(`Animal creation limit (${ANIMAL_CREATE_LIMIT}) exceeded.`); + } + for (const animalOrBatch of req.body) { + const { type_name, breed_name } = animalOrBatch; + + await checkAnimalType(animalOrBatch, farm_id); + await checkAnimalBreed(animalOrBatch, farm_id); + await checkAnimalSexDetail(animalOrBatch, animalOrBatchKey); + await checkAnimalUseRelationship(animalOrBatch, animalOrBatchKey); + await checkAnimalOrigin(animalOrBatch); + await checkAnimalIdentifier(animalOrBatch, animalOrBatchKey); + + // Skip the process if type_name and breed_name are not passed + if (!type_name && !breed_name) { + continue; + } + checkAndAddCustomTypesOrBreeds(animalOrBatch, newTypesSet, newBreedsSet); + } + + await checkCustomTypeAndBreedConflicts(newTypesSet, newBreedsSet, farm_id, trx); + + await trx.commit(); + next(); + } catch (error) { + if (error.type === 'LiteFarmCustom') { + console.error(error); + await trx.rollback(); + return error.body + ? res.status(error.code).json({ body: error.body }) + : res.status(error.code).send(error.message); + } else { + handleObjectionError(error, res, trx); + } + } + }; +} + +export function checkEditAnimalOrBatch(animalOrBatchKey) { + return async (req, res, next) => { + const trx = await transaction.start(Model.knex()); + try { + const { farm_id } = req.headers; + const newTypesSet = new Set(); + const newBreedsSet = new Set(); + + checkIsArray(req.body, 'Request body'); + // Check that all animals exist and belong to the farm + // Done in its own loop to provide a list of all invalid ids + const invalidIds = []; + + for (const animalOrBatch of req.body) { + const { type_name, breed_name } = animalOrBatch; + checkIdIsNumber(animalOrBatch.id); + const preexistingAnimalOrBatch = await getRecordIfExists( + animalOrBatch, + animalOrBatchKey, + farm_id, + ); + if (!preexistingAnimalOrBatch) { + invalidIds.push(animalOrBatch.id); + continue; + } + + await checkAnimalType(animalOrBatch, farm_id, false); + await checkAnimalBreed(animalOrBatch, farm_id, preexistingAnimalOrBatch, false); + await checkAnimalSexDetail(animalOrBatch, animalOrBatchKey, preexistingAnimalOrBatch); + await checkAnimalUseRelationship(animalOrBatch, animalOrBatchKey); + await checkAnimalOrigin(animalOrBatch, false); + await checkAnimalIdentifier(animalOrBatch, animalOrBatchKey, false); + + // Skip the process if type_name and breed_name are not passed + if (!type_name && !breed_name) { + continue; + } + checkAndAddCustomTypesOrBreeds( + animalOrBatch, + newTypesSet, + newBreedsSet, + preexistingAnimalOrBatch, + ); + } + + await checkInvalidIds(invalidIds); + + await checkCustomTypeAndBreedConflicts(newTypesSet, newBreedsSet, farm_id, trx); + + await trx.commit(); + next(); + } catch (error) { + if (error.type === 'LiteFarmCustom') { + console.error(error); + await trx.rollback(); + return error.body + ? res.status(error.code).json({ ...error.body, message: error.message }) + : res.status(error.code).send(error.message); + } else { + handleObjectionError(error, res, trx); + } + } + }; +} + +export function checkRemoveAnimalOrBatch(animalOrBatchKey) { + return async (req, res, next) => { + try { + const { farm_id } = req.headers; + + checkIsArray(req.body, 'Request body'); + // Check that all animals exist and belong to the farm + // Done in its own loop to provide a list of all invalid ids + const invalidIds = []; + const removalDatesSet = new Set(); + + for (const animalOrBatch of req.body) { + checkRemovalDataProvided(animalOrBatch); + + checkIdIsNumber(animalOrBatch.id); + const preexistingAnimalOrBatch = await getRecordIfExists( + animalOrBatch, + animalOrBatchKey, + farm_id, + ); + if (!preexistingAnimalOrBatch) { + invalidIds.push(animalOrBatch.id); + } + removalDatesSet.add(animalOrBatch.removal_date); + } + + await checkInvalidIds(invalidIds); + + // Assumption: All removal_date values are identical. + // This check ensures that if this assumption ever changes, it triggers an error. + // If the error is triggered, re-implement handleIncompleteTasksForAnimalsAndBatches to handle multiple dates. + if (removalDatesSet.size > 1) { + throw customError('removal_date is expected to be the same in all animals/batches'); + } + + next(); + } catch (error) { + if (error.type === 'LiteFarmCustom') { + console.error(error); + return error.body + ? res.status(error.code).json({ ...error.body, message: error.message }) + : res.status(error.code).send(error.message); + } else { + console.error(error); + return res.status(500).json({ + error, + }); + } + } + }; +} + +// Check animals or batches with completed and abandoned tasks +const checkAnimalsOrBatchesWithFinalizedTasks = async (animalOrBatchKey, ids, trx) => { + const getAnimalOrBatchIdsWithFinalizedTasks = + animalOrBatchKey === 'animal' + ? AnimalModel.getAnimalIdsWithFinalizedTasks + : AnimalBatchModel.getBatchIdsWithFinalizedTasks; + + const animalsOrBatches = await getAnimalOrBatchIdsWithFinalizedTasks(trx, [ + ...new Set(ids.split(',').map((id) => +id)), + ]); + + for (const { tasks } of animalsOrBatches) { + if (tasks.length) { + throw customError('Animals with completed or abandoned tasks cannot be deleted'); + } + } +}; + +/** + * Middleware function to check if the provided animal entities exist and belong to the farm. The IDs must be passed as a comma-separated query string. + * + * @param {String} animalOrBatchKey - The key to choose a database model for the correct animal entity + * @returns {Function} - Express middleware function + * + * @example + * router.delete( + * '/', + * checkScope(['delete:animals']), + * checkDeleteAnimalOrBatch('animal'), + * AnimalController.deleteAnimals(), + * ); + * + */ +export function checkDeleteAnimalOrBatch(animalOrBatchKey) { + return async (req, res, next) => { + const trx = await transaction.start(Model.knex()); + + try { + const { farm_id } = req.headers; + const { ids, date } = req.query; + + if (!date) { + throw customError('Must send date'); + } + await checkValidAnimalOrBatchIds(animalOrBatchKey, ids, farm_id, trx); + await checkAnimalsOrBatchesWithFinalizedTasks(animalOrBatchKey, ids, trx); + + await trx.commit(); + next(); + } catch (error) { + if (error.type === 'LiteFarmCustom') { + console.error(error); + await trx.rollback(); + return error.body + ? res.status(error.code).json({ ...error.body, message: error.message }) + : res.status(error.code).send(error.message); + } else { + handleObjectionError(error, res, trx); + } + } + }; +} diff --git a/packages/api/src/middleware/validation/checkTask.js b/packages/api/src/middleware/validation/checkTask.js index e8e6d20ba6..761fb31922 100644 --- a/packages/api/src/middleware/validation/checkTask.js +++ b/packages/api/src/middleware/validation/checkTask.js @@ -15,8 +15,13 @@ import TaskModel from '../../models/taskModel.js'; import { checkSoilAmendmentTaskProducts } from './checkSoilAmendmentTaskProducts.js'; +import { ANIMAL_TASKS, checkAnimalAndBatchIds } from '../../util/animal.js'; +import { CUSTOM_TASK } from '../../util/task.js'; +import { checkIsArray, customError } from '../../util/customErrors.js'; + const adminRoles = [1, 2, 5]; const taskTypesRequiringProducts = ['soil_amendment_task']; +const clientRestrictedReasons = ['NO_ANIMALS']; export function noReqBodyCheckYet() { return async (req, res, next) => { @@ -26,16 +31,7 @@ export function noReqBodyCheckYet() { const checkProductsMiddlewareMap = { soil_amendment_task: checkSoilAmendmentTaskProducts, - cleaning_task: noReqBodyCheckYet, - pest_control_task: noReqBodyCheckYet, - irrigation_task: noReqBodyCheckYet, - scouting_task: noReqBodyCheckYet, - soil_task: noReqBodyCheckYet, - field_work_task: noReqBodyCheckYet, - harvest_task: noReqBodyCheckYet, - plant_task: noReqBodyCheckYet, - transplant_task: noReqBodyCheckYet, - custom_task: noReqBodyCheckYet, + default: noReqBodyCheckYet, }; export function checkAbandonTask() { @@ -64,6 +60,10 @@ export function checkAbandonTask() { return res.status(400).send('must have other_abandonment_reason'); } + if (clientRestrictedReasons.includes(abandonment_reason.toUpperCase())) { + return res.status(400).send('The provided abandonment_reason is not allowed'); + } + if (!abandon_date) { return res.status(400).send('must have abandonment_date'); } @@ -125,6 +125,11 @@ export function checkCompleteTask(taskType) { return res.status(400).send('Task has already been completed or abandoned'); } + if ([...ANIMAL_TASKS, CUSTOM_TASK].includes(taskType)) { + await checkAnimalTask(req, taskType, 'complete_date'); + await checkAnimalCompleteTask(req, taskType, task_id); + } + const { assignee_user_id } = await TaskModel.query() .select('assignee_user_id') .where({ task_id }) @@ -137,12 +142,20 @@ export function checkCompleteTask(taskType) { } if (`${taskType}_products` in req.body) { - checkProductsMiddlewareMap[taskType]()(req, res, next); + const checkProducts = + checkProductsMiddlewareMap[taskType] || checkProductsMiddlewareMap['default']; + checkProducts()(req, res, next); } else { next(); } } catch (error) { console.error(error); + + if (error.type === 'LiteFarmCustom') { + return error.body + ? res.status(error.code).json({ ...error.body, message: error.message }) + : res.status(error.code).send(error.message); + } return res.status(500).json({ error, }); @@ -159,17 +172,33 @@ export function checkCreateTask(taskType) { return res.status(400).send('must have user_id'); } - if (!(taskType in req.body) && taskType !== 'custom_task') { + if (!(taskType in req.body) && taskType !== CUSTOM_TASK) { return res.status(400).send('must have task details body'); } + if (!req.body.due_date) { + return res.status(400).send('must have due date'); + } + if (taskTypesRequiringProducts.includes(taskType) && !(`${taskType}_products` in req.body)) { return res.status(400).send('task type requires products'); } - checkProductsMiddlewareMap[taskType]()(req, res, next); + if ([...ANIMAL_TASKS, CUSTOM_TASK].includes(taskType)) { + await checkAnimalTask(req, taskType, 'due_date'); + } + + const checkProducts = + checkProductsMiddlewareMap[taskType] || checkProductsMiddlewareMap['default']; + checkProducts()(req, res, next); } catch (error) { console.error(error); + + if (error.type === 'LiteFarmCustom') { + return error.body + ? res.status(error.code).json({ ...error.body, message: error.message }) + : res.status(error.code).send(error.message); + } return res.status(500).json({ error, }); @@ -177,6 +206,60 @@ export function checkCreateTask(taskType) { }; } +async function checkAnimalTask(req, taskType, dateName) { + const { farm_id } = req.headers; + const { related_animal_ids, related_batch_ids, managementPlans } = req.body; + const ALLOWED_TYPES_WITH_MANAGEMENT_PLANS = [CUSTOM_TASK]; + + if (!ALLOWED_TYPES_WITH_MANAGEMENT_PLANS.includes(taskType) && managementPlans?.length) { + throw customError(`managementPlans cannot be added for ${taskType}`); + } + + let isAnimalOrBatchRequired = taskType !== CUSTOM_TASK; + + if (isAnimalOrBatchRequired && dateName === 'complete_date') { + // Set isAnimalOrBatchRequired to false when both animals and batches won't be modified + const animalsOrBatchesProvided = + 'related_animal_ids' in req.body || 'related_batch_ids' in req.body; + isAnimalOrBatchRequired = animalsOrBatchesProvided; + } + + await checkAnimalAndBatchIds( + related_animal_ids, + related_batch_ids, + farm_id, + isAnimalOrBatchRequired, + ); + + const taskTypeCheck = { + animal_movement_task: checkAnimalMovementTask, + }[taskType]; + + await taskTypeCheck?.(req); +} + +async function checkAnimalCompleteTask(req, taskType, taskId) { + let finalizedAnimals = req.body.animals ?? undefined; + let finalizedBatches = req.body.animal_batches ?? undefined; + + if (finalizedAnimals === undefined && finalizedBatches === undefined) { + // If animals or batches are not being modified, retrieve them from the DB + const { animals, animal_batches } = await TaskModel.query() + .select('task_id') + .withGraphFetched('[animals(selectId), animal_batches(selectId)]') + .where({ task_id: taskId }) + .first(); + + finalizedAnimals = animals; + finalizedBatches = animal_batches; + } + + // Animal tasks require animals or batches, but custom tasks do not + if (ANIMAL_TASKS.includes(taskType) && !finalizedAnimals?.length && !finalizedBatches?.length) { + throw customError('No animals or batches to apply the task to'); + } +} + export function checkDeleteTask() { return async (req, res, next) => { try { @@ -201,3 +284,19 @@ export function checkDeleteTask() { } }; } + +async function checkAnimalMovementTask(req) { + if (req.body.locations && req.body.locations.length > 1) { + throw customError('Only one location can be assigned to this task type', 400); + } + + if (req.body.animal_movement_task?.purpose_relationships) { + throw customError( + `Invalid field: "purpose_relationships" should not be included. Use "purpose_ids" instead`, + ); + } + + if (req.body.animal_movement_task?.purpose_ids) { + checkIsArray(req.body.animal_movement_task.purpose_ids, 'purpose_ids'); + } +} diff --git a/packages/api/src/middleware/validation/deleteLocation.js b/packages/api/src/middleware/validation/deleteLocation.js index 953d36b764..477600305e 100644 --- a/packages/api/src/middleware/validation/deleteLocation.js +++ b/packages/api/src/middleware/validation/deleteLocation.js @@ -14,6 +14,8 @@ */ import { Model } from 'objection'; +import AnimalBatchModel from '../../models/animalBatchModel.js'; +import AnimalModel from '../../models/animalModel.js'; import managementPlanModel from '../../models/managementPlanModel.js'; @@ -110,6 +112,19 @@ async function validateLocationDependency(req, res, next) { } } + const animals = await AnimalModel.query() + .where('location_id', location_id) + .where('removal_date', null) + .whereNotDeleted(); + const batches = await AnimalBatchModel.query() + .where('location_id', location_id) + .where('removal_date', null) + .whereNotDeleted(); + + if (animals.length || batches.length) { + return res.status(400).send('Location cannot be deleted when it has animals'); + } + return next(); } diff --git a/packages/api/src/middleware/validation/task.js b/packages/api/src/middleware/validation/task.js index c194889d20..78df9e2027 100644 --- a/packages/api/src/middleware/validation/task.js +++ b/packages/api/src/middleware/validation/task.js @@ -9,6 +9,7 @@ const typesOfTask = [ 'harvest_task', 'plant_task', 'cleaning_task', + 'animal_movement_task', ]; const modelMapping = { @@ -22,6 +23,7 @@ const modelMapping = { plant_task: modelValidation('plant_task'), transplant_task: modelValidation('transplant_task'), cleaning_task: modelValidation('cleaning_task'), + animal_movement_task: modelValidation('animal_movement_task'), custom_task: modelValidation('custom_task'), }; diff --git a/packages/api/src/models/animalBatchGroupRelationshipModel.js b/packages/api/src/models/animalBatchGroupRelationshipModel.js new file mode 100644 index 0000000000..146f1b4aff --- /dev/null +++ b/packages/api/src/models/animalBatchGroupRelationshipModel.js @@ -0,0 +1,44 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import Model from './baseFormatModel.js'; + +class AnimalBatchGroupRelationshipModel extends Model { + static get tableName() { + return 'animal_batch_group_relationship'; + } + + static get idColumn() { + return 'id'; + } + + // Optional JSON schema. This is not the database schema! Nothing is generated + // based on this. This is only used for validation. Whenever a model instance + // is created it is checked against this schema. http://json-schema.org/. + static get jsonSchema() { + return { + type: 'object', + required: ['animal_batch_id', 'animal_group_id'], + properties: { + id: { type: 'integer' }, + animal_batch_id: { type: 'integer' }, + animal_group_id: { type: 'integer' }, + }, + additionalProperties: false, + }; + } +} + +export default AnimalBatchGroupRelationshipModel; diff --git a/packages/api/src/models/animalBatchModel.js b/packages/api/src/models/animalBatchModel.js new file mode 100644 index 0000000000..30f01dc739 --- /dev/null +++ b/packages/api/src/models/animalBatchModel.js @@ -0,0 +1,282 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import Model from './baseFormatModel.js'; +import baseModel from './baseModel.js'; +import AnimalBatchSexDetailModel from './animalBatchSexDetailModel.js'; +import AnimalUnionBatchIdViewModel from './animalUnionBatchIdViewModel.js'; +import { checkAndTrimString } from '../util/util.js'; +import AnimalBatchUseRelationshipModel from './animalBatchUseRelationshipModel.js'; +import TaskAnimalBatchRelationshipModel from './taskAnimalBatchRelationshipModel.js'; +import TaskModel from './taskModel.js'; +import DefaultAnimalTypeModel from './defaultAnimalTypeModel.js'; +import CustomAnimalTypeModel from './customAnimalTypeModel.js'; +import DefaultAnimalBreedModel from './defaultAnimalBreedModel.js'; +import CustomAnimalBreedModel from './customAnimalBreedModel.js'; + +class AnimalBatchModel extends baseModel { + static get tableName() { + return 'animal_batch'; + } + + static get idColumn() { + return 'id'; + } + + static get stringProperties() { + const stringProperties = []; + for (const [key, value] of Object.entries(this.jsonSchema.properties)) { + if (value.type.includes('string')) { + stringProperties.push(key); + } + } + return stringProperties; + } + + async $beforeInsert(queryContext) { + await super.$beforeInsert(queryContext); + this.trimStringProperties(); + } + + async $beforeUpdate(opt, queryContext) { + await super.$beforeUpdate(opt, queryContext); + this.trimStringProperties(); + } + + trimStringProperties() { + for (const key of this.constructor.stringProperties) { + if (key in this) { + this[key] = checkAndTrimString(this[key]); + } + } + } + + // Optional JSON schema. This is not the database schema! Nothing is generated + // based on this. This is only used for validation. Whenever a model instance + // is created it is checked against this schema. http://json-schema.org/. + static get jsonSchema() { + return { + type: 'object', + required: ['farm_id', 'count'], + oneOf: [ + { + required: ['default_type_id'], + }, + { + required: ['custom_type_id'], + }, + ], + properties: { + count: { type: 'integer' }, + custom_breed_id: { type: ['integer', 'null'] }, + custom_type_id: { type: ['integer', 'null'] }, + default_breed_id: { type: ['integer', 'null'] }, + default_type_id: { type: ['integer', 'null'] }, + farm_id: { type: 'string' }, + id: { type: 'integer' }, + name: { type: ['string', 'null'] }, + notes: { type: ['string', 'null'] }, + photo_url: { type: ['string', 'null'] }, + animal_removal_reason_id: { type: ['integer', 'null'] }, + removal_explanation: { type: ['string', 'null'] }, + removal_date: { type: ['string', 'null'], format: 'date-time' }, + organic_status: { type: 'string', enum: ['Non-Organic', 'Transitional', 'Organic'] }, + birth_date: { type: ['string', 'null'], format: 'date-time' }, + brought_in_date: { type: ['string', 'null'], format: 'date-time' }, + origin_id: { type: ['integer', 'null'] }, + dam: { type: ['string', 'null'] }, + sire: { type: ['string', 'null'] }, + supplier: { type: ['string', 'null'], maxLength: 255 }, + price: { type: ['number', 'null'] }, + location_id: { type: ['string', 'null'] }, + ...this.baseProperties, + }, + additionalProperties: false, + }; + } + + static get relationMappings() { + return { + // Animal batch can have many sex details + sex_detail: { + relation: Model.HasManyRelation, + modelClass: AnimalBatchSexDetailModel, + join: { + from: 'animal_batch.id', + to: 'animal_batch_sex_detail.animal_batch_id', + }, + modify: (query) => query.where('deleted', false), + }, + animal_union_batch: { + relation: Model.HasOneRelation, + modelClass: AnimalUnionBatchIdViewModel, + join: { + from: 'animal_batch.id', + to: 'animal_union_batch_id_view.id', + }, + modify: (query) => query.select('internal_identifier').where('batch', true), + }, + animal_batch_use_relationships: { + relation: Model.HasManyRelation, + modelClass: AnimalBatchUseRelationshipModel, + join: { + from: 'animal_batch.id', + to: 'animal_batch_use_relationship.animal_batch_id', + }, + }, + tasks: { + modelClass: TaskModel, + relation: Model.ManyToManyRelation, + join: { + from: 'animal_batch.id', + through: { + modelClass: TaskAnimalBatchRelationshipModel, + from: 'task_animal_batch_relationship.animal_batch_id', + to: 'task_animal_batch_relationship.task_id', + }, + to: 'task.task_id', + }, + modify: (query) => query.select('task.task_id').where('deleted', false), + }, + default_type: { + modelClass: DefaultAnimalTypeModel, + relation: Model.BelongsToOneRelation, + join: { + from: 'animal_batch.default_type_id', + to: 'default_animal_type.id', + }, + modify: (query) => query.select('key'), + }, + custom_type: { + modelClass: CustomAnimalTypeModel, + relation: Model.BelongsToOneRelation, + join: { + from: 'animal_batch.custom_type_id', + to: 'custom_animal_type.id', + }, + modify: (query) => query.select('type'), + }, + default_breed: { + modelClass: DefaultAnimalBreedModel, + relation: Model.BelongsToOneRelation, + join: { + from: 'animal_batch.default_breed_id', + to: 'default_animal_breed.id', + }, + modify: (query) => query.select('key'), + }, + custom_breed: { + modelClass: CustomAnimalBreedModel, + relation: Model.BelongsToOneRelation, + join: { + from: 'animal_batch.custom_breed_id', + to: 'custom_animal_breed.id', + }, + modify: (query) => query.select('breed'), + }, + }; + } + + static get modifiers() { + return { + filterDeleted(query) { + const { ref } = AnimalBatchModel; + query.where(ref('deleted'), false); + }, + selectId(query) { + const { ref } = AnimalBatchModel; + query.select(ref('id')); + }, + }; + } + + static async getBatchIdsWithTasks(trx, animalIds, taskFilterCondition) { + if (taskFilterCondition) { + return AnimalBatchModel.query(trx) + .select('id') + .withGraphFetched('tasks') + .modifyGraph('tasks', (builder) => { + builder.select('task.task_id', 'task.complete_date', 'task.abandon_date'); + builder.where('deleted', false).whereRaw(taskFilterCondition); + }) + .whereIn('animal_batch.id', animalIds); + } + + return AnimalBatchModel.query(trx) + .select('id') + .withGraphFetched('tasks') + .modifyGraph('tasks', (builder) => { + builder.select('task.task_id', 'task.complete_date', 'task.abandon_date'); + builder.where('deleted', false); + }) + .whereIn('animal_batch.id', animalIds); + } + + // Get animals with finalized (completed or abandoned) tasks + static async getBatchIdsWithFinalizedTasks(trx, animalIds) { + return AnimalBatchModel.getBatchIdsWithTasks( + trx, + animalIds, + 'complete_date IS NOT NULL OR abandon_date IS NOT NULL', + ); + } + + static async getBatchIdsWithIncompleteTasks(trx, animalIds) { + return AnimalBatchModel.getBatchIdsWithTasks( + trx, + animalIds, + 'complete_date IS NULL AND abandon_date IS NULL', + ); + } + + static async getBatchesWithNewerCompletedTasks(batchIds, taskTypeId, completedDate) { + return AnimalBatchModel.query() + .select('id') + .withGraphFetched('tasks') + .modifyGraph('tasks', (builder) => { + builder.select('task.task_id', 'task.complete_date'); + builder + .where('deleted', false) + .where('complete_date', '>', completedDate) + .where('task_type_id', taskTypeId); + }) + .whereIn('id', batchIds); + } + + static async unrelateIncompleteTasksForBatches(trx, batchIds) { + let unrelatedTaskIds = []; + const batches = await AnimalBatchModel.getBatchIdsWithIncompleteTasks(trx, batchIds); + + if (batches) { + // Delete relationships + await Promise.all( + batches.map(({ id, tasks }) => { + const taskIds = tasks.map(({ task_id }) => task_id); + unrelatedTaskIds = [...unrelatedTaskIds, ...taskIds]; + + return AnimalBatchModel.relatedQuery('tasks', trx) + .for(id) + .unrelate() + .whereIn('task.task_id', taskIds) + .transacting(trx); + }), + ); + } + + return { unrelatedTaskIds: [...new Set(unrelatedTaskIds)] }; + } +} + +export default AnimalBatchModel; diff --git a/packages/api/src/models/animalBatchSexDetailModel.js b/packages/api/src/models/animalBatchSexDetailModel.js new file mode 100644 index 0000000000..49c97c8338 --- /dev/null +++ b/packages/api/src/models/animalBatchSexDetailModel.js @@ -0,0 +1,46 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import baseModel from './baseModel.js'; + +class AnimalBatchSexDetailModel extends baseModel { + static get tableName() { + return 'animal_batch_sex_detail'; + } + + static get idColumn() { + return 'id'; + } + + // Optional JSON schema. This is not the database schema! Nothing is generated + // based on this. This is only used for validation. Whenever a model instance + // is created it is checked against this schema. http://json-schema.org/. + static get jsonSchema() { + return { + type: 'object', + required: ['animal_batch_id', 'count', 'sex_id'], + properties: { + animal_batch_id: { type: 'integer' }, + count: { type: 'integer' }, + id: { type: 'integer' }, + sex_id: { type: 'integer' }, + ...this.baseProperties, + }, + additionalProperties: false, + }; + } +} + +export default AnimalBatchSexDetailModel; diff --git a/packages/api/src/models/animalBatchUseRelationshipModel.js b/packages/api/src/models/animalBatchUseRelationshipModel.js new file mode 100644 index 0000000000..ae0f8130ea --- /dev/null +++ b/packages/api/src/models/animalBatchUseRelationshipModel.js @@ -0,0 +1,44 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import Model from './baseFormatModel.js'; + +class AnimalBatchUseRelationshipModel extends Model { + static get tableName() { + return 'animal_batch_use_relationship'; + } + + static get idColumn() { + return ['animal_batch_id', 'use_id']; + } + + // Optional JSON schema. This is not the database schema! Nothing is generated + // based on this. This is only used for validation. Whenever a model instance + // is created it is checked against this schema. http://json-schema.org/. + static get jsonSchema() { + return { + type: 'object', + required: ['animal_batch_id', 'use_id'], + properties: { + animal_batch_id: { type: 'integer' }, + use_id: { type: 'integer' }, + other_use: { type: ['string', 'null'] }, + }, + additionalProperties: false, + }; + } +} + +export default AnimalBatchUseRelationshipModel; diff --git a/packages/api/src/models/animalGroupModel.js b/packages/api/src/models/animalGroupModel.js new file mode 100644 index 0000000000..521a077504 --- /dev/null +++ b/packages/api/src/models/animalGroupModel.js @@ -0,0 +1,78 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import { Model } from 'objection'; +import AnimalGroupRelationshipModel from './animalGroupRelationshipModel.js'; +import baseModel from './baseModel.js'; +import AnimalBatchGroupRelationshipModel from './animalBatchGroupRelationshipModel.js'; + +class AnimalGroup extends baseModel { + static get tableName() { + return 'animal_group'; + } + + static get idColumn() { + return 'id'; + } + + // Optional JSON schema. This is not the database schema! Nothing is generated + // based on this. This is only used for validation. Whenever a model instance + // is created it is checked against this schema. http://json-schema.org/. + static get jsonSchema() { + return { + type: 'object', + required: ['farm_id', 'name'], + properties: { + id: { type: 'integer' }, + farm_id: { type: 'string' }, + name: { type: 'string' }, + notes: { type: ['string', 'null'] }, + ...this.baseProperties, + }, + additionalProperties: false, + }; + } + + static get relationMappings() { + return { + animal_relationships: { + modelClass: AnimalGroupRelationshipModel, + relation: Model.HasManyRelation, + join: { + from: 'animal_group.id', + to: 'animal_group_relationship.animal_group_id', + }, + modify: (query) => + query.select('animal_id').whereIn('animal_id', function () { + this.select('id').from('animal').where('deleted', false); + }), + }, + batch_relationships: { + modelClass: AnimalBatchGroupRelationshipModel, + relation: Model.HasManyRelation, + join: { + from: 'animal_group.id', + to: 'animal_batch_group_relationship.animal_group_id', + }, + modify: (query) => + query.select('animal_batch_id').whereIn('animal_batch_id', function () { + this.select('id').from('animal_batch').where('deleted', false); + }), + }, + }; + } +} + +export default AnimalGroup; diff --git a/packages/api/src/models/animalGroupRelationshipModel.js b/packages/api/src/models/animalGroupRelationshipModel.js new file mode 100644 index 0000000000..65a2028cca --- /dev/null +++ b/packages/api/src/models/animalGroupRelationshipModel.js @@ -0,0 +1,44 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import Model from './baseFormatModel.js'; + +class AnimalGroupRelationshipModel extends Model { + static get tableName() { + return 'animal_group_relationship'; + } + + static get idColumn() { + return 'id'; + } + + // Optional JSON schema. This is not the database schema! Nothing is generated + // based on this. This is only used for validation. Whenever a model instance + // is created it is checked against this schema. http://json-schema.org/. + static get jsonSchema() { + return { + type: 'object', + required: ['animal_id', 'animal_group_id'], + properties: { + id: { type: 'integer' }, + animal_id: { type: 'integer' }, + animal_group_id: { type: 'integer' }, + }, + additionalProperties: false, + }; + } +} + +export default AnimalGroupRelationshipModel; diff --git a/packages/api/src/models/animalIdentifierColorModel.js b/packages/api/src/models/animalIdentifierColorModel.js new file mode 100644 index 0000000000..ddaba3be70 --- /dev/null +++ b/packages/api/src/models/animalIdentifierColorModel.js @@ -0,0 +1,43 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import baseModel from './baseModel.js'; + +class AnimalIdentifierColor extends baseModel { + static get tableName() { + return 'animal_identifier_color'; + } + + static get idColumn() { + return 'id'; + } + + // Optional JSON schema. This is not the database schema! Nothing is generated + // based on this. This is only used for validation. Whenever a model instance + // is created it is checked against this schema. http://json-schema.org/. + static get jsonSchema() { + return { + type: 'object', + required: ['key'], + properties: { + id: { type: 'integer' }, + key: { type: 'string' }, + }, + additionalProperties: false, + }; + } +} + +export default AnimalIdentifierColor; diff --git a/packages/api/src/models/animalIdentifierTypeModel.js b/packages/api/src/models/animalIdentifierTypeModel.js new file mode 100644 index 0000000000..4b950b1365 --- /dev/null +++ b/packages/api/src/models/animalIdentifierTypeModel.js @@ -0,0 +1,43 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import baseModel from './baseModel.js'; + +class AnimalIdentifierType extends baseModel { + static get tableName() { + return 'animal_identifier_type'; + } + + static get idColumn() { + return 'id'; + } + + // Optional JSON schema. This is not the database schema! Nothing is generated + // based on this. This is only used for validation. Whenever a model instance + // is created it is checked against this schema. http://json-schema.org/. + static get jsonSchema() { + return { + type: 'object', + required: ['key'], + properties: { + id: { type: 'integer' }, + key: { type: 'string' }, + }, + additionalProperties: false, + }; + } +} + +export default AnimalIdentifierType; diff --git a/packages/api/src/models/animalModel.js b/packages/api/src/models/animalModel.js new file mode 100644 index 0000000000..7a802cd888 --- /dev/null +++ b/packages/api/src/models/animalModel.js @@ -0,0 +1,277 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import baseModel from './baseModel.js'; +import AnimalUnionBatchIdViewModel from './animalUnionBatchIdViewModel.js'; +import Model from './baseFormatModel.js'; +import { checkAndTrimString } from '../util/util.js'; +import AnimalUseRelationshipModel from './animalUseRelationshipModel.js'; +import TaskModel from './taskModel.js'; +import TaskAnimalRelationshipModel from './taskAnimalRelationshipModel.js'; +import DefaultAnimalTypeModel from './defaultAnimalTypeModel.js'; +import CustomAnimalTypeModel from './customAnimalTypeModel.js'; +import DefaultAnimalBreedModel from './defaultAnimalBreedModel.js'; +import CustomAnimalBreedModel from './customAnimalBreedModel.js'; + +class Animal extends baseModel { + static get tableName() { + return 'animal'; + } + + static get idColumn() { + return 'id'; + } + + static get stringProperties() { + const stringProperties = []; + for (const [key, value] of Object.entries(this.jsonSchema.properties)) { + if (value.type.includes('string')) { + stringProperties.push(key); + } + } + return stringProperties; + } + + async $beforeInsert(queryContext) { + await super.$beforeInsert(queryContext); + this.trimStringProperties(); + } + + async $beforeUpdate(opt, queryContext) { + await super.$beforeUpdate(opt, queryContext); + this.trimStringProperties(); + } + + trimStringProperties() { + for (const key of this.constructor.stringProperties) { + if (key in this) { + this[key] = checkAndTrimString(this[key]); + } + } + } + + // Optional JSON schema. This is not the database schema! Nothing is generated + // based on this. This is only used for validation. Whenever a model instance + // is created it is checked against this schema. http://json-schema.org/. + static get jsonSchema() { + return { + type: 'object', + required: ['farm_id'], + oneOf: [ + { + required: ['default_type_id'], + }, + { + required: ['custom_type_id'], + }, + ], + properties: { + id: { type: 'integer' }, + farm_id: { type: 'string' }, + default_type_id: { type: ['integer', 'null'] }, + custom_type_id: { type: ['integer', 'null'] }, + default_breed_id: { type: ['integer', 'null'] }, + custom_breed_id: { type: ['integer', 'null'] }, + sex_id: { type: ['integer', 'null'] }, + name: { type: ['string', 'null'] }, + birth_date: { type: ['string', 'null'], format: 'date-time' }, + identifier: { type: ['string', 'null'] }, + identifier_color_id: { type: ['integer', 'null'] }, + origin_id: { type: ['integer', 'null'] }, + dam: { type: ['string', 'null'] }, + sire: { type: ['string', 'null'] }, + brought_in_date: { type: ['string', 'null'], format: 'date-time' }, + weaning_date: { type: ['string', 'null'], format: 'date-time' }, + notes: { type: ['string', 'null'] }, + photo_url: { type: ['string', 'null'] }, + animal_removal_reason_id: { type: ['integer', 'null'] }, + removal_explanation: { type: ['string', 'null'] }, + removal_date: { type: ['string', 'null'], format: 'date-time' }, + identifier_type_id: { type: ['integer', 'null'] }, + identifier_type_other: { type: ['string', 'null'] }, + organic_status: { type: 'string', enum: ['Non-Organic', 'Transitional', 'Organic'] }, + supplier: { type: ['string', 'null'], maxLength: 255 }, + price: { type: ['number', 'null'] }, + location_id: { type: ['string', 'null'] }, + ...this.baseProperties, + }, + additionalProperties: false, + }; + } + + static get relationMappings() { + return { + animal_union_batch: { + relation: Model.HasOneRelation, + modelClass: AnimalUnionBatchIdViewModel, + join: { + from: 'animal.id', + to: 'animal_union_batch_id_view.id', + }, + modify: (query) => query.select('internal_identifier').where('batch', false), + }, + animal_use_relationships: { + relation: Model.HasManyRelation, + modelClass: AnimalUseRelationshipModel, + join: { + from: 'animal.id', + to: 'animal_use_relationship.animal_id', + }, + }, + tasks: { + modelClass: TaskModel, + relation: Model.ManyToManyRelation, + join: { + from: 'animal.id', + through: { + modelClass: TaskAnimalRelationshipModel, + from: 'task_animal_relationship.animal_id', + to: 'task_animal_relationship.task_id', + }, + to: 'task.task_id', + }, + modify: (query) => query.select('task.task_id').where('deleted', false), + }, + default_type: { + modelClass: DefaultAnimalTypeModel, + relation: Model.BelongsToOneRelation, + join: { + from: 'animal.default_type_id', + to: 'default_animal_type.id', + }, + modify: (query) => query.select('key'), + }, + custom_type: { + modelClass: CustomAnimalTypeModel, + relation: Model.BelongsToOneRelation, + join: { + from: 'animal.custom_type_id', + to: 'custom_animal_type.id', + }, + modify: (query) => query.select('type'), + }, + default_breed: { + modelClass: DefaultAnimalBreedModel, + relation: Model.BelongsToOneRelation, + join: { + from: 'animal.default_breed_id', + to: 'default_animal_breed.id', + }, + modify: (query) => query.select('key'), + }, + custom_breed: { + modelClass: CustomAnimalBreedModel, + relation: Model.BelongsToOneRelation, + join: { + from: 'animal.custom_breed_id', + to: 'custom_animal_breed.id', + }, + modify: (query) => query.select('breed'), + }, + }; + } + + static get modifiers() { + return { + filterDeleted(query) { + const { ref } = Animal; + query.where(ref('deleted'), false); + }, + selectId(query) { + const { ref } = Animal; + query.select(ref('id')); + }, + }; + } + + static async getAnimalIdsWithTasks(trx, animalIds, taskFilterCondition) { + if (taskFilterCondition) { + return Animal.query(trx) + .select('id') + .withGraphFetched('tasks') + .modifyGraph('tasks', (builder) => { + builder.select('task.task_id', 'task.complete_date', 'task.abandon_date'); + builder.where('deleted', false).whereRaw(taskFilterCondition); + }) + .whereIn('animal.id', animalIds); + } + + return Animal.query(trx) + .select('id') + .withGraphFetched('tasks') + .modifyGraph('tasks', (builder) => { + builder.select('task.task_id', 'task.complete_date', 'task.abandon_date'); + builder.where('deleted', false); + }) + .whereIn('animal.id', animalIds) + .transacting(trx); + } + + // Get animals with finalized (completed or abandoned) tasks + static async getAnimalIdsWithFinalizedTasks(trx, animalIds) { + return Animal.getAnimalIdsWithTasks( + trx, + animalIds, + 'complete_date IS NOT NULL OR abandon_date IS NOT NULL', + ); + } + + static async getAnimalIdsWithIncompleteTasks(trx, animalIds) { + return Animal.getAnimalIdsWithTasks( + trx, + animalIds, + 'complete_date IS NULL AND abandon_date IS NULL', + ); + } + + static async getAnimalsWithNewerCompletedTasks(animalIds, taskTypeId, completedDate) { + return Animal.query() + .select('id') + .withGraphFetched('tasks') + .modifyGraph('tasks', (builder) => { + builder.select('task.task_id', 'task.complete_date'); + builder + .where('deleted', false) + .where('complete_date', '>', completedDate) + .where('task_type_id', taskTypeId); + }) + .whereIn('id', animalIds); + } + + static async unrelateIncompleteTasksForAnimals(trx, animalIds) { + let unrelatedTaskIds = []; + const animals = await Animal.getAnimalIdsWithIncompleteTasks(trx, animalIds); + + if (animals) { + // Delete relationships + await Promise.all( + animals.map(({ id, tasks }) => { + const taskIds = tasks.map(({ task_id }) => task_id); + unrelatedTaskIds = [...unrelatedTaskIds, ...taskIds]; + + return Animal.relatedQuery('tasks') + .for(id) + .unrelate() + .whereIn('task.task_id', taskIds) + .transacting(trx); + }), + ); + } + + return { unrelatedTaskIds: [...new Set(unrelatedTaskIds)] }; + } +} + +export default Animal; diff --git a/packages/api/src/models/animalMovementPurposeModel.js b/packages/api/src/models/animalMovementPurposeModel.js new file mode 100644 index 0000000000..cb190a99d8 --- /dev/null +++ b/packages/api/src/models/animalMovementPurposeModel.js @@ -0,0 +1,42 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ +import Model from './baseFormatModel.js'; + +class AnimalMovementPurpose extends Model { + static get tableName() { + return 'animal_movement_purpose'; + } + + static get idColumn() { + return 'id'; + } + + // Optional JSON schema. This is not the database schema! Nothing is generated + // based on this. This is only used for validation. Whenever a model instance + // is created it is checked against this schema. http://json-schema.org/. + static get jsonSchema() { + return { + type: 'object', + required: ['key'], + properties: { + id: { type: 'integer' }, + key: { type: 'string' }, + }, + additionalProperties: false, + }; + } +} + +export default AnimalMovementPurpose; diff --git a/packages/api/src/models/animalMovementTaskModel.js b/packages/api/src/models/animalMovementTaskModel.js new file mode 100644 index 0000000000..31dead8970 --- /dev/null +++ b/packages/api/src/models/animalMovementTaskModel.js @@ -0,0 +1,65 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import Model from './baseFormatModel.js'; +import TaskModel from './taskModel.js'; +import AnimalMovementTaskPurposeRelationshipModel from './animalMovementTaskPurposeRelationshipModel.js'; + +class AnimalMovementTask extends Model { + static get tableName() { + return 'animal_movement_task'; + } + + static get idColumn() { + return 'task_id'; + } + + // Optional JSON schema. This is not the database schema! Nothing is generated + // based on this. This is only used for validation. Whenever a model instance + // is created it is checked against this schema. http://json-schema.org/. + static get jsonSchema() { + return { + type: 'object', + required: [], + properties: { + task_id: { type: 'integer' }, + }, + additionalProperties: false, + }; + } + + static get relationMappings() { + return { + task: { + relation: Model.BelongsToOneRelation, + modelClass: TaskModel, + join: { + from: 'animal_movement_task.task_id', + to: 'task.task_id', + }, + }, + purpose_relationships: { + relation: Model.HasManyRelation, + modelClass: AnimalMovementTaskPurposeRelationshipModel, + join: { + from: 'animal_movement_task.task_id', + to: 'animal_movement_task_purpose_relationship.task_id', + }, + }, + }; + } +} + +export default AnimalMovementTask; diff --git a/packages/api/src/models/animalMovementTaskPurposeRelationshipModel.js b/packages/api/src/models/animalMovementTaskPurposeRelationshipModel.js new file mode 100644 index 0000000000..e19e0d7a5e --- /dev/null +++ b/packages/api/src/models/animalMovementTaskPurposeRelationshipModel.js @@ -0,0 +1,44 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import Model from './baseFormatModel.js'; + +class AnimalMovementTaskPurposeRelationship extends Model { + static get tableName() { + return 'animal_movement_task_purpose_relationship'; + } + + static get idColumn() { + return ['task_id', 'purpose_id']; + } + + // Optional JSON schema. This is not the database schema! Nothing is generated + // based on this. This is only used for validation. Whenever a model instance + // is created it is checked against this schema. http://json-schema.org/. + static get jsonSchema() { + return { + type: 'object', + required: ['task_id', 'purpose_id'], + properties: { + task_id: { type: 'integer' }, + purpose_id: { type: 'integer' }, + other_purpose: { type: ['string', 'null'], minLength: 1, maxLength: 255 }, + }, + additionalProperties: false, + }; + } +} + +export default AnimalMovementTaskPurposeRelationship; diff --git a/packages/api/src/models/animalOriginModel.js b/packages/api/src/models/animalOriginModel.js new file mode 100644 index 0000000000..9dd56e4b0f --- /dev/null +++ b/packages/api/src/models/animalOriginModel.js @@ -0,0 +1,43 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import baseModel from './baseModel.js'; + +class AnimalOrigin extends baseModel { + static get tableName() { + return 'animal_origin'; + } + + static get idColumn() { + return 'id'; + } + + // Optional JSON schema. This is not the database schema! Nothing is generated + // based on this. This is only used for validation. Whenever a model instance + // is created it is checked against this schema. http://json-schema.org/. + static get jsonSchema() { + return { + type: 'object', + required: ['key'], + properties: { + id: { type: 'integer' }, + key: { type: 'string' }, + }, + additionalProperties: false, + }; + } +} + +export default AnimalOrigin; diff --git a/packages/api/src/models/animalRemovalReasonModel.js b/packages/api/src/models/animalRemovalReasonModel.js new file mode 100644 index 0000000000..f3eae4d19d --- /dev/null +++ b/packages/api/src/models/animalRemovalReasonModel.js @@ -0,0 +1,43 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import baseModel from './baseModel.js'; + +class AnimalRemovalReason extends baseModel { + static get tableName() { + return 'animal_removal_reason'; + } + + static get idColumn() { + return 'id'; + } + + // Optional JSON schema. This is not the database schema! Nothing is generated + // based on this. This is only used for validation. Whenever a model instance + // is created it is checked against this schema. http://json-schema.org/. + static get jsonSchema() { + return { + type: 'object', + required: ['key'], + properties: { + id: { type: 'integer' }, + key: { type: 'string' }, + }, + additionalProperties: false, + }; + } +} + +export default AnimalRemovalReason; diff --git a/packages/api/src/models/animalSexModel.js b/packages/api/src/models/animalSexModel.js new file mode 100644 index 0000000000..a6566f784d --- /dev/null +++ b/packages/api/src/models/animalSexModel.js @@ -0,0 +1,43 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import baseModel from './baseModel.js'; + +class AnimalSex extends baseModel { + static get tableName() { + return 'animal_sex'; + } + + static get idColumn() { + return 'id'; + } + + // Optional JSON schema. This is not the database schema! Nothing is generated + // based on this. This is only used for validation. Whenever a model instance + // is created it is checked against this schema. http://json-schema.org/. + static get jsonSchema() { + return { + type: 'object', + required: ['key'], + properties: { + id: { type: 'integer' }, + key: { type: 'string' }, + }, + additionalProperties: false, + }; + } +} + +export default AnimalSex; diff --git a/packages/api/src/models/animalUnionBatchIdViewModel.js b/packages/api/src/models/animalUnionBatchIdViewModel.js new file mode 100644 index 0000000000..a5fa2b4eeb --- /dev/null +++ b/packages/api/src/models/animalUnionBatchIdViewModel.js @@ -0,0 +1,43 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import Model from './baseFormatModel.js'; + +class animalUnionBatchIdViewModel extends Model { + static get tableName() { + return 'animal_union_batch_id_view'; + } + // Optional JSON schema. This is not the database schema! Nothing is generated + // based on this. This is only used for validation. Whenever a model instance + // is created it is checked against this schema. http://json-schema.org/. + static get jsonSchema() { + return { + type: 'object', + properties: { + id: { type: 'integer' }, + farm_id: { type: 'string' }, + batch: { type: 'boolean' }, + created_at: { + type: ['string'], + format: 'date-time', + }, + internal_identifier: { type: 'integer' }, + }, + additionalProperties: false, + }; + } +} + +export default animalUnionBatchIdViewModel; diff --git a/packages/api/src/models/animalUseModel.js b/packages/api/src/models/animalUseModel.js new file mode 100644 index 0000000000..ae2ec18eba --- /dev/null +++ b/packages/api/src/models/animalUseModel.js @@ -0,0 +1,70 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import knex from '../util/knex.js'; +import baseModel from './baseModel.js'; + +class AnimalUse extends baseModel { + static get tableName() { + return 'animal_use'; + } + + static get idColumn() { + return 'id'; + } + + // Optional JSON schema. This is not the database schema! Nothing is generated + // based on this. This is only used for validation. Whenever a model instance + // is created it is checked against this schema. http://json-schema.org/. + static get jsonSchema() { + return { + type: 'object', + required: ['key'], + properties: { + id: { type: 'integer' }, + key: { type: 'string' }, + }, + additionalProperties: false, + }; + } + + static async getAnimalUsesForTypes() { + const typeUseRelationships = await knex('animal_type_use_relationship') + .select({ + default_type_id: 'default_type_id', + useId: 'animal_use.id', + useKey: 'animal_use.key', + }) + .join('animal_use', 'animal_type_use_relationship.animal_use_id', '=', 'animal_use.id'); + + const usesPerType = typeUseRelationships.reduce((map, { default_type_id, useId, useKey }) => { + map[default_type_id] = map[default_type_id] || []; + map[default_type_id].push({ id: useId, key: useKey }); + + return map; + }, {}); + + const response = Object.entries(usesPerType).map(([defaultTypeId, uses]) => { + return { default_type_id: +defaultTypeId, uses }; + }); + + const allUses = await AnimalUse.query(); + response.push({ default_type_id: null, uses: allUses }); + + return response; + } +} + +export default AnimalUse; diff --git a/packages/api/src/models/animalUseRelationshipModel.js b/packages/api/src/models/animalUseRelationshipModel.js new file mode 100644 index 0000000000..d8514b2ee3 --- /dev/null +++ b/packages/api/src/models/animalUseRelationshipModel.js @@ -0,0 +1,44 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import Model from './baseFormatModel.js'; + +class AnimalUseRelationshipModel extends Model { + static get tableName() { + return 'animal_use_relationship'; + } + + static get idColumn() { + return ['animal_id', 'use_id']; + } + + // Optional JSON schema. This is not the database schema! Nothing is generated + // based on this. This is only used for validation. Whenever a model instance + // is created it is checked against this schema. http://json-schema.org/. + static get jsonSchema() { + return { + type: 'object', + required: ['animal_id', 'use_id'], + properties: { + animal_id: { type: 'integer' }, + use_id: { type: 'integer' }, + other_use: { type: ['string', 'null'] }, + }, + additionalProperties: false, + }; + } +} + +export default AnimalUseRelationshipModel; diff --git a/packages/api/src/models/customAnimalBreedModel.js b/packages/api/src/models/customAnimalBreedModel.js new file mode 100644 index 0000000000..e5a74aaa6d --- /dev/null +++ b/packages/api/src/models/customAnimalBreedModel.js @@ -0,0 +1,54 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import baseModel from './baseModel.js'; + +class CustomAnimalBreed extends baseModel { + static get tableName() { + return 'custom_animal_breed'; + } + + static get idColumn() { + return 'id'; + } + + // Optional JSON schema. This is not the database schema! Nothing is generated + // based on this. This is only used for validation. Whenever a model instance + // is created it is checked against this schema. http://json-schema.org/. + static get jsonSchema() { + return { + type: 'object', + oneOf: [ + { + required: ['farm_id', 'default_type_id', 'breed'], + }, + { + required: ['farm_id', 'custom_type_id', 'breed'], + }, + ], + properties: { + id: { type: 'integer' }, + farm_id: { type: 'string' }, + default_type_id: { type: ['integer', 'null'] }, + custom_type_id: { type: ['integer', 'null'] }, + breed: { type: 'string' }, + ...this.baseProperties, + }, + additionalProperties: false, + }; + } +} + +export default CustomAnimalBreed; diff --git a/packages/api/src/models/customAnimalTypeModel.js b/packages/api/src/models/customAnimalTypeModel.js new file mode 100644 index 0000000000..30dd87b535 --- /dev/null +++ b/packages/api/src/models/customAnimalTypeModel.js @@ -0,0 +1,70 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import baseModel from './baseModel.js'; +import knex from '../util/knex.js'; + +class CustomAnimalType extends baseModel { + static get tableName() { + return 'custom_animal_type'; + } + + static get idColumn() { + return 'id'; + } + + // Optional JSON schema. This is not the database schema! Nothing is generated + // based on this. This is only used for validation. Whenever a model instance + // is created it is checked against this schema. http://json-schema.org/. + static get jsonSchema() { + return { + type: 'object', + required: ['farm_id', 'type'], + + properties: { + id: { type: 'integer' }, + farm_id: { type: 'string' }, + type: { type: 'string' }, + ...this.baseProperties, + }, + additionalProperties: false, + }; + } + + static async getCustomAnimalTypesWithCountsByFarmId(farm_id) { + const data = await knex.raw( + `SELECT + cat.id, cat.farm_id, cat.type, + COALESCE(SUM(abu.count), 0) AS count + FROM + custom_animal_type AS cat + LEFT JOIN ( + SELECT custom_type_id, COUNT(*) AS count + FROM animal WHERE farm_id = ? AND deleted is FALSE AND animal_removal_reason_id is NULL + GROUP BY custom_type_id + UNION ALL + SELECT custom_type_id, SUM(count) AS count + FROM animal_batch WHERE farm_id = ? AND deleted is FALSE AND animal_removal_reason_id is NULL + GROUP BY custom_type_id + ) AS abu ON cat.id = abu.custom_type_id + WHERE farm_id = ? AND deleted is FALSE + GROUP BY cat.id;`, + [farm_id, farm_id, farm_id], + ); + return data.rows; + } +} + +export default CustomAnimalType; diff --git a/packages/api/src/models/defaultAnimalBreedModel.js b/packages/api/src/models/defaultAnimalBreedModel.js new file mode 100644 index 0000000000..1413189505 --- /dev/null +++ b/packages/api/src/models/defaultAnimalBreedModel.js @@ -0,0 +1,44 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import baseModel from './baseModel.js'; + +class DefaultAnimalBreed extends baseModel { + static get tableName() { + return 'default_animal_breed'; + } + + static get idColumn() { + return 'id'; + } + + // Optional JSON schema. This is not the database schema! Nothing is generated + // based on this. This is only used for validation. Whenever a model instance + // is created it is checked against this schema. http://json-schema.org/. + static get jsonSchema() { + return { + type: 'object', + required: ['default_type_id', 'key'], + properties: { + id: { type: 'integer' }, + default_type_id: { type: 'integer' }, + key: { type: 'string' }, + }, + additionalProperties: false, + }; + } +} + +export default DefaultAnimalBreed; diff --git a/packages/api/src/models/defaultAnimalTypeModel.js b/packages/api/src/models/defaultAnimalTypeModel.js new file mode 100644 index 0000000000..e5fdedaa1f --- /dev/null +++ b/packages/api/src/models/defaultAnimalTypeModel.js @@ -0,0 +1,69 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import Model from './baseFormatModel.js'; +import knex from '../util/knex.js'; + +class DefaultAnimalTypeModel extends Model { + static get tableName() { + return 'default_animal_type'; + } + + static get idColumn() { + return 'id'; + } + + // Optional JSON schema. This is not the database schema! Nothing is generated + // based on this. This is only used for validation. Whenever a model instance + // is created it is checked against this schema. http://json-schema.org/. + static get jsonSchema() { + return { + type: 'object', + required: ['key'], + + properties: { + id: { type: 'integer' }, + key: { type: 'string' }, + }, + additionalProperties: false, + }; + } + + static async getDefaultAnimalTypesWithCountsByFarmId(farm_id) { + const data = await knex.raw( + `SELECT + dat.*, + COALESCE(SUM(abu.count), 0) AS count + FROM + default_animal_type AS dat + LEFT JOIN ( + SELECT default_type_id, COUNT(*) AS count + FROM animal + WHERE farm_id = ? AND deleted is FALSE AND animal_removal_reason_id is NULL + GROUP BY default_type_id + UNION ALL + SELECT default_type_id, SUM(count) AS count + FROM animal_batch + WHERE farm_id = ? AND deleted is FALSE AND animal_removal_reason_id is NULL + GROUP BY default_type_id + ) AS abu ON dat.id = abu.default_type_id + GROUP BY dat.id;`, + [farm_id, farm_id], + ); + return data.rows; + } +} + +export default DefaultAnimalTypeModel; diff --git a/packages/api/src/models/locationModel.js b/packages/api/src/models/locationModel.js index e3313da2e1..360f1a3065 100644 --- a/packages/api/src/models/locationModel.js +++ b/packages/api/src/models/locationModel.js @@ -229,6 +229,19 @@ class Location extends baseModel { }; } + static get modifiers() { + return { + selectLocationId(query) { + const { ref } = Location; + query.select(ref('location_id')); + }, + filterDeleted(query) { + const { ref } = Location; + query.where(ref('deleted'), false); + }, + }; + } + static async createLocation(asset, context, locationData, trx) { const nonModifiable = getNonModifiable(asset); return await Location.query(trx) diff --git a/packages/api/src/models/showedSpotlightModel.js b/packages/api/src/models/showedSpotlightModel.js index 1848fc318e..5c549c0340 100644 --- a/packages/api/src/models/showedSpotlightModel.js +++ b/packages/api/src/models/showedSpotlightModel.js @@ -74,6 +74,8 @@ class ShowedSpotlight extends Model { manage_custom_expense_type_end: { type: ['string', 'null'] }, manage_custom_revenue_type: { type: 'boolean' }, manage_custom_revenue_type_end: { type: ['string', 'null'] }, + animals_beta: { type: 'boolean' }, + animals_beta_end: { type: ['string', 'null'] }, }, }; } diff --git a/packages/api/src/models/taskAnimalBatchRelationshipModel.js b/packages/api/src/models/taskAnimalBatchRelationshipModel.js new file mode 100644 index 0000000000..d09dff33b3 --- /dev/null +++ b/packages/api/src/models/taskAnimalBatchRelationshipModel.js @@ -0,0 +1,43 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import Model from './baseFormatModel.js'; + +class TaskAnimalBatchRelationshipModel extends Model { + static get tableName() { + return 'task_animal_batch_relationship'; + } + + static get idColumn() { + return ['task_id', 'animal_batch_id']; + } + + // Optional JSON schema. This is not the database schema! Nothing is generated + // based on this. This is only used for validation. Whenever a model instance + // is created it is checked against this schema. http://json-schema.org/. + static get jsonSchema() { + return { + type: 'object', + required: ['task_id', 'animal_batch_id'], + properties: { + task_id: { type: 'integer' }, + animal_batch_id: { type: 'integer' }, + }, + additionalProperties: false, + }; + } +} + +export default TaskAnimalBatchRelationshipModel; diff --git a/packages/api/src/models/taskAnimalRelationshipModel.js b/packages/api/src/models/taskAnimalRelationshipModel.js new file mode 100644 index 0000000000..9e7819885c --- /dev/null +++ b/packages/api/src/models/taskAnimalRelationshipModel.js @@ -0,0 +1,43 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import Model from './baseFormatModel.js'; + +class TaskAnimalRelationshipModel extends Model { + static get tableName() { + return 'task_animal_relationship'; + } + + static get idColumn() { + return ['task_id', 'animal_id']; + } + + // Optional JSON schema. This is not the database schema! Nothing is generated + // based on this. This is only used for validation. Whenever a model instance + // is created it is checked against this schema. http://json-schema.org/. + static get jsonSchema() { + return { + type: 'object', + required: ['task_id', 'animal_id'], + properties: { + task_id: { type: 'integer' }, + animal_id: { type: 'integer' }, + }, + additionalProperties: false, + }; + } +} + +export default TaskAnimalRelationshipModel; diff --git a/packages/api/src/models/taskModel.js b/packages/api/src/models/taskModel.js index 338ab61325..538ce6e219 100644 --- a/packages/api/src/models/taskModel.js +++ b/packages/api/src/models/taskModel.js @@ -28,10 +28,15 @@ import cleaningTaskModel from './cleaningTaskModel.js'; import taskTypeModel from './taskTypeModel.js'; import plantTaskModel from './plantTaskModel.js'; import transplantTaskModel from './transplantTaskModel.js'; +import animalMovementTaskModel from './animalMovementTaskModel.js'; import plantingManagementPlanModel from './plantingManagementPlanModel.js'; import managementTasksModel from './managementTasksModel.js'; import locationModel from './locationModel.js'; import locationTasksModel from './locationTasksModel.js'; +import AnimalModel from './animalModel.js'; +import AnimalBatchModel from './animalBatchModel.js'; +import TaskAnimalRelationshipModel from './taskAnimalRelationshipModel.js'; +import TaskAnimalBatchRelationshipModel from './taskAnimalBatchRelationshipModel.js'; class TaskModel extends BaseModel { static get tableName() { @@ -75,6 +80,7 @@ class TaskModel extends BaseModel { 'WEATHER', 'MACHINERY_ISSUE', 'SCHEDULING_ISSUE', + 'NO_ANIMALS', ], }, other_abandonment_reason: { type: ['string', 'null'] }, @@ -189,6 +195,14 @@ class TaskModel extends BaseModel { to: 'transplant_task.task_id', }, }, + animal_movement_task: { + relation: Model.HasOneRelation, + modelClass: animalMovementTaskModel, + join: { + from: 'task.task_id', + to: 'animal_movement_task.task_id', + }, + }, //TODO: rename to plantingManagementPlans managementPlans: { modelClass: plantingManagementPlanModel, @@ -224,6 +238,32 @@ class TaskModel extends BaseModel { to: 'location_tasks.task_id', }, }, + animals: { + relation: Model.ManyToManyRelation, + modelClass: AnimalModel, + join: { + from: 'task.task_id', + through: { + modelClass: TaskAnimalRelationshipModel, + from: 'task_animal_relationship.task_id', + to: 'task_animal_relationship.animal_id', + }, + to: 'animal.id', + }, + }, + animal_batches: { + relation: Model.ManyToManyRelation, + modelClass: AnimalBatchModel, + join: { + from: 'task.task_id', + through: { + modelClass: TaskAnimalBatchRelationshipModel, + from: 'task_animal_batch_relationship.task_id', + to: 'task_animal_batch_relationship.animal_batch_id', + }, + to: 'animal_batch.id', + }, + }, }; } @@ -266,8 +306,11 @@ class TaskModel extends BaseModel { taskType: 'omit', plant_task: 'edit', transplant_task: 'edit', + animal_movement_task: 'omit', managementPlans: 'omit', locations: 'edit', + animals: 'omit', + animal_batches: 'omit', }; } @@ -460,6 +503,13 @@ class TaskModel extends BaseModel { return TaskModel.deleteTask(task_id, user, trx); } } + + static async getTaskIdsWithAnimalAndBatchIds(trx, taskIds) { + return await TaskModel.query(trx) + .select('task_id') + .withGraphFetched('[animals(selectId), animal_batches(selectId)]') + .whereIn('task_id', taskIds); + } } export default TaskModel; diff --git a/packages/api/src/models/userModel.js b/packages/api/src/models/userModel.js index 3fddc84ab3..0d974f5c6a 100644 --- a/packages/api/src/models/userModel.js +++ b/packages/api/src/models/userModel.js @@ -37,6 +37,8 @@ class User extends Model { async $beforeInsert(context) { await super.$beforeInsert(context); this.email && (this.email = this.email.toLowerCase()); + this.first_name && (this.first_name = this.first_name.trim()); + this.last_name && (this.last_name = this.last_name.trim()); } static async beforeFind(args) { diff --git a/packages/api/src/routes/animalBatchRoute.js b/packages/api/src/routes/animalBatchRoute.js new file mode 100644 index 0000000000..736b3703eb --- /dev/null +++ b/packages/api/src/routes/animalBatchRoute.js @@ -0,0 +1,67 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import express from 'express'; + +const router = express.Router(); +import checkScope from '../middleware/acl/checkScope.js'; +import hasFarmAccess from '../middleware/acl/hasFarmAccess.js'; +import AnimalBatchController from '../controllers/animalBatchController.js'; +import multerDiskUpload from '../util/fileUpload.js'; +import validateFileExtension from '../middleware/validation/uploadImage.js'; +import { + checkRemoveAnimalOrBatch, + checkEditAnimalOrBatch, + checkCreateAnimalOrBatch, + checkDeleteAnimalOrBatch, +} from '../middleware/validation/checkAnimalOrBatch.js'; + +router.get('/', checkScope(['get:animal_batches']), AnimalBatchController.getFarmAnimalBatches()); +router.post( + '/', + checkScope(['add:animal_batches']), + checkCreateAnimalOrBatch('batch'), + AnimalBatchController.addAnimalBatches(), +); +router.patch( + '/', + checkScope(['edit:animal_batches']), + // Can't use hasFarmAccess because body is an array & because of non-unique id field + checkEditAnimalOrBatch('batch'), + AnimalBatchController.editAnimalBatches(), +); +router.patch( + '/remove', + checkScope(['edit:animal_batches']), + // Can't use hasFarmAccess because body is an array & because of non-unique id field + checkRemoveAnimalOrBatch('batch'), + AnimalBatchController.removeAnimalBatches(), +); +router.delete( + '/', + checkScope(['delete:animal_batches']), + checkDeleteAnimalOrBatch('batch'), + AnimalBatchController.deleteAnimalBatches(), +); +router.post( + '/upload/farm/:farm_id', + hasFarmAccess({ params: 'farm_id' }), + checkScope(['add:animal_batches']), + multerDiskUpload, + validateFileExtension, + AnimalBatchController.uploadAnimalBatchImage(), +); + +export default router; diff --git a/packages/api/src/routes/animalGroupRoute.js b/packages/api/src/routes/animalGroupRoute.js new file mode 100644 index 0000000000..5f80e53c61 --- /dev/null +++ b/packages/api/src/routes/animalGroupRoute.js @@ -0,0 +1,25 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import express from 'express'; + +const router = express.Router(); +import AnimalGroupController from '../controllers/animalGroupController.js'; +import checkScope from '../middleware/acl/checkScope.js'; + +router.get('/', checkScope(['get:animal_groups']), AnimalGroupController.getFarmAnimalGroups()); +router.post('/', checkScope(['add:animal_groups']), AnimalGroupController.addAnimalGroup()); + +export default router; diff --git a/packages/api/src/routes/animalIdentifierColorRoute.js b/packages/api/src/routes/animalIdentifierColorRoute.js new file mode 100644 index 0000000000..568e07bf51 --- /dev/null +++ b/packages/api/src/routes/animalIdentifierColorRoute.js @@ -0,0 +1,28 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import express from 'express'; + +const router = express.Router(); +import checkScope from '../middleware/acl/checkScope.js'; +import animalIdentifierColorController from '../controllers/animalIdentifierColorController.js'; + +router.get( + '/', + checkScope(['get:animal_identifier_colors']), + animalIdentifierColorController.getAnimalIdentifierColors(), +); + +export default router; diff --git a/packages/api/src/routes/animalIdentifierTypeRoute.js b/packages/api/src/routes/animalIdentifierTypeRoute.js new file mode 100644 index 0000000000..4399bb8478 --- /dev/null +++ b/packages/api/src/routes/animalIdentifierTypeRoute.js @@ -0,0 +1,24 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import express from 'express'; +import checkScope from '../middleware/acl/checkScope.js'; + +const router = express.Router(); +import { getIdentifierTypes } from '../controllers/animalIdentifierTypeController.js'; + +router.get('/', checkScope(['get:animal_identifier_types']), getIdentifierTypes); + +export default router; diff --git a/packages/api/src/routes/animalMovementPurposeRoute.js b/packages/api/src/routes/animalMovementPurposeRoute.js new file mode 100644 index 0000000000..0473478464 --- /dev/null +++ b/packages/api/src/routes/animalMovementPurposeRoute.js @@ -0,0 +1,23 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import express from 'express'; + +const router = express.Router(); +import animalMovementPurposeController from '../controllers/animalMovementPurposeController.js'; + +router.get('/', animalMovementPurposeController.getAnimalMovementPurposes()); + +export default router; diff --git a/packages/api/src/routes/animalOriginRoute.js b/packages/api/src/routes/animalOriginRoute.js new file mode 100644 index 0000000000..c5fd8da9be --- /dev/null +++ b/packages/api/src/routes/animalOriginRoute.js @@ -0,0 +1,24 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import express from 'express'; + +const router = express.Router(); +import checkScope from '../middleware/acl/checkScope.js'; +import animalOriginController from '../controllers/animalOriginController.js'; + +router.get('/', checkScope(['get:animal_origins']), animalOriginController.getAnimalOrigins()); + +export default router; diff --git a/packages/api/src/routes/animalRemovalReasonRoute.js b/packages/api/src/routes/animalRemovalReasonRoute.js new file mode 100644 index 0000000000..20708bf00a --- /dev/null +++ b/packages/api/src/routes/animalRemovalReasonRoute.js @@ -0,0 +1,28 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import express from 'express'; + +const router = express.Router(); +import checkScope from '../middleware/acl/checkScope.js'; +import animalRemovalReasonController from '../controllers/animalRemovalReasonController.js'; + +router.get( + '/', + checkScope(['get:animal_removal_reasons']), + animalRemovalReasonController.getAnimalRemovalReasons(), +); + +export default router; diff --git a/packages/api/src/routes/animalRoute.js b/packages/api/src/routes/animalRoute.js new file mode 100644 index 0000000000..4a55cb2877 --- /dev/null +++ b/packages/api/src/routes/animalRoute.js @@ -0,0 +1,67 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import express from 'express'; + +const router = express.Router(); +import checkScope from '../middleware/acl/checkScope.js'; +import hasFarmAccess from '../middleware/acl/hasFarmAccess.js'; +import AnimalController from '../controllers/animalController.js'; +import multerDiskUpload from '../util/fileUpload.js'; +import validateFileExtension from '../middleware/validation/uploadImage.js'; +import { + checkRemoveAnimalOrBatch, + checkEditAnimalOrBatch, + checkCreateAnimalOrBatch, + checkDeleteAnimalOrBatch, +} from '../middleware/validation/checkAnimalOrBatch.js'; + +router.get('/', checkScope(['get:animals']), AnimalController.getFarmAnimals()); +router.post( + '/', + checkScope(['add:animals']), + checkCreateAnimalOrBatch('animal'), + AnimalController.addAnimals(), +); +router.patch( + '/', + checkScope(['edit:animals']), + checkEditAnimalOrBatch('animal'), + // Can't use hasFarmAccess because body is an array & because of non-unique id field + AnimalController.editAnimals(), +); +router.patch( + '/remove', + checkScope(['edit:animals']), + checkRemoveAnimalOrBatch('animal'), + // Can't use hasFarmAccess because body is an array & because of non-unique id field + AnimalController.removeAnimals(), +); +router.delete( + '/', + checkScope(['delete:animals']), + checkDeleteAnimalOrBatch('animal'), + AnimalController.deleteAnimals(), +); +router.post( + '/upload/farm/:farm_id', + hasFarmAccess({ params: 'farm_id' }), + checkScope(['add:animals']), + multerDiskUpload, + validateFileExtension, + AnimalController.uploadAnimalImage(), +); + +export default router; diff --git a/packages/api/src/routes/animalSexRoute.js b/packages/api/src/routes/animalSexRoute.js new file mode 100644 index 0000000000..ebf400aa8c --- /dev/null +++ b/packages/api/src/routes/animalSexRoute.js @@ -0,0 +1,24 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import express from 'express'; + +const router = express.Router(); +import checkScope from '../middleware/acl/checkScope.js'; +import animalSexController from '../controllers/animalSexController.js'; + +router.get('/', checkScope(['get:animal_sexes']), animalSexController.getAnimalSexes()); + +export default router; diff --git a/packages/api/src/routes/animalUseRoute.js b/packages/api/src/routes/animalUseRoute.js new file mode 100644 index 0000000000..271e723d12 --- /dev/null +++ b/packages/api/src/routes/animalUseRoute.js @@ -0,0 +1,24 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import express from 'express'; + +const router = express.Router(); +import checkScope from '../middleware/acl/checkScope.js'; +import animalUseController from '../controllers/animalUseController.js'; + +router.get('/', checkScope(['get:animal_uses']), animalUseController.getAnimalUses()); + +export default router; diff --git a/packages/api/src/routes/customAnimalBreedRoute.js b/packages/api/src/routes/customAnimalBreedRoute.js new file mode 100644 index 0000000000..09d1e5e336 --- /dev/null +++ b/packages/api/src/routes/customAnimalBreedRoute.js @@ -0,0 +1,34 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import express from 'express'; + +const router = express.Router(); +import CustomAnimalBreedController from '../controllers/customAnimalBreedController.js'; +import checkScope from '../middleware/acl/checkScope.js'; + +router.get( + '/', + checkScope(['get:animal_breeds']), + CustomAnimalBreedController.getCustomAnimalBreeds(), +); + +router.post( + '/', + checkScope(['add:animal_breeds']), + CustomAnimalBreedController.addCustomAnimalBreed(), +); + +export default router; diff --git a/packages/api/src/routes/customAnimalTypeRoute.js b/packages/api/src/routes/customAnimalTypeRoute.js new file mode 100644 index 0000000000..a50272bb96 --- /dev/null +++ b/packages/api/src/routes/customAnimalTypeRoute.js @@ -0,0 +1,34 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import express from 'express'; + +const router = express.Router(); +import CustomAnimalTypeController from '../controllers/customAnimalTypeController.js'; +import checkScope from '../middleware/acl/checkScope.js'; + +router.get( + '/', + checkScope(['get:animal_types']), + CustomAnimalTypeController.getCustomAnimalTypes(), +); + +router.post( + '/', + checkScope(['add:animal_types']), + CustomAnimalTypeController.addCustomAnimalType(), +); + +export default router; diff --git a/packages/api/src/routes/defaultAnimalBreedRoute.js b/packages/api/src/routes/defaultAnimalBreedRoute.js new file mode 100644 index 0000000000..6c103019e6 --- /dev/null +++ b/packages/api/src/routes/defaultAnimalBreedRoute.js @@ -0,0 +1,23 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import express from 'express'; + +const router = express.Router(); +import DefaultAnimalBreedController from '../controllers/defaultAnimalBreedController.js'; + +router.get('/', DefaultAnimalBreedController.getDefaultAnimalBreeds()); + +export default router; diff --git a/packages/api/src/routes/defaultAnimalTypeRoute.js b/packages/api/src/routes/defaultAnimalTypeRoute.js new file mode 100644 index 0000000000..cb1f399ebb --- /dev/null +++ b/packages/api/src/routes/defaultAnimalTypeRoute.js @@ -0,0 +1,23 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import express from 'express'; + +const router = express.Router(); +import DefaultAnimalTypeController from '../controllers/defaultAnimalTypeController.js'; + +router.get('/', DefaultAnimalTypeController.getDefaultAnimalTypes()); + +export default router; diff --git a/packages/api/src/routes/taskRoute.js b/packages/api/src/routes/taskRoute.js index c3fd0e7340..168a625bfa 100644 --- a/packages/api/src/routes/taskRoute.js +++ b/packages/api/src/routes/taskRoute.js @@ -159,11 +159,21 @@ router.post( taskController.createTransplantTask, ); +router.post( + '/animal_movement_task', + modelMapping['animal_movement_task'], + hasFarmAccess({ body: 'locations' }), + isWorkerToSelfOrAdmin(), + checkCreateTask('animal_movement_task'), + taskController.createTask('animal_movement_task'), +); + router.post( '/custom_task', modelMapping['custom_task'], hasFarmAccess({ mixed: 'taskManagementPlanAndLocation' }), isWorkerToSelfOrAdmin(), + checkCreateTask('custom_task'), taskController.createTask('custom_task'), ); @@ -250,11 +260,21 @@ router.patch( taskController.completeTask('transplant_task'), ); +router.patch( + '/complete/animal_movement_task/:task_id', + modelMapping['animal_movement_task'], + hasFarmAccess({ params: 'task_id' }), + checkScope(['edit:task']), + checkCompleteTask('animal_movement_task'), + taskController.completeTask('animal_movement_task'), +); + router.patch( '/complete/custom_task/:task_id', modelMapping['custom_task'], hasFarmAccess({ params: 'task_id' }), checkScope(['edit:task']), + checkCompleteTask('custom_task'), taskController.completeTask('custom_task'), ); diff --git a/packages/api/src/server.js b/packages/api/src/server.js index fa47beda45..003d7418f8 100644 --- a/packages/api/src/server.js +++ b/packages/api/src/server.js @@ -39,7 +39,7 @@ if (process.env.SENTRY_DSN && environment !== 'development') { // Automatically instrument Node.js libraries and frameworks ...Sentry.autoDiscoverNodePerformanceMonitoringIntegrations(), ], - release: '3.6.8', + release: '3.7.0', // Set tracesSampleRate to 1.0 to capture 100% // of transactions for performance monitoring. // We recommend adjusting this value in production @@ -124,6 +124,18 @@ import logger from './common/logger.js'; // import routes import loginRoutes from './routes/loginRoute.js'; +import defaultAnimalTypeRoute from './routes/defaultAnimalTypeRoute.js'; +import customAnimalTypeRoute from './routes/customAnimalTypeRoute.js'; +import defaultAnimalBreedRoute from './routes/defaultAnimalBreedRoute.js'; +import customAnimalBreedRoute from './routes/customAnimalBreedRoute.js'; +import animalRoute from './routes/animalRoute.js'; +import animalBatchRoute from './routes/animalBatchRoute.js'; +import animalIdentifierColorRoute from './routes/animalIdentifierColorRoute.js'; +import animalIdentifierTypeRoute from './routes/animalIdentifierTypeRoute.js'; +import animalSexRoute from './routes/animalSexRoute.js'; +import animalOriginRoute from './routes/animalOriginRoute.js'; +import animalRemovalReasonRoute from './routes/animalRemovalReasonRoute.js'; +import animalUseRoute from './routes/animalUseRoute.js'; import cropRoutes from './routes/cropRoute.js'; import cropVarietyRoutes from './routes/cropVarietyRoute.js'; import fieldRoutes from './routes/fieldRoute.js'; @@ -132,6 +144,7 @@ import taskTypeRoutes from './routes/taskTypeRoute.js'; import soilAmendmentMethodRoute from './routes/soilAmendmentMethodRoute.js'; import soilAmendmentPurposeRoute from './routes/soilAmendmentPurposeRoute.js'; import soilAmendmentFertiliserTypeRoute from './routes/soilAmendmentFertiliserTypeRoute.js'; +import animalMovementPurposeRoute from './routes/animalMovementPurposeRoute.js'; import userRoutes from './routes/userRoute.js'; import farmExpenseRoute from './routes/farmExpenseRoute.js'; import farmExpenseTypeRoute from './routes/farmExpenseTypeRoute.js'; @@ -267,6 +280,18 @@ app .use(checkJwt) // routes + .use('/default_animal_types', defaultAnimalTypeRoute) + .use('/custom_animal_types', customAnimalTypeRoute) + .use('/default_animal_breeds', defaultAnimalBreedRoute) + .use('/custom_animal_breeds', customAnimalBreedRoute) + .use('/animals', animalRoute) + .use('/animal_batches', animalBatchRoute) + .use('/animal_identifier_types', animalIdentifierTypeRoute) + .use('/animal_identifier_colors', animalIdentifierColorRoute) + .use('/animal_sexes', animalSexRoute) + .use('/animal_origins', animalOriginRoute) + .use('/animal_removal_reasons', animalRemovalReasonRoute) + .use('/animal_uses', animalUseRoute) .use('/location', locationRoute) .use('/userLog', userLogRoute) .use('/crop', cropRoutes) @@ -278,6 +303,7 @@ app .use('/soil_amendment_purposes', soilAmendmentPurposeRoute) .use('/soil_amendment_methods', soilAmendmentMethodRoute) .use('/soil_amendment_fertiliser_types', soilAmendmentFertiliserTypeRoute) + .use('/animal_movement_purposes', animalMovementPurposeRoute) .use('/user', userRoutes) .use('/expense', farmExpenseRoute) .use('/expense_type', farmExpenseTypeRoute) diff --git a/packages/api/src/templates/emails/help_request_email/html.pug b/packages/api/src/templates/emails/help_request_email/html.pug index d392ab2bc3..ee9fd89105 100644 --- a/packages/api/src/templates/emails/help_request_email/html.pug +++ b/packages/api/src/templates/emails/help_request_email/html.pug @@ -1,22 +1,27 @@ extends ../template + block content - .support-container - .support-content + .support-container + .support-content + #ooo_message_enabled + if ooo_message_enabled + span=`${t('HELP_REQUEST.OOO_RESPONSE', { oooEndDate: ooo_end_date })}` + else span=`${t('HELP_REQUEST.RESPONSE')}` - .support-container - .support-header - span=`${t('HELP_REQUEST.TYPE_HEADER')}:` - .support-content - p=`${t('HELP_REQUEST.' + support_type.toUpperCase().replace(/\s/g, '_'))}` - .support-container - .support-header - span=`${t('HELP_REQUEST.MESSAGE_HEADER')}:` - .support-content - | #{message} - .support-container - .support-header - span=`${t('HELP_REQUEST.CONTACT_METHOD_HEADER')}:` - .support-content - | #{contact_method} - .support-content - | #{contact} + .support-container + .support-header + span=`${t('HELP_REQUEST.TYPE_HEADER')}:` + .support-content + p=`${t('HELP_REQUEST.' + support_type.toUpperCase().replace(/\s/g, '_'))}` + .support-container + .support-header + span=`${t('HELP_REQUEST.MESSAGE_HEADER')}:` + .support-content + | #{message} + .support-container + .support-header + span=`${t('HELP_REQUEST.CONTACT_METHOD_HEADER')}:` + .support-content + | #{contact_method} + .support-content + | #{contact} diff --git a/packages/api/src/templates/locales/de.json b/packages/api/src/templates/locales/de.json index 79b9650c9e..fb3e3675c6 100644 --- a/packages/api/src/templates/locales/de.json +++ b/packages/api/src/templates/locales/de.json @@ -18,7 +18,8 @@ "REQUEST_A_FEATURE": "Verbesserung vorschlagen", "OTHER": "Anderes", "CONTACT_METHOD_HEADER": "Bevorzugte Kontaktmethode", - "SUBJECT": "Deine LiteFarm-Anfrage um Unterstützung am" + "SUBJECT": "Deine LiteFarm-Anfrage um Unterstützung am", + "OOO_RESPONSE": "Vielen Dank für Ihre Nachricht. Bitte beachten Sie, dass unser Team bis {{oooEndDate}} nicht im Büro ist. Wir werden Ihre Nachricht so schnell wie möglich nach unserer Rückkehr beantworten. Vielen Dank für Ihr Verständnis! Eine Zusammenfassung Ihrer Anfrage finden Sie unten." }, "INVITE": { "GREAT_FOLK": "Die großartigen Leute von", diff --git a/packages/api/src/templates/locales/en.json b/packages/api/src/templates/locales/en.json index ee61ff1bf7..1991e924ab 100644 --- a/packages/api/src/templates/locales/en.json +++ b/packages/api/src/templates/locales/en.json @@ -18,7 +18,8 @@ "REQUEST_A_FEATURE": "Request a feature", "OTHER": "Other", "CONTACT_METHOD_HEADER": "Preferred contact method", - "SUBJECT": "Your LiteFarm request for help at" + "SUBJECT": "Your LiteFarm request for help at", + "OOO_RESPONSE": "Thanks for reaching out. Please note that our team is out of the office until {{oooEndDate}}. We will respond to your message as soon as possible after we return. Thank you for your understanding! A summary of your request is shown below." }, "INVITE": { "GREAT_FOLK": "The great folks at", diff --git a/packages/api/src/templates/locales/es.json b/packages/api/src/templates/locales/es.json index 7ac34d2be7..940ee34787 100644 --- a/packages/api/src/templates/locales/es.json +++ b/packages/api/src/templates/locales/es.json @@ -18,7 +18,8 @@ "REQUEST_A_FEATURE": "Solicitar una característica", "OTHER": "Otro", "CONTACT_METHOD_HEADER": "Método de contacto preferido", - "SUBJECT": "Su solicitud de ayuda a LiteFarm a las" + "SUBJECT": "Su solicitud de ayuda a LiteFarm a las", + "OOO_RESPONSE": "Gracias por contactarnos. Por favor, tenga en cuenta que nuestro equipo está fuera de la oficina hasta el {{oooEndDate}}. Responderemos a su mensaje tan pronto como sea posible una vez que regresemos. ¡Gracias por su comprensión! Puede encontrar un resumen de tu solicitud más abajo." }, "INVITE": { "GREAT_FOLK": "Las personas de", diff --git a/packages/api/src/templates/locales/fr.json b/packages/api/src/templates/locales/fr.json index ac27a53e40..3cce3d8280 100644 --- a/packages/api/src/templates/locales/fr.json +++ b/packages/api/src/templates/locales/fr.json @@ -18,7 +18,8 @@ "REQUEST_A_FEATURE": "Demander une fonctionnalité", "OTHER": "Autre", "CONTACT_METHOD_HEADER": "Méthode de contact préférée", - "SUBJECT": "Votre demande d'aide LiteFarm à" + "SUBJECT": "Votre demande d'aide LiteFarm à", + "OOO_RESPONSE": "Merci de nous avoir contacté. Veuillez noter que notre équipe est en congès jusqu'à {{oooEndDate}}. Nous répondrons à votre message le plus rapidement possible après notre retour. Merci pour votre compréhension! Un résumé de votre demande est affiché ci-dessous." }, "INVITE": { "GREAT_FOLK": "Les gens formidables de", diff --git a/packages/api/src/templates/locales/hi.json b/packages/api/src/templates/locales/hi.json index 611dd3feec..8f286bc891 100644 --- a/packages/api/src/templates/locales/hi.json +++ b/packages/api/src/templates/locales/hi.json @@ -18,7 +18,8 @@ "REQUEST_A_FEATURE": "एक सुविधा का अनुरोध करें", "OTHER": "कुछ और", "CONTACT_METHOD_HEADER": "पसंदीदा संपर्क विधि", - "SUBJECT": "आपका लाइटफार्म सहायता के लिए अनुरोध" + "SUBJECT": "आपका लाइटफार्म सहायता के लिए अनुरोध", + "OOO_RESPONSE": "संपर्क करने के लिए धन्यवाद। कृपया ध्यान दें कि हमारी टीम {{oooEndDate}} तक कार्यालय से बाहर है। हम लौटने के बाद आपके संदेश का जल्द से जल्द उत्तर देंगे। आपके धैर्य और समझ के लिए धन्यवाद! आपके अनुरोध का सारांश नीचे दिखाया गया है।" }, "INVITE": { "GREAT_FOLK": "लाइटफार्म के उपयोगकर्ता", diff --git a/packages/api/src/templates/locales/ml.json b/packages/api/src/templates/locales/ml.json index 197e4dfb0c..3d8306d01d 100644 --- a/packages/api/src/templates/locales/ml.json +++ b/packages/api/src/templates/locales/ml.json @@ -18,37 +18,38 @@ "REQUEST_A_FEATURE": "ഒരു സവിശേഷത അഭ്യർത്ഥിക്കുക", "OTHER": "മറ്റെന്തെങ്കിലും", "CONTACT_METHOD_HEADER": "തിരഞ്ഞെടുത്ത സമ്പർക്ക രീതി", - "SUBJECT": "ലൈറ്റ്ഫോം പിന്തുണയ്ക്കായുള്ള നിങ്ങളുടെ അഭ്യർത്ഥന" + "SUBJECT": "ലൈറ്റ്ഫാം പിന്തുണയ്ക്കായുള്ള നിങ്ങളുടെ അഭ്യർത്ഥന", + "OOO_RESPONSE": "ഞങ്ങളെ ബന്ധപ്പെട്ടതിന് നന്ദി. {{oooEndDate}} വരെ ഞങ്ങളുടെ ടീം ഓഫീസിന് പുറത്തായിരിക്കും എന്നത് ശ്രദ്ധിക്കുക. ഞങ്ങൾ തിരിച്ചെത്തിയതിന് ശേഷം എത്രയും വേഗം നിങ്ങളുടെ സന്ദേശത്തോട് പ്രതികരിക്കും. മനസ്സിലാക്കിയതിന് നന്ദി! നിങ്ങളുടെ അഭ്യർത്ഥനയുടെ ഒരു സംഗ്രഹം ചുവടെ കാണിച്ചിരിക്കുന്നു." }, "INVITE": { "GREAT_FOLK": "മഹാന്മാർ", "INVITED_YOU": "ലൈറ്റ്‌ഫാം ടീം നിങ്ങളെ അവരുടെ ടീമിൽ ചേരാൻ ക്ഷണിക്കുന്നു! കർഷകരെ അവരുടെ ഫാമുകൾ കൈകാര്യം ചെയ്യാൻ സഹായിക്കുന്ന ഒരു ഓപ്പൺ സോഴ്‌സ് സോഫ്‌റ്റ്‌വെയർ ഉപകരണമാണ് ലൈറ്റ്‌ഫാം. ലൈറ്റ്‌ഫോമിനെക്കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾക്ക്, സന്ദർശിക്കുക", "YOU_CAN_ACCEPT": "ചുവടെയുള്ള ബട്ടൺ ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഈ ക്ഷണം (ഏത് ഉപകരണത്തിലും) സ്വീകരിക്കാം", - "SUBJECT0": "ചേരാൻ നിങ്ങളെ ക്ഷണിച്ചിട്ടുണ്ട്", - "SUBJECT1": "ലൈറ്റ്‌ഫോമിൽ!" + "SUBJECT0": "ചേരാൻ നിങ്ങളെ ക്ഷണിച്ചിരിക്കുന്നു", + "SUBJECT1": "ലൈറ്റ്‌ഫാമിൽ!" }, "PASSWORD_RESET_REQUEST": { - "DID_YOU_FORGET": "നിങ്ങളുടെ ലൈറ്റ്‌ഫോം പാസ്‌വേഡ് മറന്നോ? ഒരു പ്രശ്നവുമില്ല! താഴെയുള്ള 'റീസെറ്റ്' ബട്ടൺ ക്ലിക്ക് ചെയ്യുക, നിങ്ങളുടെ ആക്സസ് ഉടൻ പുനഃസ്ഥാപിക്കപ്പെടും.", + "DID_YOU_FORGET": "നിങ്ങളുടെ ലൈറ്റ്ഫാം പാസ്‌വേഡ് മറന്നോ? ഒരു പ്രശ്നവുമില്ല! താഴെയുള്ള 'റീസെറ്റ്' ബട്ടൺ ക്ലിക്ക് ചെയ്യുക, നിങ്ങളുടെ ആക്സസ് ഉടൻ പുനഃസ്ഥാപിക്കപ്പെടും.", "RESET": "പാസ്വേഡ് പുനഃസജ്ജമാക്കൽ", "IGNORE": "നിങ്ങൾക്ക് ഈ ഇമെയിൽ അയയ്ക്കാൻ ഞങ്ങളോട് ആവശ്യപ്പെട്ടിട്ടില്ലെങ്കിൽ, നിങ്ങൾക്കത് അവഗണിക്കാം. നിങ്ങളുടെ അക്കൗണ്ടിൽ മാറ്റങ്ങളൊന്നും വരുത്തിയിട്ടില്ല.", "SUBJECT": "പാസ്‌വേഡ് പുനഃസജ്ജീകരണ അഭ്യർത്ഥന" }, "PASSWORD_RESET_CONFIRMATION": { "UPDATED": "ഞങ്ങൾ നിങ്ങളുടെ ലൈറ്റ്‌ഫോം പാസ്‌വേഡ് അപ്‌ഡേറ്റ് ചെയ്‌തു. നിങ്ങളുടെ അക്കൗണ്ട് \nപ്രവേശനം ചെയ്യാൻ താഴെയുള്ള 'ലോഗിൻ' ക്ലിക്ക് ചെയ്യുക.", - "SUBJECT": "നിങ്ങളുടെ ലൈറ്റ്‌ഫോം പാസ്‌വേഡ് മാറ്റിയിരിക്കുന്നു" + "SUBJECT": "നിങ്ങളുടെ ലൈറ്റ്ഫാം പാസ്‌വേഡ് മാറ്റിയിരിക്കുന്നു" }, "RESTORE_ACCESS": { "ADMIN": "ഇത് അഡ്മിനിസ്ട്രേറ്റർമാരിൽ ഒരാളാണെന്ന് തോന്നുന്നു", - "RESTORED": "ലൈറ്റ്‌ഫോം-ലെ അവരുടെ ഫാമിലേക്കുള്ള നിങ്ങളുടെ ആക്‌സസ്സ് പുതുക്കി. തിരികെ സ്വാഗതം!", + "RESTORED": "ലൈറ്റ്ഫാം-ലെ അവരുടെ ഫാമിലേക്കുള്ള നിങ്ങളുടെ ആക്‌സസ്സ് പുതുക്കി. തിരികെ സ്വാഗതം!", "CLICK_BELOW": "താഴെ ക്ലിക്ക് ചെയ്ത് നിങ്ങൾക്ക് വീണ്ടും ലോഗിൻ ചെയ്യാം", "SUBJECT0": "ഇതിലേക്കുള്ള നിങ്ങളുടെ ആക്സസ്", "SUBJECT1": "പുനഃസ്ഥാപിച്ചു!" }, "REVOKE_ACCESS": { "ADMIN": "ഇത് അഡ്മിനിസ്ട്രേറ്റർമാരിൽ ഒരാളാണെന്ന് തോന്നുന്നു", - "REVOKE": "ലൈറ്റ്‌ഫോം-ലെ അവരുടെ ഫാമിലേക്കുള്ള നിങ്ങളുടെ പ്രവേശനം റദ്ദാക്കി. ഇത് ആശ്ചര്യപ്പെടുത്തുന്നുണ്ടെങ്കിൽ, പ്രശ്നം പരിഹരിക്കാൻ അവിടെയുള്ള നിങ്ങളുടെ കോൺടാക്റ്റിനെ ബന്ധപ്പെടണം.", + "REVOKE": "ലൈറ്റ്ഫാം-ലെ അവരുടെ ഫാമിലേക്കുള്ള നിങ്ങളുടെ പ്രവേശനം റദ്ദാക്കി. ഇത് ആശ്ചര്യപ്പെടുത്തുന്നുണ്ടെങ്കിൽ, പ്രശ്നം പരിഹരിക്കാൻ അവിടെയുള്ള നിങ്ങളുടെ കോൺടാക്റ്റിനെ ബന്ധപ്പെടണം.", "SUBJECT0": "നിങ്ങൾക്ക് ആക്സസ് നഷ്ടപ്പെട്ടു", - "SUBJECT1": "ലൈറ്റ്‌ഫോമിൽ!" + "SUBJECT1": "ലൈറ്റ്ഫാമിൽ!" }, "ACCEPT_INVITE_CONFIRMATION": { "CONGRATS": "അഭിനന്ദനങ്ങൾ, നിങ്ങൾ ഏറ്റവും പുതിയ ആളായി", @@ -59,7 +60,7 @@ "CREATE_ACCOUNT_CONFIRMATION": { "WELCOME": "ലൈറ്റ്‌ഫാം ടീം നിങ്ങളെ അവരുടെ ടീമിൽ ചേരാൻ ക്ഷണിക്കുന്നു! കർഷകരെ അവരുടെ ഫാമുകൾ കൈകാര്യം ചെയ്യാൻ സഹായിക്കുന്ന ഒരു ഓപ്പൺ സോഴ്‌സ് സോഫ്‌റ്റ്‌വെയർ ഉപകരണമാണ് ലൈറ്റ്‌ഫാം. ലൈറ്റ്‌ഫോമിനെക്കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾക്ക്, സന്ദർശിക്കുക", "CLICK_BELOW": "ചുവടെയുള്ള ബട്ടൺ ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഈ ക്ഷണം (ഏത് ഉപകരണത്തിലും) സ്വീകരിക്കാം", - "SUBJECT": "ലൈറ്റ്‌ഫോമിലേക്ക് സ്വാഗതം!" + "SUBJECT": "ലൈറ്റ്ഫാമിലേക്ക് സ്വാഗതം!" }, "WITHHOLD_CONSENT": { "RECENT": "അടുത്തിടെ, ചേരുമ്പോൾ", @@ -83,7 +84,7 @@ "REQUESTED": "ലൈറ്റ്ഫാമിൽ നിങ്ങൾ ആവശ്യപ്പെട്ടത്.", "GREETING": "നല്ലൊരു ദിനം ആശംസിക്കുന്നു!", "SUBJECT0": "നിങ്ങളുടെ ഫാം ഭൂപടം ഇതാ", - "SUBJECT1": "ലൈറ്റ്‌ഫോമിൽ" + "SUBJECT1": "ലൈറ്റ്ഫാമിൽ" }, "EXPORT": { "SEASON": "നിങ്ങൾക്ക് അതിശയകരമായ ഒരു സീസൺ ഉണ്ടായിരുന്നുവെന്ന് ഞങ്ങൾ പ്രതീക്ഷിക്കുന്നു", diff --git a/packages/api/src/templates/locales/pa.json b/packages/api/src/templates/locales/pa.json index 16fea1a3b2..7a9200a5a9 100644 --- a/packages/api/src/templates/locales/pa.json +++ b/packages/api/src/templates/locales/pa.json @@ -18,7 +18,8 @@ "REQUEST_A_FEATURE": "ਫੀਚਰ ਦੀ ਬੇਨਤੀ ਕਰੋ", "OTHER": "ਬਾਕੀ", "CONTACT_METHOD_HEADER": "ਪਸੰਦੀਦਾ ਸੰਪਰਕ ਵਿਧੀ", - "SUBJECT": "ਲਾਈਟਫਾਰਮ ਸਹਾਇਤਾ ਲਈ ਤੁਹਾਡੀ ਬੇਨਤੀ" + "SUBJECT": "ਲਾਈਟਫਾਰਮ ਸਹਾਇਤਾ ਲਈ ਤੁਹਾਡੀ ਬੇਨਤੀ", + "OOO_RESPONSE": "ਸਾਡੇ ਨਾਲ ਸੰਪਰਕ ਕਰਨ ਲਈ ਧੰਨਵਾਦ। ਕਿਰਪਾ ਕਰਕੇ ਨੋਟ ਕਰੋ ਕਿ ਸਾਡੀ ਟੀਮ {{oooEndDate}} ਤੱਕ ਦਫ਼ਤਰ ਤੋਂ ਬਾਹਰ ਹੈ। ਅਸੀਂ ਵਾਪਸ ਆਉਣ ਦੇ ਬਾਅਦ ਜਲਦ ਹੀ ਸਾਡੇ ਸੁਨੇਹੇ ਦਾ ਜਵਾਬ ਦੇਵਾਂਗੇ। ਤੁਹਾਡੀ ਸਮਝ ਲਈ ਧੰਨਵਾਦ! ਸਾਡੇ ਨਿਵੇਦਨ ਦਾ ਸੰਖੇਪ ਹੇਠਾਂ ਦਿੱਤਾ ਗਿਆ ਹੈ।" }, "INVITE": { "GREAT_FOLK": "ਲਾਈਟਫਾਰਮ ਦੀ ਟੀਮ", diff --git a/packages/api/src/templates/locales/pt.json b/packages/api/src/templates/locales/pt.json index 676175ce82..d13896339c 100644 --- a/packages/api/src/templates/locales/pt.json +++ b/packages/api/src/templates/locales/pt.json @@ -18,7 +18,8 @@ "REQUEST_A_FEATURE": "Solicite um recurso", "OTHER": "Outro", "CONTACT_METHOD_HEADER": "Método de contato preferido", - "SUBJECT": "Seu pedido de ajuda para LiteFarm às" + "SUBJECT": "Seu pedido de ajuda para LiteFarm às", + "OOO_RESPONSE": "Obrigado por entrar em contato. Por favor, tenha em mente que nossa equipe está fora do escritório até {{oooEndDate}}. Responderemos à sua mensagem o mais rápido possível após o retorno. Obrigado pela sua compreensão! Segue abaixo um resumo do seu pedido." }, "INVITE": { "GREAT_FOLK": "O grande pessoal da", diff --git a/packages/api/src/util/animal.js b/packages/api/src/util/animal.js new file mode 100644 index 0000000000..cf35cac430 --- /dev/null +++ b/packages/api/src/util/animal.js @@ -0,0 +1,227 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import knex from './knex.js'; +import baseController from '../controllers/baseController.js'; +import CustomAnimalBreedModel from '../models/customAnimalBreedModel.js'; +import CustomAnimalTypeModel from '../models/customAnimalTypeModel.js'; +import AnimalGroupModel from '../models/animalGroupModel.js'; +import { checkAndTrimString } from './util.js'; +import AnimalModel from '../models/animalModel.js'; +import AnimalBatchModel from '../models/animalBatchModel.js'; +import TaskModel from '../models/taskModel.js'; +import { checkIsArray, customError } from './customErrors.js'; + +export const ANIMAL_TASKS = ['animal_movement_task']; +export const ANIMAL_CREATE_LIMIT = 1000; + +/** + * Assigns internal identifiers to records. + * @param {Array} records - The array of animals or animal batches to which internal identifiers will be assigned. + * Each record is expected to contain an 'id' property. + * @param {string} kind - The kind of records being processed ('animal' or 'batch'). + */ +export const assignInternalIdentifiers = async (records, kind) => { + await Promise.all( + records.map(async (record) => { + const [internalIdentifier] = await knex('animal_union_batch_id_view') + .pluck('internal_identifier') + .where('id', record.id) + .andWhere({ batch: kind === 'batch' }); + + record.internal_identifier = internalIdentifier; + }), + ); +}; + +/** + * Asynchronously checks if the given animal or batch has a type or breed already stored in the database. + * If not, it adds the type and/or breed to the database, updates the corresponding IDs, and removes + * the type_name or breed_name properties from the animal or batch object. + * + * @param {Object} req - The request object, containing the body with type and breed maps. + * @param {Object} animalOrBatch - The animal or batch object that contains type_name or breed_name properties. + * @param {number} farm_id - The ID of the farm to associate with the type or breed. + * @param {Object} trx - A transaction object for performing the database operations within a transaction. + * + * @returns {Promise} - A promise that resolves when the type and breed IDs have been added/updated and the object has been modified. + * + * @throws {Error} - If any database operation fails. + */ +export const checkAndAddCustomTypeAndBreed = async ( + req, + typeIdsMap, + typeBreedIdsMap, + animalOrBatch, + farm_id, + trx, +) => { + // Avoid attempts to add an already created type or breed to the DB + // where multiple animals have the same type_name or breed_name + + if (animalOrBatch.type_name) { + let typeId = typeIdsMap[animalOrBatch.type_name]; + + if (!typeId) { + const newType = await baseController.postWithResponse( + CustomAnimalTypeModel, + { type: animalOrBatch.type_name, farm_id }, + req, + { trx }, + ); + typeId = newType.id; + typeIdsMap[animalOrBatch.type_name] = typeId; + } + animalOrBatch.custom_type_id = typeId; + delete animalOrBatch.type_name; + } + + if (animalOrBatch.breed_name) { + const typeColumn = animalOrBatch.default_type_id ? 'default_type_id' : 'custom_type_id'; + const typeId = animalOrBatch.type_name + ? typeIdsMap[animalOrBatch.type_name] + : animalOrBatch.default_type_id || animalOrBatch.custom_type_id; + const typeBreedKey = `${typeColumn}_${typeId}_${animalOrBatch.breed_name}`; + let breedId = typeBreedIdsMap[typeBreedKey]; + + if (!breedId) { + const newBreed = await baseController.postWithResponse( + CustomAnimalBreedModel, + { farm_id, [typeColumn]: typeId, breed: animalOrBatch.breed_name }, + req, + { trx }, + ); + breedId = newBreed.id; + typeBreedIdsMap[typeBreedKey] = breedId; + } + animalOrBatch.custom_breed_id = breedId; + delete animalOrBatch.breed_name; + } +}; + +/** + * Asynchronously checks if the specified group exists in the database for the given farm. + * If the group doesn't exist, it creates a new group and associates it with the animal or batch. + * The function then adds the group ID to the `group_ids` property of the animal or batch object and removes the `group_name` property. + * + * @param {Object} req - The request object. + * @param {Object} animalOrBatch - The animal or batch object that contains a group_name property. + * @param {number} farm_id - The ID of the farm to associate with the group. + * @param {Object} trx - A transaction object for performing the database operations within a transaction. + * + * @returns {Promise} - A promise that resolves when the group has been added or found and the object has been modified. + * + * @throws {Error} - If any database operation fails. + */ +export const upsertGroup = async (req, animalOrBatch, farm_id, trx) => { + const groupName = checkAndTrimString(animalOrBatch.group_name); + delete animalOrBatch.group_name; + + if (groupName) { + let group = await baseController.existsInTable(trx, AnimalGroupModel, { + name: groupName, + farm_id, + deleted: false, + }); + + if (!group) { + group = await baseController.postWithResponse( + AnimalGroupModel, + { name: groupName, farm_id }, + req, + { trx }, + ); + } + // Frontend only allows addition of one group at a time + // TODO: handle multiple group additions + animalOrBatch.group_ids = [{ animal_group_id: group.id }]; + } +}; + +const getInvalidAnimalOrBatchIds = async (idsSet, model, farmId) => { + if (!idsSet.size) { + return []; + } + + const invalidIdsSet = new Set(idsSet); // create a copy + const records = await model + .query() + .select('id') + .where({ farm_id: farmId, removal_date: null }) + .whereIn('id', [...idsSet]) + .whereNotDeleted(); + + records?.forEach(({ id }) => invalidIdsSet.delete(id)); + + return [...invalidIdsSet]; +}; + +export const checkAnimalAndBatchIds = async (animalIds, batchIds, farmId, isRequired) => { + if (animalIds) { + checkIsArray(animalIds, 'animalIds'); + } + if (batchIds) { + checkIsArray(batchIds, 'batchIds'); + } + + const animalIdsSet = new Set(animalIds); + const batchIdsSet = new Set(batchIds); + + if (isRequired && !animalIdsSet.size && !batchIdsSet.size) { + throw customError('At least one of the animal IDs or animal batch IDs is required'); + } + + const invalidAnimalIds = await getInvalidAnimalOrBatchIds(animalIdsSet, AnimalModel, farmId); + const invalidBatchIds = await getInvalidAnimalOrBatchIds(batchIdsSet, AnimalBatchModel, farmId); + + if (invalidAnimalIds.length || invalidBatchIds.length) { + throw customError( + 'Some animal IDs or animal batch IDs do not exist, are removed, or are not associated with the given farm.', + 400, + { invalidAnimalIds, invalidBatchIds }, + ); + } +}; + +export const handleIncompleteTasksForAnimalsAndBatches = async ( + req, + trx, + animalOrBatch, + ids, + date, +) => { + const unrelate = + animalOrBatch === 'animal' + ? AnimalModel.unrelateIncompleteTasksForAnimals + : AnimalBatchModel.unrelateIncompleteTasksForBatches; + const { unrelatedTaskIds } = await unrelate(trx, ids); + + if (!unrelatedTaskIds.length) { + return; + } + + const tasks = await TaskModel.getTaskIdsWithAnimalAndBatchIds(trx, unrelatedTaskIds); + const taskIdsToAbandon = tasks.flatMap(({ task_id, animals, animal_batches }) => { + // Abandon the task if it has no associated animals or batches + return animals.length + animal_batches.length === 0 ? task_id : []; + }); + + if (taskIdsToAbandon.length) { + await TaskModel.query(trx).context(req.auth).whereIn('task_id', taskIdsToAbandon).patch({ + abandon_date: date, + abandonment_reason: 'NO_ANIMALS', + }); + } +}; diff --git a/packages/api/src/util/customErrors.js b/packages/api/src/util/customErrors.js new file mode 100644 index 0000000000..451b2d577c --- /dev/null +++ b/packages/api/src/util/customErrors.js @@ -0,0 +1,50 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import { notExactlyOneValue } from './middleware.js'; + +// Constructs a reusable error object +export const customError = (message, code = 400, body = undefined) => { + const error = new Error(message); + error.code = code; + error.body = body; + error.type = 'LiteFarmCustom'; + return error; +}; + +export const checkIsArray = (someValue, errorText = '') => { + if (!Array.isArray(someValue)) { + throw customError(`${errorText} should be an array`); + } +}; + +export const checkIdIsNumber = (id) => { + if (!id || isNaN(Number(id))) { + throw customError('Must send valid ids'); + } +}; + +export const checkExactlyOneIsProvided = (values, errorText) => { + if (notExactlyOneValue(values)) { + throw customError(`Exactly one of ${errorText} must be sent`); + } +}; + +// This checks if the record belongs to the farm -- hasFarmAccess does not handle collections (bulk endpoints) +export const checkRecordBelongsToFarm = async (record, farm_id, errorText) => { + if (record && record.farm_id !== farm_id) { + throw customError(`Forbidden ${errorText} does not belong to this farm`, 403); + } +}; diff --git a/packages/api/src/util/imageUpload.js b/packages/api/src/util/imageUpload.js new file mode 100644 index 0000000000..0a07f066ad --- /dev/null +++ b/packages/api/src/util/imageUpload.js @@ -0,0 +1,62 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import { + getPublicS3BucketName, + s3, + imaginaryPost, + getPublicS3Url, +} from '../util/digitalOceanSpaces.js'; +import { v4 as uuidv4 } from 'uuid'; +import { PutObjectCommand } from '@aws-sdk/client-s3'; + +export const uploadPublicImage = (folderName) => { + return async (req, res, next) => { + try { + const TYPE = 'webp'; + const fileName = `${folderName}/${uuidv4()}.${TYPE}`; + + const THUMBNAIL_FORMAT = 'webp'; + const LENGTH = '208'; + + const compressedImage = await imaginaryPost( + req.file, + { + width: LENGTH, + height: LENGTH, + type: THUMBNAIL_FORMAT, + aspectratio: '1:1', + }, + { endpoint: 'smartcrop' }, + ); + + await s3.send( + new PutObjectCommand({ + Body: compressedImage.data, + Bucket: getPublicS3BucketName(), + Key: fileName, + ACL: 'public-read', + }), + ); + + return res.status(201).json({ + url: `${getPublicS3Url()}/${fileName}`, + }); + } catch (error) { + console.log(error); + return res.status(400).send('Fail to upload image'); + } + }; +}; diff --git a/packages/api/src/util/middleware.js b/packages/api/src/util/middleware.js new file mode 100644 index 0000000000..e42ccce37b --- /dev/null +++ b/packages/api/src/util/middleware.js @@ -0,0 +1,36 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +// Utils +// Checks an array has exactly one truthy value +export const notExactlyOneValue = (values) => { + const nonNullValues = values.filter(Boolean); + return !(nonNullValues.length === 1); +}; + +// Checks an array of object keys against object -- at least one of the properties is defined +export const someExists = (keys, object) => { + return keys.some((key) => key in object); +}; + +// Checks an array for at least one truthy value +export const someTruthy = (values) => values.some((value) => !!value); + +// Sets falsy values to null for editing values that may have values for exclusive constraints +export const setFalsyValuesToNull = (array, obj) => { + for (const val of array) { + obj[val] ??= null; + } +}; diff --git a/packages/api/src/util/task.js b/packages/api/src/util/task.js new file mode 100644 index 0000000000..b2aa337477 --- /dev/null +++ b/packages/api/src/util/task.js @@ -0,0 +1,16 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +export const CUSTOM_TASK = 'custom_task'; diff --git a/packages/api/src/util/util.js b/packages/api/src/util/util.js index aac384222a..f304eac915 100644 --- a/packages/api/src/util/util.js +++ b/packages/api/src/util/util.js @@ -54,3 +54,27 @@ export const checkAndTrimString = (input) => { } return input.trim(); }; + +/** + * Format translation key + * @param {String} key + * @returns {String} - Formatted key + */ +export const formatTranslationKey = (key) => { + return key.toUpperCase().trim().replaceAll(' ', '_'); +}; + +export const upperCaseTrim = (a) => { + return a.toUpperCase().trim(); +}; + +/** + * Check for duplicate or matching strings - (same as frontend util) + * TODO: consider localeCompare() or not caring about case sensitivity + * @param {String} a + * @param {String} b + * @returns {Boolean} + */ +export const compareUpperCaseTrim = (a, b) => { + return upperCaseTrim(a) === upperCaseTrim(b); +}; diff --git a/packages/api/tests/animal.test.js b/packages/api/tests/animal.test.js new file mode 100644 index 0000000000..c544cf6266 --- /dev/null +++ b/packages/api/tests/animal.test.js @@ -0,0 +1,1905 @@ +/* + * Copyright (c) 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import chai from 'chai'; +import { faker } from '@faker-js/faker'; + +import chaiHttp from 'chai-http'; +chai.use(chaiHttp); + +import server from '../src/server.js'; +import knex from '../src/util/knex.js'; +import { tableCleanup } from './testEnvironment.js'; + +import { makeFarmsWithAnimalsAndBatches } from './utils/animalUtils.js'; +import AnimalModel from '../src/models/animalModel.js'; + +jest.mock('jsdom'); +jest.mock('../src/middleware/acl/checkJwt.js', () => + jest.fn((req, _res, next) => { + req.auth = {}; + req.auth.user_id = req.get('user_id'); + next(); + }), +); +import mocks from './mock.factories.js'; +import CustomAnimalTypeModel from '../src/models/customAnimalTypeModel.js'; +import CustomAnimalBreedModel from '../src/models/customAnimalBreedModel.js'; +import AnimalUseRelationshipModel from '../src/models/animalUseRelationshipModel.js'; +import { ANIMAL_CREATE_LIMIT } from '../src/util/animal.js'; +import { + animalGetRequest, + animalPostRequest, + animalRemoveRequest, + animalPatchRequest, + animalDeleteRequest, +} from './utils/animalUtils.js'; + +describe('Animal Tests', () => { + let farm; + let newOwner; + let defaultTypeId; + let animalRemovalReasonId; + let animalUse1; + let animalOrigin1; + let animalIdentifier1; + + const mockDate = new Date('2024/3/12').toISOString(); + + beforeAll(async () => { + const [defaultAnimalType] = await mocks.default_animal_typeFactory(); + defaultTypeId = defaultAnimalType.id; + + // Alternatively the enum table could be kept (not cleaned up) + const [animalRemovalReason] = await mocks.animal_removal_reasonFactory(); + animalRemovalReasonId = animalRemovalReason.id; + + [animalUse1] = await mocks.animal_useFactory('OTHER'); + [animalOrigin1] = await mocks.animal_originFactory('BROUGHT_IN'); + [animalIdentifier1] = await mocks.animal_identifier_typeFactory(undefined, 'OTHER'); + }); + + async function getRequest({ user_id = newOwner.user_id, farm_id = farm.farm_id }) { + return await animalGetRequest({ user_id, farm_id }); + } + + async function postRequest({ user_id = newOwner.user_id, farm_id = farm.farm_id }, data) { + return await animalPostRequest({ user_id, farm_id }, data); + } + + async function removeRequest({ user_id = newOwner.user_id, farm_id = farm.farm_id }, data) { + return await animalRemoveRequest({ user_id, farm_id }, data); + } + + async function patchRequest({ user_id = newOwner.user_id, farm_id = farm.farm_id }, data) { + return await animalPatchRequest({ user_id, farm_id }, data); + } + + async function deleteRequest({ user_id = newOwner.user_id, farm_id = farm.farm_id, query = '' }) { + return await animalDeleteRequest({ user_id, farm_id, query }); + } + + function fakeUserFarm(role = 1) { + return { ...mocks.fakeUserFarm(), role_id: role }; + } + + async function returnUserFarms(role, farm = undefined) { + const [mainFarm] = await mocks.farmFactory(); + const [user] = await mocks.usersFactory(); + + await mocks.userFarmFactory( + { + promisedUser: [user], + promisedFarm: [mainFarm], + }, + fakeUserFarm(role), + ); + return { mainFarm, user }; + } + + async function makeAnimal(mainFarm, properties) { + const [animal] = await mocks.animalFactory({ + promisedFarm: [mainFarm], + properties, + }); + return animal; + } + + beforeEach(async () => { + [farm] = await mocks.farmFactory(); + [newOwner] = await mocks.usersFactory(); + }); + + afterAll(async (done) => { + await tableCleanup(knex); + await knex.destroy(); + done(); + }); + + // GET TESTS + describe('Get animals tests', () => { + test('All users should get animals for their farm', async () => { + const roles = [1, 2, 3, 5]; + + for (const role of roles) { + const { mainFarm, user } = await returnUserFarms(role); + const [secondFarm] = await mocks.farmFactory(); + const [customAnimalType] = await mocks.custom_animal_typeFactory(); + + // Create two animals, one with a default type and one with a custom type + const firstAnimal = await makeAnimal(mainFarm, { + default_type_id: defaultTypeId, + }); + const secondAnimal = await makeAnimal(mainFarm, { + default_type_id: null, + custom_type_id: customAnimalType.id, + }); + // Create a third animal belonging to a different farm + await makeAnimal(secondFarm); + + const res = await getRequest({ + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }); + + expect(res.status).toBe(200); + // Should return first two animals + expect(res.body.length).toBe(2); + res.body.forEach((animal) => { + expect(animal.farm_id).toBe(mainFarm.farm_id); + }); + expect({ + ...firstAnimal, + internal_identifier: res.body[0].internal_identifier, + animal_use_relationships: [], + }).toMatchObject(res.body[0]); + expect({ + ...secondAnimal, + internal_identifier: res.body[1].internal_identifier, + animal_use_relationships: [], + }).toMatchObject(res.body[1]); + } + }); + + test('Unauthorized user should get 403 if they try to get animals', async () => { + const { mainFarm } = await returnUserFarms(1); + await makeAnimal(mainFarm); + const [unAuthorizedUser] = await mocks.usersFactory(); + + const res = await getRequest({ + user_id: unAuthorizedUser.user_id, + farm_id: mainFarm.farm_id, + }); + + expect(res.status).toBe(403); + expect(res.error.text).toBe('User does not have the following permission(s): get:animals'); + }); + }); + + describe('Add animal tests', () => { + test('Admin users should be able to create animals', async () => { + const roles = [1, 2, 5]; + + for (const role of roles) { + const { mainFarm, user } = await returnUserFarms(role); + const [animalType] = await mocks.custom_animal_typeFactory({ + promisedFarm: [mainFarm], + }); + const [animalBreed] = await mocks.custom_animal_breedFactory({ + promisedFarm: [mainFarm], + }); + + const firstAnimal = mocks.fakeAnimal({ default_type_id: defaultTypeId }); + const secondAnimal = mocks.fakeAnimal({ custom_type_id: animalType.id }); + const thirdAnimal = mocks.fakeAnimal({ + custom_type_id: animalBreed.custom_type_id, + custom_breed_id: animalBreed.id, + }); + + const res = await postRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + [firstAnimal, secondAnimal, thirdAnimal], + ); + + expect(res.status).toBe(201); + expect(res.body[0]).toMatchObject({ ...firstAnimal, internal_identifier: 1 }); + expect(res.body[1]).toMatchObject({ ...secondAnimal, internal_identifier: 2 }); + expect(res.body[2]).toMatchObject({ ...thirdAnimal, internal_identifier: 3 }); + + res.body.forEach((animal) => expect(animal.farm_id).toBe(mainFarm.farm_id)); + } + }); + + test('Non-admin users should not be able to create animals', async () => { + const roles = [3]; + + for (const role of roles) { + const { mainFarm, user } = await returnUserFarms(role); + const animal = mocks.fakeAnimal(); + + const res = await postRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + [animal], + ); + + expect(res.status).toBe(403); + expect(res.error.text).toBe('User does not have the following permission(s): add:animals'); + } + }); + + test('Should not be able to send out an individual animal instead of an array', async () => { + const { mainFarm, user } = await returnUserFarms(1); + const animal = mocks.fakeAnimal(); + + const res = await postRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + animal, + ); + + expect(res.status).toBe(400); + expect(res.error.text).toBe('Request body should be an array'); + }); + + test('Unique internal_identifier should be added within the same farm_id between animals and animalBatches', async () => { + const [user] = await mocks.usersFactory(); + const { existingAnimalsAndBatchesCountsPerFarm } = await makeFarmsWithAnimalsAndBatches(user); + + for (const existingAnimalsAndBatches of existingAnimalsAndBatchesCountsPerFarm) { + const { farm, animalCount, batchCount } = existingAnimalsAndBatches; + + // creat an animal for the farm + const animal = mocks.fakeAnimal({ + farm_id: farm.farm_id, + default_type_id: defaultTypeId, + }); + const res = await postRequest({ user_id: user.user_id, farm_id: farm.farm_id }, [animal]); + + expect(res.body[0].internal_identifier).toBe(animalCount + batchCount + 1); + } + }); + + test('Should not be able to create an animal without a type', async () => { + const { mainFarm, user } = await returnUserFarms(1); + const animal = mocks.fakeAnimal({ + default_type_id: null, + custom_type_id: null, + }); + + const res = await postRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + [animal], + ); + + expect(res.status).toBe(400); + }); + + test('Should not be able to create an animal with a type belonging to a different farm', async () => { + const { mainFarm, user } = await returnUserFarms(1); + const [secondFarm] = await mocks.farmFactory(); + const [animalType] = await mocks.custom_animal_typeFactory({ + promisedFarm: [secondFarm], + }); + + const animal = mocks.fakeAnimal({ + default_type_id: null, + custom_type_id: animalType.id, + }); + + const res = await postRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + [animal], + ); + + expect(res.status).toBe(403); + }); + + test('Should not be able to create an animal with a breed belonging to a different farm', async () => { + const { mainFarm, user } = await returnUserFarms(1); + const [secondFarm] = await mocks.farmFactory(); + const [animalBreed] = await mocks.custom_animal_breedFactory({ + promisedFarm: [secondFarm], + }); + + const animal = mocks.fakeAnimal({ + default_type_id: null, + custom_type_id: animalBreed.custom_type_id, + default_breed_id: null, + custom_breed_id: animalBreed.id, + }); + + const res = await postRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + [animal], + ); + + expect(res.status).toBe(403); + }); + + test('Should not be able to create an animal where type and breed do not match', async () => { + const { mainFarm, user } = await returnUserFarms(1); + const [animalBreed] = await mocks.default_animal_breedFactory(); + + const animal = mocks.fakeAnimal({ + default_breed_id: animalBreed.id, + }); + + const res = await postRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + [animal], + ); + + expect(res.status).toBe(400); + }); + + test('Should not be able to add >1000 animals', async () => { + const roles = [1, 2, 5]; + + for (const role of roles) { + const { mainFarm, user } = await returnUserFarms(role); + + const [animalBreed] = await mocks.custom_animal_breedFactory({ + promisedFarm: [mainFarm], + }); + + const animals = []; + for (let i = 0; i < ANIMAL_CREATE_LIMIT + 1; i++) { + animals.push( + mocks.fakeAnimal({ + custom_type_id: animalBreed.custom_type_id, + custom_breed_id: animalBreed.id, + }), + ); + } + + const res = await postRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + animals, + ); + + expect(res.status).toBe(400); + } + }); + + describe('Create new types and/or breeds while creating animals', () => { + let farm; + let owner; + + beforeEach(async () => { + const { mainFarm, user } = await returnUserFarms(1); + farm = mainFarm; + owner = user; + }); + + const postAnimalsRequest = async (animals) => { + const res = await postRequest({ user_id: owner.user_id, farm_id: farm.farm_id }, animals); + return res; + }; + + const getCustomAnimalType = async (typeName) => { + const createdType = await CustomAnimalTypeModel.query() + .where('farm_id', farm.farm_id) + .andWhere('type', typeName); + return createdType[0]; + }; + + const getCustomAnimalBreed = async (breedName, typeColumn, typeId) => { + const createdBreed = await CustomAnimalBreedModel.query() + .where('farm_id', farm.farm_id) + .andWhere(typeColumn, typeId) + .andWhere('breed', breedName); + return createdBreed[0]; + }; + + test('Should be able to create an animal with a new type', async () => { + const typeName = faker.lorem.word(); + const animal = mocks.fakeAnimal({ type_name: typeName }); + const res = await postAnimalsRequest([animal]); + const newType = await getCustomAnimalType(typeName); + expect(res.status).toBe(201); + expect(res.body[0].custom_type_id).toBe(newType.id); + }); + + test('Should be able to create an animal with type_id and a new breed', async () => { + const breedName = faker.lorem.word(); + let animal = mocks.fakeAnimal({ default_type_id: defaultTypeId, breed_name: breedName }); + let res = await postAnimalsRequest([animal]); + let newBreed = await getCustomAnimalBreed(breedName, 'default_type_id', defaultTypeId); + expect(res.status).toBe(201); + expect(res.body[0].custom_breed_id).toBe(newBreed.id); + + const [customAnimalType] = await mocks.custom_animal_typeFactory({ promisedFarm: [farm] }); + animal = mocks.fakeAnimal({ + custom_type_id: customAnimalType.id, + breed_name: breedName, + }); + res = await postAnimalsRequest([animal]); + newBreed = await getCustomAnimalBreed(breedName, 'custom_type_id', customAnimalType.id); + expect(res.status).toBe(201); + expect(res.body[0].custom_breed_id).toBe(newBreed.id); + }); + + test('Should be able to create an animal with a new type and a new breed', async () => { + const typeName = faker.lorem.word(); + const breedName = faker.lorem.word(); + const animal = mocks.fakeAnimal({ + type_name: typeName, + breed_name: breedName, + }); + const res = await postAnimalsRequest([animal]); + const newType = await getCustomAnimalType(typeName); + const newBreed = await getCustomAnimalBreed(breedName, 'custom_type_id', newType.id); + expect(res.status).toBe(201); + expect(res.body[0].custom_type_id).toBe(newType.id); + expect(res.body[0].custom_breed_id).toBe(newBreed.id); + }); + + test('Should not be able to create an animal when type_id and type_name are passed', async () => { + const typeName = faker.lorem.word(); + let animal = mocks.fakeAnimal({ default_type_id: defaultTypeId, type_name: typeName }); + let res = await postAnimalsRequest([animal]); + expect(res.status).toBe(400); + + const [customAnimalType] = await mocks.custom_animal_typeFactory({ promisedFarm: [farm] }); + animal = mocks.fakeAnimal({ custom_type_id: customAnimalType.id, type_name: typeName }); + res = await postAnimalsRequest([animal]); + expect(res.status).toBe(400); + }); + + test('Should not be able to create an animal when breed_id and breed_name are passed', async () => { + const breedName = faker.lorem.word(); + const [defaultAnimalBreed] = await mocks.default_animal_breedFactory(); + let animal = mocks.fakeAnimal({ + default_type_id: defaultAnimalBreed.default_type_id, + default_breed_id: defaultAnimalBreed.id, + breed_name: breedName, + }); + let res = await postAnimalsRequest([animal]); + expect(res.status).toBe(400); + + const [customAnimalBreed] = await mocks.custom_animal_breedFactory({ + promisedFarm: [farm], + properties: { default_type_id: defaultTypeId, custom_type_id: null }, + }); + animal = mocks.fakeAnimal({ + default_type_id: defaultTypeId, + custom_breed_id: customAnimalBreed.id, + breed_name: breedName, + }); + res = await postAnimalsRequest([animal]); + expect(res.status).toBe(400); + }); + + test('Should not be able to create an animal with a new type and an existing breed', async () => { + const typeName = faker.lorem.word(); + const [animalBreed] = await mocks.default_animal_breedFactory(); + let animal = mocks.fakeAnimal({ + type_name: typeName, + default_breed_id: animalBreed.id, + }); + let res = await postAnimalsRequest([animal]); + expect(res.status).toBe(400); + + const [customAnimalBreed] = await mocks.custom_animal_breedFactory({ + promisedFarm: [farm], + }); + animal = mocks.fakeAnimal({ + type_name: typeName, + custom_breed_id: customAnimalBreed.id, + }); + res = await postAnimalsRequest([animal]); + expect(res.status).toBe(400); + }); + + test('Should be able to create animals with a new type', async () => { + const typeName = faker.lorem.word(); + const animals = [...Array(3)].map(() => mocks.fakeAnimal({ type_name: typeName })); + const res = await postAnimalsRequest(animals); + const newType = await getCustomAnimalType(typeName); + expect(res.status).toBe(201); + res.body.forEach(({ custom_type_id }) => { + expect(custom_type_id).toBe(newType.id); + }); + }); + + test('Should be able to create animals with a new type and breed', async () => { + const typeName = faker.lorem.word(); + const breedName = faker.lorem.word(); + const animals = [...Array(3)].map(() => + mocks.fakeAnimal({ type_name: typeName, breed_name: breedName }), + ); + const res = await postAnimalsRequest(animals); + const newType = await getCustomAnimalType(typeName); + const newBreed = await getCustomAnimalBreed(breedName, 'custom_type_id', newType.id); + expect(res.status).toBe(201); + res.body.forEach(({ custom_type_id, custom_breed_id }) => { + expect(custom_type_id).toBe(newType.id); + expect(custom_breed_id).toBe(newBreed.id); + }); + }); + + test('Should be able to create animals with various types and breeds at once', async () => { + const [ + customTypeName1, + customTypeName2, + typeName1, + typeName2, + breedName1, + breedName2, + breedName3, + breedName4, + breedName5, + ] = [1, 2, 3, 4, 5, 6, 7, 8, 9].map((num) => { + return `${faker.lorem.word() + num}`; + }); + const [customAnimalType1] = await mocks.custom_animal_typeFactory({ + promisedFarm: [farm], + properties: { type: customTypeName1 }, + }); + const [customAnimalType2] = await mocks.custom_animal_typeFactory({ + promisedFarm: [farm], + properties: { type: customTypeName2 }, + }); + const animal1 = mocks.fakeAnimal({ type_name: typeName1 }); + const animal2 = mocks.fakeAnimal({ type_name: typeName2 }); + const animal3 = mocks.fakeAnimal({ + type_name: typeName1, + breed_name: breedName1, + }); + const animal4 = mocks.fakeAnimal({ + type_name: typeName1, + breed_name: breedName2, + }); + const animal5 = mocks.fakeAnimal({ + default_type_id: defaultTypeId, + breed_name: breedName3, + }); + const animal6 = mocks.fakeAnimal({ + custom_type_id: customAnimalType1.id, + breed_name: breedName4, + }); + const animal7 = mocks.fakeAnimal({ + custom_type_id: customAnimalType2.id, + breed_name: breedName5, + }); + const res = await postAnimalsRequest([ + animal1, + animal2, + animal3, + animal4, + animal5, + animal6, + animal7, + ]); + const [newType1, newType2] = await Promise.all( + [typeName1, typeName2].map(async (name) => await getCustomAnimalType(name)), + ); + const [newBreed1, newBreed2] = await Promise.all( + [breedName1, breedName2].map( + async (name) => await getCustomAnimalBreed(name, 'custom_type_id', newType1.id), + ), + ); + const newBreed3 = await getCustomAnimalBreed(breedName3, 'default_type_id', defaultTypeId); + const newBreed4 = await getCustomAnimalBreed( + breedName4, + 'custom_type_id', + customAnimalType1.id, + ); + const newBreed5 = await getCustomAnimalBreed( + breedName5, + 'custom_type_id', + customAnimalType2.id, + ); + + expect(res.status).toBe(201); + expect(res.body.length).toBe(7); + expect(res.body[0].custom_type_id).toBe(newType1.id); + expect(res.body[1].custom_type_id).toBe(newType2.id); + expect(res.body[2].custom_type_id).toBe(newType1.id); + expect(res.body[2].custom_breed_id).toBe(newBreed1.id); + expect(res.body[3].custom_type_id).toBe(newType1.id); + expect(res.body[3].custom_breed_id).toBe(newBreed2.id); + expect(res.body[4].default_type_id).toBe(defaultTypeId); + expect(res.body[4].custom_breed_id).toBe(newBreed3.id); + expect(res.body[5].custom_type_id).toBe(customAnimalType1.id); + expect(res.body[5].custom_breed_id).toBe(newBreed4.id); + expect(res.body[6].custom_type_id).toBe(customAnimalType2.id); + expect(res.body[6].custom_breed_id).toBe(newBreed5.id); + }); + }); + }); + + // EDIT tests + describe('Edit animal tests', () => { + let animalSex; + let animalIdentifierColor; + let animalIdentifierType; + let animalOrigin; + let animalRemovalReason; + let animalUse2; + let animalUse3; + + beforeEach(async () => { + // Populate enums + [animalSex] = await mocks.animal_sexFactory(); + [animalIdentifierColor] = await mocks.animal_identifier_colorFactory(); + [animalIdentifierType] = await mocks.animal_identifier_typeFactory(); + [animalOrigin] = await mocks.animal_originFactory(); + [animalRemovalReason] = await mocks.animal_removal_reasonFactory(); + [animalUse2] = await mocks.animal_useFactory(); + [animalUse3] = await mocks.animal_useFactory(); + }); + + async function addAnimals(mainFarm, user) { + const [customAnimalType] = await mocks.custom_animal_typeFactory({ + promisedFarm: [mainFarm], + }); + + // Create two animals, one with a default type and one with a custom type + const firstAnimal = mocks.fakeAnimal({ + name: 'edit test 1', + default_type_id: defaultTypeId, + animal_use_relationships: [{ use_id: animalUse1.id }], + sire: 'Unchanged', + }); + const secondAnimal = mocks.fakeAnimal({ + name: 'edit test 2', + custom_type_id: customAnimalType.id, + animal_use_relationships: [{ use_id: animalUse1.id }], + sire: 'Unchanged', + }); + + const res = await postRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + [firstAnimal, secondAnimal], + ); + + const returnedFirstAnimal = res.body?.find((animal) => animal.name === 'edit test 1'); + const returnedSecondAnimal = res.body?.find((animal) => animal.name === 'edit test 2'); + + return { res, returnedFirstAnimal, returnedSecondAnimal }; + } + + async function editAnimals(mainFarm, user, returnedFirstAnimal, returnedSecondAnimal) { + const [customAnimalType] = await mocks.custom_animal_typeFactory({ + promisedFarm: [mainFarm], + }); + + // Make edits to animals - does not test all top level animal columns, but all relationships + const updatedFirstAnimal = mocks.fakeAnimal({ + // Extra properties are silently removed + extra_non_existant_property: 'hello', + id: returnedFirstAnimal.id, + default_type_id: defaultTypeId, + name: 'Update Name 1', + sire: returnedFirstAnimal.sire, + sex_id: animalSex.id, + identifier: '2', + identifier_color_id: animalIdentifierColor.id, + origin_id: animalOrigin.id, + // Extra properties are silently removed + animal_removal_reason_id: animalRemovalReason.id, + identifier_type_id: animalIdentifierType.id, + organic_status: 'Organic', + animal_use_relationships: [{ use_id: animalUse2.id }, { use_id: animalUse3.id }], + }); + const updatedSecondAnimal = mocks.fakeAnimal({ + id: returnedSecondAnimal.id, + custom_type_id: customAnimalType.id, + name: 'Update Name 1', + sire: returnedSecondAnimal.sire, + sex_id: animalSex.id, + identifier: '2', + identifier_color_id: animalIdentifierColor.id, + origin_id: animalOrigin.id, + // Extra properties are silently removed + animal_removal_reason_id: animalRemovalReason.id, + identifier_type_id: animalIdentifierType.id, + organic_status: 'Organic', + animal_use_relationships: [{ use_id: animalUse2.id }, { use_id: animalUse3.id }], + }); + + const patchRes = await patchRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + [updatedFirstAnimal, updatedSecondAnimal], + ); + + const [expectedFirstAnimal, expectedSecondAnimal] = [ + updatedFirstAnimal, + updatedSecondAnimal, + ].map((animal) => { + const { extra_non_existant_property, ...rest } = animal; + return { + ...rest, + animal_removal_reason_id: null, + animal_use_relationships: rest.animal_use_relationships.map((rel) => { + return { + animal_id: rest.id, + use_id: rel.use_id, + other_use: null, + }; + }), + }; + }); + + return { res: patchRes, expectedFirstAnimal, expectedSecondAnimal }; + } + + test('Admin users should be able to edit animals', async () => { + const roles = [1, 2, 5]; + + for (const role of roles) { + const { mainFarm, user } = await returnUserFarms(role); + + // Add animals to db + const { res: addRes, returnedFirstAnimal, returnedSecondAnimal } = await addAnimals( + mainFarm, + user, + ); + expect(addRes.status).toBe(201); + + // Edit animals in db + const { res: editRes, expectedFirstAnimal, expectedSecondAnimal } = await editAnimals( + mainFarm, + user, + returnedFirstAnimal, + returnedSecondAnimal, + ); + expect(editRes.status).toBe(204); + + // Get updated animals + const { body: animalRecords } = await getRequest({ + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }); + const filteredAnimalRecords = animalRecords.filter((record) => + [returnedFirstAnimal.id, returnedSecondAnimal.id].includes(record.id), + ); + + // Test data matches expected changes + filteredAnimalRecords.forEach((record) => { + // Remove properties that were not updated + delete record.internal_identifier; + // Remove base properties + delete record.created_at; + delete record.created_by_user_id; + delete record.deleted; + delete record.updated_at; + delete record.updated_by; + const updatedRecord = [expectedFirstAnimal, expectedSecondAnimal].find( + (animal) => animal.id === record.id, + ); + expect(record).toMatchObject(updatedRecord); + }); + } + }); + + test('Non-admin users should not be able to edit animals', async () => { + const adminRole = 1; + const { mainFarm, user: admin } = await returnUserFarms(adminRole); + const workerRole = 3; + const [user] = await mocks.usersFactory(); + await mocks.userFarmFactory( + { + promisedUser: [user], + promisedFarm: [mainFarm], + }, + fakeUserFarm(workerRole), + ); + + // Use admin to add animals to db + const { res: addRes, returnedFirstAnimal, returnedSecondAnimal } = await addAnimals( + mainFarm, + admin, + ); + expect(addRes.status).toBe(201); + + // Edit animals in db with non-admin + const { res: editRes } = await editAnimals( + mainFarm, + user, + returnedFirstAnimal, + returnedSecondAnimal, + ); + + // Test failure + expect(editRes.status).toBe(403); + expect(editRes.error.text).toBe( + 'User does not have the following permission(s): edit:animals', + ); + }); + + test('Should not be able to send out an individual animal instead of an array', async () => { + const { mainFarm, user } = await returnUserFarms(1); + + // Add animals to db + const { res: addRes, returnedFirstAnimal } = await addAnimals(mainFarm, user); + expect(addRes.status).toBe(201); + expect(returnedFirstAnimal).toBeTruthy(); + + // Change 1 thing + returnedFirstAnimal.sire = 'Changed'; + + const res = await patchRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + { + ...returnedFirstAnimal, + }, + ); + + // Test for failure + expect(res.status).toBe(400); + expect(res.error.text).toBe('Request body should be an array'); + }); + + test('Should not be able to edit an animal belonging to a different farm', async () => { + const { mainFarm, user } = await returnUserFarms(1); + const [secondFarm] = await mocks.farmFactory(); + + const animal = await makeAnimal(secondFarm, { + default_type_id: defaultTypeId, + }); + + const res = await patchRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + [ + { + id: animal.id, + sire: 'Neighbours sire', + }, + ], + ); + + expect(res).toMatchObject({ + status: 400, + body: { + error: 'Invalid ids', + invalidIds: [animal.id], + }, + }); + + // Check database + const animalRecord = await AnimalModel.query().findById(animal.id); + expect(animalRecord.sire).toBeNull(); + }); + }); + + // REMOVE tests + describe('Remove animal tests', () => { + test('Admin users should be able to remove animals', async () => { + const roles = [1, 2, 5]; + + for (const role of roles) { + const { mainFarm, user } = await returnUserFarms(role); + const [customAnimalType] = await mocks.custom_animal_typeFactory(); + + // Create two animals, one with a default type and one with a custom type + const firstAnimal = await makeAnimal(mainFarm, { + default_type_id: defaultTypeId, + }); + const secondAnimal = await makeAnimal(mainFarm, { + default_type_id: null, + custom_type_id: customAnimalType.id, + }); + + const res = await removeRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + + [ + { + id: firstAnimal.id, + animal_removal_reason_id: animalRemovalReasonId, + explanation: 'Gifted to neighbor', + removal_date: mockDate, + }, + { + id: secondAnimal.id, + animal_removal_reason_id: animalRemovalReasonId, + explanation: 'Gifted to neighbor', + removal_date: mockDate, + }, + ], + ); + + expect(res.status).toBe(204); + + // Check database to make sure property has been updated + const animalRecords = await AnimalModel.query().whereIn('id', [ + firstAnimal.id, + secondAnimal.id, + ]); + + animalRecords.forEach((record) => { + expect(record.animal_removal_reason_id).toBe(animalRemovalReasonId); + }); + } + }); + + test('Non-admin users should not be able to remove animals', async () => { + const roles = [3]; + + for (const role of roles) { + const { mainFarm, user } = await returnUserFarms(role); + + const animal = await makeAnimal(mainFarm, { + default_type_id: defaultTypeId, + }); + + const res = await removeRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + [ + { + id: animal.id, + animal_removal_reason_id: animalRemovalReasonId, + explanation: 'Gifted to neighbor', + removal_date: mockDate, + }, + ], + ); + + expect(res.status).toBe(403); + expect(res.error.text).toBe('User does not have the following permission(s): edit:animals'); + + // Check database + const animalRecord = await AnimalModel.query().findById(animal.id); + expect(animalRecord.animal_removal_reason_id).toBeNull(); + } + }); + + test('Should not be able to send out an individual animal instead of an array', async () => { + const { mainFarm, user } = await returnUserFarms(1); + + const animal = await makeAnimal(mainFarm, { + default_type_id: defaultTypeId, + }); + + const res = await removeRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + { + id: animal.id, + animal_removal_reason_id: animalRemovalReasonId, + explanation: 'Gifted to neighbor', + removal_date: mockDate, + }, + ); + + expect(res.status).toBe(400); + expect(res.error.text).toBe('Request body should be an array'); + }); + + test('Should not be able to remove an animal without providng a removal_date', async () => { + const { mainFarm, user } = await returnUserFarms(1); + + const animal = await makeAnimal(mainFarm, { + default_type_id: defaultTypeId, + }); + + const res = await removeRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + [ + { + id: animal.id, + animal_removal_reason_id: animalRemovalReasonId, + explanation: 'Gifted to neighbor', + }, + ], + ); + expect(res.status).toBe(400); + expect(res.error.text).toBe('Must send reason and date of removal'); + + // Check database + const animalRecord = await AnimalModel.query().findById(animal.id); + expect(animalRecord.animal_removal_reason_id).toBeNull(); + }); + + test('Should not be able to remove an animal belonging to a different farm', async () => { + const { mainFarm, user } = await returnUserFarms(1); + const [secondFarm] = await mocks.farmFactory(); + + const animal = await makeAnimal(secondFarm, { + default_type_id: defaultTypeId, + }); + + const res = await removeRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + [ + { + id: animal.id, + animal_removal_reason_id: animalRemovalReasonId, + explanation: 'Gifted to neighbor', + removal_date: mockDate, + }, + ], + ); + + expect(res).toMatchObject({ + status: 400, + body: { + error: 'Invalid ids', + invalidIds: [animal.id], + }, + }); + + // Check database + const animalRecord = await AnimalModel.query().findById(animal.id); + expect(animalRecord.animal_removal_reason_id).toBeNull(); + }); + }); + + // DELETE tests + describe('Delete animal tests', () => { + const deleteDateParam = `date=2024-11-22`; + + test('Admin users should be able to delete animals', async () => { + const roles = [1, 2, 5]; + + for (const role of roles) { + const { mainFarm, user } = await returnUserFarms(role); + const [customAnimalType] = await mocks.custom_animal_typeFactory(); + + // Create two animals, one with a default type and one with a custom type + const firstAnimal = await makeAnimal(mainFarm, { + default_type_id: defaultTypeId, + }); + const secondAnimal = await makeAnimal(mainFarm, { + default_type_id: null, + custom_type_id: customAnimalType.id, + }); + + const res = await deleteRequest({ + user_id: user.user_id, + farm_id: mainFarm.farm_id, + query: `ids=${firstAnimal.id},${secondAnimal.id}&${deleteDateParam}`, + }); + + expect(res.status).toBe(204); + } + }); + + test('Non-admin users should not be able to delete animals', async () => { + const roles = [3]; + + for (const role of roles) { + const { mainFarm, user } = await returnUserFarms(role); + + const animal = await makeAnimal(mainFarm, { + default_type_id: defaultTypeId, + }); + + const res = await deleteRequest({ + user_id: user.user_id, + farm_id: mainFarm.farm_id, + query: `ids=${animal.ids}&${deleteDateParam}`, + }); + + expect(res.status).toBe(403); + expect(res.error.text).toBe( + 'User does not have the following permission(s): delete:animals', + ); + } + }); + + test('Must send animal ids', async () => { + const { mainFarm, user } = await returnUserFarms(1); + + const res = await deleteRequest({ + user_id: user.user_id, + farm_id: mainFarm.farm_id, + query: `${deleteDateParam}`, + }); + + expect(res).toMatchObject({ + status: 400, + error: { + text: 'Must send ids', + }, + }); + }); + + test('Must send valid queries', async () => { + const { mainFarm, user } = await returnUserFarms(1); + const animal = await makeAnimal(mainFarm, { + default_type_id: defaultTypeId, + }); + + // Two query params that are not valid animal ids + const res1 = await deleteRequest({ + user_id: user.user_id, + farm_id: mainFarm.farm_id, + query: `ids=${animal.id},,&${deleteDateParam}`, + }); + + expect(res1).toMatchObject({ + status: 400, + error: { + text: 'Must send valid ids', + }, + }); + + // Three query params that are not valid animal ids + const res2 = await deleteRequest({ + user_id: user.user_id, + farm_id: mainFarm.farm_id, + query: `ids=},a,&${deleteDateParam}`, + }); + + expect(res2).toMatchObject({ + status: 400, + error: { + text: 'Must send valid ids', + }, + }); + + // Without date + const res3 = await deleteRequest({ + user_id: user.user_id, + farm_id: mainFarm.farm_id, + query: `ids=${animal.id}`, + }); + + expect(res3).toMatchObject({ + status: 400, + error: { + text: 'Must send date', + }, + }); + }); + + test('Should not be able to delete an animal belonging to a different farm', async () => { + const { mainFarm, user } = await returnUserFarms(1); + const [secondFarm] = await mocks.farmFactory(); + + const animal = await makeAnimal(secondFarm, { + default_type_id: defaultTypeId, + }); + + const res = await deleteRequest({ + user_id: user.user_id, + farm_id: mainFarm.farm_id, + query: `ids=${animal.id}&${deleteDateParam}`, + }); + + expect(res).toMatchObject({ + status: 400, + body: { + error: 'Invalid ids', + invalidIds: [`${animal.id}`], + }, + }); + }); + + test('Should not be able to delete an already-deleted animal', async () => { + const { mainFarm, user } = await returnUserFarms(1); + const [secondFarm] = await mocks.farmFactory(); + + const animal = await makeAnimal(secondFarm, { + default_type_id: defaultTypeId, + deleted: true, + }); + + const res = await deleteRequest({ + user_id: user.user_id, + farm_id: mainFarm.farm_id, + query: `ids=${animal.id}&${deleteDateParam}`, + }); + + expect(res).toMatchObject({ + status: 400, + body: { + error: 'Invalid ids', + invalidIds: [`${animal.id}`], + }, + }); + }); + }); + + // MIDDLEWARE tests + describe('Edit animal animal tests', () => { + let animalOrigin2; + let animalUse2; + let animalUse3; + let animalBreed; + let animalBreed2; + let animalIdentifier2; + + beforeEach(async () => { + // Populate enums + [animalOrigin2] = await mocks.animal_originFactory(); + [animalUse2] = await mocks.animal_useFactory(); + [animalUse3] = await mocks.animal_useFactory(); + [animalBreed] = await mocks.default_animal_breedFactory(); + [animalBreed2] = await mocks.default_animal_breedFactory(); + [animalIdentifier2] = await mocks.animal_identifier_typeFactory(); + }); + + // Top level structure is endpoint string with value as in caps, value is an array of tests + // Example: {'CREATE': [{test1}, {test2},...],'EDIT': [{test1}, {test2},...} + // Test structure to test 'CREATE' middleware is: + // { testName: 'name', getPostBody: function() {return [animal]}, postErr: {code: 400, message: 'errorMessage'}} + // Test structure to test 'EDIT' middleware is: + // { testName: 'name', getPostBody?: function() {return [animal]}, getPatchBody?: function() {return [editedAnimal]}, patchErr: {code: 400, message: 'errorMessage'}} } + // Test structure to test raw data expectations is: + // { testName: 'name', getPostBody?: function() {return [animal]}, getPatchBody?: function() {return [editedAnimal]}, getRawRecordMismatch: function() return { model: Model, where: {id}, getMatchingBody: function() return [records] } } } + const middlewareErrors = { + CREATE: [ + { + testName: 'Custom type cannot be used with default breed', + getPostBody: (customs) => [ + { + custom_type_id: customs.customAnimalType.id, + default_breed_id: animalBreed.id, + }, + ], + postErr: { + code: 400, + message: 'Default breed must use default type', + }, + }, + { + testName: 'Cannot create a duplicate custom type', + getPostBody: (customs) => [ + { + type_name: customs.customAnimalType.type, + }, + ], + postErr: { + code: 409, + message: 'Animal type already exists', + }, + }, + { + testName: 'Cannot create a duplicate custom breed', + getPostBody: (customs) => [ + { + default_type_id: customs.customAnimalBreed.default_type_id, + breed_name: customs.customAnimalBreed.breed, + }, + ], + postErr: { + code: 409, + message: 'Animal breed already exists', + }, + }, + ], + EDIT: [ + { + testName: 'Exactly one type provided', + getPatchBody: (animal) => [ + { + id: animal.id, + default_type_id: animal.default_type_id, + type_name: 'string', + }, + ], + patchErr: { + code: 400, + message: 'Exactly one of default_type_id, custom_type_id, or type_name must be sent', + }, + }, + { + testName: 'Custom type id is number', + getPatchBody: (animal) => [ + { + id: animal.id, + custom_type_id: 'string', + }, + ], + patchErr: { + code: 400, + message: 'Must send valid ids', + }, + }, + { + testName: 'Custom id exists', + getPatchBody: (animal) => [ + { + id: animal.id, + custom_type_id: 1000000, + }, + ], + patchErr: { + code: 400, + message: 'Custom type does not exist', + }, + }, + { + testName: 'Custom type does not belong to farm', + getPatchBody: (animal, existingAnimals, customs) => [ + { + id: animal.id, + custom_type_id: customs.otherFarm.otherCustomAnimalType.id, + }, + ], + patchErr: { + code: 403, + message: 'Forbidden custom type does not belong to this farm', + }, + }, + { + testName: 'Exactly one breed provided', + getPatchBody: (animal) => [ + { + id: animal.id, + default_type_id: animalBreed.default_type_id, + default_breed_id: animalBreed.id, + breed_name: 'string', + }, + ], + patchErr: { + code: 400, + message: 'Exactly one of default_breed_id, custom_breed_id, or breed_name must be sent', + }, + }, + { + testName: 'Default type matches default breed -- default type is changed', + getPatchBody: (animal, existingAnimals) => [ + { + id: existingAnimals[0].id, + default_type_id: animalBreed2.default_type_id, + }, + ], + getPostBody: () => [ + { + default_type_id: animalBreed.default_type_id, + default_breed_id: animalBreed.id, + }, + ], + patchErr: { + code: 400, + message: 'Breed does not match type', + }, + }, + { + testName: 'Default type matches default breed -- default breed is changed', + getPatchBody: (animal, existingAnimals) => [ + { + id: existingAnimals[0].id, + default_breed_id: animalBreed2.id, + }, + ], + getPostBody: () => [ + { + default_type_id: animalBreed.default_type_id, + default_breed_id: animalBreed.id, + }, + ], + patchErr: { + code: 400, + message: 'Breed does not match type', + }, + }, + { + testName: 'Default breed is a number', + getPatchBody: (animal) => [ + { + id: animal.id, + default_breed_id: 'string', + }, + ], + patchErr: { + code: 400, + message: 'Must send valid ids', + }, + }, + { + testName: 'Default breed provided exists (optional to provide)', + getPatchBody: (animal) => [ + { + id: animal.id, + default_breed_id: 1000000, + }, + ], + patchErr: { + code: 400, + message: 'Default breed does not exist', + }, + }, + { + testName: 'Default type matches default breed -- both are changed but mismatch', + getPatchBody: (animal, existingAnimals) => [ + { + id: existingAnimals[0].id, + default_type_id: animalBreed.default_type_id, + default_breed_id: animalBreed2.id, + }, + ], + getPostBody: () => [ + { + default_type_id: animalBreed.default_type_id, + default_breed_id: animalBreed.id, + }, + ], + patchErr: { + code: 400, + message: 'Breed does not match type', + }, + }, + + { + testName: 'Custom breed is a number', + getPatchBody: (animal) => [ + { + id: animal.id, + custom_breed_id: 'string', + }, + ], + patchErr: { + code: 400, + message: 'Must send valid ids', + }, + }, + { + testName: 'Custom breed provided exists (optional to provide)', + getPatchBody: (animal) => [ + { + id: animal.id, + custom_breed_id: 1000000, + }, + ], + patchErr: { + code: 400, + message: 'Custom breed does not exist', + }, + }, + { + testName: 'Custom breed provided exists (optional to provide)', + getPatchBody: (animal) => [ + { + id: animal.id, + custom_breed_id: 1000000, + }, + ], + patchErr: { + code: 400, + message: 'Custom breed does not exist', + }, + }, + { + testName: 'Custom breed does not belong to farm', + getPatchBody: (animal, existingAnimals, customs) => [ + { + id: animal.id, + custom_breed_id: customs.otherFarm.otherCustomAnimalBreed.id, + }, + ], + patchErr: { + code: 403, + message: 'Forbidden custom breed does not belong to this farm', + }, + }, + { + testName: 'Default type matches custom breed -- default type is changed', + getPatchBody: (animal, existingAnimals, customs) => [ + { + id: existingAnimals[0].id, + default_type_id: animalBreed.default_type_id, + }, + ], + getPostBody: (customs) => [ + { + default_type_id: customs.customAnimalBreed.default_type_id, + custom_breed_id: customs.customAnimalBreed.id, + }, + ], + patchErr: { + code: 400, + message: 'Breed does not match type', + }, + }, + { + testName: 'Default type matches custom breed -- custom type is changed', + getPatchBody: (animal, existingAnimals, customs) => [ + { + id: existingAnimals[0].id, + custom_type_id: customs.customAnimalBreed2.custom_type_id, + }, + ], + getPostBody: (customs) => [ + { + default_type_id: customs.customAnimalBreed.default_type_id, + custom_breed_id: customs.customAnimalBreed.id, + }, + ], + patchErr: { + code: 400, + message: 'Breed does not match type', + }, + }, + { + testName: 'Default type matches custom breed -- breed and type are changed', + getPatchBody: (animal, existingAnimals, customs) => [ + { + id: existingAnimals[0].id, + default_type_id: customs.customAnimalBreed.default_type_id, + custom_breed_id: customs.customAnimalBreed2.id, + }, + ], + getPostBody: (customs) => [ + { + default_type_id: customs.customAnimalBreed.default_type_id, + custom_breed_id: customs.customAnimalBreed.id, + }, + ], + patchErr: { + code: 400, + message: 'Breed does not match type', + }, + }, + { + testName: 'Use relationships is an array', + getPatchBody: (animal) => [ + { + id: animal.id, + animal_use_relationships: 'string', + }, + ], + patchErr: { + code: 400, + message: 'animal_use_relationships should be an array', + }, + }, + { + testName: 'Other use notes is for other use type', + getPatchBody: (animal) => [ + { + id: animal.id, + animal_use_relationships: [ + { + use_id: animalUse2.id, + other_use: 'Leather', + }, + ], + }, + ], + patchErr: { + code: 400, + message: 'other_use notes is for other use type', + }, + }, + { + testName: 'Check edit use -- patching use relationship with empty array hard deletes use', + getRawRecordMismatch: (existingAnimals) => { + return { + model: AnimalUseRelationshipModel, + where: { animal_id: existingAnimals[0].id }, + getMatchingBody: (existingAnimals, records) => { + return []; + }, + }; + }, + getPatchBody: (animal, existingAnimals) => [ + { + id: existingAnimals[0].id, + animal_use_relationships: [], + }, + ], + getPostBody: () => [ + { + default_type_id: animalBreed.default_type_id, + animal_use_relationships: [ + { + use_id: animalUse2.id, + }, + { + use_id: animalUse3.id, + }, + ], + }, + ], + }, + { + testName: + 'Check edit use -- patching use relationship requires all pre-existing uses to be present hard deletes missing', + getRawRecordMismatch: (existingAnimals) => { + return { + model: AnimalUseRelationshipModel, + where: { animal_id: existingAnimals[0].id }, + getMatchingBody: (existingAnimals, records) => { + return [ + { + ...records[0], + use_id: animalUse1.id, + other_use: 'Leather', + }, + ]; + }, + }; + }, + getPatchBody: (animal, existingAnimals) => [ + { + id: existingAnimals[0].id, + animal_use_relationships: [ + { + use_id: animalUse1.id, + other_use: 'Leather', + }, + ], + }, + ], + getPostBody: () => [ + { + default_type_id: animalBreed.default_type_id, + animal_use_relationships: [ + { + use_id: animalUse1.id, + }, + { + use_id: animalUse2.id, + }, + ], + }, + ], + }, + { + testName: 'Origin id must be brought in to have brought in date', + getPatchBody: (animal) => [ + { + id: animal.id, + origin_id: animalOrigin2.id, + brought_in_date: new Date(), + }, + ], + patchErr: { + code: 400, + message: 'Brought in date must be used with brought in origin', + }, + }, + { + testName: 'Other identifier notes must be used with "other" identifier', + getPatchBody: (animal) => [ + { + id: animal.id, + identifier_type_id: animalIdentifier2.id, + identifier_type_other: 'string', + }, + ], + patchErr: { + code: 400, + message: 'Other identifier notes must be used with "other" identifier', + }, + }, + { + testName: 'Cannot create a new type associated with an existing breed', + getPatchBody: (animal, existingAnimals, customs) => [ + { + id: animal.id, + custom_breed_id: customs.customAnimalBreed.id, + type_name: 'string', + }, + ], + patchErr: { + code: 400, + message: 'Cannot create a new type associated with an existing breed', + }, + }, + { + testName: 'Change to custom type and null pre-existing breed', + getRawRecordMismatch: (existingAnimals) => { + return { + model: AnimalModel, + where: { id: existingAnimals[0].id }, + getMatchingBody: (existingAnimals, records, customs) => { + return [ + { + ...records[0], + custom_type_id: customs.customAnimalType.id, + custom_breed_id: null, + }, + ]; + }, + }; + }, + getPatchBody: (animal, existingAnimals, customs) => [ + { + id: existingAnimals[0].id, + custom_type_id: customs.customAnimalType.id, + custom_breed_id: null, + }, + ], + getPostBody: (customs) => [ + { + default_type_id: customs.customAnimalBreed.default_type_id, + custom_breed_id: customs.customAnimalBreed.id, + }, + ], + }, + { + testName: + 'Successfully edit Custom type matches new breed name -- previous breed not exist', + getRawRecordMismatch: (existingAnimals, patchedAnimals) => { + return { + model: CustomAnimalBreedModel, + where: { id: patchedAnimals.custom_breed_id }, + getMatchingBody: (existingAnimals, records, customs) => { + return [ + { + ...records[0], + custom_type_id: customs.customAnimalType.id, + breed: 'New breed here', + }, + ]; + }, + }; + }, + getPatchBody: (animal, existingAnimals, customs) => [ + { + id: existingAnimals[0].id, + custom_type_id: customs.customAnimalType.id, + breed_name: 'New breed here', + }, + ], + getPostBody: () => [ + { + default_type_id: defaultTypeId, + }, + ], + }, + ], + }; + + // Takes middleWareErrors object and makes it into individual tests + for (const errorEndpoint in middlewareErrors) { + middlewareErrors[errorEndpoint].forEach(async (error) => { + await test(`${errorEndpoint} Middleware: ${error.testName}`, async () => { + // Create userFarms needed for tests + const { mainFarm, user } = await returnUserFarms(1); + const { mainFarm: otherFarm } = await returnUserFarms(1); + + // Make, then group, farm specific resources + const [customAnimalType] = await mocks.custom_animal_typeFactory({ + promisedFarm: [mainFarm], + }); + const [customAnimalBreed] = await mocks.custom_animal_breedFactory( + { + promisedFarm: [mainFarm], + }, + undefined, + false, + ); + const [customAnimalBreed2] = await mocks.custom_animal_breedFactory({ + promisedFarm: [mainFarm], + }); + const [otherCustomAnimalType] = await mocks.custom_animal_typeFactory({ + promisedFarm: [otherFarm], + }); + const [otherCustomAnimalBreed] = await mocks.custom_animal_breedFactory({ + promisedFarm: [otherFarm], + }); + const customs = { + customAnimalType, + customAnimalBreed, + customAnimalBreed2, + otherFarm: { otherCustomAnimalType, otherCustomAnimalBreed }, + }; + + // Post endpoint for testing CREATE or testing EDIT against existing record + const makeCheckGetAnimal = async (getPostBody) => { + const animals = getPostBody(customs).map((animal) => mocks.fakeAnimal(animal)); + const postRes = await postRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + [...animals], + ); + + // If checking error body on post + expect(postRes.status).toBe(error.postErr?.code || 201); + expect(postRes.error.text).toBe(error.postErr?.message || undefined); + return postRes.body; + }; + + let existingAnimals; + if (error.getPostBody) { + existingAnimals = await makeCheckGetAnimal(error.getPostBody); + } + + // Patch endpoint for testing EDIT or testing raw successful records against + const editCheckAnimal = async (getPatchBody) => { + // for skipping makeCheckGetAnimal + const animal = await makeAnimal(mainFarm, { + default_type_id: defaultTypeId, + }); + const animals = getPatchBody(animal, existingAnimals, customs); + const patchRes = await patchRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + [...animals], + ); + // If checking error body on patch + expect(patchRes.status).toBe(error.patchErr?.code || 204); + expect(patchRes.error.text).toBe(error.patchErr?.message || undefined); + const batchesIds = animals.map((animal) => animal.id); + return await AnimalModel.query().findById(batchesIds); + }; + + let patchedAnimals; + if (error.getPatchBody) { + patchedAnimals = await editCheckAnimal(error.getPatchBody); + } + + // For checking raw records made in CREATE or EDIT + const rawGetMatch = async (getRawRecordMismatch) => { + const rawRecordMatch = getRawRecordMismatch(existingAnimals, patchedAnimals); + // Include deleted + const records = await rawRecordMatch.model + .query() + .where(rawRecordMatch.where) + .context({ showHidden: true }); + const expectedBody = rawRecordMatch.getMatchingBody(existingAnimals, records, customs); + // No fallback if provided + expect(records).toEqual(expectedBody); + }; + + if (error.getRawRecordMismatch) { + await rawGetMatch(error.getRawRecordMismatch); + } + }); + }); + } + }); +}); diff --git a/packages/api/tests/animalAndAnimalBatchCommon.test.js b/packages/api/tests/animalAndAnimalBatchCommon.test.js new file mode 100644 index 0000000000..239df4a3cf --- /dev/null +++ b/packages/api/tests/animalAndAnimalBatchCommon.test.js @@ -0,0 +1,398 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import chai from 'chai'; + +import chaiHttp from 'chai-http'; +chai.use(chaiHttp); + +import server from '../src/server.js'; +import knex from '../src/util/knex.js'; +import { tableCleanup } from './testEnvironment.js'; + +jest.mock('jsdom'); +jest.mock('../src/middleware/acl/checkJwt.js', () => + jest.fn((req, _res, next) => { + req.auth = {}; + req.auth.user_id = req.get('user_id'); + next(); + }), +); +import mocks from './mock.factories.js'; +import { + fakeCompletionData, + abandonTaskRequest, + completeTaskRequest, + postTaskRequest, + toLocal8601Extended, + yesterdayInYYYYMMDD, +} from './utils/taskUtils.js'; +import { + animalDeleteRequest, + animalPatchRequest, + animalRemoveRequest, + batchDeleteRequest, + batchPatchRequest, + batchRemoveRequest, +} from './utils/animalUtils.js'; + +const mockDate = new Date('2024/12/05').toISOString(); +const mockDateInYYYYMMDD = '2024-12-05'; +const abandonTaskBody = { + abandonment_reason: 'SCHEDULING_ISSUE', + abandon_date: new Date(2024, 10, 30), +}; +const TASK_STATE = { + COMPLETE: 'complete', + ABANDONED: 'abandoned', +}; + +const getIds = (animalsOrBatches) => animalsOrBatches.map(({ id }) => id); + +const getIdAndRelationshipTableNames = (animalOrBatch) => { + return animalOrBatch === 'animal' + ? ['animal_id', 'task_animal_relationship'] + : ['animal_batch_id', 'task_animal_batch_relationship']; +}; + +describe('Animal and Animal Batch Tests', () => { + let user_id; + let farm_id; + let removalReasonId; + let broughtInOrigin; + + beforeAll(async () => { + [{ user_id, farm_id }] = await mocks.userFarmFactory({ roleId: 1 }); + [{ id: removalReasonId }] = await mocks.animal_removal_reasonFactory(); + [broughtInOrigin] = await mocks.animal_originFactory('BROUGHT_IN'); + }); + + afterAll(async (done) => { + await tableCleanup(knex); + await knex.destroy(); + done(); + }); + + describe('Animals and Animal Batches with Tasks Tests', () => { + let location_id, task_type_id; + + beforeAll(async () => { + [{ location_id }] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); + [{ task_type_id }] = await mocks.task_typeFactory({ promisedFarm: [{ farm_id }] }); + }); + + const createAnimalsOrBatches = async (animalOrBatch, count) => { + const factory = animalOrBatch === 'animal' ? 'animalFactory' : 'animal_batchFactory'; + return Promise.all( + Array(count) + .fill() + .map(() => mocks[factory]({ promisedFarm: [{ farm_id }] })), + ); + }; + + const createAnimalTask = async ({ + animalIds = [], + batchIds = [], + taskState, + taskData = {}, + }) => { + const postRes = await postTaskRequest({ user_id, farm_id }, 'animal_movement_task', { + ...mocks.fakeTask(), + assignee_user_id: user_id, + owner_user_id: user_id, + locations: [{ location_id }], + task_type_id, + related_animal_ids: animalIds, + related_batch_ids: batchIds, + animal_movement_task: {}, + ...taskData, + }); + const { task_id: taskId } = postRes.body; + + if (taskState === TASK_STATE.COMPLETE) { + await completeAnimalTask(taskId); + } + if (taskState === TASK_STATE.ABANDONED) { + await abandonAnimalTask(taskId); + } + + return { taskId }; + }; + + const completeAnimalTask = async (taskId) => { + return completeTaskRequest( + { user_id, farm_id }, + fakeCompletionData, + taskId, + 'animal_movement_task', + ); + }; + + const abandonAnimalTask = async (taskId) => { + return abandonTaskRequest({ user_id, farm_id }, abandonTaskBody, taskId); + }; + + const removeAnimalsOrBatches = async (animalOrBatch, ids) => { + const req = animalOrBatch === 'animal' ? animalRemoveRequest : batchRemoveRequest; + return req( + { user_id, farm_id }, + ids.map((id) => ({ + id, + animal_removal_reason_id: removalReasonId, + removal_date: mockDate, + })), + ); + }; + + const deleteAnimalsOrBatches = async (animalOrBatch, ids) => { + const req = animalOrBatch === 'animal' ? animalDeleteRequest : batchDeleteRequest; + return req({ user_id, farm_id, query: `ids=${ids.join(',')}&date=${mockDateInYYYYMMDD}` }); + }; + + const checkAnimalOrBatchAndTaskRelationships = async ( + animalOrBatch, + removedAnimalOrBatchIds, + expectedTaskData, + ) => { + const [idName, relationshipTable] = getIdAndRelationshipTableNames(animalOrBatch); + + for (let expectedData of expectedTaskData) { + const { taskId, remainingAnimalOrBatchIds, abandonDate, abandonmentReason } = expectedData; + // Check if relationships were removed + for (let animalOrBatchId of removedAnimalOrBatchIds) { + const relationships = await knex(relationshipTable) + .where(idName, animalOrBatchId) + .where('task_id', taskId); + + const shouldRemain = remainingAnimalOrBatchIds.includes(animalOrBatchId); + expect(relationships.length).toBe(shouldRemain ? 1 : 0); + } + + // Check the task + const task = await knex('task') + .select('task_id', 'abandon_date', 'abandonment_reason') + .where('task_id', taskId) + .first(); + + if (abandonDate && abandonmentReason) { + expect(new Date(task.abandon_date).toISOString()).toBe(abandonDate); + expect(task.abandonment_reason).toBe(abandonmentReason); + } else if (!remainingAnimalOrBatchIds.length) { + // Check if the task was abandoned + expect(new Date(task.abandon_date).toISOString()).toBe(new Date(mockDate).toISOString()); + expect(task.abandonment_reason).toBe('NO_ANIMALS'); + } else { + expect(task.abandon_date).toBe(null); + expect(task.abandonment_reason).toBe(null); + } + } + }; + + // REMOVE + describe.each(['animal', 'batch'])('Remove %s with tasks', (animalOrBatch) => { + test(`Should remove ${animalOrBatch} with incomplete task`, async () => { + const [[entity1], [entity2]] = await createAnimalsOrBatches(animalOrBatch, 2); + const ids = getIds([entity1, entity2]); + const { taskId } = await createAnimalTask({ [`${animalOrBatch}Ids`]: ids }); + const res = await removeAnimalsOrBatches(animalOrBatch, ids); + expect(res.status).toBe(204); + await checkAnimalOrBatchAndTaskRelationships(animalOrBatch, ids, [ + { taskId, remainingAnimalOrBatchIds: [] }, + ]); + }); + + test(`Should remove ${animalOrBatch} with abandoned task`, async () => { + const [[entity1], [entity2]] = await createAnimalsOrBatches(animalOrBatch, 2); + const ids = getIds([entity1, entity2]); + const { taskId } = await createAnimalTask({ + [`${animalOrBatch}Ids`]: ids, + taskState: TASK_STATE.ABANDONED, + }); + const res = await removeAnimalsOrBatches(animalOrBatch, ids); + + expect(res.status).toBe(204); + await checkAnimalOrBatchAndTaskRelationships(animalOrBatch, ids, [ + { + taskId, + remainingAnimalOrBatchIds: ids, // animals or batches should not be removed from abandoned tasks + abandonDate: new Date(abandonTaskBody.abandon_date).toISOString(), + abandonmentReason: abandonTaskBody.abandonment_reason, + }, + ]); + }); + + test(`Should remove ${animalOrBatch} with completed task`, async () => { + const [[entity1], [entity2]] = await createAnimalsOrBatches(animalOrBatch, 2); + const ids = getIds([entity1, entity2]); + const { taskId } = await createAnimalTask({ + [`${animalOrBatch}Ids`]: ids, + taskState: TASK_STATE.COMPLETE, + }); + const res = await removeAnimalsOrBatches(animalOrBatch, ids); + + expect(res.status).toBe(204); + await checkAnimalOrBatchAndTaskRelationships(animalOrBatch, ids, [ + { + taskId, + remainingAnimalOrBatchIds: ids, // animals or batches should not be removed from completed tasks + }, + ]); + }); + + test(`Should remove ${animalOrBatch} with multiple tasks`, async () => { + const [[entity1], [entity2]] = await createAnimalsOrBatches(animalOrBatch, 3); + const [[animal1], [animal2]] = await createAnimalsOrBatches('animal', 2); + const [[batch1], [batch2]] = await createAnimalsOrBatches('batch', 2); + + const idsToRemove = getIds([entity1, entity2]); + const testCases = []; + const relationshipsWithExistingEntities = []; + + const addRelationships = (entities, animalOrBatch, taskId) => { + entities.forEach(({ id }) => + relationshipsWithExistingEntities.push({ animalOrBatch, id, taskId }), + ); + }; + + const animalIds = getIds([ + animal1, + animal2, + ...(animalOrBatch === 'animal' ? [entity1, entity2] : []), + ]); + const batchIds = getIds([ + batch1, + batch2, + ...(animalOrBatch === 'animal' ? [] : [entity1, entity2]), + ]); + + // task1 (Incomplete task for all animals or all batches) + const task1EntityIds = animalOrBatch === 'animal' ? animalIds : batchIds; + const { taskId: task1Id } = await createAnimalTask({ + [`${animalOrBatch}Ids`]: task1EntityIds, + }); + const remainingAnimalOrBatchIds = task1EntityIds.filter((id) => !idsToRemove.includes(id)); + + testCases.push({ taskId: task1Id, remainingAnimalOrBatchIds }); + + remainingAnimalOrBatchIds.forEach((id) => + relationshipsWithExistingEntities.push({ animalOrBatch, id, taskId: task1Id }), + ); + + // task2 (Incomplete task for all animals and batches) + const { taskId: task2Id } = await createAnimalTask({ animalIds, batchIds }); + + testCases.push({ + taskId: task2Id, + remainingAnimalOrBatchIds: getIds( + animalOrBatch === 'animal' ? [animal1, animal2] : [batch1, batch2], + ), + }); + + addRelationships([animal1, animal2], 'animal', task2Id); + addRelationships([batch1, batch2], 'batch', task2Id); + + // task3 (Completed task for all animals and batches) + const { taskId: task3Id } = await createAnimalTask({ + animalIds, + batchIds, + taskState: TASK_STATE.COMPLETE, + }); + + testCases.push({ + taskId: task3Id, + remainingAnimalOrBatchIds: animalOrBatch === 'animal' ? animalIds : batchIds, + }); + + addRelationships([animal1, animal2], 'animal', task3Id); + addRelationships([batch1, batch2], 'batch', task3Id); + + // task4 (Abandoned task for all animals and batches) + const { taskId: task4Id } = await createAnimalTask({ + animalIds, + batchIds, + taskState: TASK_STATE.ABANDONED, + }); + + testCases.push({ + taskId: task4Id, + remainingAnimalOrBatchIds: animalOrBatch === 'animal' ? animalIds : batchIds, + abandonDate: new Date(abandonTaskBody.abandon_date).toISOString(), + abandonmentReason: abandonTaskBody.abandonment_reason, + }); + + addRelationships([animal1, animal2], 'animal', task4Id); + addRelationships([batch1, batch2], 'batch', task4Id); + + // task5 (Incomplete task for only entities that will be removed) + const { taskId: task5Id } = await createAnimalTask({ + [`${animalOrBatch}Ids`]: getIds([entity1, entity2]), + }); + + testCases.push({ taskId: task5Id, remainingAnimalOrBatchIds: [] }); + + const res = await removeAnimalsOrBatches(animalOrBatch, idsToRemove); + + expect(res.status).toBe(204); + await checkAnimalOrBatchAndTaskRelationships(animalOrBatch, idsToRemove, testCases); + + // Make sure unrelated relationships were not removed + for (let { animalOrBatch, id, taskId } of relationshipsWithExistingEntities) { + const [idName, table] = getIdAndRelationshipTableNames(animalOrBatch); + const relationships = await knex(table).where(idName, id).where('task_id', taskId); + expect(relationships.length).toBe(1); + } + }); + }); + + // DELETE + describe.each(['animal', 'batch'])('Delete %s with tasks', (animalOrBatch) => { + test(`Should delete ${animalOrBatch} with incomplete tasks`, async () => { + const [[entity1], [entity2]] = await createAnimalsOrBatches(animalOrBatch, 2); + const ids = getIds([entity1, entity2]); + const { taskId } = await createAnimalTask({ [`${animalOrBatch}Ids`]: ids }); + const res = await deleteAnimalsOrBatches(animalOrBatch, [entity1.id, entity2.id]); + + expect(res.status).toBe(204); + await checkAnimalOrBatchAndTaskRelationships(animalOrBatch, ids, [ + { taskId, remainingAnimalOrBatchIds: [] }, + ]); + }); + + test(`Should not delete ${animalOrBatch} with abandoned tasks`, async () => { + const [[entity1], [entity2]] = await createAnimalsOrBatches(animalOrBatch, 2); + await createAnimalTask({ + [`${animalOrBatch}Ids`]: [entity1.id, entity2.id], + taskState: TASK_STATE.ABANDONED, + }); + const res = await deleteAnimalsOrBatches(animalOrBatch, [entity1.id, entity2.id]); + + expect(res.status).toBe(400); + expect(res.error.text).toBe('Animals with completed or abandoned tasks cannot be deleted'); + }); + + test(`Should not delete ${animalOrBatch} with completed tasks`, async () => { + const [[entity1], [entity2]] = await createAnimalsOrBatches(animalOrBatch, 2); + await createAnimalTask({ + [`${animalOrBatch}Ids`]: [entity1.id, entity2.id], + taskState: TASK_STATE.COMPLETE, + }); + const res = await deleteAnimalsOrBatches(animalOrBatch, [entity1.id, entity2.id]); + + expect(res.status).toBe(400); + expect(res.error.text).toBe('Animals with completed or abandoned tasks cannot be deleted'); + }); + }); + }); +}); diff --git a/packages/api/tests/animalTask.test.js b/packages/api/tests/animalTask.test.js new file mode 100644 index 0000000000..f3566a1ce8 --- /dev/null +++ b/packages/api/tests/animalTask.test.js @@ -0,0 +1,1067 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import chai from 'chai'; +import chaiHttp from 'chai-http'; + +chai.use(chaiHttp); +import server from '../src/server.js'; +import knex from '../src/util/knex.js'; + +jest.mock('jsdom'); +jest.mock('../src/middleware/acl/checkJwt.js', () => + jest.fn((req, res, next) => { + req.auth = {}; + req.auth.user_id = req.get('user_id'); + next(); + }), +); +import mocks from './mock.factories.js'; +import { tableCleanup } from './testEnvironment.js'; +import { faker } from '@faker-js/faker'; + +import { + toLocal8601Extended, + postTaskRequest, + getTasksRequest, + completeTaskRequest, + patchTaskDateRequest, + userFarmTaskGenerator, + todayWithTimezone, + yesterdayInYYYYMMDD, + fakeCompletionData, + animalTaskGenerator, +} from './utils/taskUtils.js'; + +// data representing a completed task, formatted as expected in a GET response +const expectedCompletedTaskData = { + ...fakeCompletionData, + complete_date: `${fakeCompletionData.complete_date}T00:00:00.000`, +}; + +const simulateTaskCompletion = (task, type) => { + const complete = { + // Add a function here for task types requiring custom completion logic + }[type]; + + return complete?.(task) || { ...task, ...expectedCompletedTaskData }; +}; + +// generates a fake movement task for direct insertion into the DB +const createFakeMovementTask = (purposeRelationships) => { + const movementTask = { animal_movement_task: {} }; + if (purposeRelationships) { + movementTask.animal_movement_task = { purpose_relationships: purposeRelationships }; + } + return mocks.fakeAnimalMovementTask(movementTask); +}; + +const createMovementTaskForReqBody = (purposeIds, otherPurpose) => { + const animalMovementTask = {}; + + if (purposeIds) { + animalMovementTask.purpose_ids = purposeIds; + } + if (otherPurpose) { + animalMovementTask.other_purpose = otherPurpose; + } + + return { animal_movement_task: animalMovementTask }; +}; + +const checkMovementPurposeRelationships = (expectedRelationships, actualRelationships) => { + if (!expectedRelationships) { + return; + } + expect(actualRelationships.length).toBe(expectedRelationships.length); + + expectedRelationships.forEach( + ({ purpose_id: expectedPurposeId, other_purpose: expectedOtherPurpose }) => { + const actualRelationship = actualRelationships.filter( + (relation) => relation.purpose_id === expectedPurposeId, + ); + expect(actualRelationship.length).toBe(1); + + if (expectedOtherPurpose) { + expect(actualRelationship[0].other_purpose).toBe(expectedOtherPurpose); + } + }, + ); +}; + +const getAnimalLocations = async (animalOrBatch, ids) => { + return knex(animalOrBatch === 'animal' ? 'animal' : 'animal_batch') + .select('id', 'location_id') + .whereIn('id', ids); +}; + +const getAnimalOrBatchIds = (animalsOrBatches) => animalsOrBatches.map(({ id }) => id); + +describe('Animal task tests', () => { + let user_id, farm_id, location_id, task_type_id, planting_management_plan_id; + let animal1, animal2, animal3, animal4, batch1, batch2, batch3, batch4; + let farmBId, farmBAnimal1, farmBBatch1, location2Id, farmBLocationId; + let removedAnimal1, removedBatch1, deletedAnimal1, deletedBatch1; + let animalBornToday, animalBroughtInToday; + let purpose1, purpose2, otherPurpose; + + beforeAll(async () => { + // Check in controller expects Soil Amendment Task to exist + await knex('task_type').insert({ + farm_id: null, + task_name: 'Soil amendment', + task_translation_key: 'SOIL_AMENDMENT_TASK', + }); + + ({ + user_id, + farm_id, + location_id, + task_type_id, + planting_management_plan_id, + } = await userFarmTaskGenerator()); + + [{ location_id: location2Id }] = await mocks.locationFactory({ + promisedFarm: [{ farm_id }], + }); + [{ farm_id: farmBId }] = await mocks.userFarmFactory({}, { user_id }); + [{ location_id: farmBLocationId }] = await mocks.locationFactory({ + promisedFarm: [{ farm_id: farmBId }], + }); + + [[animal1], [animal2], [animal3], [animal4]] = await Promise.all( + new Array(4).fill().map(() => mocks.animalFactory({ promisedFarm: [{ farm_id }] })), + ); + [[batch1], [batch2], [batch3], [batch4]] = await Promise.all( + new Array(4).fill().map(() => mocks.animal_batchFactory({ promisedFarm: [{ farm_id }] })), + ); + + const [animalRemovalReason] = await mocks.animal_removal_reasonFactory(); + [removedAnimal1] = await mocks.animalFactory({ + promisedFarm: [{ farm_id }], + properties: { + removal_date: new Date(), + animal_removal_reason_id: animalRemovalReason.id, + }, + }); + [removedBatch1] = await mocks.animal_batchFactory({ + promisedFarm: [{ farm_id }], + properties: { + removal_date: new Date(), + animal_removal_reason_id: animalRemovalReason.id, + }, + }); + [deletedAnimal1] = await mocks.animalFactory({ + promisedFarm: [{ farm_id }], + properties: { deleted: true }, + }); + [deletedBatch1] = await mocks.animal_batchFactory({ + promisedFarm: [{ farm_id }], + properties: { deleted: true }, + }); + [farmBAnimal1] = await mocks.animalFactory({ promisedFarm: [{ farm_id: farmBId }] }); + [farmBBatch1] = await mocks.animal_batchFactory({ promisedFarm: [{ farm_id: farmBId }] }); + + [animalBornToday] = await mocks.animalFactory({ + promisedFarm: [{ farm_id }], + properties: { birth_date: todayWithTimezone }, + }); + [animalBroughtInToday] = await mocks.animalFactory({ + promisedFarm: [{ farm_id }], + properties: { brought_in_date: todayWithTimezone }, + }); + + [otherPurpose] = await mocks.animal_movement_purposeFactory('OTHER'); + [[purpose1], [purpose2]] = await Promise.all( + Array(2) + .fill() + .map(() => mocks.animal_movement_purposeFactory()), + ); + }); + + afterAll(async () => { + await tableCleanup(knex); + await knex.destroy(); + }); + + // generate and insert animal task data into the DB + const animalTaskFactory = async (data) => { + return animalTaskGenerator({ + due_date: faker.date.future().toISOString().split('T')[0], + task_type_id, + locations: [{ location_id }], + owner_user_id: user_id, + assignee_user_id: user_id, + override_hourly_wage: true, + wage_at_moment: 50, + animals: [{ id: animal1.id }, { id: animal2.id }, { id: animal3.id }], + animal_batches: [{ id: batch1.id }, { id: batch2.id }], + ...data, + }); + }; + + describe('GET tasks', () => { + test('should get all tasks for a farm with correct task-specific details', async () => { + const typesToTest = ['animal_movement_task', 'custom_task']; + const [ + [{ task_type_id: movementTaskId }], + [{ task_type_id: customTaskId }], + // Destructure other types as needed + ] = await Promise.all( + typesToTest.map((type) => + mocks.task_typeFactory( + {}, + { ...mocks.fakeTaskType(), farm_id: type === 'custom_task' ? farm_id : null }, + ), + ), + ); + + // Add more cases (data to add to the DB) here for new task types as needed + const taskDataBlueprint = [ + { + task_type_id: movementTaskId, + ...createFakeMovementTask([ + { purpose_id: purpose1.id }, + { purpose_id: otherPurpose.id, other_purpose: faker.lorem.sentence() }, + ]), + }, + { task_type_id: movementTaskId, ...createFakeMovementTask() }, + { task_type_id: customTaskId, notes: faker.lorem.sentence() }, + ]; + + const expectedTasks = await Promise.all( + taskDataBlueprint.map((data) => animalTaskFactory(data)), + ); + const res = await getTasksRequest({ farm_id, user_id }); + + expect(res.status).toBe(200); + expect(res.body.length).toBe(taskDataBlueprint.length); + + res.body.forEach((resTask) => { + const expectedTask = expectedTasks.find(({ task_id }) => resTask.task_id === task_id); + expect(resTask.animals.map(({ id }) => id).sort()).toEqual( + expectedTask.animals.map(({ id }) => id).sort(), + ); + expect(resTask.animal_batches.map(({ id }) => id).sort()).toEqual( + expectedTask.animal_batches.map(({ id }) => id).sort(), + ); + + switch (resTask.task_type_id) { + case movementTaskId: + expect(resTask.animal_movement_task.task_id).toBe(expectedTask.task_id); + checkMovementPurposeRelationships( + expectedTask.animal_movement_task.purpose_relationships, + resTask.animal_movement_task.purpose_relationships, + ); + break; + case customTaskId: + expect(resTask.notes).toBe(expectedTask.notes); + break; + // Add more cases here for other task types added to taskDataBlueprint + default: + throw new Error(`Unexpected task type: ${resTask.task_type_id}`); + } + }); + }); + }); + + describe('POST Task', () => { + const createAnimalTaskForReqBody = (extraData = {}) => { + return mocks.fakeTask({ + related_animal_ids: [animal1, animal2, animal3, animal4].map(({ id }) => id), + related_batch_ids: [batch1, batch2, batch3, batch4].map(({ id }) => id), + task_type_id, + owner_user_id: user_id, + locations: [{ location_id }], + ...extraData, + }); + }; + const fakeTaskData = { + animal_movement_task: () => mocks.fakeAnimalMovementTask(), + custom_task: () => {}, + }; + + const checkValidPostRequest = async (type, postData) => { + const res = await postTaskRequest({ user_id, farm_id }, type, postData); + expect(res.status).toBe(201); + const { task_id } = res.body; + const createdTask = await knex('task').where({ task_id }).first(); + expect(createdTask).toBeDefined(); + const location = await knex('location_tasks').where({ task_id }).first(); + expect(location.location_id).toBe(postData.locations[0].location_id); + if (type !== 'custom_task') { + const specificTask = await knex(type).where({ task_id }); + expect(specificTask.length).toBe(1); + } + const relatedAnimals = await knex('task_animal_relationship') + .select('animal_id') + .where({ task_id }); + expect(postData.related_animal_ids.sort()).toEqual( + relatedAnimals.map(({ animal_id }) => animal_id).sort(), + ); + const relatedBatches = await knex('task_animal_batch_relationship') + .select('animal_batch_id') + .where({ task_id }); + expect(postData.related_batch_ids.sort()).toEqual( + relatedBatches.map(({ animal_batch_id }) => animal_batch_id).sort(), + ); + return res; + }; + + describe.each(Object.keys(fakeTaskData))('animal tasks common validation tests', (type) => { + const checkPostRequestWithInvalidAnimals = async (animalOrBatch, data, invalidIds) => { + const invalidIdsKey = animalOrBatch === 'animal' ? 'invalidAnimalIds' : 'invalidBatchIds'; + + const res = await postTaskRequest({ user_id, farm_id }, type, data); + expect(res.status).toBe(400); + expect(res.body.message).toBe( + 'Some animal IDs or animal batch IDs do not exist, are removed, or are not associated with the given farm.', + ); + expect(res.body[invalidIdsKey]).toEqual(invalidIds); + }; + + test(`should create a(n) ${type} with animals`, async () => { + const data = createAnimalTaskForReqBody({ + [type]: fakeTaskData[type](), + related_batch_ids: [], + }); + await checkValidPostRequest(type, data); + }); + + test(`should create a(n) ${type} with batches`, async () => { + const data = createAnimalTaskForReqBody({ + [type]: fakeTaskData[type](), + related_animal_ids: [], + }); + await checkValidPostRequest(type, data); + }); + + test(`should create a(n) ${type} with both animals and batches`, async () => { + const data = createAnimalTaskForReqBody({ [type]: fakeTaskData[type]() }); + await checkValidPostRequest(type, data); + }); + + test(`should not create a(n) ${type} for a removed animal`, async () => { + const data = createAnimalTaskForReqBody({ + [type]: fakeTaskData[type](), + related_animal_ids: [removedAnimal1.id], + related_batch_ids: [], + }); + await checkPostRequestWithInvalidAnimals('animal', data, [removedAnimal1.id]); + }); + + test(`should not create a(n) ${type} for a deleted animal`, async () => { + const data = createAnimalTaskForReqBody({ + [type]: fakeTaskData[type](), + related_animal_ids: [deletedAnimal1.id], + related_batch_ids: [], + }); + await checkPostRequestWithInvalidAnimals('animal', data, [deletedAnimal1.id]); + }); + + test(`should not create a(n) ${type} for a removed batch`, async () => { + const data = createAnimalTaskForReqBody({ + [type]: fakeTaskData[type](), + related_animal_ids: [], + related_batch_ids: [removedBatch1.id], + }); + await checkPostRequestWithInvalidAnimals('batch', data, [removedBatch1.id]); + }); + + test(`should not create a(n) ${type} for a deleted batch`, async () => { + const data = createAnimalTaskForReqBody({ + [type]: fakeTaskData[type](), + related_animal_ids: [], + related_batch_ids: [deletedBatch1.id], + }); + await checkPostRequestWithInvalidAnimals('batch', data, [deletedBatch1.id]); + }); + + test(`should not create a(n) ${type} for animals in a different farm`, async () => { + const data = createAnimalTaskForReqBody({ + [type]: fakeTaskData[type](), + related_animal_ids: [farmBAnimal1.id], + related_batch_ids: [], + }); + await checkPostRequestWithInvalidAnimals('animal', data, [farmBAnimal1.id]); + }); + + test(`should not create a(n) ${type} for batches in a different farm`, async () => { + const data = createAnimalTaskForReqBody({ + [type]: fakeTaskData[type](), + related_animal_ids: [], + related_batch_ids: [farmBBatch1.id], + }); + await checkPostRequestWithInvalidAnimals('batch', data, [farmBBatch1.id]); + }); + + if (type !== 'custom_task') { + test(`should not create a(n) ${type} without animals and batches`, async () => { + const data = createAnimalTaskForReqBody({ + [type]: fakeTaskData[type](), + related_animal_ids: [], + related_batch_ids: [], + }); + const res = await postTaskRequest({ user_id, farm_id }, type, data); + expect(res.status).toBe(400); + expect(res.error.text).toBe( + 'At least one of the animal IDs or animal batch IDs is required', + ); + }); + } + + test(`should not create a(n) ${type} without a due date`, async () => { + const data = createAnimalTaskForReqBody({ [type]: fakeTaskData[type](), due_date: null }); + const res = await postTaskRequest({ user_id, farm_id }, type, data); + expect(res.status).toBe(400); + expect(res.error.text).toBe('must have due date'); + }); + + if (type !== 'custom_task') { + test(`should not create a(n) ${type} with managementPlans`, async () => { + const data = createAnimalTaskForReqBody({ + [type]: fakeTaskData[type](), + managementPlans: [{ planting_management_plan_id }], + }); + const res = await postTaskRequest({ user_id, farm_id }, type, data); + expect(res.status).toBe(400); + expect(res.error.text).toBe(`managementPlans cannot be added for ${type}`); + }); + } + }); + + describe('animal movement task tests', () => { + const type = 'animal_movement_task'; + + const checkAnimalMovementTaskInDB = async (taskId) => { + const animalMovementTask = await knex('animal_movement_task').where({ task_id: taskId }); + expect(animalMovementTask.length).toBe(1); + }; + + const checkPurposeRelationshipsInDB = async (taskId, expectedPurposes) => { + const relationships = await knex('animal_movement_task_purpose_relationship').where({ + task_id: taskId, + }); + expect(relationships.length).toBe(expectedPurposes.length); + + expectedPurposes.forEach(({ id, other_purpose }) => { + const foundRelationship = relationships.filter(({ purpose_id }) => purpose_id === id); + expect(foundRelationship.length).toBe(1); + + if (other_purpose) { + expect(foundRelationship[0].other_purpose).toBe(other_purpose); + } + }); + }; + + const createMovementTaskPostBody = (purposeIds, otherPurpose) => { + return createAnimalTaskForReqBody(createMovementTaskForReqBody(purposeIds, otherPurpose)); + }; + + test('should create a movement task without purpose_ids', async () => { + const data = createMovementTaskPostBody(); + const res = await postTaskRequest({ user_id, farm_id }, type, data); + expect(res.status).toBe(201); + await checkAnimalMovementTaskInDB(res.body.task_id); + }); + + test('should create a movement task with purpose_ids', async () => { + const data = createMovementTaskPostBody([purpose1.id, purpose2.id]); + const res = await postTaskRequest({ user_id, farm_id }, type, data); + await checkAnimalMovementTaskInDB(res.body.task_id); + await checkPurposeRelationshipsInDB(res.body.task_id, [purpose1, purpose2]); + }); + + test('should create a movement task with other_purpose', async () => { + const otherPurposeData = faker.lorem.sentence(); + const data = createMovementTaskPostBody([otherPurpose.id], otherPurposeData); + const res = await postTaskRequest({ user_id, farm_id }, type, data); + + await checkAnimalMovementTaskInDB(res.body.task_id); + await checkPurposeRelationshipsInDB(res.body.task_id, [ + { ...otherPurpose, other_purpose: otherPurposeData }, + ]); + }); + + test('should not create a movement task with invalid purpose id', async () => { + const unknownPurposeId = 1234567; + const data = createMovementTaskPostBody([unknownPurposeId]); + const res = await postTaskRequest({ user_id, farm_id }, type, data); + expect(res.status).toBe(400); + }); + + test('should ignore other_purpose without correct purpose id', async () => { + const otherPurposeData = faker.lorem.sentence(); + const data = createMovementTaskPostBody([purpose1.id], otherPurposeData); + const res = await postTaskRequest({ user_id, farm_id }, type, data); + const purposeRelationships = await knex('animal_movement_task_purpose_relationship').where({ + task_id: res.body.task_id, + }); + expect(res.status).toBe(201); + expect(purposeRelationships.length).toBe(1); + expect(purposeRelationships[0].purpose_id).toBe(purpose1.id); + expect(purposeRelationships[0].other_purpose).toBe(null); + }); + + test('should not create a movement task without a location', async () => { + const data = createAnimalTaskForReqBody({ + animal_movement_task: {}, + locations: [], + }); + const res = await postTaskRequest({ user_id, farm_id }, type, data); + expect(res.status).toBe(403); + expect(res.error.text).toBe('user not authorized to access farm'); + }); + + test('should not create a movement task with a location in a different farm', async () => { + const data = createAnimalTaskForReqBody({ + animal_movement_task: {}, + locations: [{ location_id: farmBLocationId }], + }); + const res = await postTaskRequest({ user_id, farm_id }, type, data); + expect(res.status).toBe(403); + expect(res.error.text).toBe('user not authorized to access farm'); + }); + + test('should not create a movement task with multiple locations', async () => { + const data = createAnimalTaskForReqBody({ + animal_movement_task: {}, + locations: [{ location_id }, { location_id: location2Id }], + }); + const res = await postTaskRequest({ user_id, farm_id }, type, data); + expect(res.status).toBe(400); + expect(res.error.text).toBe('Only one location can be assigned to this task type'); + }); + }); + }); + + describe('Patch tasks completion tests', () => { + beforeEach(async () => { + await knex('animal').update({ location_id: null }); + await knex('animal_batch').update({ location_id: null }); + }); + + describe('Completion of animal tasks', () => { + const fakeTaskData = { + animal_movement_task: () => + createFakeMovementTask([ + { purpose_id: purpose1.id }, + { purpose_id: otherPurpose.id, other_purpose: faker.lorem.sentence() }, + ]), + custom_task: () => ({ notes: faker.lorem.sentence() }), + }; + + describe.each(Object.keys(fakeTaskData))('animal tasks common validation tests', (type) => { + const checkBeforeAfterAnimals = async ({ + beforeAnimalIds = [], + beforeBatchIds = [], + afterAnimalIds = [], + afterBatchIds = [], + }) => { + const { task_id } = await animalTaskFactory({ + animals: beforeAnimalIds.map((id) => ({ id })), + animal_batches: beforeBatchIds.map((id) => ({ id })), + ...fakeTaskData[type](), + }); + const patchRes = await completeTaskRequest( + { user_id, farm_id }, + { + ...fakeCompletionData, + related_animal_ids: afterAnimalIds, + related_batch_ids: afterBatchIds, + }, + task_id, + type, + ); + expect(patchRes.status).toBe(200); + + const animalRelationships = await knex('task_animal_relationship') + .select('animal_id') + .where({ task_id }); + expect(animalRelationships.map(({ animal_id }) => animal_id).sort()).toEqual( + (afterAnimalIds || []).sort(), + ); + const batchRelationships = await knex('task_animal_batch_relationship') + .select('animal_batch_id') + .where({ task_id }); + expect(batchRelationships.map(({ animal_batch_id }) => animal_batch_id).sort()).toEqual( + (afterBatchIds || []).sort(), + ); + + // Ensure the original animals/batches are not deleted or marked as deleted + const animals = await knex('animal') + .select('id') + .whereIn('id', beforeAnimalIds) + .andWhereNot('deleted', true); + expect(animals.length).toBe(beforeAnimalIds.length); + const batches = await knex('animal_batch') + .select('id') + .whereIn('id', beforeBatchIds) + .andWhereNot('deleted', true); + expect(batches.length).toBe(beforeBatchIds.length); + }; + + const checkInvalidAnimalsToComplete = async (animalOrBatch, ids, invalidIds) => { + const { task_id } = await animalTaskFactory(); + const patchRes = await completeTaskRequest( + { user_id, farm_id }, + { ...fakeCompletionData, [`related_${animalOrBatch}_ids`]: ids }, + task_id, + type, + ); + const invalidIdsKey = animalOrBatch === 'animal' ? 'invalidAnimalIds' : 'invalidBatchIds'; + expect(patchRes.status).toBe(400); + expect(patchRes.body.message).toBe( + 'Some animal IDs or animal batch IDs do not exist, are removed, or are not associated with the given farm.', + ); + expect(patchRes.body[invalidIdsKey]).toEqual(invalidIds); + }; + + test('should complete an animal task without modifying animals, batches and task type specific details', async () => { + const { task_id } = await animalTaskFactory(fakeTaskData[type]()); + const getResBefore = await getTasksRequest({ user_id, farm_id }); + const patchRes = await completeTaskRequest( + { user_id, farm_id }, + fakeCompletionData, + task_id, + type, + ); + expect(patchRes.status).toBe(200); + const getResAfter = await getTasksRequest({ user_id, farm_id }); + const taskBefore = getResBefore.body.find((task) => task.task_id === task_id); + const taskAfter = getResAfter.body.find((task) => task.task_id === task_id); + const expectedTaskAfter = simulateTaskCompletion(taskBefore, type); + expect(taskAfter).toEqual(expectedTaskAfter); + }); + + test('should complete an animal task with updates to animals', async () => { + await checkBeforeAfterAnimals({ + beforeAnimalIds: [animal1.id, animal2.id], + afterAnimalIds: [animal1.id, animal3.id], + }); + }); + + test('should complete an animal task with updates to batches', async () => { + await checkBeforeAfterAnimals({ + beforeBatchIds: [batch1.id, batch2.id], + afterBatchIds: [batch3.id, batch4.id], + }); + }); + + test('should complete an animal task with updates to both animals and batches', async () => { + await checkBeforeAfterAnimals({ + beforeAnimalIds: [], + afterAnimalIds: [animal1.id, animal2.id, animal3.id, animal4.id], + beforeBatchIds: [batch1.id, batch2.id, batch3.id, batch4.id], + afterBatchIds: [], + }); + await checkBeforeAfterAnimals({ + beforeAnimalIds: [animal1.id, animal2.id, animal3.id, animal4.id], + afterAnimalIds: [], + beforeBatchIds: [], + afterBatchIds: [batch1.id, batch2.id, batch3.id, batch4.id], + }); + await checkBeforeAfterAnimals({ + beforeAnimalIds: [animal1.id, animal2.id, animal3.id, animal4.id], + afterAnimalIds: [animal1.id], + beforeBatchIds: [], + afterBatchIds: [batch1.id, batch2.id, batch3.id, batch4.id], + }); + }); + + if (type === 'custom_task') { + test('should complete a custom task with an attempt to remove all animals and batches from the task', async () => { + const emptyIdsVariants = [[], null]; + for (let emptyIds of emptyIdsVariants) { + await checkBeforeAfterAnimals({ + beforeAnimalIds: [animal1.id, animal2.id, animal3.id], + beforeBatchIds: [batch1.id, batch2.id, batch3.id], + afterAnimalIds: emptyIds, + afterBatchIds: emptyIds, + }); + } + }); + } else { + test('should not complete an animal task with an attempt to remove all animals and batches from the task', async () => { + const emptyIdsVariants = [[], null]; + for (let emptyIds of emptyIdsVariants) { + const { task_id } = await animalTaskFactory(fakeTaskData[type]()); + const patchRes = await completeTaskRequest( + { user_id, farm_id }, + { + ...fakeCompletionData, + related_animal_ids: emptyIds, + related_batch_ids: emptyIds, + }, + task_id, + type, + ); + expect(patchRes.status).toBe(400); + expect(patchRes.error.text).toBe( + 'At least one of the animal IDs or animal batch IDs is required', + ); + } + }); + } + + test('should not complete an animal task for a removed animal', async () => { + await checkInvalidAnimalsToComplete( + 'animal', + [animal1.id, removedAnimal1.id], + [removedAnimal1.id], + ); + }); + + test('should not complete an animal task for a deleted animal', async () => { + await checkInvalidAnimalsToComplete('animal', [deletedAnimal1.id], [deletedAnimal1.id]); + }); + + test('should not complete an animal task for a removed batch', async () => { + await checkInvalidAnimalsToComplete('batch', [removedBatch1.id], [removedBatch1.id]); + }); + + test('should not complete an animal task for a deleted batch', async () => { + await checkInvalidAnimalsToComplete( + 'batch', + [batch4.id, deletedBatch1.id], + [deletedBatch1.id], + ); + }); + + test('should not complete an animal task for animals in a different farm', async () => { + await checkInvalidAnimalsToComplete('animal', [farmBAnimal1.id], [farmBAnimal1.id]); + }); + + test('should not complete an animal task for batches in a different farm', async () => { + await checkInvalidAnimalsToComplete('batch', [farmBBatch1.id], [farmBBatch1.id]); + }); + + test(`should not complete an animal task without a complete date`, async () => { + const { task_id } = await animalTaskFactory(fakeTaskData[type]()); + const patchRes = await completeTaskRequest( + { user_id, farm_id }, + { ...fakeCompletionData, complete_date: null }, + task_id, + type, + ); + expect(patchRes.status).toBe(400); + expect(patchRes.error.text).toBe('must have completion date'); + }); + }); + + describe('animal movement task tests', () => { + const completeMovementTaskReq = async (data, task_id) => { + return completeTaskRequest({ user_id, farm_id }, data, task_id, 'animal_movement_task'); + }; + + const checkAnimalMovement = async (original, completedTask) => { + expect(completedTask.animals.length).toBe(original.animals.length); + expect(completedTask.animal_batches.length).toBe(original.animal_batches.length); + const animalsData = await knex('animal') + .select('location_id') + .whereIn( + 'id', + completedTask.animals.map(({ id }) => id), + ); + const batchesData = await knex('animal_batch') + .select('location_id') + .whereIn( + 'id', + completedTask.animal_batches.map(({ id }) => id), + ); + expect(completedTask.animals.length + completedTask.animal_batches.length).toBe( + animalsData.length + batchesData.length, + ); + [...animalsData, ...batchesData].forEach((data) => { + expect(data.location_id).toBe(location_id); + }); + }; + + const checkCompletedMovementTask = async ( + initialPurposes, + initialOtherPurpose, + purposesInPatchReq, + otherPurposeInPatchReq, + ) => { + const task = await animalTaskFactory( + createFakeMovementTask( + initialPurposes?.map(({ id }) => ({ + purpose_id: id, + other_purpose: id === otherPurpose.id ? initialOtherPurpose : null, + })), + ), + ); + const { task_id } = task; + + const patchRes = await completeMovementTaskReq( + { + ...fakeCompletionData, + ...(purposesInPatchReq + ? createMovementTaskForReqBody( + purposesInPatchReq.map(({ id }) => id), + otherPurposeInPatchReq, + ) + : {}), + }, + task_id, + ); + + expect(patchRes.status).toBe(200); + const res = await getTasksRequest({ user_id, farm_id }); + + const completedTask = res.body.find((retrievedTask) => retrievedTask.task_id === task_id); + await checkAnimalMovement(task, completedTask); + expect(completedTask.animal_movement_task.task_id).toBe(task_id); + + const finalPurposes = purposesInPatchReq || initialPurposes || []; + + if (completedTask.animal_movement_task.purpose_relationships.length) { + completedTask.animal_movement_task.purpose_relationships.forEach( + ({ purpose_id, other_purpose }) => { + const expectedRelationship = finalPurposes.filter( + (purpose) => purpose.id === purpose_id, + ); + expect(expectedRelationship.length).toBe(1); + + if (other_purpose) { + expect(other_purpose).toBe( + purposesInPatchReq.map(({ id }) => id).includes(otherPurpose.id) + ? otherPurposeInPatchReq + : initialOtherPurpose, + ); + } + }, + ); + } else { + expect(finalPurposes.length).toBe(0); + } + }; + + const checkAnimalMovementWithSpecificCompleteDate = async ({ + locationId, + animals = [], + batches = [], + completeDate, + expectedAnimalLocations = {}, + expectedBatchLocations = {}, + }) => { + const { task_id } = await animalTaskFactory({ + locations: [{ location_id: locationId }], + animals: animals.map(({ id }) => ({ id })), + animal_batches: batches.map(({ id }) => ({ id })), + ...createFakeMovementTask(), + }); + + await completeMovementTaskReq( + { + ...fakeCompletionData, + complete_date: completeDate, + ...createMovementTaskForReqBody(), + }, + task_id, + ); + + const [updatedAnimals, updatedBatches] = await Promise.all([ + getAnimalLocations('animal', getAnimalOrBatchIds(animals)), + getAnimalLocations('batch', getAnimalOrBatchIds(batches)), + ]); + + updatedAnimals.forEach(({ id, location_id }) => { + expect(location_id).toBe(expectedAnimalLocations[id]); + }); + updatedBatches.forEach(({ id, location_id }) => { + expect(location_id).toBe(expectedBatchLocations[id]); + }); + }; + + test('should complete an animal task without purpose relations and no updates', async () => { + await checkCompletedMovementTask(null, null, null, null); + }); + + test('should complete a movement task without modifying purposes', async () => { + await checkCompletedMovementTask([purpose1], null, null, null); + }); + + test('should complete a movement task with updated purposes', async () => { + const purposes = [ + { before: null, after: [purpose2] }, + { before: [purpose2], after: [purpose1, purpose2] }, + { before: [purpose1, purpose2], after: [otherPurpose] }, + ]; + + for (let { before, after } of purposes) { + await checkCompletedMovementTask(before, null, after, null); + } + }); + + test('should complete a movement task with purposes removed', async () => { + // remove purposes with [] + await checkCompletedMovementTask([purpose1], null, [], null); + // remove purposes with null + await checkCompletedMovementTask([purpose1], null, null, null); + }); + + test('should complete a movement task with the addition of other_purpose', async () => { + await checkCompletedMovementTask( + [otherPurpose], + null, + [otherPurpose], + faker.lorem.sentence(), + ); + }); + + test('should complete a movement task with modifying other_purpose', async () => { + const otherPurposeText = faker.lorem.word(); + await checkCompletedMovementTask( + [otherPurpose], + otherPurposeText, + [otherPurpose], + otherPurposeText + faker.lorem.word(), + ); + }); + + test('should complete a movement task with deleting other_purpose', async () => { + await checkCompletedMovementTask([otherPurpose], faker.lorem.word(), [otherPurpose], ''); + }); + + test(`should complete a movement task without updating animals' location if there's newer completed task`, async () => { + const [[animalA], [animalB], [animalC]] = await Promise.all( + new Array(3).fill().map(() => mocks.animalFactory({ promisedFarm: [{ farm_id }] })), + ); + const [[batchA], [batchB]] = await Promise.all( + new Array(2) + .fill() + .map(() => mocks.animal_batchFactory({ promisedFarm: [{ farm_id }] })), + ); + + // Record a task completed a week ago + const dateWeekAgo = new Date(); + dateWeekAgo.setDate(dateWeekAgo.getDate() - 7); + await checkAnimalMovementWithSpecificCompleteDate({ + locationId: location_id, + animals: [animalA, animalB], + completeDate: toLocal8601Extended(dateWeekAgo), + expectedAnimalLocations: { [animalA.id]: location_id, [animalB.id]: location_id }, + }); + + // Record a task completed a month ago + const dateMonthAgo = new Date(); + dateMonthAgo.setMonth(dateMonthAgo.getMonth() - 1); + await checkAnimalMovementWithSpecificCompleteDate({ + locationId: location2Id, + animals: [animalA, animalB], + batches: [batchA, batchB], + completeDate: toLocal8601Extended(dateMonthAgo), + expectedAnimalLocations: { [animalA.id]: location_id, [animalB.id]: location_id }, + expectedBatchLocations: { [batchA.id]: location2Id, [batchB.id]: location2Id }, + }); + + // Move some animals today + const [{ location_id: location3Id }] = await mocks.locationFactory({ + promisedFarm: [{ farm_id }], + }); + await checkAnimalMovementWithSpecificCompleteDate({ + locationId: location3Id, + animals: [animalA], + batches: [batchA], + completeDate: toLocal8601Extended(new Date()), + expectedAnimalLocations: { [animalA.id]: location3Id }, + expectedBatchLocations: { [batchA.id]: location3Id }, + }); + + // Record yesterday's movement + const dateYesterday = new Date(); + dateYesterday.setDate(dateYesterday.getDate() - 1); + const [{ location_id: location4Id }] = await mocks.locationFactory({ + promisedFarm: [{ farm_id }], + }); + await checkAnimalMovementWithSpecificCompleteDate({ + locationId: location4Id, + animals: [animalA, animalB, animalC], + batches: [batchA, batchB], + completeDate: toLocal8601Extended(dateYesterday), + expectedAnimalLocations: { + [animalA.id]: location3Id, + [animalB.id]: location4Id, + [animalC.id]: location4Id, + }, + expectedBatchLocations: { [batchA.id]: location3Id, [batchB.id]: location4Id }, + }); + + // Move animals again today + const [{ location_id: location5Id }] = await mocks.locationFactory({ + promisedFarm: [{ farm_id }], + }); + await checkAnimalMovementWithSpecificCompleteDate({ + locationId: location5Id, + animals: [animalA, animalB, animalC], + batches: [batchA, batchB], + completeDate: toLocal8601Extended(new Date()), + expectedAnimalLocations: { + [animalA.id]: location5Id, + [animalB.id]: location5Id, + [animalC.id]: location5Id, + }, + expectedBatchLocations: { [batchA.id]: location5Id, [batchB.id]: location5Id }, + }); + }); + + test('should not complete a movement task with an invalid purpose id', async () => { + const { task_id } = await animalTaskFactory(createFakeMovementTask()); + const unknownPurposeId = 123456; + const patchRes = await completeMovementTaskReq( + { + ...fakeCompletionData, + ...createMovementTaskForReqBody([unknownPurposeId]), + }, + task_id, + ); + expect(patchRes.status).toBe(400); + }); + + test('should ignore other_purpose without correct purpose id', async () => { + const { task_id } = await animalTaskFactory(createFakeMovementTask()); + const patchRes = await completeMovementTaskReq( + { + ...fakeCompletionData, + ...createMovementTaskForReqBody([purpose1.id], faker.lorem.sentence()), + }, + task_id, + ); + const purposeRelationships = await knex( + 'animal_movement_task_purpose_relationship', + ).where({ task_id }); + expect(patchRes.status).toBe(200); + expect(purposeRelationships.length).toBe(1); + expect(purposeRelationships[0].purpose_id).toBe(purpose1.id); + expect(purposeRelationships[0].other_purpose).toBe(null); + }); + + test('should not complete a movement task for a deleted location', async () => { + const [{ location_id }] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); + await knex('location').update({ deleted: true }).where({ location_id }); + + const { task_id } = await animalTaskFactory({ + ...createFakeMovementTask(), + locations: [{ location_id }], + }); + const patchRes = await completeMovementTaskReq(fakeCompletionData, task_id); + expect(patchRes.status).toBe(400); + expect(patchRes.error.text).toBe('location deleted'); + }); + }); + }); + }); +}); diff --git a/packages/api/tests/animal_batch.test.js b/packages/api/tests/animal_batch.test.js new file mode 100644 index 0000000000..cadca14655 --- /dev/null +++ b/packages/api/tests/animal_batch.test.js @@ -0,0 +1,2246 @@ +/* + * Copyright (c) 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import chai from 'chai'; +import { faker } from '@faker-js/faker'; + +import chaiHttp from 'chai-http'; +chai.use(chaiHttp); + +import server from '../src/server.js'; +import knex from '../src/util/knex.js'; +import { tableCleanup } from './testEnvironment.js'; + +jest.mock('jsdom'); +jest.mock('../src/middleware/acl/checkJwt.js', () => + jest.fn((req, _res, next) => { + req.auth = {}; + req.auth.user_id = req.get('user_id'); + next(); + }), +); +import mocks from './mock.factories.js'; + +import { makeFarmsWithAnimalsAndBatches } from './utils/animalUtils.js'; +import AnimalBatchModel from '../src/models/animalBatchModel.js'; +import CustomAnimalTypeModel from '../src/models/customAnimalTypeModel.js'; +import CustomAnimalBreedModel from '../src/models/customAnimalBreedModel.js'; +import AnimalBatchSexDetailModel from '../src/models/animalBatchSexDetailModel.js'; +import AnimalBatchUseRelationshipModel from '../src/models/animalBatchUseRelationshipModel.js'; +import { ANIMAL_CREATE_LIMIT } from '../src/util/animal.js'; +import { + batchGetRequest, + batchPostRequest, + batchRemoveRequest, + batchPatchRequest, + batchDeleteRequest, +} from './utils/animalUtils.js'; + +describe('Animal Batch Tests', () => { + let farm; + let newOwner; + let defaultBreedId; + let defaultTypeId; + let animalRemovalReasonId; + let animalUse1; + let animalOrigin1; + + const mockDate = new Date('2024/3/12').toISOString(); + + beforeAll(async () => { + const [defaultAnimalBreed] = await mocks.default_animal_breedFactory(); + defaultBreedId = defaultAnimalBreed.id; + defaultTypeId = defaultAnimalBreed.default_type_id; + + const [animalRemovalReason] = await mocks.animal_removal_reasonFactory(); + animalRemovalReasonId = animalRemovalReason.id; + + [animalUse1] = await mocks.animal_useFactory('OTHER'); + [animalOrigin1] = await mocks.animal_originFactory('BROUGHT_IN'); + }); + + async function getRequest({ user_id = newOwner.user_id, farm_id = farm.farm_id }) { + return await batchGetRequest({ user_id, farm_id }); + } + + async function postRequest({ user_id = newOwner.user_id, farm_id = farm.farm_id }, data) { + return await batchPostRequest({ user_id, farm_id }, data); + } + + async function removeRequest({ user_id = newOwner.user_id, farm_id = farm.farm_id }, data) { + return await batchRemoveRequest({ user_id, farm_id }, data); + } + + async function patchRequest({ user_id = newOwner.user_id, farm_id = farm.farm_id }, data) { + return await batchPatchRequest({ user_id, farm_id }, data); + } + + async function deleteRequest({ user_id = newOwner.user_id, farm_id = farm.farm_id, query = '' }) { + return await batchDeleteRequest({ user_id, farm_id, query }); + } + + function fakeUserFarm(role = 1) { + return { ...mocks.fakeUserFarm(), role_id: role }; + } + + async function returnUserFarms(role) { + const [mainFarm] = await mocks.farmFactory(); + const [user] = await mocks.usersFactory(); + + await mocks.userFarmFactory( + { + promisedUser: [user], + promisedFarm: [mainFarm], + }, + fakeUserFarm(role), + ); + return { mainFarm, user }; + } + + async function makeAnimalBatch(mainFarm, properties) { + const [animalBatch] = await mocks.animal_batchFactory({ + promisedFarm: [mainFarm], + properties, + }); + return animalBatch; + } + + async function makeAnimalSex(properties) { + const [animalSex] = await mocks.animal_sexFactory({ + properties, + }); + return animalSex; + } + + beforeEach(async () => { + [farm] = await mocks.farmFactory(); + [newOwner] = await mocks.usersFactory(); + }); + + afterAll(async (done) => { + await tableCleanup(knex); + await knex.destroy(); + done(); + }); + + // GET TESTS + describe('Get animal batches tests', () => { + test('All users should get animal batches for their farm', async () => { + const roles = [1, 2, 3, 5]; + const animalSex1 = await makeAnimalSex(); + const animalSex2 = await makeAnimalSex(); + for (const role of roles) { + const { mainFarm, user } = await returnUserFarms(role); + const [secondFarm] = await mocks.farmFactory(); + // Create two animal batches, one with sex detail and one without + const firstAnimalBatch = await makeAnimalBatch(mainFarm, { + default_breed_id: defaultBreedId, + default_type_id: defaultTypeId, + count: 6, + sex_detail: [ + { + sex_id: animalSex1.id, + count: 2, + }, + { + sex_id: animalSex2.id, + count: 4, + }, + ], + }); + const secondAnimalBatch = await makeAnimalBatch(mainFarm, { + default_breed_id: defaultBreedId, + default_type_id: defaultTypeId, + }); + + // Create a third animal batch belonging to a different farm + await makeAnimalBatch(secondFarm, { + default_breed_id: defaultBreedId, + default_type_id: defaultTypeId, + }); + + const res = await getRequest({ + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }); + + expect(res.status).toBe(200); + // Should return first two animal batches + expect(res.body.length).toBe(2); + res.body.forEach((animalBatch) => { + expect(animalBatch.farm_id).toBe(mainFarm.farm_id); + expect(animalBatch.internal_identifier).toBeGreaterThan(0); + }); + expect({ + ...firstAnimalBatch, + internal_identifier: 1, + animal_batch_use_relationships: [], + }).toMatchObject(res.body[0]); + expect({ + ...secondAnimalBatch, + internal_identifier: 2, + animal_batch_use_relationships: [], + }).toMatchObject(res.body[1]); + } + }); + + test('Unauthorized user should get 400 if they try to get animal batches', async () => { + const { mainFarm } = await returnUserFarms(1); + await makeAnimalBatch(mainFarm, { + default_breed_id: defaultBreedId, + default_type_id: defaultTypeId, + }); + const [unAuthorizedUser] = await mocks.usersFactory(); + + const res = await getRequest({ + user_id: unAuthorizedUser.user_id, + farm_id: mainFarm.farm_id, + }); + expect(res.status).toBe(403); + expect(res.error.text).toBe( + 'User does not have the following permission(s): get:animal_batches', + ); + }); + }); + + // POST tests + describe('Add animal batch tests', () => { + test('Admin users should be able to create animal batch', async () => { + const roles = [1, 2, 5]; + const animalSex1 = await makeAnimalSex(); + const animalSex2 = await makeAnimalSex(); + for (const role of roles) { + const { mainFarm, user } = await returnUserFarms(role); + const [animalType] = await mocks.custom_animal_typeFactory({ + promisedFarm: [mainFarm], + }); + const [animalBreed] = await mocks.custom_animal_breedFactory({ + promisedFarm: [mainFarm], + }); + + const firstAnimalBatch = mocks.fakeAnimalBatch({ + default_breed_id: defaultBreedId, + default_type_id: defaultTypeId, + }); + const secondAnimalBatch = mocks.fakeAnimalBatch({ + default_breed_id: defaultBreedId, + default_type_id: defaultTypeId, + }); + const thirdAnimalBatch = mocks.fakeAnimalBatch({ + custom_type_id: animalBreed.custom_type_id, + custom_breed_id: animalBreed.id, + count: 6, + sex_detail: [ + { + sex_id: animalSex1.id, + count: 2, + }, + { + sex_id: animalSex2.id, + count: 4, + }, + ], + }); + + const res = await postRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + [firstAnimalBatch, secondAnimalBatch, thirdAnimalBatch], + ); + expect(res.status).toBe(201); + expect(res.body[0]).toMatchObject(firstAnimalBatch); + expect(res.body[1]).toMatchObject(secondAnimalBatch); + expect(res.body[2]).toMatchObject(thirdAnimalBatch); + expect(res.body[0].internal_identifier).toBe(1); + expect(res.body[1].internal_identifier).toBe(2); + expect(res.body[2].internal_identifier).toBe(3); + + res.body.forEach((animalBatch) => expect(animalBatch.farm_id).toBe(mainFarm.farm_id)); + } + }); + + test('Users should not be able to create animal batch beyond ANIMAL_CREATE_LIMIT', async () => { + const roles = [1, 2, 5]; + for (const role of roles) { + const { mainFarm, user } = await returnUserFarms(role); + const [animalBreed] = await mocks.custom_animal_breedFactory({ + promisedFarm: [mainFarm], + }); + + const animalBatches = []; + + for (let i = 0; i < ANIMAL_CREATE_LIMIT + 1; i++) { + animalBatches.push( + mocks.fakeAnimalBatch({ + custom_type_id: animalBreed.custom_type_id, + custom_breed_id: animalBreed.id, + count: 6, + }), + ); + } + + const res = await postRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + animalBatches, + ); + expect(res.status).toBe(400); + } + }); + + test('Non-admin users should not be able to create animal batch', async () => { + const roles = [3]; + + for (const role of roles) { + const { mainFarm, user } = await returnUserFarms(role); + const animalBatch = mocks.fakeAnimalBatch({ + default_breed_id: defaultBreedId, + default_type_id: defaultTypeId, + }); + + const res = await postRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + [animalBatch], + ); + + expect(res.status).toBe(403); + expect(res.error.text).toBe( + 'User does not have the following permission(s): add:animal_batches', + ); + } + }); + + test('Should not be able to send out an individual animal batch instead of an array', async () => { + const { mainFarm, user } = await returnUserFarms(1); + const animalBatch = mocks.fakeAnimalBatch({ + default_breed_id: defaultBreedId, + default_type_id: defaultTypeId, + }); + + const res = await postRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + animalBatch, + ); + + expect(res.status).toBe(400); + expect(res.error.text).toBe('Request body should be an array'); + }); + + test('Unique internal_identifier should be added within the same farm_id between animals and animalBatches', async () => { + const [user] = await mocks.usersFactory(); + const { existingAnimalsAndBatchesCountsPerFarm } = await makeFarmsWithAnimalsAndBatches(user); + + for (const existingAnimalsAndBatches of existingAnimalsAndBatchesCountsPerFarm) { + const { farm, animalCount, batchCount } = existingAnimalsAndBatches; + + // creat an animal batch for the farm + const animalBatch = mocks.fakeAnimalBatch({ + farm_id: farm.farm_id, + default_type_id: defaultTypeId, + }); + const res = await postRequest({ user_id: user.user_id, farm_id: farm.farm_id }, [ + animalBatch, + ]); + + expect(res.body[0].internal_identifier).toBe(animalCount + batchCount + 1); + } + }); + + test('Should not be able to create an animal batch without a type', async () => { + const { mainFarm, user } = await returnUserFarms(1); + const animalBatch = mocks.fakeAnimalBatch({ + default_breed_id: defaultBreedId, + default_type_id: null, + custom_type_id: null, + }); + + const res = await postRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + [animalBatch], + ); + + expect(res.status).toBe(400); + }); + + test('Should not be able to create an animal batch with a type belonging to a different farm', async () => { + const { mainFarm, user } = await returnUserFarms(1); + const [secondFarm] = await mocks.farmFactory(); + const [animalType] = await mocks.custom_animal_typeFactory({ + promisedFarm: [secondFarm], + }); + + const animalBatch = mocks.fakeAnimalBatch({ + default_breed_id: defaultBreedId, + custom_type_id: animalType.id, + }); + + const res = await postRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + [animalBatch], + ); + + expect(res.status).toBe(403); + }); + + test('Should not be able to create an animal batch with a breed belonging to a different farm', async () => { + const { mainFarm, user } = await returnUserFarms(1); + const [secondFarm] = await mocks.farmFactory(); + const [animalBreed] = await mocks.custom_animal_breedFactory({ + promisedFarm: [secondFarm], + }); + + const animalBatch = mocks.fakeAnimalBatch({ + default_type_id: null, + custom_type_id: animalBreed.custom_type_id, + default_breed_id: null, + custom_breed_id: animalBreed.id, + }); + + const res = await postRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + [animalBatch], + ); + + expect(res.status).toBe(403); + }); + + test('Should not be able to create an animal batch where type and breed do not match', async () => { + const { mainFarm, user } = await returnUserFarms(1); + const [animalType] = await mocks.default_animal_typeFactory(); + const [animalBreed] = await mocks.default_animal_breedFactory(); + + const animalBatch = mocks.fakeAnimalBatch({ + default_type_id: animalType.id, + default_breed_id: animalBreed.id, + }); + + const res = await postRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + [animalBatch], + ); + + expect(res.status).toBe(400); + }); + + test('Should not be able to create an animal batch where count is less than combined sex detail count', async () => { + const { mainFarm, user } = await returnUserFarms(1); + const animalSex1 = await makeAnimalSex(); + const animalSex2 = await makeAnimalSex(); + const animalBatch = mocks.fakeAnimalBatch({ + default_breed_id: defaultBreedId, + default_type_id: defaultTypeId, + count: 4, + sex_detail: [ + { + sex_id: animalSex1.id, + count: 2, + }, + { + sex_id: animalSex2.id, + count: 3, + }, + ], + }); + + const res = await postRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + [animalBatch], + ); + + expect(res.status).toBe(400); + }); + + describe('Create new types and/or breeds while creating animal batches', () => { + let farm; + let owner; + + beforeEach(async () => { + const { mainFarm, user } = await returnUserFarms(1); + farm = mainFarm; + owner = user; + }); + + const postAnimalBatchesRequest = async (animalBatches) => { + const res = await postRequest( + { user_id: owner.user_id, farm_id: farm.farm_id }, + animalBatches, + ); + return res; + }; + + const getCustomAnimalType = async (typeName) => { + const createdType = await CustomAnimalTypeModel.query() + .where('farm_id', farm.farm_id) + .andWhere('type', typeName); + return createdType[0]; + }; + + const getCustomAnimalBreed = async (breedName, typeColumn, typeId) => { + const createdBreed = await CustomAnimalBreedModel.query() + .where('farm_id', farm.farm_id) + .andWhere(typeColumn, typeId) + .andWhere('breed', breedName); + return createdBreed[0]; + }; + + test('Should be able to create an animal batch with a new type', async () => { + const typeName = faker.lorem.word(); + const animalBatch = mocks.fakeAnimalBatch({ type_name: typeName }); + const res = await postAnimalBatchesRequest([animalBatch]); + const newType = await getCustomAnimalType(typeName); + expect(res.status).toBe(201); + expect(res.body[0].custom_type_id).toBe(newType.id); + }); + + test('Should be able to create an animal batch with type_id and a new breed', async () => { + const breedName = faker.lorem.word(); + let animalBatch = mocks.fakeAnimalBatch({ + default_type_id: defaultTypeId, + breed_name: breedName, + }); + let res = await postAnimalBatchesRequest([animalBatch]); + let newBreed = await getCustomAnimalBreed(breedName, 'default_type_id', defaultTypeId); + expect(res.status).toBe(201); + expect(res.body[0].custom_breed_id).toBe(newBreed.id); + + const [customAnimalType] = await mocks.custom_animal_typeFactory({ promisedFarm: [farm] }); + animalBatch = mocks.fakeAnimalBatch({ + custom_type_id: customAnimalType.id, + breed_name: breedName, + }); + res = await postAnimalBatchesRequest([animalBatch]); + newBreed = await getCustomAnimalBreed(breedName, 'custom_type_id', customAnimalType.id); + expect(res.status).toBe(201); + expect(res.body[0].custom_breed_id).toBe(newBreed.id); + }); + + test('Should be able to create an animal batch with a new type and a new breed', async () => { + const typeName = faker.lorem.word(); + const breedName = faker.lorem.word(); + const animalBatch = mocks.fakeAnimalBatch({ + type_name: typeName, + breed_name: breedName, + }); + const res = await postAnimalBatchesRequest([animalBatch]); + const newType = await getCustomAnimalType(typeName); + const newBreed = await getCustomAnimalBreed(breedName, 'custom_type_id', newType.id); + expect(res.status).toBe(201); + expect(res.body[0].custom_type_id).toBe(newType.id); + expect(res.body[0].custom_breed_id).toBe(newBreed.id); + }); + + test('Should not be able to create an animal batch when type_id and type_name are passed', async () => { + const typeName = faker.lorem.word(); + let animalBatch = mocks.fakeAnimalBatch({ + default_type_id: defaultTypeId, + type_name: typeName, + }); + let res = await postAnimalBatchesRequest([animalBatch]); + expect(res.status).toBe(400); + + const [customAnimalType] = await mocks.custom_animal_typeFactory({ promisedFarm: [farm] }); + animalBatch = mocks.fakeAnimalBatch({ + custom_type_id: customAnimalType.id, + type_name: typeName, + }); + res = await postAnimalBatchesRequest([animalBatch]); + expect(res.status).toBe(400); + }); + + test('Should not be able to create an animal batch when breed_id and breed_name are passed', async () => { + const breedName = faker.lorem.word(); + let animalBatch = mocks.fakeAnimalBatch({ + default_type_id: defaultTypeId, + default_breed_id: defaultBreedId, + breed_name: breedName, + }); + let res = await postAnimalBatchesRequest([animalBatch]); + expect(res.status).toBe(400); + + const [customAnimalBreed] = await mocks.custom_animal_breedFactory({ + promisedFarm: [farm], + properties: { default_type_id: defaultTypeId, custom_type_id: null }, + }); + animalBatch = mocks.fakeAnimalBatch({ + default_type_id: defaultTypeId, + custom_breed_id: customAnimalBreed.id, + breed_name: breedName, + }); + res = await postAnimalBatchesRequest([animalBatch]); + expect(res.status).toBe(400); + }); + + test('Should not be able to create an animal batch with a new type and an existing breed', async () => { + const typeName = faker.lorem.word(); + const [animalBreed] = await mocks.default_animal_breedFactory(); + let animalBatch = mocks.fakeAnimalBatch({ + type_name: typeName, + default_breed_id: animalBreed.id, + }); + let res = await postAnimalBatchesRequest([animalBatch]); + expect(res.status).toBe(400); + + const [customAnimalBreed] = await mocks.custom_animal_breedFactory({ + promisedFarm: [farm], + }); + animalBatch = mocks.fakeAnimalBatch({ + type_name: typeName, + custom_breed_id: customAnimalBreed.id, + }); + res = await postAnimalBatchesRequest([animalBatch]); + expect(res.status).toBe(400); + }); + + test('Should be able to create animal batches with a new type', async () => { + const typeName = faker.lorem.word(); + const animals = [...Array(3)].map(() => mocks.fakeAnimalBatch({ type_name: typeName })); + const res = await postAnimalBatchesRequest(animals); + const newType = await getCustomAnimalType(typeName); + expect(res.status).toBe(201); + res.body.forEach(({ custom_type_id }) => { + expect(custom_type_id).toBe(newType.id); + }); + }); + + test('Should be able to create animal batches with a new type and breed', async () => { + const typeName = faker.lorem.word(); + const breedName = faker.lorem.word(); + const animals = [...Array(3)].map(() => + mocks.fakeAnimalBatch({ type_name: typeName, breed_name: breedName }), + ); + const res = await postAnimalBatchesRequest(animals); + const newType = await getCustomAnimalType(typeName); + const newBreed = await getCustomAnimalBreed(breedName, 'custom_type_id', newType.id); + expect(res.status).toBe(201); + res.body.forEach(({ custom_type_id, custom_breed_id }) => { + expect(custom_type_id).toBe(newType.id); + expect(custom_breed_id).toBe(newBreed.id); + }); + }); + + test('Should be able to create animal batches with various types and breeds at once', async () => { + const [typeName1, typeName2, breedName1, breedName2] = [1, 2, 3, 4].map( + (num) => faker.lorem.word() + num, + ); + const animalBatch1 = mocks.fakeAnimalBatch({ type_name: typeName1 }); + const animalBatch2 = mocks.fakeAnimalBatch({ type_name: typeName2 }); + const animalBatch3 = mocks.fakeAnimalBatch({ + type_name: typeName1, + breed_name: breedName1, + }); + const animalBatch4 = mocks.fakeAnimalBatch({ + type_name: typeName1, + breed_name: breedName2, + }); + const animalBatches = [...Array(3)].map(() => + mocks.fakeAnimalBatch({ default_type_id: defaultTypeId }), + ); + const res = await postAnimalBatchesRequest([ + animalBatch1, + animalBatch2, + animalBatch3, + animalBatch4, + ...animalBatches, + ]); + const [newType1, newType2] = await Promise.all( + [typeName1, typeName2].map(async (name) => await getCustomAnimalType(name)), + ); + const [newBreed1, newBreed2] = await Promise.all( + [breedName1, breedName2].map( + async (name) => await getCustomAnimalBreed(name, 'custom_type_id', newType1.id), + ), + ); + expect(res.status).toBe(201); + expect(res.body.length).toBe(7); + expect(res.body[0].custom_type_id).toBe(newType1.id); + expect(res.body[1].custom_type_id).toBe(newType2.id); + expect(res.body[2].custom_type_id).toBe(newType1.id); + expect(res.body[2].custom_breed_id).toBe(newBreed1.id); + expect(res.body[3].custom_type_id).toBe(newType1.id); + expect(res.body[3].custom_breed_id).toBe(newBreed2.id); + [4, 5, 6].forEach((index) => { + expect(res.body[index].default_type_id).toBe(defaultTypeId); + }); + }); + }); + }); + + // EDIT tests + describe('Edit animal batch tests', () => { + let animalSex1; + let animalSex2; + let animalOrigin2; + let animalRemovalReason; + let animalUse2; + let animalUse3; + + beforeEach(async () => { + // Populate enums + [animalSex1] = await mocks.animal_sexFactory(); + [animalSex2] = await mocks.animal_sexFactory(); + [animalOrigin2] = await mocks.animal_originFactory(); + [animalRemovalReason] = await mocks.animal_removal_reasonFactory(); + [animalUse2] = await mocks.animal_useFactory(); + [animalUse3] = await mocks.animal_useFactory(); + }); + + async function addAnimalBatches(mainFarm, user) { + const [customAnimalType] = await mocks.custom_animal_typeFactory({ + promisedFarm: [mainFarm], + }); + + // Create two batchess, one with a default type and one with a custom type + const firstBatch = mocks.fakeAnimalBatch({ + name: 'edit test 1', + default_type_id: defaultTypeId, + animal_batch_use_relationships: [{ use_id: animalUse2.id }], + sire: 'Unchanged', + count: 4, + sex_detail: [ + { + sex_id: animalSex1.id, + count: 2, + }, + { + sex_id: animalSex2.id, + count: 2, + }, + ], + }); + const secondBatch = mocks.fakeAnimalBatch({ + name: 'edit test 2', + custom_type_id: customAnimalType.id, + animal_batch_use_relationships: [{ use_id: animalUse2.id }], + sire: 'Unchanged', + count: 5, + }); + + const res = await postRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + [firstBatch, secondBatch], + ); + + const returnedFirstBatch = res.body?.find((batch) => batch.name === 'edit test 1'); + const returnedSecondBatch = res.body?.find((batch) => batch.name === 'edit test 2'); + + return { res, returnedFirstBatch, returnedSecondBatch }; + } + + async function editAnimalBatches(mainFarm, user, returnedFirstBatch, returnedSecondBatch) { + const [customAnimalType] = await mocks.custom_animal_typeFactory({ + promisedFarm: [mainFarm], + }); + + // Make edits to batches - does not test all top level batch columns, but all relationships + const updatedFirstBatch = mocks.fakeAnimalBatch({ + // Extra properties are silently removed + extra_non_existant_property: 'hello', + id: returnedFirstBatch.id, + default_type_id: defaultTypeId, + name: 'Update Name 1', + sire: returnedFirstBatch.sire, + sex_detail: [ + { + id: returnedFirstBatch.sex_detail.find((detail) => detail.sex_id === animalSex1.id)?.id, + animal_batch_id: returnedFirstBatch.id, + sex_id: animalSex1.id, + count: 2, + }, + { + id: returnedFirstBatch.sex_detail.find((detail) => detail.sex_id === animalSex2.id)?.id, + animal_batch_id: returnedFirstBatch.id, + sex_id: animalSex2.id, + count: 3, + }, + ], + count: 5, + origin_id: animalOrigin2.id, + // Extra properties are silently removed + animal_removal_reason_id: animalRemovalReason.id, + organic_status: 'Organic', + animal_batch_use_relationships: [{ use_id: animalUse2.id }, { use_id: animalUse3.id }], + }); + const updatedSecondBatch = mocks.fakeAnimalBatch({ + id: returnedSecondBatch.id, + custom_type_id: customAnimalType.id, + name: 'Update Name 1', + sire: returnedSecondBatch.sire, + sex_detail: [ + { + sex_id: animalSex1.id, + count: 2, + }, + { + sex_id: animalSex2.id, + count: 3, + }, + ], + count: 5, + origin_id: animalOrigin2.id, + // Extra properties are silently removed + animal_removal_reason_id: animalRemovalReason.id, + organic_status: 'Organic', + animal_batch_use_relationships: [{ use_id: animalUse2.id }, { use_id: animalUse3.id }], + }); + + const patchRes = await patchRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + [updatedFirstBatch, updatedSecondBatch], + ); + + const [expectedFirstBatch, expectedSecondBatch] = [updatedFirstBatch, updatedSecondBatch].map( + (batch) => { + const { extra_non_existant_property, ...rest } = batch; + return { + ...rest, + animal_removal_reason_id: null, + animal_batch_use_relationships: rest.animal_batch_use_relationships.map((rel) => { + return { + animal_batch_id: rest.id, + use_id: rel.use_id, + other_use: null, + }; + }), + }; + }, + ); + + return { res: patchRes, expectedFirstBatch, expectedSecondBatch }; + } + + test('Admin users should be able to edit batches', async () => { + const roles = [1, 2, 5]; + + for (const role of roles) { + const { mainFarm, user } = await returnUserFarms(role); + + // Add batches to db + const { res: addRes, returnedFirstBatch, returnedSecondBatch } = await addAnimalBatches( + mainFarm, + user, + ); + expect(addRes.status).toBe(201); + + // Edit batches in db + const { res: editRes, expectedFirstBatch, expectedSecondBatch } = await editAnimalBatches( + mainFarm, + user, + returnedFirstBatch, + returnedSecondBatch, + ); + expect(editRes.status).toBe(204); + + // Get updated batches + const { body: batchRecords } = await getRequest({ + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }); + const filteredBatchRecords = batchRecords.filter((record) => + [returnedFirstBatch.id, returnedSecondBatch.id].includes(record.id), + ); + + // Test data matches expected changes + filteredBatchRecords.forEach((record) => { + // Remove properties that were not updated + delete record.internal_identifier; + // Remove base properties + delete record.created_at; + delete record.created_by_user_id; + delete record.deleted; + delete record.updated_at; + delete record.updated_by; + const updatedRecord = [expectedFirstBatch, expectedSecondBatch].find( + (batch) => batch.id === record.id, + ); + expect(record).toMatchObject(updatedRecord); + }); + } + }); + + test('Non-admin users should not be able to edit batches', async () => { + const adminRole = 1; + const { mainFarm, user: admin } = await returnUserFarms(adminRole); + const workerRole = 3; + const [user] = await mocks.usersFactory(); + await mocks.userFarmFactory( + { + promisedUser: [user], + promisedFarm: [mainFarm], + }, + fakeUserFarm(workerRole), + ); + + // Add animals to db with admin + const { res: addRes, returnedFirstBatch, returnedSecondBatch } = await addAnimalBatches( + mainFarm, + admin, + ); + expect(addRes.status).toBe(201); + + // Edit animals in db with non-admin + const { res: editRes } = await editAnimalBatches( + mainFarm, + user, + returnedFirstBatch, + returnedSecondBatch, + ); + + // Test failure + expect(editRes.status).toBe(403); + expect(editRes.error.text).toBe( + 'User does not have the following permission(s): edit:animal_batches', + ); + }); + + test('Should not be able to send out an individual batch instead of an array', async () => { + const { mainFarm, user } = await returnUserFarms(1); + + // Add animals to db + const { res: addRes, returnedFirstBatch } = await addAnimalBatches(mainFarm, user); + expect(addRes.status).toBe(201); + + // Change 1 thing + returnedFirstBatch.sire = 'Changed'; + + const res = await patchRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + { + ...returnedFirstBatch, + }, + ); + + expect(res.status).toBe(400); + expect(res.error.text).toBe('Request body should be an array'); + }); + + test('Should not be able to edit a batch belonging to a different farm', async () => { + const { mainFarm, user } = await returnUserFarms(1); + const [secondFarm] = await mocks.farmFactory(); + + const batch = await makeAnimalBatch(secondFarm, { + default_type_id: defaultTypeId, + }); + + const res = await patchRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + [ + { + id: batch.id, + sire: 'Neighbours sire', + }, + ], + ); + + expect(res).toMatchObject({ + status: 400, + body: { + error: 'Invalid ids', + invalidIds: [batch.id], + }, + }); + + // Check database + const batchRecord = await AnimalBatchModel.query().findById(batch.id); + expect(batchRecord.sire).toBeNull(); + }); + }); + + // REMOVE tests + describe('Remove animal batch tests', () => { + test('Admin users should be able to remove animal batches', async () => { + const roles = [1, 2, 5]; + const animalSex1 = await makeAnimalSex(); + const animalSex2 = await makeAnimalSex(); + + for (const role of roles) { + const { mainFarm, user } = await returnUserFarms(role); + + const firstAnimalBatch = await makeAnimalBatch(mainFarm, { + default_breed_id: defaultBreedId, + default_type_id: defaultTypeId, + count: 6, + sex_detail: [ + { + sex_id: animalSex1.id, + count: 2, + }, + { + sex_id: animalSex2.id, + count: 4, + }, + ], + }); + + const secondAnimalBatch = await makeAnimalBatch(mainFarm, { + default_breed_id: defaultBreedId, + default_type_id: defaultTypeId, + }); + + const res = await removeRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + + [ + { + id: firstAnimalBatch.id, + animal_removal_reason_id: animalRemovalReasonId, + explanation: 'Gifted to neighbor', + removal_date: mockDate, + }, + { + id: secondAnimalBatch.id, + animal_removal_reason_id: animalRemovalReasonId, + explanation: 'Gifted to neighbor', + removal_date: mockDate, + }, + ], + ); + + expect(res.status).toBe(204); + + // Check database to make sure property has been updated + const batchRecords = await AnimalBatchModel.query().whereIn('id', [ + firstAnimalBatch.id, + secondAnimalBatch.id, + ]); + + batchRecords.forEach((record) => { + expect(record.animal_removal_reason_id).toBe(animalRemovalReasonId); + }); + } + }); + + test('Non-admin users should not be able to remove animal batches', async () => { + const roles = [3]; + + for (const role of roles) { + const { mainFarm, user } = await returnUserFarms(role); + + const animalBatch = await makeAnimalBatch(mainFarm, { + default_breed_id: defaultBreedId, + default_type_id: defaultTypeId, + }); + + const res = await removeRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + [ + { + id: animalBatch.id, + animal_removal_reason_id: animalRemovalReasonId, + explanation: 'Gifted to neighbor', + removal_date: mockDate, + }, + ], + ); + + expect(res.status).toBe(403); + expect(res.error.text).toBe( + 'User does not have the following permission(s): edit:animal_batches', + ); + + // Check database + const batchRecord = await AnimalBatchModel.query().findById(animalBatch.id); + expect(batchRecord.animal_removal_reason_id).toBeNull(); + } + }); + + test('Should not be able to send out an individual animal batch instead of an array', async () => { + const { mainFarm, user } = await returnUserFarms(1); + + const animalBatch = await makeAnimalBatch(mainFarm, { + default_breed_id: defaultBreedId, + default_type_id: defaultTypeId, + }); + + const res = await removeRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + + { + id: animalBatch.id, + animal_removal_reason_id: animalRemovalReasonId, + explanation: 'Gifted to neighbor', + removal_date: mockDate, + }, + ); + + expect(res.status).toBe(400); + expect(res.error.text).toBe('Request body should be an array'); + + // Check database + const batchRecord = await AnimalBatchModel.query().findById(animalBatch.id); + expect(batchRecord.animal_removal_reason_id).toBeNull(); + }); + + test('Should not be able to remove an animal batch without providing a removal_date', async () => { + const { mainFarm, user } = await returnUserFarms(1); + + const animalBatch = await makeAnimalBatch(mainFarm, { + default_breed_id: defaultBreedId, + default_type_id: defaultTypeId, + }); + + const res = await removeRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + [ + { + id: animalBatch.id, + animal_removal_reason_id: animalRemovalReasonId, + explanation: 'Gifted to neighbor', + }, + ], + ); + expect(res.status).toBe(400); + expect(res.error.text).toBe('Must send reason and date of removal'); + + // Check database + const batchRecord = await AnimalBatchModel.query().findById(animalBatch.id); + expect(batchRecord.animal_removal_reason_id).toBeNull(); + }); + + test('Should not be able to remove an animal batch belonging to a different farm', async () => { + const { mainFarm, user } = await returnUserFarms(1); + const [secondFarm] = await mocks.farmFactory(); + + const animalBatch = await makeAnimalBatch(secondFarm, { + default_breed_id: defaultBreedId, + default_type_id: defaultTypeId, + }); + + const res = await removeRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + [ + { + id: animalBatch.id, + animal_removal_reason_id: animalRemovalReasonId, + explanation: 'Gifted to neighbor', + removal_date: mockDate, + }, + ], + ); + + expect(res).toMatchObject({ + status: 400, + body: { + error: 'Invalid ids', + invalidIds: [animalBatch.id], + }, + }); + + // Check database + const batchRecord = await AnimalBatchModel.query().findById(animalBatch.id); + expect(batchRecord.animal_removal_reason_id).toBeNull(); + }); + }); + + // DELETE tests + describe('Delete animal batch tests', () => { + const deleteDateParam = `date=2024-11-22`; + + test('Admin users should be able to delete animal batches', async () => { + const roles = [1, 2, 5]; + const animalSex1 = await makeAnimalSex(); + const animalSex2 = await makeAnimalSex(); + + for (const role of roles) { + const { mainFarm, user } = await returnUserFarms(role); + + const firstAnimalBatch = await makeAnimalBatch(mainFarm, { + default_breed_id: defaultBreedId, + default_type_id: defaultTypeId, + count: 6, + sex_detail: [ + { + sex_id: animalSex1.id, + count: 2, + }, + { + sex_id: animalSex2.id, + count: 4, + }, + ], + }); + + const secondAnimalBatch = await makeAnimalBatch(mainFarm, { + default_breed_id: defaultBreedId, + default_type_id: defaultTypeId, + }); + + const res = await deleteRequest({ + user_id: user.user_id, + farm_id: mainFarm.farm_id, + query: `ids=${firstAnimalBatch.id},${secondAnimalBatch.id}&${deleteDateParam}`, + }); + + expect(res.status).toBe(204); + } + }); + + test('Non-admin users should not be able to delete animal batches', async () => { + const roles = [3]; + + for (const role of roles) { + const { mainFarm, user } = await returnUserFarms(role); + + const animalBatch = await makeAnimalBatch(mainFarm, { + default_breed_id: defaultBreedId, + default_type_id: defaultTypeId, + }); + + const res = await deleteRequest({ + user_id: user.user_id, + farm_id: mainFarm.farm_id, + query: `ids=${animalBatch.id}&${deleteDateParam}`, + }); + + expect(res.status).toBe(403); + expect(res.error.text).toBe( + 'User does not have the following permission(s): delete:animal_batches', + ); + } + }); + + test('Must send animal batch ids', async () => { + const { mainFarm, user } = await returnUserFarms(1); + + const res = await deleteRequest({ + user_id: user.user_id, + farm_id: mainFarm.farm_id, + query: `${deleteDateParam}`, + }); + + expect(res).toMatchObject({ + status: 400, + error: { + text: 'Must send ids', + }, + }); + }); + + test('Must send valid queries', async () => { + const { mainFarm, user } = await returnUserFarms(1); + const animalBatch = await makeAnimalBatch(mainFarm, { + default_breed_id: defaultBreedId, + default_type_id: defaultTypeId, + }); + + // Two query params that are not valid batch ids + const res1 = await deleteRequest({ + user_id: user.user_id, + farm_id: mainFarm.farm_id, + query: `ids=${animalBatch.id},,&${deleteDateParam}`, + }); + + expect(res1).toMatchObject({ + status: 400, + error: { + text: 'Must send valid ids', + }, + }); + + // Three query params that are not valid animal ids + const res2 = await deleteRequest({ + user_id: user.user_id, + farm_id: mainFarm.farm_id, + query: `ids=},a,&${deleteDateParam}`, + }); + + expect(res2).toMatchObject({ + status: 400, + error: { + text: 'Must send valid ids', + }, + }); + + // Without date + const res3 = await deleteRequest({ + user_id: user.user_id, + farm_id: mainFarm.farm_id, + query: `ids=${animalBatch.id}`, + }); + + expect(res3).toMatchObject({ + status: 400, + error: { + text: 'Must send date', + }, + }); + }); + + test('Should not be able to remove an animal batch belonging to a different farm', async () => { + const { mainFarm, user } = await returnUserFarms(1); + const [secondFarm] = await mocks.farmFactory(); + + const animalBatch = await makeAnimalBatch(secondFarm, { + default_breed_id: defaultBreedId, + default_type_id: defaultTypeId, + }); + + const res = await deleteRequest({ + user_id: user.user_id, + farm_id: mainFarm.farm_id, + query: `ids=${animalBatch.id}&${deleteDateParam}`, + }); + + expect(res).toMatchObject({ + status: 400, + body: { + error: 'Invalid ids', + invalidIds: [`${animalBatch.id}`], + }, + }); + }); + }); + + // MIDDLEWARE tests + describe('Edit animal batch tests', () => { + let animalSex1; + let animalSex2; + let animalOrigin2; + let animalUse2; + let animalUse3; + let animalBreed; + let animalBreed2; + + beforeEach(async () => { + // Populate enums + [animalSex1] = await mocks.animal_sexFactory(); + [animalSex2] = await mocks.animal_sexFactory(); + [animalOrigin2] = await mocks.animal_originFactory(); + [animalUse2] = await mocks.animal_useFactory(); + [animalUse3] = await mocks.animal_useFactory(); + [animalBreed] = await mocks.default_animal_breedFactory(); + [animalBreed2] = await mocks.default_animal_breedFactory(); + }); + + // Top level structure is endpoint string with value as in caps, value is an array of tests + // Example: {'CREATE': [{test1}, {test2},...],'EDIT': [{test1}, {test2},...} + // Test structure to test 'CREATE' middleware is: + // { testName: 'name', getPostBody: function() {return [batch]}, postErr: {code: 400, message: 'errorMessage'}} + // Test structure to test 'EDIT' middleware is: + // { testName: 'name', getPostBody?: function() {return [batch]}, getPatchBody: function() {return [editedBatch]}, patchErr: {code: 400, message: 'errorMessage'}} } + // Test structure to test raw data expectations is: + // { testName: 'name', getPostBody?: function() {return [batch]}, getPatchBody?: function() {return [editedBatch]}, getRawRecordMismatch: function() return { model: Model, where: {id}, getMatchingBody: function() return [records] } } } + const middlewareErrors = { + CREATE: [ + { + testName: 'Custom type cannot be used with default breed', + getPostBody: (customs) => [ + { + custom_type_id: customs.customAnimalType.id, + default_breed_id: animalBreed.id, + }, + ], + postErr: { + code: 400, + message: 'Default breed must use default type', + }, + }, + { + testName: 'Check create batch sex detail', + getPostBody: (customs) => [ + { + default_type_id: defaultTypeId, + count: 3, + sex_detail: [ + { + sex_id: animalSex1.id, + count: 2, + }, + { + sex_id: animalSex2.id, + count: 2, + }, + ], + }, + ], + postErr: { + code: 400, + message: 'Batch count must be greater than or equal to sex detail count', + }, + }, + ], + EDIT: [ + { + testName: 'Exactly one type provided', + getPatchBody: (batch) => [ + { + id: batch.id, + default_type_id: batch.default_type_id, + type_name: 'string', + }, + ], + patchErr: { + code: 400, + message: 'Exactly one of default_type_id, custom_type_id, or type_name must be sent', + }, + }, + { + testName: 'Custom type id is number', + getPatchBody: (batch) => [ + { + id: batch.id, + custom_type_id: 'string', + }, + ], + patchErr: { + code: 400, + message: 'Must send valid ids', + }, + }, + { + testName: 'Custom id exists', + getPatchBody: (batch) => [ + { + id: batch.id, + custom_type_id: 1000000, + }, + ], + patchErr: { + code: 400, + message: 'Custom type does not exist', + }, + }, + { + testName: 'Custom type does not belong to farm', + getPatchBody: (batch, existingBatches, customs) => [ + { + id: batch.id, + custom_type_id: customs.otherFarm.otherCustomAnimalType.id, + }, + ], + patchErr: { + code: 403, + message: 'Forbidden custom type does not belong to this farm', + }, + }, + { + testName: 'Exactly one breed provided', + getPatchBody: (batch) => [ + { + id: batch.id, + default_type_id: animalBreed.default_type_id, + default_breed_id: animalBreed.id, + breed_name: 'string', + }, + ], + patchErr: { + code: 400, + message: 'Exactly one of default_breed_id, custom_breed_id, or breed_name must be sent', + }, + }, + { + testName: 'Default type matches default breed -- default type is changed', + getPatchBody: (batch, existingBatches) => [ + { + id: existingBatches[0].id, + default_type_id: animalBreed2.default_type_id, + }, + ], + getPostBody: () => [ + { + default_type_id: animalBreed.default_type_id, + default_breed_id: animalBreed.id, + }, + ], + patchErr: { + code: 400, + message: 'Breed does not match type', + }, + }, + { + testName: 'Default type matches default breed -- default breed is changed', + getPatchBody: (batch, existingBatches) => [ + { + id: existingBatches[0].id, + default_breed_id: animalBreed2.id, + }, + ], + getPostBody: () => [ + { + default_type_id: animalBreed.default_type_id, + default_breed_id: animalBreed.id, + }, + ], + patchErr: { + code: 400, + message: 'Breed does not match type', + }, + }, + { + testName: 'Default breed is a number', + getPatchBody: (batch) => [ + { + id: batch.id, + default_breed_id: 'string', + }, + ], + patchErr: { + code: 400, + message: 'Must send valid ids', + }, + }, + { + testName: 'Default breed provided exists (optional to provide)', + getPatchBody: (batch) => [ + { + id: batch.id, + default_breed_id: 1000000, + }, + ], + patchErr: { + code: 400, + message: 'Default breed does not exist', + }, + }, + { + testName: 'Default type matches default breed -- both are changed but mismatch', + getPatchBody: (batch, existingBatches) => [ + { + id: existingBatches[0].id, + default_type_id: animalBreed.default_type_id, + default_breed_id: animalBreed2.id, + }, + ], + getPostBody: () => [ + { + default_type_id: animalBreed.default_type_id, + default_breed_id: animalBreed.id, + }, + ], + patchErr: { + code: 400, + message: 'Breed does not match type', + }, + }, + + { + testName: 'Custom breed is a number', + getPatchBody: (batch) => [ + { + id: batch.id, + custom_breed_id: 'string', + }, + ], + patchErr: { + code: 400, + message: 'Must send valid ids', + }, + }, + { + testName: 'Custom breed provided exists (optional to provide)', + getPatchBody: (batch) => [ + { + id: batch.id, + custom_breed_id: 1000000, + }, + ], + patchErr: { + code: 400, + message: 'Custom breed does not exist', + }, + }, + { + testName: 'Custom breed provided exists (optional to provide)', + getPatchBody: (batch) => [ + { + id: batch.id, + custom_breed_id: 1000000, + }, + ], + patchErr: { + code: 400, + message: 'Custom breed does not exist', + }, + }, + { + testName: 'Custom breed does not belong to farm', + getPatchBody: (batch, existingBatches, customs) => [ + { + id: batch.id, + custom_breed_id: customs.otherFarm.otherCustomAnimalBreed.id, + }, + ], + patchErr: { + code: 403, + message: 'Forbidden custom breed does not belong to this farm', + }, + }, + { + testName: 'Default type matches custom breed -- default type is changed', + getPatchBody: (batch, existingBatches, customs) => [ + { + id: existingBatches[0].id, + default_type_id: animalBreed.default_type_id, + }, + ], + getPostBody: (customs) => [ + { + default_type_id: customs.customAnimalBreed.default_type_id, + custom_breed_id: customs.customAnimalBreed.id, + }, + ], + patchErr: { + code: 400, + message: 'Breed does not match type', + }, + }, + { + testName: 'Default type matches custom breed -- custom type is changed', + getPatchBody: (batch, existingBatches, customs) => [ + { + id: existingBatches[0].id, + custom_type_id: customs.customAnimalBreed2.custom_type_id, + }, + ], + getPostBody: (customs) => [ + { + default_type_id: customs.customAnimalBreed.default_type_id, + custom_breed_id: customs.customAnimalBreed.id, + }, + ], + patchErr: { + code: 400, + message: 'Breed does not match type', + }, + }, + { + testName: 'Default type matches custom breed -- breed and type are changed', + getPatchBody: (batch, existingBatches, customs) => [ + { + id: existingBatches[0].id, + default_type_id: customs.customAnimalBreed.default_type_id, + custom_breed_id: customs.customAnimalBreed2.id, + }, + ], + getPostBody: (customs) => [ + { + default_type_id: customs.customAnimalBreed.default_type_id, + custom_breed_id: customs.customAnimalBreed.id, + }, + ], + patchErr: { + code: 400, + message: 'Breed does not match type', + }, + }, + + { + testName: 'Check edit batch sex detail -- change count', + getPatchBody: (batch, existingBatches) => [ + { + id: existingBatches[0].id, + count: 3, + }, + ], + getPostBody: () => [ + { + default_type_id: animalBreed.default_type_id, + count: 4, + sex_detail: [ + { + sex_id: animalSex1.id, + count: 2, + }, + { + sex_id: animalSex2.id, + count: 2, + }, + ], + }, + ], + patchErr: { + code: 400, + message: 'Batch count must be greater than or equal to sex detail count', + }, + }, + { + testName: 'Check edit batch sex detail -- change sex_detail', + getPatchBody: (batch, existingBatches) => [ + { + id: existingBatches[0].id, + sex_detail: [ + { + sex_id: animalSex1.id, + count: 5, + }, + { + sex_id: animalSex2.id, + count: 2, + }, + ], + }, + ], + getPostBody: () => [ + { + default_type_id: animalBreed.default_type_id, + count: 4, + sex_detail: [ + { + sex_id: animalSex1.id, + count: 2, + }, + { + sex_id: animalSex2.id, + count: 2, + }, + ], + }, + ], + patchErr: { + code: 400, + message: 'Batch count must be greater than or equal to sex detail count', + }, + }, + { + testName: 'Check edit batch sex detail -- duplicate sex ids not allowed', + getPatchBody: (batch, existingBatches) => [ + { + id: existingBatches[0].id, + sex_detail: [ + { + sex_id: animalSex1.id, + count: 1, + }, + { + sex_id: animalSex1.id, + count: 1, + }, + { + sex_id: animalSex2.id, + count: 2, + }, + ], + }, + ], + getPostBody: () => [ + { + default_type_id: animalBreed.default_type_id, + count: 4, + sex_detail: [ + { + sex_id: animalSex1.id, + count: 2, + }, + { + sex_id: animalSex2.id, + count: 1, + }, + ], + }, + ], + patchErr: { + code: 400, + message: 'Duplicate sex ids in detail', + }, + }, + { + testName: 'Check edit batch sex detail -- patching sex id with record id updates record', + getRawRecordMismatch: (existingBatches) => { + return { + model: AnimalBatchSexDetailModel, + where: { animal_batch_id: existingBatches[0].id }, + getMatchingBody: (existingBatches, records) => { + return [ + { + ...records[0], + id: existingBatches[0].sex_detail[0].id, + sex_id: animalSex1.id, + count: 1, + animal_batch_id: existingBatches[0].id, + }, + ]; + }, + }; + }, + getPatchBody: (batch, existingBatches) => [ + { + id: existingBatches[0].id, + sex_detail: [ + { + id: existingBatches[0].sex_detail[0].id, + sex_id: animalSex1.id, + count: 1, + }, + ], + }, + ], + getPostBody: () => [ + { + default_type_id: animalBreed.default_type_id, + count: 4, + sex_detail: [ + { + sex_id: animalSex1.id, + count: 2, + }, + ], + }, + ], + }, + { + testName: + 'Check edit batch sex detail -- patching sex id without record id deletes previous record and adds new one', + getRawRecordMismatch: (existingBatches) => { + return { + model: AnimalBatchSexDetailModel, + where: { animal_batch_id: existingBatches[0].id }, + getMatchingBody: (existingBatches, records) => { + const record1 = records.find( + (record) => record.id === existingBatches[0].sex_detail[0].id, + ); + const record2 = records.find( + (record) => record.id != existingBatches[0].sex_detail[0].id, + ); + return [ + { + ...record1, + id: existingBatches[0].sex_detail[0].id, + sex_id: animalSex1.id, + count: 2, + animal_batch_id: existingBatches[0].id, + deleted: true, + }, + { + ...record2, + id: record2.id, + sex_id: animalSex1.id, + count: 1, + animal_batch_id: existingBatches[0].id, + deleted: false, + }, + ]; + }, + }; + }, + getPatchBody: (batch, existingBatches) => [ + { + id: existingBatches[0].id, + sex_detail: [ + { + sex_id: animalSex1.id, + count: 1, + }, + ], + }, + ], + getPostBody: () => [ + { + default_type_id: animalBreed.default_type_id, + count: 4, + sex_detail: [ + { + sex_id: animalSex1.id, + count: 2, + }, + ], + }, + ], + }, + { + testName: + 'Check edit batch sex detail -- patching sex detail with empty array deletes sex details', + getRawRecordMismatch: (existingBatches) => { + return { + model: AnimalBatchSexDetailModel, + where: { animal_batch_id: existingBatches[0].id }, + getMatchingBody: (existingBatches, records) => { + return [ + { + ...records[0], + deleted: true, + }, + { + ...records[1], + deleted: true, + }, + ]; + }, + }; + }, + getPatchBody: (batch, existingBatches) => [ + { + id: existingBatches[0].id, + sex_detail: [], + }, + ], + getPostBody: () => [ + { + default_type_id: animalBreed.default_type_id, + count: 4, + sex_detail: [ + { + sex_id: animalSex1.id, + count: 2, + }, + { + sex_id: animalSex2.id, + count: 2, + }, + ], + }, + ], + }, + { + testName: 'Use relationships is an array', + getPatchBody: (batch) => [ + { + id: batch.id, + animal_batch_use_relationships: 'string', + }, + ], + patchErr: { + code: 400, + message: 'animal_batch_use_relationships should be an array', + }, + }, + { + testName: 'Other use notes is for other use type', + getPatchBody: (batch) => [ + { + id: batch.id, + animal_batch_use_relationships: [ + { + use_id: animalUse2.id, + other_use: 'Leather', + }, + ], + }, + ], + patchErr: { + code: 400, + message: 'other_use notes is for other use type', + }, + }, + { + testName: 'Check edit use -- patching use relationship with empty array hard deletes use', + getRawRecordMismatch: (existingBatches) => { + return { + model: AnimalBatchUseRelationshipModel, + where: { animal_batch_id: existingBatches[0].id }, + getMatchingBody: (existingBatches, records) => { + return []; + }, + }; + }, + getPatchBody: (batch, existingBatches) => [ + { + id: existingBatches[0].id, + animal_batch_use_relationships: [], + }, + ], + getPostBody: () => [ + { + default_type_id: animalBreed.default_type_id, + animal_batch_use_relationships: [ + { + use_id: animalUse2.id, + }, + { + use_id: animalUse3.id, + }, + ], + }, + ], + }, + { + testName: + 'Check edit use -- patching use relationship requires all pre-existing uses to be present hard deletes missing', + getRawRecordMismatch: (existingBatches) => { + return { + model: AnimalBatchUseRelationshipModel, + where: { animal_batch_id: existingBatches[0].id }, + getMatchingBody: (existingBatches, records) => { + return [ + { + ...records[0], + use_id: animalUse1.id, + other_use: 'Leather', + }, + ]; + }, + }; + }, + getPatchBody: (batch, existingBatches) => [ + { + id: existingBatches[0].id, + animal_batch_use_relationships: [ + { + use_id: animalUse1.id, + other_use: 'Leather', + }, + ], + }, + ], + getPostBody: () => [ + { + default_type_id: animalBreed.default_type_id, + animal_batch_use_relationships: [ + { + use_id: animalUse1.id, + }, + { + use_id: animalUse2.id, + }, + ], + }, + ], + }, + { + testName: 'Origin id must be brought in to have brought in date', + getPatchBody: (batch) => [ + { + id: batch.id, + origin_id: animalOrigin2.id, + brought_in_date: new Date(), + }, + ], + patchErr: { + code: 400, + message: 'Brought in date must be used with brought in origin', + }, + }, + { + testName: 'Cannot create a new type associated with an existing breed', + getPatchBody: (batch, existingBatches, customs) => [ + { + id: batch.id, + custom_breed_id: customs.customAnimalBreed.id, + type_name: 'string', + }, + ], + patchErr: { + code: 400, + message: 'Cannot create a new type associated with an existing breed', + }, + }, + { + testName: 'Change to custom type and null pre-existing breed', + getRawRecordMismatch: (existingBatches) => { + return { + model: AnimalBatchModel, + where: { id: existingBatches[0].id }, + getMatchingBody: (existingBatches, records, customs) => { + return [ + { + ...records[0], + custom_type_id: customs.customAnimalType.id, + custom_breed_id: null, + }, + ]; + }, + }; + }, + getPatchBody: (batch, existingBatches, customs) => [ + { + id: existingBatches[0].id, + custom_type_id: customs.customAnimalType.id, + custom_breed_id: null, + }, + ], + getPostBody: (customs) => [ + { + default_type_id: customs.customAnimalBreed.default_type_id, + custom_breed_id: customs.customAnimalBreed.id, + }, + ], + }, + { + testName: + 'Successfully edit Custom type matches new breed name -- previous breed not exist', + getRawRecordMismatch: (existingBatches, patchedBatches) => { + return { + model: CustomAnimalBreedModel, + where: { id: patchedBatches.custom_breed_id }, + getMatchingBody: (existingBatches, records, customs) => { + return [ + { + ...records[0], + custom_type_id: customs.customAnimalType.id, + breed: 'New breed here', + }, + ]; + }, + }; + }, + getPatchBody: (batch, existingBatches, customs) => [ + { + id: existingBatches[0].id, + custom_type_id: customs.customAnimalType.id, + breed_name: 'New breed here', + }, + ], + getPostBody: () => [ + { + default_type_id: defaultTypeId, + }, + ], + }, + ], + }; + + // Takes middleWareErrors object and makes it into individual tests + for (const errorEndpoint in middlewareErrors) { + middlewareErrors[errorEndpoint].forEach(async (error) => { + await test(`${errorEndpoint} Middleware: ${error.testName}`, async () => { + // Create userFarms needed for tests + const { mainFarm, user } = await returnUserFarms(1); + const { mainFarm: otherFarm } = await returnUserFarms(1); + + // Make, then group, farm specific resources + const [customAnimalType] = await mocks.custom_animal_typeFactory({ + promisedFarm: [mainFarm], + }); + const [customAnimalBreed] = await mocks.custom_animal_breedFactory( + { + promisedFarm: [mainFarm], + }, + undefined, + false, + ); + const [customAnimalBreed2] = await mocks.custom_animal_breedFactory({ + promisedFarm: [mainFarm], + }); + const [otherCustomAnimalType] = await mocks.custom_animal_typeFactory({ + promisedFarm: [otherFarm], + }); + const [otherCustomAnimalBreed] = await mocks.custom_animal_breedFactory({ + promisedFarm: [otherFarm], + }); + const customs = { + customAnimalType, + customAnimalBreed, + customAnimalBreed2, + otherFarm: { otherCustomAnimalType, otherCustomAnimalBreed }, + }; + + // Post endpoint for testing CREATE or testing EDIT against existing record + const makeCheckGetBatch = async (getPostBody) => { + const batches = getPostBody(customs).map((batch) => mocks.fakeAnimalBatch(batch)); + const postRes = await postRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + [...batches], + ); + // If checking error body on post + expect(postRes.status).toBe(error.postErr?.code || 201); + expect(postRes.error.text).toBe(error.postErr?.message || undefined); + return postRes.body; + }; + + let existingBatches; + if (error.getPostBody) { + existingBatches = await makeCheckGetBatch(error.getPostBody); + } + + // Patch endpoint for testing EDIT or testing raw successful records against + const editCheckBatch = async (getPatchBody) => { + // for skipping makeCheckGetBatch + const batch = await makeAnimalBatch(mainFarm, { + default_type_id: defaultTypeId, + }); + const batches = getPatchBody(batch, existingBatches, customs); + const patchRes = await patchRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + [...batches], + ); + // If checking error body on patch + expect(patchRes.status).toBe(error.patchErr?.code || 204); + expect(patchRes.error.text).toBe(error.patchErr?.message || undefined); + const batchesIds = batches.map((batch) => batch.id); + return await AnimalBatchModel.query().findById(batchesIds); + }; + + let patchedBatches; + if (error.getPatchBody) { + patchedBatches = await editCheckBatch(error.getPatchBody); + } + + // For checking raw records made in CREATE or EDIT + const rawGetMatch = async (getRawRecordMismatch) => { + const rawRecordMatch = getRawRecordMismatch(existingBatches, patchedBatches); + // Include deleted + const records = await rawRecordMatch.model + .query() + .where(rawRecordMatch.where) + .context({ showHidden: true }); + const expectedBody = rawRecordMatch.getMatchingBody(existingBatches, records, customs); + // No fallback if provided + expect(records).toEqual(expectedBody); + }; + + if (error.getRawRecordMismatch) { + await rawGetMatch(error.getRawRecordMismatch); + } + }); + }); + } + }); +}); diff --git a/packages/api/tests/animal_group.test.js b/packages/api/tests/animal_group.test.js new file mode 100644 index 0000000000..7885d44324 --- /dev/null +++ b/packages/api/tests/animal_group.test.js @@ -0,0 +1,503 @@ +/* + * Copyright (c) 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import chai from 'chai'; +import util from 'util'; + +import chaiHttp from 'chai-http'; +chai.use(chaiHttp); + +import server from '../src/server.js'; +import knex from '../src/util/knex.js'; +import { tableCleanup } from './testEnvironment.js'; + +jest.mock('jsdom'); +jest.mock('../src/middleware/acl/checkJwt.js', () => + jest.fn((req, _res, next) => { + req.auth = {}; + req.auth.user_id = req.get('user_id'); + next(); + }), +); +import mocks from './mock.factories.js'; +import animalGroupRelationshipModel from '../src/models/animalGroupRelationshipModel.js'; +import animalBatchGroupRelationshipModel from '../src/models/animalBatchGroupRelationshipModel.js'; + +describe('Animal Group Tests', () => { + let farm; + let newOwner; + + function getRequest({ user_id = newOwner.user_id, farm_id = farm.farm_id }, callback) { + chai + .request(server) + .get('/animal_groups') + .set('user_id', user_id) + .set('farm_id', farm_id) + .end(callback); + } + + const getRequestAsPromise = util.promisify(getRequest); + + function postRequest(data, { user_id = newOwner.user_id, farm_id = farm.farm_id }, callback) { + chai + .request(server) + .post('/animal_groups') + .set('Content-Type', 'application/json') + .set('user_id', user_id) + .set('farm_id', farm_id) + .send(data) + .end(callback); + } + + const postRequestAsPromise = util.promisify(postRequest); + + function fakeUserFarm(role = 1) { + return { ...mocks.fakeUserFarm(), role_id: role }; + } + + async function returnUserFarms(role) { + const [mainFarm] = await mocks.farmFactory(); + const [user] = await mocks.usersFactory(); + + await mocks.userFarmFactory( + { + promisedUser: [user], + promisedFarm: [mainFarm], + }, + fakeUserFarm(role), + ); + return { mainFarm, user }; + } + + async function makeAnimalGroup(mainFarm, properties) { + const [animalGroup] = await mocks.animal_groupFactory({ + promisedFarm: [mainFarm], + properties, + }); + return animalGroup; + } + + async function makeAnimal(mainFarm, properties) { + const [animal] = await mocks.animalFactory({ + promisedFarm: [mainFarm], + properties, + }); + return animal; + } + + async function makeAnimalBatch(mainFarm, properties) { + const [animalBatch] = await mocks.animal_batchFactory({ + promisedFarm: [mainFarm], + properties, + }); + return animalBatch; + } + + async function makeAnimalGroupRelationship(animalGroup, animal) { + const [animalGroupRelationship] = await mocks.animal_group_relationshipFactory({ + promisedGroup: [animalGroup], + ...(animal && { promisedAnimal: [animal] }), + }); + return animalGroupRelationship; + } + + async function makeAnimalBatchGroupRelationship(animalGroup, animalBatch) { + const [animalBatchGroupRelationship] = await mocks.animal_batch_group_relationshipFactory({ + promisedGroup: [animalGroup], + ...(animalBatch && { promisedBatch: [animalBatch] }), + }); + return animalBatchGroupRelationship; + } + + beforeEach(async () => { + [farm] = await mocks.farmFactory(); + [newOwner] = await mocks.usersFactory(); + }); + + afterAll(async (done) => { + await tableCleanup(knex); + await knex.destroy(); + done(); + }); + + // GET TESTS + describe('Get animal groups tests', () => { + test.skip('All users should get animal groups for their farm', async () => { + const roles = [1, 2, 3, 5]; + + for (const role of roles) { + const { mainFarm, user } = await returnUserFarms(role); + const [secondFarm] = await mocks.farmFactory(); + + // Create two animals groups and add animals and batches to each of them + const groups = await Promise.all([ + makeAnimalGroup(mainFarm, { name: 'group1' }), + makeAnimalGroup(mainFarm, { name: 'group2' }), + ]); + const animalRelationships = await Promise.all( + groups.map( + async (group) => + await Promise.all([ + makeAnimalGroupRelationship(group), + makeAnimalGroupRelationship(group), + ]), + ), + ); + const batchRelationships = await Promise.all( + groups.map( + async (group) => + await Promise.all([ + makeAnimalBatchGroupRelationship(group), + makeAnimalBatchGroupRelationship(group), + ]), + ), + ); + + // Create a third animal group belonging to a different farm + await makeAnimalGroup(secondFarm); + + const res = await getRequestAsPromise({ + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }); + + expect(res.status).toBe(200); + // Should return first two animal groups + expect(res.body.length).toBe(2); + // Sometimes response is returned in different order than created + // TODO: Find a better solution to this: + const orderedMockGroupIds = res.body.map((group) => + groups.findIndex(({ name }) => name === group.name), + ); + + res.body.forEach((group, index) => { + expect(group.farm_id).toBe(mainFarm.farm_id); + expect(group.name).toBe(groups[orderedMockGroupIds[index]].name); + // Match relationships in any order + expect(group.related_animal_ids.sort()).toEqual( + animalRelationships[orderedMockGroupIds[index]] + .map((relationship) => relationship.animal_id) + .sort(), + ); + expect(group.related_batch_ids.sort()).toEqual( + batchRelationships[orderedMockGroupIds[index]] + .map((relationship) => relationship.animal_batch_id) + .sort(), + ); + }); + } + }); + + test.skip('Unauthorized user should get 403 if they try to get animals', async () => { + const { mainFarm } = await returnUserFarms(1); + await makeAnimalGroup(mainFarm); + const [unAuthorizedUser] = await mocks.usersFactory(); + + const res = await getRequestAsPromise({ + user_id: unAuthorizedUser.user_id, + farm_id: mainFarm.farm_id, + }); + + expect(res.status).toBe(403); + expect(res.error.text).toBe( + 'User does not have the following permission(s): get:animal_groups', + ); + }); + + test.skip('Groups should not include deleted animals or batches', async () => { + const { mainFarm, user } = await returnUserFarms(1); + + const group = await makeAnimalGroup(mainFarm); + + const animal = await makeAnimal(mainFarm, { deleted: true }); + const batch = await makeAnimalBatch(mainFarm, { deleted: true }); + + await makeAnimalGroupRelationship(group, animal); + await makeAnimalBatchGroupRelationship(group, batch); + + const res = await getRequestAsPromise({ + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }); + + // Should return only one animal group with no related ids + expect(res.status).toBe(200); + expect(res.body.length).toBe(1); + + const resGroup = res.body[0]; + expect(resGroup.name).toBe(group.name); + expect(resGroup.related_animal_ids).toEqual([]); + expect(resGroup.related_batch_ids).toEqual([]); + }); + }); + + // POST TESTS + describe('POST animal groups tests', () => { + test.skip('Admin users should create animal groups for their farm', async () => { + const adminRoles = [1, 2, 5]; + + for (const role of adminRoles) { + const { mainFarm, user } = await returnUserFarms(role); + + const firstAnimal = await makeAnimal(mainFarm); + const secondAnimal = await makeAnimal(mainFarm); + + const firstAnimalBatch = await makeAnimalBatch(mainFarm); + const secondAnimalBatch = await makeAnimalBatch(mainFarm); + + const animalGroup = mocks.fakeAnimalGroup(); + + const related_animal_ids = [firstAnimal.id, secondAnimal.id]; + const related_batch_ids = [firstAnimalBatch.id, secondAnimalBatch.id]; + + const res = await postRequestAsPromise( + { + ...animalGroup, + related_animal_ids, + related_batch_ids, + }, + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + ); + + // Check response + expect(res).toMatchObject({ + status: 201, + body: { + farm_id: mainFarm.farm_id, + created_by_user_id: user.user_id, + name: animalGroup.name, + notes: animalGroup.notes, + }, + }); + + const { id } = res.body; + + // Check join tables + const animal_group_relationship = await animalGroupRelationshipModel + .query() + .where({ animal_group_id: id }); + + expect(animal_group_relationship).toHaveLength(related_animal_ids.length); + animal_group_relationship.forEach((record) => { + expect(related_animal_ids).toContain(record.animal_id); + }); + + const animal_batch_group_relationship = await animalBatchGroupRelationshipModel + .query() + .where({ animal_group_id: id }); + + expect(animal_batch_group_relationship).toHaveLength(related_batch_ids.length); + animal_batch_group_relationship.forEach((record) => { + expect(related_batch_ids).toContain(record.animal_batch_id); + }); + } + }); + + test.skip('Workers should not be able to create animal groups', async () => { + const { mainFarm, user } = await returnUserFarms(3); + + const firstAnimal = await makeAnimal(mainFarm); + const secondAnimal = await makeAnimal(mainFarm); + + const firstAnimalBatch = await makeAnimalBatch(mainFarm); + const secondAnimalBatch = await makeAnimalBatch(mainFarm); + + const animalGroup = mocks.fakeAnimalGroup(); + + const res = await postRequestAsPromise( + { + ...animalGroup, + related_animal_ids: [firstAnimal.id, secondAnimal.id], + related_batch_ids: [firstAnimalBatch.id, secondAnimalBatch.id], + }, + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + ); + + expect(res.status).toBe(403); + expect(res.error.text).toBe( + 'User does not have the following permission(s): add:animal_groups', + ); + }); + + test.skip('Should be possible to create empty groups', async () => { + const { mainFarm, user } = await returnUserFarms(1); + + const animalGroup = mocks.fakeAnimalGroup(); + + const res = await postRequestAsPromise( + { + ...animalGroup, + related_animal_ids: [], + related_batch_ids: [], + }, + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + ); + + // Check response + expect(res).toMatchObject({ + status: 201, + body: { + farm_id: mainFarm.farm_id, + created_by_user_id: user.user_id, + name: animalGroup.name, + notes: animalGroup.notes, + }, + }); + + const { id } = res.body; + + // Check join tables + const animal_group_relationship = await animalGroupRelationshipModel + .query() + .where({ animal_group_id: id }); + + expect(animal_group_relationship).toHaveLength(0); + + const animal_batch_group_relationship = await animalBatchGroupRelationshipModel + .query() + .where({ animal_group_id: id }); + + expect(animal_batch_group_relationship).toHaveLength(0); + }); + + test.skip('Should not be possible to create groups with the same name as existing animal groups', async () => { + const { mainFarm, user } = await returnUserFarms(1); + + const animalGroup = mocks.fakeAnimalGroup(); + + await postRequestAsPromise( + { + ...animalGroup, + related_animal_ids: [], + related_batch_ids: [], + }, + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + ); + + const res = await postRequestAsPromise( + { + ...animalGroup, + related_animal_ids: [], + related_batch_ids: [], + }, + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + ); + + // Check response + expect(res.status).toBe(409); + }); + + test.skip('Should not be possible to created animal groups with animals from other farms', async () => { + const { mainFarm, user } = await returnUserFarms(1); + const [secondFarm] = await mocks.farmFactory(); + + const firstAnimal = await makeAnimal(mainFarm); + const secondAnimal = await makeAnimal(secondFarm); + + const related_animal_ids = [firstAnimal.id, secondAnimal.id]; + const related_batch_ids = []; + + const animalGroup = mocks.fakeAnimalGroup(); + + const res = await postRequestAsPromise( + { + ...animalGroup, + related_animal_ids, + related_batch_ids, + }, + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + ); + + // Check response + expect(res).toMatchObject({ + status: 400, + body: { + error: 'Invalid ids', + invalidAnimalIds: [secondAnimal.id], + invalidBatchIds: [], + }, + }); + + // Check that nothing has been added to join table + const animal_group_relationship = await animalGroupRelationshipModel + .query() + .where({ animal_id: firstAnimal.id }) + .orWhere({ animal_id: secondAnimal.id }); + + expect(animal_group_relationship).toHaveLength(0); + }); + + test.skip('Should not be possible to created animal groups with batches from other farms', async () => { + const { mainFarm, user } = await returnUserFarms(1); + const [secondFarm] = await mocks.farmFactory(); + + const firstBatch = await makeAnimalBatch(mainFarm); + const secondBatch = await makeAnimalBatch(secondFarm); + + const related_animal_ids = []; + const related_batch_ids = [firstBatch.id, secondBatch.id]; + + const animalGroup = mocks.fakeAnimalGroup(); + + const res = await postRequestAsPromise( + { + ...animalGroup, + related_animal_ids, + related_batch_ids, + }, + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + ); + + // Check response + expect(res).toMatchObject({ + status: 400, + body: { + error: 'Invalid ids', + invalidAnimalIds: [], + invalidBatchIds: [secondBatch.id], + }, + }); + + // Check that nothing has been added to join table + const animal_batch_group_relationship = await animalBatchGroupRelationshipModel + .query() + .where({ animal_batch_id: firstBatch.id }) + .orWhere({ animal_batch_id: secondBatch.id }); + + expect(animal_batch_group_relationship).toHaveLength(0); + }); + }); +}); diff --git a/packages/api/tests/animal_identifier_color.test.js b/packages/api/tests/animal_identifier_color.test.js new file mode 100644 index 0000000000..3df28fc978 --- /dev/null +++ b/packages/api/tests/animal_identifier_color.test.js @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import chai from 'chai'; +import util from 'util'; + +import chaiHttp from 'chai-http'; +chai.use(chaiHttp); + +import server from '../src/server.js'; +import knex from '../src/util/knex.js'; +import { tableCleanup } from './testEnvironment.js'; + +jest.mock('jsdom'); +jest.mock('../src/middleware/acl/checkJwt.js', () => + jest.fn((req, _res, next) => { + req.auth = {}; + req.auth.user_id = req.get('user_id'); + next(); + }), +); +import mocks from './mock.factories.js'; + +describe('Animal Identifier Color Tests', () => { + let farm; + let newOwner; + + function getRequest({ user_id = newOwner.user_id, farm_id = farm.farm_id }, callback) { + chai + .request(server) + .get('/animal_identifier_colors') + .set('user_id', user_id) + .set('farm_id', farm_id) + .end(callback); + } + + const getRequestAsPromise = util.promisify(getRequest); + + function fakeUserFarm(role = 1) { + return { ...mocks.fakeUserFarm(), role_id: role }; + } + + async function returnUserFarms(role) { + const [mainFarm] = await mocks.farmFactory(); + const [user] = await mocks.usersFactory(); + + await mocks.userFarmFactory( + { + promisedUser: [user], + promisedFarm: [mainFarm], + }, + fakeUserFarm(role), + ); + return { mainFarm, user }; + } + + async function makeAnimalIdentifierColor(properties) { + const [animalIdentifierColor] = await mocks.animal_identifier_colorFactory({ + properties, + }); + return animalIdentifierColor; + } + + beforeEach(async () => { + [farm] = await mocks.farmFactory(); + [newOwner] = await mocks.usersFactory(); + }); + + afterEach(async (done) => { + await tableCleanup(knex); + done(); + }); + + afterAll(async (done) => { + await knex.destroy(); + done(); + }); + + // GET TESTS + describe('Get animal identifier color tests', () => { + test('All users should get animal identifier colors', async () => { + const roles = [1, 2, 3, 5]; + const firstAnimalIdentifierColor = await makeAnimalIdentifierColor(); + const secondAnimalIdentifierColor = await makeAnimalIdentifierColor(); + + for (const role of roles) { + const { mainFarm, user } = await returnUserFarms(role); + + const res = await getRequestAsPromise({ + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }); + + expect(res.status).toBe(200); + // Should return both colors + expect(res.body.length).toBe(2); + expect(firstAnimalIdentifierColor).toMatchObject(res.body[0]); + expect(secondAnimalIdentifierColor).toMatchObject(res.body[1]); + } + }); + }); +}); diff --git a/packages/api/tests/animal_identifier_type.test.js b/packages/api/tests/animal_identifier_type.test.js new file mode 100644 index 0000000000..593d811862 --- /dev/null +++ b/packages/api/tests/animal_identifier_type.test.js @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import chai from 'chai'; +import chaiHttp from 'chai-http'; +chai.use(chaiHttp); + +import server from '../src/server.js'; +import knex from '../src/util/knex.js'; +import { tableCleanup } from './testEnvironment.js'; +import mocks from './mock.factories.js'; + +jest.mock('jsdom'); +jest.mock('../src/middleware/acl/checkJwt.js', () => + jest.fn((req, _res, next) => { + req.auth = {}; + req.auth.user_id = req.get('user_id'); + next(); + }), +); + +async function returnUserFarms(role) { + const [mainFarm] = await mocks.farmFactory(); + const [user] = await mocks.usersFactory(); + + await mocks.userFarmFactory( + { + promisedUser: [user], + promisedFarm: [mainFarm], + }, + { ...mocks.fakeUserFarm(), role_id: role }, + ); + return { mainFarm, user }; +} + +describe('Animal identifier type tests', () => { + describe('GET /animal_identifier_types', () => { + let farm; + let newOwner; + + beforeEach(async () => { + [farm] = await mocks.farmFactory(); + [newOwner] = await mocks.usersFactory(); + }); + + afterEach(async (done) => { + await tableCleanup(knex); + done(); + }); + + afterAll(async (done) => { + await knex.destroy(); + done(); + }); + + test('should return all animal identifiers for all users', async () => { + const mockIdentifiers = await mocks.animal_identifier_typeFactory(3); + const requester = chai.request(server).keepOpen(); + + async function makeRequest(user) { + const { + user: { user_id }, + mainFarm: { farm_id }, + } = await returnUserFarms(user); + + const response = await requester + .get('/animal_identifier_types') + .set('user_id', user_id) + .set('farm_id', farm_id); + + expect(response.status).toBe(200); + expect(response.body).toMatchObject(mockIdentifiers); + } + + await Promise.all([1, 2, 3, 5].map(makeRequest)); + requester.close(); + }); + }); +}); diff --git a/packages/api/tests/animal_origin.test.js b/packages/api/tests/animal_origin.test.js new file mode 100644 index 0000000000..c6cd5ee38f --- /dev/null +++ b/packages/api/tests/animal_origin.test.js @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import chai from 'chai'; +import util from 'util'; + +import chaiHttp from 'chai-http'; +chai.use(chaiHttp); + +import server from '../src/server.js'; +import knex from '../src/util/knex.js'; +import { tableCleanup } from './testEnvironment.js'; + +jest.mock('jsdom'); +jest.mock('../src/middleware/acl/checkJwt.js', () => + jest.fn((req, _res, next) => { + req.auth = {}; + req.auth.user_id = req.get('user_id'); + next(); + }), +); +import mocks from './mock.factories.js'; + +describe('Animal Origin Tests', () => { + let farm; + let newOwner; + + function getRequest({ user_id = newOwner.user_id, farm_id = farm.farm_id }, callback) { + chai + .request(server) + .get('/animal_origins') + .set('user_id', user_id) + .set('farm_id', farm_id) + .end(callback); + } + + const getRequestAsPromise = util.promisify(getRequest); + + function fakeUserFarm(role = 1) { + return { ...mocks.fakeUserFarm(), role_id: role }; + } + + async function returnUserFarms(role) { + const [mainFarm] = await mocks.farmFactory(); + const [user] = await mocks.usersFactory(); + + await mocks.userFarmFactory( + { + promisedUser: [user], + promisedFarm: [mainFarm], + }, + fakeUserFarm(role), + ); + return { mainFarm, user }; + } + + async function makeAnimalOrigin(properties) { + const [animalOrigin] = await mocks.animal_originFactory(); + return animalOrigin; + } + + beforeEach(async () => { + [farm] = await mocks.farmFactory(); + [newOwner] = await mocks.usersFactory(); + }); + + afterEach(async (done) => { + await tableCleanup(knex); + done(); + }); + + afterAll(async (done) => { + await knex.destroy(); + done(); + }); + + // GET TESTS + describe('Get animal origin tests', () => { + test('All users should get animal origins', async () => { + const roles = [1, 2, 3, 5]; + const firstAnimalOrigin = await makeAnimalOrigin(); + const secondAnimalOrigin = await makeAnimalOrigin(); + + for (const role of roles) { + const { mainFarm, user } = await returnUserFarms(role); + + const res = await getRequestAsPromise({ + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }); + + expect(res.status).toBe(200); + // Should return both colors + expect(res.body.length).toBe(2); + expect(firstAnimalOrigin).toMatchObject(res.body[0]); + expect(secondAnimalOrigin).toMatchObject(res.body[1]); + } + }); + }); +}); diff --git a/packages/api/tests/animal_removal_reason.test.js b/packages/api/tests/animal_removal_reason.test.js new file mode 100644 index 0000000000..aa84dfda36 --- /dev/null +++ b/packages/api/tests/animal_removal_reason.test.js @@ -0,0 +1,109 @@ +/* + * Copyright (c) 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import chai from 'chai'; + +import chaiHttp from 'chai-http'; +chai.use(chaiHttp); + +import server from '../src/server.js'; +import knex from '../src/util/knex.js'; +import { tableCleanup } from './testEnvironment.js'; + +jest.mock('jsdom'); +jest.mock('../src/middleware/acl/checkJwt.js', () => + jest.fn((req, _res, next) => { + req.auth = {}; + req.auth.user_id = req.get('user_id'); + next(); + }), +); +import mocks from './mock.factories.js'; + +describe('Animal Removal Reason Tests', () => { + let farm; + let newOwner; + + async function getRequest({ user_id = newOwner.user_id, farm_id = farm.farm_id }) { + return await chai + .request(server) + .get('/animal_removal_reasons') + .set('user_id', user_id) + .set('farm_id', farm_id); + } + + function fakeUserFarm(role = 1) { + return { ...mocks.fakeUserFarm(), role_id: role }; + } + + async function returnUserFarms(role) { + const [mainFarm] = await mocks.farmFactory(); + const [user] = await mocks.usersFactory(); + + await mocks.userFarmFactory( + { + promisedUser: [user], + promisedFarm: [mainFarm], + }, + fakeUserFarm(role), + ); + return { mainFarm, user }; + } + + async function makeAnimalRemovalReason(properties) { + const [animalRemovalReason] = await mocks.animal_removal_reasonFactory({ + properties, + }); + return animalRemovalReason; + } + + beforeEach(async () => { + [farm] = await mocks.farmFactory(); + [newOwner] = await mocks.usersFactory(); + }); + + afterEach(async (done) => { + await tableCleanup(knex); + done(); + }); + + afterAll(async (done) => { + await knex.destroy(); + done(); + }); + + // GET TESTS + describe('GET animal removal reason tests', () => { + test('All users should get animal removal reasons', async () => { + const roles = [1, 2, 3, 5]; + const firstAnimalRemovalReason = await makeAnimalRemovalReason(); + const secondAnimalRemovalReason = await makeAnimalRemovalReason(); + + for (const role of roles) { + const { mainFarm, user } = await returnUserFarms(role); + + const res = await getRequest({ + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }); + + expect(res.status).toBe(200); + expect(res.body).toEqual( + expect.arrayContaining([firstAnimalRemovalReason, secondAnimalRemovalReason]), + ); + } + }); + }); +}); diff --git a/packages/api/tests/animal_sex.test.js b/packages/api/tests/animal_sex.test.js new file mode 100644 index 0000000000..ff1fbce786 --- /dev/null +++ b/packages/api/tests/animal_sex.test.js @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import chai from 'chai'; +import util from 'util'; + +import chaiHttp from 'chai-http'; +chai.use(chaiHttp); + +import server from '../src/server.js'; +import knex from '../src/util/knex.js'; +import { tableCleanup } from './testEnvironment.js'; + +jest.mock('jsdom'); +jest.mock('../src/middleware/acl/checkJwt.js', () => + jest.fn((req, _res, next) => { + req.auth = {}; + req.auth.user_id = req.get('user_id'); + next(); + }), +); +import mocks from './mock.factories.js'; + +describe('Animal Sex Tests', () => { + let farm; + let newOwner; + + function getRequest({ user_id = newOwner.user_id, farm_id = farm.farm_id }, callback) { + chai + .request(server) + .get('/animal_sexes') + .set('user_id', user_id) + .set('farm_id', farm_id) + .end(callback); + } + + const getRequestAsPromise = util.promisify(getRequest); + + function fakeUserFarm(role = 1) { + return { ...mocks.fakeUserFarm(), role_id: role }; + } + + async function returnUserFarms(role) { + const [mainFarm] = await mocks.farmFactory(); + const [user] = await mocks.usersFactory(); + + await mocks.userFarmFactory( + { + promisedUser: [user], + promisedFarm: [mainFarm], + }, + fakeUserFarm(role), + ); + return { mainFarm, user }; + } + + async function makeAnimalSex(properties) { + const [animalSex] = await mocks.animal_sexFactory({ + properties, + }); + return animalSex; + } + + beforeEach(async () => { + [farm] = await mocks.farmFactory(); + [newOwner] = await mocks.usersFactory(); + }); + + afterEach(async (done) => { + await tableCleanup(knex); + done(); + }); + + afterAll(async (done) => { + await knex.destroy(); + done(); + }); + + // GET TESTS + describe('Get animal sex tests', () => { + test('All users should get animal sexes', async () => { + const roles = [1, 2, 3, 5]; + const firstAnimalSex = await makeAnimalSex(); + const secondAnimalSex = await makeAnimalSex(); + + for (const role of roles) { + const { mainFarm, user } = await returnUserFarms(role); + + const res = await getRequestAsPromise({ + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }); + + expect(res.status).toBe(200); + // Should return both colors + expect(res.body.length).toBe(2); + expect(firstAnimalSex).toMatchObject(res.body[0]); + expect(secondAnimalSex).toMatchObject(res.body[1]); + } + }); + }); +}); diff --git a/packages/api/tests/animal_union_batch.test.js b/packages/api/tests/animal_union_batch.test.js new file mode 100644 index 0000000000..d41108312b --- /dev/null +++ b/packages/api/tests/animal_union_batch.test.js @@ -0,0 +1,168 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import chai from 'chai'; +import chaiHttp from 'chai-http'; + +chai.use(chaiHttp); +import server from '../src/server.js'; +import knex from '../src/util/knex.js'; + +jest.mock('jsdom'); +jest.mock('../src/middleware/acl/checkJwt.js', () => + jest.fn((req, res, next) => { + req.auth = {}; + req.auth.user_id = req.get('user_id'); + next(); + }), +); +import { tableCleanup } from './testEnvironment.js'; +import mocks from './mock.factories.js'; +import animalUnionBatchIdViewModel from '../src/models/animalUnionBatchIdViewModel.js'; +import { makeAnimalOrBatchForFarm } from './utils/animalUtils.js'; + +const getAnimals = async (user_id, farm_id) => { + return chai.request(server).get('/animals').set('user_id', user_id).set('farm_id', farm_id); +}; + +const getBatches = async (user_id, farm_id) => { + return chai + .request(server) + .get('/animal_batches') + .set('user_id', user_id) + .set('farm_id', farm_id); +}; + +const patchAnimals = async (user_id, farm_id, data) => { + return chai + .request(server) + .patch('/animals') + .set('Content-Type', 'application/json') + .set('user_id', user_id) + .set('farm_id', farm_id) + .send(data); +}; + +const patchBatches = async (user_id, farm_id, data) => { + return chai + .request(server) + .patch('/animal_batches') + .set('Content-Type', 'application/json') + .set('user_id', user_id) + .set('farm_id', farm_id) + .send(data); +}; + +describe('Animal Union Batch Tests', () => { + afterEach(async (done) => { + await tableCleanup(knex); + done(); + }); + + afterAll(async (done) => { + await knex.destroy(); + done(); + }); + + // MODEL TESTS + describe('Animal Union Batch Model Tests', () => { + test('Internal identifiers should not change over time', async () => { + const [firstFarm] = await mocks.farmFactory(); + const [secondFarm] = await mocks.farmFactory(); + + // add animalBatchId later + const animalsAndBatches = [ + { farm: firstFarm, kind: 'animal', expectedInternalIdentifier: 1 }, + { farm: firstFarm, kind: 'animal', expectedInternalIdentifier: 2 }, + { farm: firstFarm, kind: 'animal', expectedInternalIdentifier: 3 }, + { farm: secondFarm, kind: 'batch', expectedInternalIdentifier: 1 }, + { farm: firstFarm, kind: 'animal', expectedInternalIdentifier: 4 }, + { farm: firstFarm, kind: 'batch', expectedInternalIdentifier: 5 }, + { farm: firstFarm, kind: 'batch', expectedInternalIdentifier: 6 }, + { farm: secondFarm, kind: 'batch', expectedInternalIdentifier: 2 }, + { farm: firstFarm, kind: 'animal', expectedInternalIdentifier: 7 }, + { farm: secondFarm, kind: 'animal', expectedInternalIdentifier: 3 }, + ]; + + for (const [index, { farm, kind }] of animalsAndBatches.entries()) { + const data = await makeAnimalOrBatchForFarm({ kind, farm }); + animalsAndBatches[index].animalBatchId = data.id; + + // check all internal_identifiers in VIEW every time a row is inserted to animal or batch table + const animalsAndBatchesInVIEW = await animalUnionBatchIdViewModel + .query() + .select('id', 'batch', 'internal_identifier'); + + animalsAndBatchesInVIEW.forEach(({ id, batch, internal_identifier }) => { + const { expectedInternalIdentifier } = animalsAndBatches.find( + ({ animalBatchId, kind }) => { + const isBatch = kind === 'batch'; + return id === animalBatchId && isBatch === batch; + }, + ); + + expect(internal_identifier).toBe(expectedInternalIdentifier); + }); + } + }); + + test('Internal identifiers should not change after data is updated', async () => { + const [{ user_id, farm_id }] = await mocks.userFarmFactory({ roleId: 1 }); + + const animals = await Promise.all( + Array(4) + .fill() + .map(() => mocks.animalFactory({ promisedFarm: [{ farm_id }] })), + ); + const batches = await Promise.all( + Array(4) + .fill() + .map(() => mocks.animal_batchFactory({ promisedFarm: [{ farm_id }] })), + ); + + // Set created_at to a fixed value to ensure the order is determined by other columns (batch, id) + await knex('animal').update({ created_at: '2024-11-08 00:00:00.000-00' }); + await knex('animal_batch').update({ created_at: '2024-11-08 00:00:00.000-00' }); + + const animalsBeforeRes = await getAnimals(user_id, farm_id); + const batchesBeforeRes = await getBatches(user_id, farm_id); + + for (let i = 0; i < 10; i++) { + await patchAnimals( + user_id, + farm_id, + animals.map(([animal]) => ({ id: animal.id, notes: '' })), + ); + await patchBatches( + user_id, + farm_id, + batches.map(([batch]) => ({ id: batch.id, notes: '' })), + ); + + const animalsAfterRes = await getAnimals(user_id, farm_id); + animalsBeforeRes.body.forEach((before) => { + const after = animalsAfterRes.body.find(({ id }) => before.id === id); + expect(before.internal_identifier).toBe(after.internal_identifier); + }); + + const batchesAfterRes = await getBatches(user_id, farm_id); + batchesBeforeRes.body.forEach((before) => { + const after = batchesAfterRes.body.find(({ id }) => before.id === id); + expect(before.internal_identifier).toBe(after.internal_identifier); + }); + } + }); + }); +}); diff --git a/packages/api/tests/animal_use.test.js b/packages/api/tests/animal_use.test.js new file mode 100644 index 0000000000..777f971110 --- /dev/null +++ b/packages/api/tests/animal_use.test.js @@ -0,0 +1,144 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import chai from 'chai'; + +import chaiHttp from 'chai-http'; +chai.use(chaiHttp); + +import server from '../src/server.js'; +import knex from '../src/util/knex.js'; +import { tableCleanup } from './testEnvironment.js'; + +jest.mock('jsdom'); +jest.mock('../src/middleware/acl/checkJwt.js', () => + jest.fn((req, _res, next) => { + req.auth = {}; + req.auth.user_id = req.get('user_id'); + next(); + }), +); +import mocks from './mock.factories.js'; + +describe('Animal Use Tests', () => { + let farm; + let newOwner; + + const getRequest = async ({ user_id = newOwner.user_id, farm_id = farm.farm_id }) => { + const response = await chai + .request(server) + .get('/animal_uses') + .set('user_id', user_id) + .set('farm_id', farm_id); + + return response; + }; + + function fakeUserFarm(role = 1) { + return { ...mocks.fakeUserFarm(), role_id: role }; + } + + async function returnUserFarms(role) { + const [mainFarm] = await mocks.farmFactory(); + const [user] = await mocks.usersFactory(); + + await mocks.userFarmFactory( + { + promisedUser: [user], + promisedFarm: [mainFarm], + }, + fakeUserFarm(role), + ); + return { mainFarm, user }; + } + + async function makeAnimalUse(properties) { + const [animalUse] = await mocks.animal_useFactory({ + properties, + }); + return animalUse; + } + + async function makeAnimalTypeUseRelationship(defaultType, use) { + const [animalTypeUseRelationship] = await mocks.animal_type_use_relationshipFactory({ + promisedDefaultAnimalType: [defaultType], + promisedAnimalUse: [use], + }); + return animalTypeUseRelationship; + } + + beforeEach(async () => { + [farm] = await mocks.farmFactory(); + [newOwner] = await mocks.usersFactory(); + }); + + afterEach(async (done) => { + await tableCleanup(knex); + done(); + }); + + afterAll(async (done) => { + await knex.destroy(); + done(); + }); + + describe('Get animal use tests', () => { + test('All users should get animal uses', async () => { + const roles = [1, 2, 3, 5]; + const [use1, use2, use3, use4, use5, use6, use7, use8] = await Promise.all( + [1, 2, 3, 4, 5, 6, 7, 8].map(async () => await makeAnimalUse()), + ); + + const [defaultType1] = await mocks.default_animal_typeFactory(); + const [defaultType2] = await mocks.default_animal_typeFactory(); + + const testCase = [ + { defaultType: defaultType1, uses: [use1, use2, use3, use6, use7, use8] }, + { defaultType: defaultType2, uses: [use1, use5, use6, use7, use8] }, + { defaultType: null, uses: [use1, use2, use3, use4, use5, use6, use7, use8] }, // for custom types + ]; + + for (let { defaultType, uses } of testCase) { + if (defaultType) { + for (let use of uses) { + await makeAnimalTypeUseRelationship(defaultType, use); + } + } + } + + for (const role of roles) { + const { mainFarm, user } = await returnUserFarms(role); + + const res = await getRequest({ + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }); + + expect(res.status).toBe(200); + expect(res.body.length).toBe(3); + + res.body.forEach(({ default_type_id, uses }) => { + const expectedTypeAndUses = testCase.find(({ defaultType }) => { + return default_type_id ? defaultType.id === default_type_id : !defaultType; + }); + + expect(uses.map(({ id }) => id).sort()).toEqual( + expectedTypeAndUses.uses.map(({ id }) => id).sort(), + ); + }); + } + }); + }); +}); diff --git a/packages/api/tests/custom_animal_breed.test.js b/packages/api/tests/custom_animal_breed.test.js new file mode 100644 index 0000000000..6d3a1cbd4a --- /dev/null +++ b/packages/api/tests/custom_animal_breed.test.js @@ -0,0 +1,402 @@ +/* + * Copyright (c) 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import chai from 'chai'; +import util from 'util'; + +import chaiHttp from 'chai-http'; +chai.use(chaiHttp); + +import server from '../src/server.js'; +import knex from '../src/util/knex.js'; +import { tableCleanup } from './testEnvironment.js'; + +jest.mock('jsdom'); +jest.mock('../src/middleware/acl/checkJwt.js', () => + jest.fn((req, _res, next) => { + req.auth = {}; + req.auth.user_id = req.get('user_id'); + next(); + }), +); +import mocks from './mock.factories.js'; +import customAnimalBreedModel from '../src/models/customAnimalBreedModel.js'; + +describe('Custom Animal Breed Tests', () => { + let farm; + let newOwner; + let defaultTypeId; + + beforeAll(async () => { + const [defaultAnimalType] = await mocks.default_animal_typeFactory(); + defaultTypeId = defaultAnimalType.id; + }); + + function getRequest( + { user_id = newOwner.user_id, farm_id = farm.farm_id, query_params_string }, + callback, + ) { + chai + .request(server) + .get(`/custom_animal_breeds?${query_params_string}`) + .set('user_id', user_id) + .set('farm_id', farm_id) + .end(callback); + } + + const getRequestAsPromise = util.promisify(getRequest); + + function postRequest(data, { user_id, farm_id }, callback) { + chai + .request(server) + .post(`/custom_animal_breeds`) + .set('Content-Type', 'application/json') + .set('user_id', user_id) + .set('farm_id', farm_id) + .send(data) + .end(callback); + } + + const postRequestAsPromise = util.promisify(postRequest); + + function fakeUserFarm(role = 1) { + return { ...mocks.fakeUserFarm(), role_id: role }; + } + + async function returnUserFarms(role) { + const [mainFarm] = await mocks.farmFactory(); + const [user] = await mocks.usersFactory(); + + await mocks.userFarmFactory( + { + promisedUser: [user], + promisedFarm: [mainFarm], + }, + fakeUserFarm(role), + ); + return { mainFarm, user }; + } + + async function makeCustomAnimalBreed(mainFarm, properties) { + const [animal_breed] = await mocks.custom_animal_breedFactory({ + promisedFarm: [mainFarm], + properties, + }); + return animal_breed; + } + + async function makeDefaultAnimalType() { + const [animal_type] = await mocks.default_animal_typeFactory(); + return animal_type; + } + + async function makeUserCreatedAnimalType(mainFarm) { + const [custom_animal_type] = await mocks.custom_animal_typeFactory({ + promisedFarm: [mainFarm], + }); + return custom_animal_type; + } + + beforeEach(async () => { + [farm] = await mocks.farmFactory(); + [newOwner] = await mocks.usersFactory(); + }); + + afterAll(async (done) => { + await tableCleanup(knex); + await knex.destroy(); + done(); + }); + + // GET TESTS + describe('Get custom animal breed tests', () => { + test('All users should get custom animal breeds for a default type', async () => { + const roles = [1, 2, 3, 5]; + + for (const role of roles) { + const { mainFarm, user } = await returnUserFarms(role); + // Create two breeds, one with the default type and one with a custom one + const firstBreed = await makeCustomAnimalBreed(mainFarm, { + default_type_id: defaultTypeId, + custom_type_id: null, + }); + await makeCustomAnimalBreed(mainFarm); + + const res = await getRequestAsPromise({ + user_id: user.user_id, + farm_id: mainFarm.farm_id, + query_params_string: `default_type_id=${defaultTypeId}`, + }); + + expect(res.status).toBe(200); + // Should return breed with default type only + expect(res.body.length).toBe(1); + expect(res.body[0].farm_id).toBe(mainFarm.farm_id); + expect(firstBreed).toMatchObject(res.body[0]); + } + }); + + test('All users should get custom animal breeds for a custom type', async () => { + const roles = [1, 2, 3, 5]; + + for (const role of roles) { + const { mainFarm, user } = await returnUserFarms(role); + // Create two breeds, one with the default type and one with a custom one + await makeCustomAnimalBreed(mainFarm, { + default_type_id: defaultTypeId, + custom_type_id: null, + }); + const secondBreed = await makeCustomAnimalBreed(mainFarm); + + const res = await getRequestAsPromise({ + user_id: user.user_id, + farm_id: mainFarm.farm_id, + query_params_string: `custom_type_id=${secondBreed.custom_type_id}`, + }); + + expect(res.status).toBe(200); + // Should return breed with custom type only + expect(res.body.length).toBe(1); + expect(res.body[0].farm_id).toBe(mainFarm.farm_id); + expect(secondBreed).toMatchObject(res.body[0]); + } + }); + + test('All users should get custom animal breeds for all types', async () => { + const roles = [1, 2, 3, 5]; + + for (const role of roles) { + const { mainFarm, user } = await returnUserFarms(role); + // Create two breeds with different types + await makeCustomAnimalBreed(mainFarm); + await makeCustomAnimalBreed(mainFarm); + + const res = await getRequestAsPromise({ user_id: user.user_id, farm_id: mainFarm.farm_id }); + + expect(res.status).toBe(200); + // Should return both breeds + expect(res.body.length).toBe(2); + res.body.forEach((breed) => { + expect(breed.farm_id).toBe(mainFarm.farm_id); + }); + } + }); + + test('Unauthorized user should get 403 if they try to get custom animal breeds', async () => { + const { mainFarm } = await returnUserFarms(1); + await makeCustomAnimalBreed(mainFarm); + const [unAuthorizedUser] = await mocks.usersFactory(); + + const res = await getRequestAsPromise({ + user_id: unAuthorizedUser.user_id, + farm_id: mainFarm.farm_id, + }); + + expect(res.status).toBe(403); + expect(res.error.text).toBe( + 'User does not have the following permission(s): get:animal_breeds', + ); + }); + + test('Returns 400 if both default and custom type ID are specified', async () => { + const { mainFarm, user } = await returnUserFarms(1); + + const res = await getRequestAsPromise({ + user_id: user.user_id, + farm_id: mainFarm.farm_id, + query_params_string: 'default_type_id=1&custom_type_id=1', + }); + + expect(res.status).toBe(400); + }); + }); + + // POST tests + describe('POST custom animal breed tests', () => { + test('Admin users should be able to post new custom animal breed', async () => { + const adminRoles = [1, 2, 5]; + + for (const role of adminRoles) { + const { mainFarm, user } = await returnUserFarms(role); + const animal_type = await makeDefaultAnimalType(); + const animal_breed = mocks.fakeCustomAnimalBreed({ default_type_id: animal_type.id }); + const res = await postRequestAsPromise(animal_breed, { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }); + + // Check response + expect(res).toMatchObject({ + status: 201, + body: { + farm_id: mainFarm.farm_id, + default_type_id: animal_breed.default_type_id, + breed: animal_breed.breed, + }, + }); + + // Check database + const animal_breeds = await customAnimalBreedModel + .query() + .where('farm_id', mainFarm.farm_id) + .andWhere('default_type_id', animal_breed.default_type_id) + .andWhere('breed', animal_breed.breed); + + expect(animal_breeds).toHaveLength(1); + } + }); + + test('Worker should not be able to post new custom animal breed', async () => { + const { mainFarm, user } = await returnUserFarms(3); + + const animal_type = await makeDefaultAnimalType(); + const animal_breed = mocks.fakeCustomAnimalBreed({ default_type_id: animal_type.id }); + const res = await postRequestAsPromise(animal_breed, { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }); + + // Check response + expect(res.status).toBe(403); + expect(res.error.text).toBe( + 'User does not have the following permission(s): add:animal_breeds', + ); + + const animal_breeds = await customAnimalBreedModel + .query() + .where('farm_id', mainFarm.farm_id) + .andWhere('default_type_id', animal_breed.default_type_id) + .andWhere('breed', animal_breed.breed); + + // Check database + expect(animal_breeds).toHaveLength(0); + }); + + test('Creating the same breed as an existing breed on farm should return a conflict error', async () => { + const { mainFarm, user } = await returnUserFarms(1); + + const animal_type = await makeDefaultAnimalType(); + const animal_breed = mocks.fakeCustomAnimalBreed({ default_type_id: animal_type.id }); + + await postRequestAsPromise(animal_breed, { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }); + + const res = await postRequestAsPromise(animal_breed, { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }); + + // Check response + expect(res.status).toBe(409); + + // Check database (no second record created) + const animal_breeds = await customAnimalBreedModel + .query() + .where('farm_id', mainFarm.farm_id) + .andWhere('default_type_id', animal_breed.default_type_id) + .andWhere('breed', animal_breed.breed); + + expect(animal_breeds).toHaveLength(1); + }); + + test('Creating the same breed as a deleted breed should be allowed', async () => { + const { mainFarm, user } = await returnUserFarms(1); + + const animal_type = await makeDefaultAnimalType(); + const animal_breed = mocks.fakeCustomAnimalBreed({ default_type_id: animal_type.id }); + + await postRequestAsPromise(animal_breed, { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }); + + await customAnimalBreedModel + .query() + .context({ user_id: user.user_id }) + .where('farm_id', mainFarm.farm_id) + .andWhere('default_type_id', animal_breed.default_type_id) + .andWhere('breed', animal_breed.breed) + .delete(); + + const res = await postRequestAsPromise(animal_breed, { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }); + + // Check response + expect(res).toMatchObject({ + status: 201, + body: { + farm_id: mainFarm.farm_id, + default_type_id: animal_breed.default_type_id, + breed: animal_breed.breed, + }, + }); + + // Check database + const animal_breeds = await customAnimalBreedModel + .query() + .where('farm_id', mainFarm.farm_id) + .andWhere('default_type_id', animal_breed.default_type_id) + .andWhere('breed', animal_breed.breed); + + expect(animal_breeds).toHaveLength(2); + }); + + test('Creating a custom breed using a custom type should be allowed', async () => { + const { mainFarm, user } = await returnUserFarms(1); + + // Make a custom type + const animal_type = await makeUserCreatedAnimalType(mainFarm); + const animal_breed = mocks.fakeCustomAnimalBreed({ custom_type_id: animal_type.id }); + + // Try to make a custom breed in using custom type + const res = await postRequestAsPromise(animal_breed, { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }); + + expect(res).toMatchObject({ + status: 201, + body: { + farm_id: mainFarm.farm_id, + custom_type_id: animal_breed.custom_type_id, + breed: animal_breed.breed, + }, + }); + }); + + test('Creating a custom breed using another farms custom type should be forbidden', async () => { + const { mainFarm, user } = await returnUserFarms(1); + const { mainFarm: secondFarm, user: secondUser } = await returnUserFarms(1); + + // Make a custom type on Farm 2 + const second_farm_animal_type = await makeUserCreatedAnimalType(secondFarm); + const animal_breed = mocks.fakeCustomAnimalBreed({ + custom_type_id: second_farm_animal_type.id, + }); + + // Try to make a custom breed in Farm 1 using Farm 2's custom type + const res = await postRequestAsPromise(animal_breed, { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }); + + expect(res.status).toBe(400); + }); + }); +}); diff --git a/packages/api/tests/custom_animal_type.test.js b/packages/api/tests/custom_animal_type.test.js new file mode 100644 index 0000000000..4d7ff1e309 --- /dev/null +++ b/packages/api/tests/custom_animal_type.test.js @@ -0,0 +1,393 @@ +/* + * Copyright (c) 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import chai from 'chai'; +import util from 'util'; + +import chaiHttp from 'chai-http'; +chai.use(chaiHttp); + +import server from './../src/server.js'; +import knex from '../src/util/knex.js'; +import { tableCleanup } from './testEnvironment.js'; + +jest.mock('jsdom'); +jest.mock('../src/middleware/acl/checkJwt.js', () => + jest.fn((req, res, next) => { + req.auth = {}; + req.auth.user_id = req.get('user_id'); + next(); + }), +); +import mocks from './mock.factories.js'; + +import customAnimalTypeModel from '../src/models/customAnimalTypeModel.js'; + +describe('Custom Animal Type Tests', () => { + let token; + + beforeAll(() => { + token = global.token; + }); + + afterAll(async (done) => { + await tableCleanup(knex); + await knex.destroy(); + done(); + }); + + async function getRequest({ user_id, farm_id }, query = '') { + return await chai + .request(server) + .get(`/custom_animal_types${query}`) + .set('user_id', user_id) + .set('farm_id', farm_id); + } + + function postRequest(data, { user_id, farm_id }, callback) { + chai + .request(server) + .post(`/custom_animal_types`) + .set('Content-Type', 'application/json') + .set('user_id', user_id) + .set('farm_id', farm_id) + .send(data) + .end(callback); + } + + const postRequestAsPromise = util.promisify(postRequest); + + function fakeUserFarm(role = 1) { + return { ...mocks.fakeUserFarm(), role_id: role }; + } + + async function returnUserFarms(role) { + const [mainFarm] = await mocks.farmFactory(); + const [user] = await mocks.usersFactory(); + + await mocks.userFarmFactory( + { + promisedUser: [user], + promisedFarm: [mainFarm], + }, + fakeUserFarm(role), + ); + return { mainFarm, user }; + } + + async function makeUserCreatedAnimalType(mainFarm, properties = {}) { + const [custom_animal_type] = await mocks.custom_animal_typeFactory({ + promisedFarm: [mainFarm], + properties, + }); + return custom_animal_type; + } + + // GET TESTS + describe('GET custom animal type tests', () => { + test('All farm users should get custom animal type by farm id', async () => { + const roles = [1, 2, 3, 5]; + + for (const role of roles) { + const { mainFarm, user } = await returnUserFarms(role); + const custom_animal_type = await makeUserCreatedAnimalType(mainFarm); + + const res = await getRequest({ user_id: user.user_id, farm_id: mainFarm.farm_id }); + + expect(res.status).toBe(200); + res.body.forEach((type) => { + expect(type.farm_id).toBe(custom_animal_type.farm_id); + }); + } + }); + + test('Unauthorized user should get 403 if they try to get custom animal type by farm id', async () => { + const { mainFarm } = await returnUserFarms(1); + await makeUserCreatedAnimalType(mainFarm); + const [unAuthorizedUser] = await mocks.usersFactory(); + + const res = await getRequest({ + user_id: unAuthorizedUser.user_id, + farm_id: mainFarm.farm_id, + }); + expect(res.status).toBe(403); + expect(res.error.text).toBe( + 'User does not have the following permission(s): get:animal_types', + ); + }); + + test(`Should not get other farms' types`, async () => { + const { mainFarm, user } = await returnUserFarms(1); + const [secondFarm] = await mocks.farmFactory(); + + // make types for the farm and another farm + await makeUserCreatedAnimalType(mainFarm); + await makeUserCreatedAnimalType(secondFarm); + + const resWithoutCount = await getRequest({ + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }); + + const resWithCount = await getRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + '?count=true', + ); + + expect(resWithoutCount.body.length).toBe(1); + expect(resWithCount.body.length).toBe(1); + }); + + test('Should not get deleted types', async () => { + const { mainFarm, user } = await returnUserFarms(1); + // make an active type and a deleted type + await makeUserCreatedAnimalType(mainFarm); + await makeUserCreatedAnimalType(mainFarm, { deleted: true }); + + const resWithoutCount = await getRequest({ + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }); + + const resWithCount = await getRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + '?count=true', + ); + + expect(resWithoutCount.body.length).toBe(1); + expect(resWithCount.body.length).toBe(1); + }); + + test('Should get counts with count=true query', async () => { + const { mainFarm, user } = await returnUserFarms(1); + + // typeId will be added later + const animalBatchTypeCounts = [ + { animalCount: 0, batchCounts: [] }, + { animalCount: 1, batchCounts: [] }, + { animalCount: 0, batchCounts: [2, 40] }, + { animalCount: 11, batchCounts: [20, 40, 60, 80, 100] }, + ]; + + // make animals and batches + for (const animalBatchTypeCount of animalBatchTypeCounts) { + const { animalCount, batchCounts } = animalBatchTypeCount; + const type = await makeUserCreatedAnimalType(mainFarm); + + // add type to animalBatchTypeCounts for validation later + animalBatchTypeCount.typeId = type.id; + + for (let i = 0; i < animalCount; i++) { + await mocks.animalFactory({ + promisedFarm: [mainFarm], + promisedDefaultAnimalType: [() => ({})], + properties: { custom_type_id: type.id }, + }); + } + for (const batchCount of batchCounts) { + await mocks.animal_batchFactory({ + promisedFarm: [mainFarm], + promisedDefaultAnimalType: [() => ({})], + promisedDefaultAnimalBreed: [() => ({})], + properties: { custom_type_id: type.id, count: batchCount }, + }); + } + } + + const res = await getRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + '?count=true', + ); + + res.body.forEach(({ id, count }) => { + const expectedCountsData = animalBatchTypeCounts.find(({ typeId }) => id === typeId); + const expectedCount = + expectedCountsData.animalCount + + expectedCountsData.batchCounts.reduce((acc, currentValue) => acc + currentValue, 0); + + expect(count).toBe(expectedCount); + }); + }); + + test('Deleted animals or batches should not be counted', async () => { + const { mainFarm, user } = await returnUserFarms(1); + const type = await makeUserCreatedAnimalType(mainFarm); + + // make active animal, active batch(50), deleted animal and deleted batch(50) + for (let i = 0; i < 2; i++) { + await mocks.animalFactory({ + promisedFarm: [mainFarm], + promisedDefaultAnimalType: [() => ({})], + properties: { custom_type_id: type.id, deleted: i % 2 === 0 }, + }); + + await mocks.animal_batchFactory({ + promisedFarm: [mainFarm], + promisedDefaultAnimalType: [() => ({})], + promisedDefaultAnimalBreed: [() => ({})], + properties: { custom_type_id: type.id, count: 50, deleted: i % 2 === 0 }, + }); + } + + const res = await getRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + '?count=true', + ); + + expect(res.body[0].count).toBe(51); + }); + }); + + // POST tests + describe('POST custom animal type tests', () => { + test('Admin users should be able to post new custom animal type', async () => { + const adminRoles = [1, 2, 5]; + + for (const role of adminRoles) { + const { mainFarm, user } = await returnUserFarms(role); + + const animal_type = mocks.fakeCustomAnimalType(); + const res = await postRequestAsPromise(animal_type, { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }); + + // Check response + expect(res).toMatchObject({ + status: 201, + body: { + farm_id: mainFarm.farm_id, + type: animal_type.type, + }, + }); + + // Check database + const animal_types = await customAnimalTypeModel + .query() + .context({ showHidden: true }) + .where('farm_id', mainFarm.farm_id) + .andWhere('type', animal_type.type); + + expect(animal_types).toHaveLength(1); + } + }); + + test('Worker should not be able to post new animal custom animal type', async () => { + const { mainFarm, user } = await returnUserFarms(3); + + const animal_type = mocks.fakeCustomAnimalType(); + const res = await postRequestAsPromise(animal_type, { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }); + + // Check response + expect(res.status).toBe(403); + expect(res.error.text).toBe( + 'User does not have the following permission(s): add:animal_types', + ); + + const animal_types = await customAnimalTypeModel + .query() + .context({ showHidden: true }) + .where('farm_id', mainFarm.farm_id) + .andWhere('type', animal_type.type); + + // Check database + expect(animal_types).toHaveLength(0); + }); + + test('Creating the same type as an existing type on farm should return a conflict error', async () => { + const { mainFarm, user } = await returnUserFarms(1); + + const animal_type = mocks.fakeCustomAnimalType(); + + await postRequestAsPromise(animal_type, { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }); + + const res = await postRequestAsPromise(animal_type, { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }); + + // Check response + expect(res.status).toBe(409); + + // Check database (no second record created) + const animal_types = await customAnimalTypeModel + .query() + .context({ showHidden: true }) + .where('farm_id', mainFarm.farm_id) + .andWhere('type', animal_type.type); + + expect(animal_types).toHaveLength(1); + }); + + test('Creating the same type as a deleted type should be allowed', async () => { + const { mainFarm, user } = await returnUserFarms(1); + + const animal_type = mocks.fakeCustomAnimalType(); + + await postRequestAsPromise(animal_type, { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }); + + await customAnimalTypeModel + .query() + .context({ user_id: user.user_id, showHidden: true }) + .where('farm_id', mainFarm.farm_id) + .andWhere('type', animal_type.type) + .delete(); + + const res = await postRequestAsPromise(animal_type, { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }); + + // Check response + expect(res).toMatchObject({ + status: 201, + body: { + farm_id: mainFarm.farm_id, + type: animal_type.type, + }, + }); + + // Check database + const animal_types = await customAnimalTypeModel + .query() + .context({ showHidden: true }) + .where('farm_id', mainFarm.farm_id) + .andWhere('type', animal_type.type); + + expect(animal_types).toHaveLength(2); + }); + }); +}); diff --git a/packages/api/tests/default_animal_breed.test.js b/packages/api/tests/default_animal_breed.test.js new file mode 100644 index 0000000000..c7da8b686e --- /dev/null +++ b/packages/api/tests/default_animal_breed.test.js @@ -0,0 +1,138 @@ +/* + * Copyright (c) 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import chai from 'chai'; +import util from 'util'; + +import chaiHttp from 'chai-http'; +chai.use(chaiHttp); + +import server from '../src/server.js'; +import knex from '../src/util/knex.js'; +import { tableCleanup } from './testEnvironment.js'; + +jest.mock('jsdom'); +jest.mock('../src/middleware/acl/checkJwt.js', () => + jest.fn((req, _res, next) => { + req.auth = {}; + req.auth.user_id = req.get('user_id'); + next(); + }), +); +import mocks from './mock.factories.js'; + +describe('Default Animal Breed Tests', () => { + let farm; + let newOwner; + + function getRequest( + { user_id = newOwner.user_id, farm_id = farm.farm_id, query_params_string }, + callback, + ) { + chai + .request(server) + .get(`/default_animal_breeds?${query_params_string}`) + .set('user_id', user_id) + .set('farm_id', farm_id) + .end(callback); + } + + const getRequestAsPromise = util.promisify(getRequest); + + function fakeUserFarm(role = 1) { + return { ...mocks.fakeUserFarm(), role_id: role }; + } + + async function returnUserFarms(role) { + const [mainFarm] = await mocks.farmFactory(); + const [user] = await mocks.usersFactory(); + + await mocks.userFarmFactory( + { + promisedUser: [user], + promisedFarm: [mainFarm], + }, + fakeUserFarm(role), + ); + return { mainFarm, user }; + } + + async function makeDefaultAnimalBreed() { + const [animal_breed] = await mocks.default_animal_breedFactory(); + return animal_breed; + } + + beforeEach(async () => { + [farm] = await mocks.farmFactory(); + [newOwner] = await mocks.usersFactory(); + }); + + afterEach(async (done) => { + await tableCleanup(knex); + done(); + }); + + afterAll(async (done) => { + await knex.destroy(); + done(); + }); + + // GET TESTS + describe('Get default animal breed tests', () => { + test('All users should get default animal breeds for a specific type', async () => { + const roles = [1, 2, 3, 5]; + + // Create two default breeds with two different default types + const firstBreed = await makeDefaultAnimalBreed(); + await makeDefaultAnimalBreed(); + + for (const role of roles) { + const { mainFarm, user } = await returnUserFarms(role); + + const res = await getRequestAsPromise({ + user_id: user.user_id, + farm_id: mainFarm.farm_id, + query_params_string: `default_type_id=${firstBreed.default_type_id}`, + }); + + expect(res.status).toBe(200); + // Should return first breed only + expect(res.body.length).toBe(1); + expect(res.body[0]).toMatchObject(firstBreed); + } + }); + + test('All users should get default animal breeds for all types', async () => { + const roles = [1, 2, 3, 5]; + + // Create two default breeds with two different default types + await makeDefaultAnimalBreed(); + await makeDefaultAnimalBreed(); + + for (const role of roles) { + const { mainFarm, user } = await returnUserFarms(role); + + const res = await getRequestAsPromise({ + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }); + + expect(res.status).toBe(200); + // Should return both breeds + expect(res.body.length).toBe(2); + } + }); + }); +}); diff --git a/packages/api/tests/default_animal_type.test.js b/packages/api/tests/default_animal_type.test.js new file mode 100644 index 0000000000..df930e7110 --- /dev/null +++ b/packages/api/tests/default_animal_type.test.js @@ -0,0 +1,231 @@ +/* + * Copyright (c) 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import chai from 'chai'; + +import chaiHttp from 'chai-http'; +chai.use(chaiHttp); + +import server from './../src/server.js'; +import knex from '../src/util/knex.js'; +import { tableCleanup } from './testEnvironment.js'; + +jest.mock('jsdom'); +jest.mock('../src/middleware/acl/checkJwt.js', () => + jest.fn((req, res, next) => { + req.auth = {}; + req.auth.user_id = req.get('user_id'); + next(); + }), +); +import mocks from './mock.factories.js'; + +describe('Default Animal Type Tests', () => { + let token; + + beforeAll(() => { + token = global.token; + }); + + afterEach(async (done) => { + await tableCleanup(knex); + done(); + }); + + afterAll(async (done) => { + await knex.destroy(); + done(); + }); + + async function getRequest({ user_id, farm_id }, query = '') { + return await chai + .request(server) + .get(`/default_animal_types${query}`) + .set('user_id', user_id) + .set('farm_id', farm_id); + } + + function fakeUserFarm(role = 1) { + return { ...mocks.fakeUserFarm(), role_id: role }; + } + + async function returnUserFarms(role) { + const [mainFarm] = await mocks.farmFactory(); + const [user] = await mocks.usersFactory(); + + await mocks.userFarmFactory( + { + promisedUser: [user], + promisedFarm: [mainFarm], + }, + fakeUserFarm(role), + ); + return { mainFarm, user }; + } + + async function makeDefaultAnimalType() { + const [default_animal_type] = await mocks.default_animal_typeFactory(); + return default_animal_type; + } + + // GET TESTS + describe('GET animal type tests', () => { + test('All farm users should get default animal types', async () => { + const roles = [1, 2, 3, 5]; + + for (const role of roles) { + const { mainFarm, user } = await returnUserFarms(role); + + await makeDefaultAnimalType(); + + const res = await getRequest({ user_id: user.user_id, farm_id: mainFarm.farm_id }); + + expect(res.status).toBe(200); + expect(res.body.length).toBeGreaterThanOrEqual(1); + } + }); + + test('Unauthorized user should also get default animal types', async () => { + const { mainFarm } = await returnUserFarms(1); + + await makeDefaultAnimalType(); + + const [unAuthorizedUser] = await mocks.usersFactory(); + + const res = await getRequest({ + user_id: unAuthorizedUser.user_id, + farm_id: mainFarm.farm_id, + }); + + expect(res.status).toBe(200); + expect(res.body.length).toBeGreaterThanOrEqual(1); + }); + + test('Should get counts with count=true query', async () => { + const { mainFarm, user } = await returnUserFarms(1); + + // typeId will be added later + const animalBatchTypeCounts = [ + { animalCount: 0, batchCounts: [] }, + { animalCount: 5, batchCounts: [] }, + { animalCount: 0, batchCounts: [20, 81] }, + { animalCount: 7, batchCounts: [20, 20, 150] }, + ]; + + // make types, animals and batches + for (const animalBatchTypeCount of animalBatchTypeCounts) { + const type = await makeDefaultAnimalType(); + + // add typeId to animalBatchTypeCounts for validation later + animalBatchTypeCount.typeId = type.id; + + const { animalCount, batchCounts } = animalBatchTypeCount; + for (let i = 0; i < animalCount; i++) { + await mocks.animalFactory({ + promisedFarm: [mainFarm], + promisedDefaultAnimalType: [type], + }); + } + for (const batchCount of batchCounts) { + await mocks.animal_batchFactory({ + promisedFarm: [mainFarm], + promisedDefaultAnimalType: [type], + promisedDefaultAnimalBreed: [() => ({})], + properties: { count: batchCount }, + }); + } + } + + const res = await getRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + '?count=true', + ); + + res.body.forEach(({ id, count }) => { + const expectedCountsData = animalBatchTypeCounts.find(({ typeId }) => id === typeId); + const expectedCount = + expectedCountsData.animalCount + + expectedCountsData.batchCounts.reduce((acc, currentValue) => acc + currentValue, 0); + + expect(count).toBe(expectedCount); + }); + }); + + test(`Other farms' animals and batches should not be counted`, async () => { + const { mainFarm, user } = await returnUserFarms(1); + const [secondFarm] = await mocks.farmFactory(); + const type = await makeDefaultAnimalType(); + + // make an animal and a batch(50) for each farm + for (let i = 0; i < 2; i++) { + await mocks.animalFactory({ + promisedFarm: [i % 2 === 0 ? mainFarm : secondFarm], + promisedDefaultAnimalType: [type], + }); + + await mocks.animal_batchFactory({ + promisedFarm: [i % 2 === 0 ? mainFarm : secondFarm], + promisedDefaultAnimalType: [type], + promisedDefaultAnimalBreed: [() => ({})], + properties: { count: 50 }, + }); + } + + const res = await getRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + '?count=true', + ); + + expect(res.body[0].count).toBe(51); + }); + + test('Deleted animals or batches should not be counted', async () => { + const { mainFarm, user } = await returnUserFarms(1); + const type = await makeDefaultAnimalType(mainFarm); + + // make active animal, active batch(50), deleted animal and deleted batch(50) + for (let i = 0; i < 2; i++) { + await mocks.animalFactory({ + promisedFarm: [mainFarm], + promisedDefaultAnimalType: [type], + properties: { deleted: i % 2 === 0 }, + }); + + await mocks.animal_batchFactory({ + promisedFarm: [mainFarm], + promisedDefaultAnimalType: [type], + promisedDefaultAnimalBreed: [() => ({})], + properties: { count: 50, deleted: i % 2 === 0 }, + }); + } + + const res = await getRequest( + { + user_id: user.user_id, + farm_id: mainFarm.farm_id, + }, + '?count=true', + ); + + expect(res.body[0].count).toBe(51); + }); + }); +}); diff --git a/packages/api/tests/insightsAPI.test.js b/packages/api/tests/insightsAPI.test.js index 76aadb5d2f..435736be01 100644 --- a/packages/api/tests/insightsAPI.test.js +++ b/packages/api/tests/insightsAPI.test.js @@ -24,7 +24,7 @@ import knex from '../src/util/knex.js'; import server from './../src/server.js'; import mocks from './mock.factories.js'; import { tableCleanup } from './testEnvironment.js'; -import insightHelpers from '../src/controllers/insightHelpers.js'; +import * as insightHelpers from '../src/controllers/insightHelpers.js'; jest.mock('jsdom'); jest.mock('../src/middleware/acl/checkJwt.js', () => jest.fn((req, res, next) => { @@ -33,11 +33,10 @@ jest.mock('../src/middleware/acl/checkJwt.js', () => next(); }), ); -import { faker } from '@faker-js/faker'; import moment from 'moment'; import insigntController from '../src/controllers/insightController'; -xdescribe('insights test', () => { +describe('insights test', () => { const emptyNutrients = { energy: 0, lipid: 0, protein: 0, vitc: 0, vita_rae: 0 }; afterAll(async (done) => { @@ -270,6 +269,9 @@ xdescribe('insights test', () => { done(); }); + // FIXME: these tests are incomplete and skipped, seems a mocks.cropSaleFactory + // doesn't exist anywhere in the project, perhaps someone forgot to push + // that implementation. xtest('queryCropSalesNearByStartDateAndFarmId test', async (done) => { const startdate = moment('2020-12-01').format('YYYY-MM-DD'); const gridPoint0 = { lat: 62.990967, lng: -71.463767 }; diff --git a/packages/api/tests/mock.factories.js b/packages/api/tests/mock.factories.js index 40ef471497..e9530f0df0 100644 --- a/packages/api/tests/mock.factories.js +++ b/packages/api/tests/mock.factories.js @@ -69,14 +69,20 @@ function fakeFarm(defaultData = {}) { } async function userFarmFactory( - { promisedUser = usersFactory(), promisedFarm = farmFactory() } = {}, + { promisedUser = usersFactory(), promisedFarm = farmFactory(), roleId } = {}, userFarm = fakeUserFarm(), ) { const [user, farm] = await Promise.all([promisedUser, promisedFarm]); const [{ user_id }] = user; const [{ farm_id }] = farm; return knex('userFarm') - .insert({ user_id, farm_id, has_consent: true, ...userFarm }) + .insert({ + user_id, + farm_id, + has_consent: true, + ...userFarm, + role_id: roleId || userFarm.role_id, + }) .returning('*'); } @@ -1095,9 +1101,12 @@ function fakeFertilizer(defaultData = {}) { } async function taskFactory( - { promisedUser = usersFactory(), promisedTaskType = task_typeFactory() } = {}, + { promisedUser = usersFactory(), promisedTaskType, promisedFarm } = {}, task = fakeTask(), ) { + if (!promisedTaskType) { + promisedTaskType = task_typeFactory({ promisedFarm }); + } const [user, taskType] = await Promise.all([promisedUser, promisedTaskType]); const [{ user_id }] = user; const [{ task_type_id }] = taskType; @@ -1762,6 +1771,39 @@ function fakeScoutingTask(defaultData = {}) { }; } +async function animal_movement_taskFactory( + { promisedTask = taskFactory() } = {}, + animal_movement_task = fakeAnimalMovementTask(), +) { + const [activity] = await Promise.all([promisedTask]); + const [{ task_id }] = activity; + return knex('animal_movement_task') + .insert({ task_id, ...animal_movement_task }) + .returning('*'); +} + +function fakeAnimalMovementTask(defaultData = {}) { + return defaultData; +} + +async function animal_movement_purposeFactory(key = faker.lorem.word()) { + return knex('animal_movement_purpose') + .insert({ key, id: key === 'OTHER' ? 14 : undefined }) + .returning('*'); +} + +async function animal_movement_task_purpose_relationshipFactory({ + promisedTask = taskFactory(), + promisedPurpose = animal_movement_purposeFactory(), + other_purpose = null, +} = {}) { + const [[{ task_id }], [{ id: purpose_id }]] = await Promise.all([promisedTask, promisedPurpose]); + + return knex('animal_movement_task_purpose_relationship') + .insert({ task_id, purpose_id, other_purpose }) + .returning('*'); +} + async function saleFactory({ promisedUserFarm = userFarmFactory() } = {}, sale = fakeSale()) { const [userFarm] = await Promise.all([promisedUserFarm]); const [{ user_id, farm_id }] = userFarm; @@ -2239,6 +2281,270 @@ async function revenue_typeFactory( .returning('*'); } +function fakeCustomAnimalType(defaultData = {}) { + const name = faker.lorem.word(); + return { + type: name, + ...defaultData, + }; +} + +async function custom_animal_typeFactory( + { promisedFarm = farmFactory(), properties = {} } = {}, + animalType = fakeCustomAnimalType(properties), +) { + const [farm, user] = await Promise.all([promisedFarm, usersFactory()]); + const [{ farm_id }] = farm; + const [{ user_id }] = user; + const base = baseProperties(user_id); + return knex('custom_animal_type') + .insert({ farm_id, ...animalType, ...base }) + .returning('*'); +} + +async function default_animal_typeFactory() { + return knex('default_animal_type').insert({ key: faker.lorem.word() }).returning('*'); +} + +function fakeCustomAnimalBreed(defaultData = {}) { + const name = faker.lorem.word(); + return { + breed: name, + ...defaultData, + }; +} + +async function custom_animal_breedFactory( + { + promisedFarm = farmFactory(), + promisedCustomAnimalType = custom_animal_typeFactory({ promisedFarm }), + promisedDefaultAnimalType = default_animal_typeFactory({ promisedFarm }), + properties = {}, + } = {}, + animalBreed = fakeCustomAnimalBreed(properties), + customType = true, +) { + const [farm, user, customAnimalType, defaultAnimalType] = await Promise.all([ + promisedFarm, + usersFactory(), + promisedCustomAnimalType, + promisedDefaultAnimalType, + ]); + const [{ farm_id }] = farm; + const [{ user_id }] = user; + const [{ id: custom_type_id }] = customAnimalType; + const [{ id: default_type_id }] = defaultAnimalType; + const type = customType ? { custom_type_id } : { default_type_id }; + const base = baseProperties(user_id); + return knex('custom_animal_breed') + .insert({ farm_id, ...type, ...animalBreed, ...base }) + .returning('*'); +} + +async function default_animal_breedFactory(promisedAnimalType = default_animal_typeFactory()) { + const [animalType] = await promisedAnimalType; + return knex('default_animal_breed') + .insert({ default_type_id: animalType.id, key: faker.lorem.word() }) + .returning('*'); +} + +function fakeAnimal(defaultData = {}) { + const name = faker.lorem.word(); + return { + name, + ...defaultData, + }; +} + +async function animalFactory( + { + promisedFarm = farmFactory(), + promisedDefaultAnimalType = default_animal_typeFactory(), + properties = {}, + } = {}, + animal = fakeAnimal(properties), +) { + const [farm, user, defaultAnimalType] = await Promise.all([ + promisedFarm, + usersFactory(), + promisedDefaultAnimalType, + ]); + const [{ farm_id }] = farm; + const [{ user_id }] = user; + const [{ id: default_type_id }] = defaultAnimalType; + + const base = baseProperties(user_id); + + return knex('animal') + .insert({ farm_id, default_type_id, ...animal, ...base }) + .returning('*'); +} + +function fakeAnimalBatch(defaultData = {}) { + const name = faker.lorem.word(); + const count = faker.datatype.number({ min: 2 }); + return { + name, + count, + sex_detail: [], + ...defaultData, + }; +} + +async function animal_batchFactory( + { + promisedFarm = farmFactory(), + promisedDefaultAnimalType = default_animal_typeFactory(), + promisedDefaultAnimalBreed = default_animal_breedFactory(), + properties = {}, + } = {}, + animalBatch = fakeAnimalBatch(properties), +) { + const [farm, user, defaultAnimalType, defaultAnimalBreed] = await Promise.all([ + promisedFarm, + usersFactory(), + promisedDefaultAnimalType, + promisedDefaultAnimalBreed, + ]); + const [{ farm_id }] = farm; + const [{ user_id }] = user; + const [{ id: default_type_id }] = defaultAnimalType; + const [{ id: default_breed_id }] = defaultAnimalBreed; + + const base = baseProperties(user_id); + return knex + .transaction(async (trx) => { + const sex_detail = animalBatch.sex_detail; + delete animalBatch.sex_detail; + + const batch = await trx + .insert({ farm_id, default_type_id, default_breed_id, ...animalBatch, ...base }) + .into('animal_batch') + .returning('*'); + + let details = []; + for (const detail of sex_detail) { + const res = await trx + .insert({ ...detail, animal_batch_id: batch[0].id }) + .into('animal_batch_sex_detail') + .returning('*'); + details.push(res[0]); + } + batch[0].sex_detail = details; + return batch; + }) + .catch((err) => { + console.error(err); + }); +} + +async function animal_identifier_typeFactory(rows = 1, key = faker.lorem.word()) { + return knex('animal_identifier_type') + .insert(Array(rows).fill({ key, id: key === 'OTHER' ? 3 : undefined })) + .returning('*'); +} + +async function animal_identifier_colorFactory() { + return knex('animal_identifier_color').insert({ key: faker.lorem.word() }).returning('*'); +} + +async function animal_sexFactory() { + return knex('animal_sex').insert({ key: faker.lorem.word() }).returning('*'); +} + +async function animal_originFactory(key = faker.lorem.word()) { + return knex('animal_origin') + .insert({ key, id: key === 'BROUGHT_IN' ? 1 : undefined }) + .returning('*'); +} + +function fakeAnimalGroup(defaultData = {}) { + const name = faker.lorem.word(); + const notes = faker.lorem.word(); + return { + name, + notes, + ...defaultData, + }; +} + +async function animal_groupFactory( + { promisedFarm = farmFactory(), properties = {} } = {}, + animalGroup = fakeAnimalGroup(properties), +) { + const [farm, user] = await Promise.all([promisedFarm, usersFactory()]); + const [{ farm_id }] = farm; + const [{ user_id }] = user; + + const base = baseProperties(user_id); + return knex('animal_group') + .insert({ + farm_id, + ...animalGroup, + ...base, + }) + .returning('*'); +} + +async function animal_group_relationshipFactory({ + promisedAnimal = animalFactory(), + promisedGroup = animal_groupFactory(), +} = {}) { + const [animal, group] = await Promise.all([promisedAnimal, promisedGroup]); + const [{ id: groupId }] = group; + const [{ id: animalId }] = animal; + return knex('animal_group_relationship') + .insert({ + animal_group_id: groupId, + animal_id: animalId, + }) + .returning('*'); +} + +async function animal_batch_group_relationshipFactory({ + promisedBatch = animal_batchFactory(), + promisedGroup = animal_groupFactory(), +} = {}) { + const [batch, group] = await Promise.all([promisedBatch, promisedGroup]); + const [{ id: groupId }] = group; + const [{ id: batchId }] = batch; + return knex('animal_batch_group_relationship') + .insert({ + animal_group_id: groupId, + animal_batch_id: batchId, + }) + .returning('*'); +} + +async function animal_removal_reasonFactory() { + return knex('animal_removal_reason').insert({ key: faker.lorem.word() }).returning('*'); +} + +async function animal_useFactory(key = faker.lorem.word()) { + return knex('animal_use') + .insert({ key, id: key === 'OTHER' ? 10 : undefined }) + .returning('*'); +} + +async function animal_type_use_relationshipFactory({ + promisedDefaultAnimalType = default_animal_typeFactory(), + promisedAnimalUse = animal_useFactory(), +} = {}) { + const [defaultAnimalType, animalUse] = await Promise.all([ + promisedDefaultAnimalType, + promisedAnimalUse, + ]); + const [{ id: defaultTypeId }] = defaultAnimalType; + const [{ id: animalUseId }] = animalUse; + + return knex('animal_type_use_relationship') + .insert({ + default_type_id: defaultTypeId, + animal_use_id: animalUseId, + }) + .returning('*'); +} + export default { weather_stationFactory, fakeStation, @@ -2310,6 +2616,10 @@ export default { fakeIrrigationTask, scouting_taskFactory, fakeScoutingTask, + animal_movement_taskFactory, + fakeAnimalMovementTask, + animal_movement_purposeFactory, + animal_movement_task_purpose_relationshipFactory, saleFactory, fakeSale, locationFactory, @@ -2374,5 +2684,26 @@ export default { populateDefaultRevenueTypes, revenue_typeFactory, fakeRevenueType, + custom_animal_typeFactory, + fakeCustomAnimalType, + default_animal_typeFactory, + custom_animal_breedFactory, + fakeCustomAnimalBreed, + default_animal_breedFactory, + fakeAnimal, + fakeAnimalBatch, + animalFactory, + animal_batchFactory, + animal_identifier_typeFactory, + animal_identifier_colorFactory, + animal_sexFactory, + animal_originFactory, + fakeAnimalGroup, + animal_groupFactory, + animal_group_relationshipFactory, + animal_batch_group_relationshipFactory, + animal_removal_reasonFactory, + animal_useFactory, + animal_type_use_relationshipFactory, baseProperties, }; diff --git a/packages/api/tests/organicCertifierSurvey.test.js b/packages/api/tests/organicCertifierSurvey.test.js index 2fb012a678..07a406bf36 100644 --- a/packages/api/tests/organicCertifierSurvey.test.js +++ b/packages/api/tests/organicCertifierSurvey.test.js @@ -822,7 +822,7 @@ describe('organic certification Tests', () => { await mocks.organicCertifierSurveyFactory( { promisedUserFarm: [{ farm_id, user_id }] }, - mocks.fakeOrganicCertifierSurvey(farm_id, { certifier_id: 1 }), + mocks.fakeOrganicCertifierSurvey(farm_id, { certifier_id: 1, interested: true }), ); [{ crop_id }] = await mocks.cropFactory( { promisedFarm: [{ farm_id }], createdUser: [{ user_id }] }, diff --git a/packages/api/tests/task.test.js b/packages/api/tests/task.test.js index 9c5461360f..3b110030ab 100644 --- a/packages/api/tests/task.test.js +++ b/packages/api/tests/task.test.js @@ -16,22 +16,20 @@ jest.mock('../src/middleware/acl/checkJwt.js', () => import mocks from './mock.factories.js'; import { tableCleanup } from './testEnvironment.js'; import { faker } from '@faker-js/faker'; +import { + toLocal8601Extended, + fakeUserFarm, + customFieldWorkTask, + userFarmTaskGenerator, + generateUserFarms, + getTask, + fakeCompletionData, + CROP_FAILURE, + sampleNote, + abandonTaskBody, +} from './utils/taskUtils.js'; describe('Task tests', () => { - /** - * Converts a given Date to the local date in ISO-8601 extended format (YYYY-MM-DD). - * Date.prototype.toISOString() returns the same format of the UTC (not local) date. - * @param {Date} date - The date to be converted. - * @returns {string} The input's local date in YYYY-MM-DD format. - */ - function toLocal8601Extended(date) { - return ( - `${date.getFullYear()}-` + - `${(date.getMonth() + 1).toString().padStart(2, '0')}-` + - `${date.getDate().toString().padStart(2, '0')}` - ); - } - function assignTaskRequest({ user_id, farm_id }, data, task_id, callback) { chai .request(server) @@ -149,64 +147,8 @@ describe('Task tests', () => { .end(callback); } - function fakeUserFarm(role = 1) { - return { ...mocks.fakeUserFarm(), role_id: role }; - } - - function customFieldWorkTask(task) { - return { ...mocks.fakeFieldWorkTask(), field_work_task_type: task }; - } - - async function userFarmTaskGenerator(linkPlan = true) { - const userFarm = { ...fakeUserFarm(1), wage: { type: '', amount: 30 } }; - const [{ user_id, farm_id }] = await mocks.userFarmFactory({}, userFarm); - const [{ task_type_id }] = await mocks.task_typeFactory({ promisedFarm: [{ farm_id }] }); - const [{ location_id }] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); - const [{ crop_variety_id }] = await mocks.crop_varietyFactory({ promisedFarm: [{ farm_id }] }); - - const [{ management_plan_id }] = linkPlan - ? await mocks.crop_management_planFactory({ - promisedFarm: [{ farm_id }], - promisedLocation: [{ location_id }], - crop_variety: [{ crop_variety_id }], - }) - : [{ management_plan_id: null }]; - const [{ planting_management_plan_id }] = linkPlan - ? await knex('planting_management_plan').where({ management_plan_id }) - : [{ planting_management_plan_id: null }]; - return { - user_id, - farm_id, - location_id, - management_plan_id, - planting_management_plan_id, - task_type_id, - }; - } - - const generateUserFarms = async (number) => { - const userFarms = []; - const [user] = await mocks.usersFactory(); - - for (let i = 0; i < number; i++) { - const [farm] = await mocks.farmFactory(); - const [{ farm_id }] = await mocks.userFarmFactory( - { promisedUser: [user], promisedFarm: [farm] }, - { role_id: 1, status: 'Active' }, - ); - - userFarms.push({ user_id: user.user_id, farm_id }); - } - - return userFarms; - }; - const tasksWithProducts = ['soil_amendment_task']; - async function getTask(task_id) { - return knex('task').where({ task_id }).first(); - } - beforeAll(async () => { // Check in controller expects Soil Amendment Task to exist await knex('task_type').insert({ @@ -226,7 +168,10 @@ describe('Task tests', () => { test('Owners should be able to assign person to task', async (done) => { const userFarm = { ...fakeUserFarm(1), wage: { type: '', amount: 30 } }; const [{ user_id, farm_id }] = await mocks.userFarmFactory({}, userFarm); - const [{ task_id }] = await mocks.taskFactory({ promisedUser: [{ user_id }] }); + const [{ task_id }] = await mocks.taskFactory({ + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }); const [{ location_id }] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); await mocks.location_tasksFactory({ promisedTask: [{ task_id }], @@ -257,7 +202,10 @@ describe('Task tests', () => { }, ); - const [{ task_id }] = await mocks.taskFactory({ promisedUser: [{ user_id }] }); + const [{ task_id }] = await mocks.taskFactory({ + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }); const [{ location_id }] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); await mocks.location_tasksFactory({ promisedTask: [{ task_id }], @@ -271,7 +219,10 @@ describe('Task tests', () => { test('Managers should be able to assign person to task', async (done) => { const [{ user_id, farm_id }] = await mocks.userFarmFactory({}, fakeUserFarm(2)); - const [{ task_id }] = await mocks.taskFactory({ promisedUser: [{ user_id }] }); + const [{ task_id }] = await mocks.taskFactory({ + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }); const [{ location_id }] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); await mocks.location_tasksFactory({ promisedTask: [{ task_id }], @@ -292,7 +243,10 @@ describe('Task tests', () => { test('EO should be able to assign person to task', async (done) => { const [{ user_id, farm_id }] = await mocks.userFarmFactory({}, fakeUserFarm(5)); - const [{ task_id }] = await mocks.taskFactory({ promisedUser: [{ user_id }] }); + const [{ task_id }] = await mocks.taskFactory({ + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }); const [{ location_id }] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); await mocks.location_tasksFactory({ promisedTask: [{ task_id }], @@ -313,7 +267,10 @@ describe('Task tests', () => { test('Worker should be able to assign self to task', async (done) => { const [{ user_id, farm_id }] = await mocks.userFarmFactory({}, fakeUserFarm(3)); - const [{ task_id }] = await mocks.taskFactory({ promisedUser: [{ user_id }] }); + const [{ task_id }] = await mocks.taskFactory({ + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }); const [{ location_id }] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); await mocks.location_tasksFactory({ promisedTask: [{ task_id }], @@ -338,7 +295,10 @@ describe('Task tests', () => { { promisedFarm: [{ farm_id }] }, fakeUserFarm(3), ); - const [{ task_id }] = await mocks.taskFactory({ promisedUser: [{ user_id }] }); + const [{ task_id }] = await mocks.taskFactory({ + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }); const [{ location_id }] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); await mocks.location_tasksFactory({ promisedTask: [{ task_id }], @@ -369,7 +329,13 @@ describe('Task tests', () => { owner_user_id: admin_user_id, assignee_user_id: other_user_id, }); - const [{ task_id }] = await mocks.taskFactory({ promisedUser: [{ user_id }] }, fakeTask); + const [{ task_id }] = await mocks.taskFactory( + { + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }, + fakeTask, + ); const [{ location_id }] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); await mocks.location_tasksFactory({ promisedTask: [{ task_id }], @@ -396,7 +362,13 @@ describe('Task tests', () => { assignee_user_id: user_id, complete_date: faker.date.future(), }); - const [{ task_id }] = await mocks.taskFactory({ promisedUser: [{ user_id }] }, fakeTask); + const [{ task_id }] = await mocks.taskFactory( + { + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }, + fakeTask, + ); const [{ location_id }] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); await mocks.location_tasksFactory({ promisedTask: [{ task_id }], @@ -423,7 +395,13 @@ describe('Task tests', () => { assignee_user_id: user_id, abandon_date: faker.date.future(), }); - const [{ task_id }] = await mocks.taskFactory({ promisedUser: [{ user_id }] }, fakeTask); + const [{ task_id }] = await mocks.taskFactory( + { + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }, + fakeTask, + ); const [{ location_id }] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); await mocks.location_tasksFactory({ promisedTask: [{ task_id }], @@ -444,11 +422,17 @@ describe('Task tests', () => { const [{ user_id, farm_id }] = await mocks.userFarmFactory({}, fakeUserFarm(1)); const date = faker.date.future().toISOString().split('T')[0]; const [task_1] = await mocks.taskFactory( - { promisedUser: [{ user_id }] }, + { + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }, mocks.fakeTask({ due_date: date }), ); const [task_2] = await mocks.taskFactory( - { promisedUser: [{ user_id }] }, + { + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }, mocks.fakeTask({ due_date: date }), ); const [location_1] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); @@ -479,11 +463,17 @@ describe('Task tests', () => { const [{ user_id, farm_id }] = await mocks.userFarmFactory({}, fakeUserFarm(2)); const date = faker.date.future().toISOString().split('T')[0]; const [task_1] = await mocks.taskFactory( - { promisedUser: [{ user_id }] }, + { + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }, mocks.fakeTask({ due_date: date }), ); const [task_2] = await mocks.taskFactory( - { promisedUser: [{ user_id }] }, + { + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }, mocks.fakeTask({ due_date: date }), ); const [location_1] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); @@ -514,11 +504,17 @@ describe('Task tests', () => { const [{ user_id, farm_id }] = await mocks.userFarmFactory({}, fakeUserFarm(5)); const date = faker.date.future().toISOString().split('T')[0]; const [task_1] = await mocks.taskFactory( - { promisedUser: [{ user_id }] }, + { + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }, mocks.fakeTask({ due_date: date }), ); const [task_2] = await mocks.taskFactory( - { promisedUser: [{ user_id }] }, + { + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }, mocks.fakeTask({ due_date: date }), ); const [location_1] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); @@ -552,15 +548,24 @@ describe('Task tests', () => { }); const date = faker.date.future().toISOString().split('T')[0]; const [task_1] = await mocks.taskFactory( - { promisedUser: [{ user_id }] }, + { + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }, mocks.fakeTask({ due_date: date }), ); const [task_2] = await mocks.taskFactory( - { promisedUser: [{ user_id }] }, + { + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }, mocks.fakeTask({ due_date: date }), ); const [task_3] = await mocks.taskFactory( - { promisedUser: [{ user_id }] }, + { + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }, mocks.fakeTask({ due_date: date, assignee_user_id: another_user, @@ -598,11 +603,17 @@ describe('Task tests', () => { const [{ user_id, farm_id }] = await mocks.userFarmFactory({}, fakeUserFarm(3)); const date = faker.date.future().toISOString().split('T')[0]; const [task_1] = await mocks.taskFactory( - { promisedUser: [{ user_id }] }, + { + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }, mocks.fakeTask({ due_date: date }), ); const [task_2] = await mocks.taskFactory( - { promisedUser: [{ user_id }] }, + { + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }, mocks.fakeTask({ due_date: date }), ); const [location_1] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); @@ -637,11 +648,17 @@ describe('Task tests', () => { ); const date = faker.date.future().toISOString().split('T')[0]; const [task_1] = await mocks.taskFactory( - { promisedUser: [{ user_id }] }, + { + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }, mocks.fakeTask({ due_date: date }), ); const [task_2] = await mocks.taskFactory( - { promisedUser: [{ user_id }] }, + { + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }, mocks.fakeTask({ due_date: date }), ); const [location_1] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); @@ -678,19 +695,31 @@ describe('Task tests', () => { due_date: date, }); const [task_1] = await mocks.taskFactory( - { promisedUser: [{ user_id }] }, + { + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }, mocks.fakeTask({ due_date: date }), ); const [task_2] = await mocks.taskFactory( - { promisedUser: [{ user_id }] }, + { + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }, mocks.fakeTask({ due_date: date }), ); const [completed_task] = await mocks.taskFactory( - { promisedUser: [{ user_id }] }, + { + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }, fakeTask_completed, ); const [abandoned_task] = await mocks.taskFactory( - { promisedUser: [{ user_id }] }, + { + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }, fakeTask_abandoned, ); const [location_1] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); @@ -738,15 +767,24 @@ describe('Task tests', () => { const date = faker.date.future().toISOString().split('T')[0]; const [assignedTask] = await mocks.taskFactory( - { promisedUser: [{ user_id: ownerUserId }] }, + { + promisedUser: [{ user_id: ownerUserId }], + promisedFarm: [{ farm_id }], + }, mocks.fakeTask({ due_date: date, assignee_user_id: ownerUserId }), ); const [unassignedTask1] = await mocks.taskFactory( - { promisedUser: [{ user_id: ownerUserId }] }, + { + promisedUser: [{ user_id: ownerUserId }], + promisedFarm: [{ farm_id }], + }, mocks.fakeTask({ due_date: date, assignee_user_id: null }), ); const [unassignedTask2] = await mocks.taskFactory( - { promisedUser: [{ user_id: ownerUserId }] }, + { + promisedUser: [{ user_id: ownerUserId }], + promisedFarm: [{ farm_id }], + }, mocks.fakeTask({ due_date: date, assignee_user_id: null }), ); @@ -791,15 +829,24 @@ describe('Task tests', () => { const date = faker.date.future().toISOString().split('T')[0]; const [assignedTaskBefore] = await mocks.taskFactory( - { promisedUser: [{ user_id: ownerUserId }] }, + { + promisedUser: [{ user_id: ownerUserId }], + promisedFarm: [{ farm_id }], + }, mocks.fakeTask({ due_date: date, assignee_user_id: ownerUserId }), ); const [unassignedTask1Before] = await mocks.taskFactory( - { promisedUser: [{ user_id: ownerUserId }] }, + { + promisedUser: [{ user_id: ownerUserId }], + promisedFarm: [{ farm_id }], + }, mocks.fakeTask({ due_date: date, assignee_user_id: null }), ); const [unassignedTask2Before] = await mocks.taskFactory( - { promisedUser: [{ user_id: ownerUserId }] }, + { + promisedUser: [{ user_id: ownerUserId }], + promisedFarm: [{ farm_id }], + }, mocks.fakeTask({ due_date: date, assignee_user_id: null }), ); @@ -850,7 +897,10 @@ describe('Task tests', () => { await Promise.all( [...Array(3)].map(async () => { const [{ task_id }] = await mocks.taskFactory( - { promisedUser: [{ user_id }], promisedTaskType: [{ task_type_id }] }, + { + promisedUser: [{ user_id }], + promisedTaskType: [{ task_type_id }], + }, fakeTask, ); await mocks.location_tasksFactory({ @@ -979,6 +1029,20 @@ describe('Task tests', () => { }); }); + test(`should get custom tasks that don't have locations, managementPlans, or animals`, async (done) => { + const [{ user_id, farm_id }] = await mocks.userFarmFactory({}, fakeUserFarm(1)); + const [{ task_type_id }] = await mocks.task_typeFactory({ promisedFarm: [{ farm_id }] }); + await mocks.taskFactory({ + promisedUser: [{ user_id }], + promisedTaskType: [{ task_type_id }], + }); + getTasksRequest({ farm_id, user_id }, (err, res) => { + expect(res.status).toBe(200); + expect(res.body.length).toBe(1); + done(); + }); + }); + xtest('should get all tasks related to a farm, but not from different farms of that user', async (done) => { const [firstUserFarm] = await mocks.userFarmFactory({}, fakeUserFarm(1)); const [secondUserFarmWithSameUser] = await mocks.userFarmFactory( @@ -1684,6 +1748,19 @@ describe('Task tests', () => { }); }); + test('should create a custom task without locations, managementPlans or animals', async (done) => { + const [{ user_id, farm_id }] = await mocks.userFarmFactory({}, fakeUserFarm(1)); + const [{ task_type_id }] = await mocks.task_typeFactory({ promisedFarm: [{ farm_id }] }); + const data = { ...mocks.fakeTask({ task_type_id }) }; + + postTaskRequest({ user_id, farm_id }, 'custom_task', data, async (err, res) => { + expect(res.status).toBe(201); + const createdTask = await knex('task').where({ task_id: res.body.task_id }).first(); + expect(createdTask).toBeDefined(); + done(); + }); + }); + test('should fail to create a task were a worker is trying to assign someone else', async (done) => { const { farm_id, @@ -1807,17 +1884,7 @@ describe('Task tests', () => { plant_task: () => mocks.fakePlantTask(), }; - const complete_date = '2222-01-01'; - const duration = 15; - const happiness = 5; - const notes = faker.lorem.sentence(); - - const fakeCompletionData = { - complete_date, - duration, - happiness, - completion_notes: notes, - }; + const { complete_date, duration, happiness, completion_notes: notes } = fakeCompletionData; test('should return 403 if non-assignee tries to complete task', async (done) => { const [{ user_id, farm_id }] = await mocks.userFarmFactory({}, fakeUserFarm(1)); @@ -1825,7 +1892,10 @@ describe('Task tests', () => { { promisedFarm: [{ farm_id }] }, fakeUserFarm(1), ); - const [{ task_id }] = await mocks.taskFactory({ promisedUser: [{ user_id }] }); + const [{ task_id }] = await mocks.taskFactory({ + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }); const [{ location_id }] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); await mocks.location_tasksFactory({ promisedTask: [{ task_id }], @@ -1993,11 +2063,13 @@ describe('Task tests', () => { }), ); + const { animals, animal_batches, ...patchTaskData } = createdTask; + // Update the task completeTaskRequest( { user_id, farm_id }, { - ...createdTask, + ...patchTaskData, ...fakeCompletionData, }, task_id, @@ -2376,10 +2448,12 @@ describe('Task tests', () => { createdTask.soil_amendment_task_products[indexOfFirstProduct].product_id = soilAmendmentProductTwo.product_id; + const { animals, animal_batches, ...patchTaskData } = createdTask; + completeTaskRequest( { user_id, farm_id }, { - ...createdTask, + ...patchTaskData, ...fakeCompletionData, }, task_id, @@ -2783,20 +2857,14 @@ describe('Task tests', () => { }); describe('PATCH abandon task tests', () => { - const CROP_FAILURE = 'CROP_FAILURE'; - const sampleNote = 'This is a sample note'; - const abandonTaskBody = { - abandonment_reason: CROP_FAILURE, - other_abandonment_reason: null, - abandonment_notes: sampleNote, - abandon_date: new Date(), - }; - test('An unassigned task should not abandoned with a rating', async (done) => { const [{ user_id, farm_id }] = await mocks.userFarmFactory({}, fakeUserFarm(1)); const date = faker.date.future().toISOString().split('T')[0]; const [task] = await mocks.taskFactory( - { promisedUser: [{ user_id }] }, + { + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }, mocks.fakeTask({ due_date: date }), ); const [location] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); @@ -2820,7 +2888,10 @@ describe('Task tests', () => { const [{ user_id, farm_id }] = await mocks.userFarmFactory({}, fakeUserFarm(1)); const date = faker.date.future().toISOString().split('T')[0]; const [task] = await mocks.taskFactory( - { promisedUser: [{ user_id }] }, + { + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }, mocks.fakeTask({ due_date: date }), ); const [location] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); @@ -2846,6 +2917,7 @@ describe('Task tests', () => { const [task] = await mocks.taskFactory( { promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], }, mocks.fakeTask({ due_date: date, assignee_user_id: user_id }), ); @@ -2866,7 +2938,10 @@ describe('Task tests', () => { const [{ user_id, farm_id }] = await mocks.userFarmFactory({}, fakeUserFarm(2)); const date = faker.date.future().toISOString().split('T')[0]; const [task] = await mocks.taskFactory( - { promisedUser: [{ user_id }] }, + { + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }, mocks.fakeTask({ due_date: date }), ); const [location] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); @@ -2886,7 +2961,10 @@ describe('Task tests', () => { const [{ user_id, farm_id }] = await mocks.userFarmFactory({}, fakeUserFarm(5)); const date = faker.date.future().toISOString().split('T')[0]; const [task] = await mocks.taskFactory( - { promisedUser: [{ user_id }] }, + { + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }, mocks.fakeTask({ due_date: date }), ); const [location] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); @@ -2910,7 +2988,10 @@ describe('Task tests', () => { ); const date = faker.date.future().toISOString().split('T')[0]; const [task] = await mocks.taskFactory( - { promisedUser: [{ user_id: other_user_id }] }, + { + promisedUser: [{ user_id: other_user_id }], + promisedFarm: [{ farm_id }], + }, mocks.fakeTask({ due_date: date }), ); const [location] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); @@ -2936,6 +3017,7 @@ describe('Task tests', () => { const [task] = await mocks.taskFactory( { promisedUser: [{ user_id: other_user_id }], + promisedFarm: [{ farm_id }], }, mocks.fakeTask({ due_date: date, assignee_user_id: other_user_id }), ); @@ -2958,6 +3040,7 @@ describe('Task tests', () => { const [task] = await mocks.taskFactory( { promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], }, mocks.fakeTask({ due_date: date }), ); @@ -2984,6 +3067,7 @@ describe('Task tests', () => { const [task] = await mocks.taskFactory( { promisedUser: [{ user_id: other_user_id }], + promisedFarm: [{ farm_id }], }, mocks.fakeTask({ due_date: date, assignee_user_id: user_id }), ); @@ -3010,6 +3094,7 @@ describe('Task tests', () => { const [task] = await mocks.taskFactory( { promisedUser: [{ user_id: other_user_id }], + promisedFarm: [{ farm_id }], }, mocks.fakeTask({ due_date: date, assignee_user_id: other_user_id }), ); @@ -3020,6 +3105,30 @@ describe('Task tests', () => { done(); }); }); + + test('Should not be able to abandon a task with disallowed reason', async (done) => { + const [{ user_id, farm_id }] = await mocks.userFarmFactory({}, fakeUserFarm(1)); + const date = faker.date.future().toISOString().split('T')[0]; + const [task] = await mocks.taskFactory( + { + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }, + mocks.fakeTask({ due_date: date, assignee_user_id: user_id }), + ); + const [location] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); + await mocks.location_tasksFactory({ promisedTask: [task], promisedField: [location] }); + abandonTaskRequest( + { user_id, farm_id }, + { abandonTaskBody, abandonment_reason: 'NO_ANIMALS' }, + task.task_id, + async (err, res) => { + expect(res.status).toBe(400); + expect(res.error.text).toBe('The provided abandonment_reason is not allowed'); + done(); + }, + ); + }); }); describe('DELETE task tests', () => { @@ -3027,7 +3136,10 @@ describe('Task tests', () => { const [{ user_id, farm_id }] = await mocks.userFarmFactory({}, fakeUserFarm(1)); const date = faker.date.future().toISOString().split('T')[0]; const [task] = await mocks.taskFactory( - { promisedUser: [{ user_id }] }, + { + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }, mocks.fakeTask({ due_date: date, assignee_user_id: user_id }), ); const [location] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); @@ -3044,7 +3156,10 @@ describe('Task tests', () => { const [{ user_id, farm_id }] = await mocks.userFarmFactory({}, fakeUserFarm(2)); const date = faker.date.future().toISOString().split('T')[0]; const [task] = await mocks.taskFactory( - { promisedUser: [{ user_id }] }, + { + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }, mocks.fakeTask({ due_date: date }), ); const [location] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); @@ -3061,7 +3176,10 @@ describe('Task tests', () => { const [{ user_id, farm_id }] = await mocks.userFarmFactory({}, fakeUserFarm(5)); const date = faker.date.future().toISOString().split('T')[0]; const [task] = await mocks.taskFactory( - { promisedUser: [{ user_id }] }, + { + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }, mocks.fakeTask({ due_date: date }), ); const [location] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); @@ -3082,7 +3200,10 @@ describe('Task tests', () => { ); const date = faker.date.future().toISOString().split('T')[0]; const [task] = await mocks.taskFactory( - { promisedUser: [{ user_id: other_user_id }] }, + { + promisedUser: [{ user_id: other_user_id }], + promisedFarm: [{ farm_id }], + }, mocks.fakeTask({ due_date: date }), ); const [location] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); @@ -3103,7 +3224,10 @@ describe('Task tests', () => { ); const date = faker.date.future().toISOString().split('T')[0]; const [task] = await mocks.taskFactory( - { promisedUser: [{ user_id: other_user_id }] }, + { + promisedUser: [{ user_id: other_user_id }], + promisedFarm: [{ farm_id }], + }, mocks.fakeTask({ due_date: date, assignee_user_id: other_user_id }), ); const [location] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); @@ -3120,7 +3244,10 @@ describe('Task tests', () => { const [{ user_id, farm_id }] = await mocks.userFarmFactory({}, fakeUserFarm(3)); const date = faker.date.future().toISOString().split('T')[0]; const [task] = await mocks.taskFactory( - { promisedUser: [{ user_id }] }, + { + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }, mocks.fakeTask({ due_date: date, assignee_user_id: user_id }), ); const [location] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); @@ -3138,7 +3265,10 @@ describe('Task tests', () => { const due_date = today.toISOString().split('T')[0]; const patchTaskDateBody = { due_date }; const [{ user_id, farm_id }] = await mocks.userFarmFactory({}, fakeUserFarm(1)); - const [{ task_id }] = await mocks.taskFactory({ promisedUser: [{ user_id }] }); + const [{ task_id }] = await mocks.taskFactory({ + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }); const [{ location_id }] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); await mocks.location_tasksFactory({ promisedTask: [{ task_id }], @@ -3157,7 +3287,10 @@ describe('Task tests', () => { const due_date = faker.date.future().toISOString().split('T')[0]; const patchTaskDateBody = { due_date }; const [{ user_id, farm_id }] = await mocks.userFarmFactory({}, fakeUserFarm(1)); - const [{ task_id }] = await mocks.taskFactory({ promisedUser: [{ user_id }] }); + const [{ task_id }] = await mocks.taskFactory({ + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }); const [{ location_id }] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); await mocks.location_tasksFactory({ promisedTask: [{ task_id }], @@ -3177,7 +3310,10 @@ describe('Task tests', () => { const due_date = past.toISOString().split('T')[0]; const patchTaskDateBody = { due_date }; const [{ user_id, farm_id }] = await mocks.userFarmFactory({}, fakeUserFarm(1)); - const [{ task_id }] = await mocks.taskFactory({ promisedUser: [{ user_id }] }); + const [{ task_id }] = await mocks.taskFactory({ + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }); const [{ location_id }] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); await mocks.location_tasksFactory({ promisedTask: [{ task_id }], @@ -3195,7 +3331,10 @@ describe('Task tests', () => { const due_date = today.toISOString().split('T')[0]; const patchTaskDateBody = { due_date }; const [{ user_id, farm_id }] = await mocks.userFarmFactory({}, fakeUserFarm(5)); - const [{ task_id }] = await mocks.taskFactory({ promisedUser: [{ user_id }] }); + const [{ task_id }] = await mocks.taskFactory({ + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }); const [{ location_id }] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); await mocks.location_tasksFactory({ promisedTask: [{ task_id }], @@ -3214,7 +3353,10 @@ describe('Task tests', () => { const due_date = faker.date.future().toISOString().split('T')[0]; const patchTaskDateBody = { due_date }; const [{ user_id, farm_id }] = await mocks.userFarmFactory({}, fakeUserFarm(5)); - const [{ task_id }] = await mocks.taskFactory({ promisedUser: [{ user_id }] }); + const [{ task_id }] = await mocks.taskFactory({ + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }); const [{ location_id }] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); await mocks.location_tasksFactory({ promisedTask: [{ task_id }], @@ -3234,7 +3376,10 @@ describe('Task tests', () => { const due_date = past.toISOString().split('T')[0]; const patchTaskDateBody = { due_date }; const [{ user_id, farm_id }] = await mocks.userFarmFactory({}, fakeUserFarm(5)); - const [{ task_id }] = await mocks.taskFactory({ promisedUser: [{ user_id }] }); + const [{ task_id }] = await mocks.taskFactory({ + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }); const [{ location_id }] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); await mocks.location_tasksFactory({ promisedTask: [{ task_id }], @@ -3252,7 +3397,10 @@ describe('Task tests', () => { const due_date = today.toISOString().split('T')[0]; const patchTaskDateBody = { due_date }; const [{ user_id, farm_id }] = await mocks.userFarmFactory({}, fakeUserFarm(5)); - const [{ task_id }] = await mocks.taskFactory({ promisedUser: [{ user_id }] }); + const [{ task_id }] = await mocks.taskFactory({ + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }); const [{ location_id }] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); await mocks.location_tasksFactory({ promisedTask: [{ task_id }], @@ -3271,7 +3419,10 @@ describe('Task tests', () => { const due_date = faker.date.future().toISOString().split('T')[0]; const patchTaskDateBody = { due_date }; const [{ user_id, farm_id }] = await mocks.userFarmFactory({}, fakeUserFarm(5)); - const [{ task_id }] = await mocks.taskFactory({ promisedUser: [{ user_id }] }); + const [{ task_id }] = await mocks.taskFactory({ + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }); const [{ location_id }] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); await mocks.location_tasksFactory({ promisedTask: [{ task_id }], @@ -3291,7 +3442,10 @@ describe('Task tests', () => { const due_date = past.toISOString().split('T')[0]; const patchTaskDateBody = { due_date }; const [{ user_id, farm_id }] = await mocks.userFarmFactory({}, fakeUserFarm(5)); - const [{ task_id }] = await mocks.taskFactory({ promisedUser: [{ user_id }] }); + const [{ task_id }] = await mocks.taskFactory({ + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }); const [{ location_id }] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); await mocks.location_tasksFactory({ promisedTask: [{ task_id }], @@ -3308,7 +3462,10 @@ describe('Task tests', () => { const due_date = faker.date.future().toISOString().split('T')[0]; const patchTaskDateBody = { due_date }; const [{ user_id, farm_id }] = await mocks.userFarmFactory({}, fakeUserFarm(3)); - const [{ task_id }] = await mocks.taskFactory({ promisedUser: [{ user_id }] }); + const [{ task_id }] = await mocks.taskFactory({ + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }); const [{ location_id }] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); await mocks.location_tasksFactory({ promisedTask: [{ task_id }], @@ -3326,7 +3483,10 @@ describe('Task tests', () => { const testWithRole = async (userRoleId, wage_at_moment, done) => { const patchTaskWageBody = { wage_at_moment }; const [{ user_id, farm_id }] = await mocks.userFarmFactory({}, fakeUserFarm(userRoleId)); - const [{ task_id }] = await mocks.taskFactory({ promisedUser: [{ user_id }] }); + const [{ task_id }] = await mocks.taskFactory({ + promisedUser: [{ user_id }], + promisedFarm: [{ farm_id }], + }); const [{ location_id }] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); await mocks.location_tasksFactory({ promisedTask: [{ task_id }], diff --git a/packages/api/tests/testEnvironment.js b/packages/api/tests/testEnvironment.js index 3921036b0f..2ec340a5e8 100644 --- a/packages/api/tests/testEnvironment.js +++ b/packages/api/tests/testEnvironment.js @@ -76,6 +76,11 @@ async function tableCleanup(knex) { DELETE FROM "plant_task"; DELETE FROM "transplant_task"; DELETE FROM "soil_task"; + DELETE FROM "animal_movement_task_purpose_relationship"; + DELETE FROM "animal_movement_purpose"; + DELETE FROM "animal_movement_task"; + DELETE FROM "task_animal_relationship"; + DELETE FROM "task_animal_batch_relationship"; DELETE FROM "task"; DELETE FROM "yield"; DELETE FROM "cropDisease"; @@ -112,7 +117,6 @@ async function tableCleanup(knex) { DELETE FROM "surface_water"; DELETE FROM "natural_area"; DELETE FROM "organic_history"; - DELETE FROM "location"; DELETE FROM "fertilizer"; DELETE FROM "farmExpense"; DELETE FROM "farmExpenseType"; @@ -121,6 +125,26 @@ async function tableCleanup(knex) { DELETE FROM "pesticide"; DELETE FROM "task_type"; DELETE FROM "farmDataSchedule"; + DELETE FROM "animal_use_relationship"; + DELETE FROM "animal_batch_use_relationship"; + DELETE FROM "animal_group_relationship"; + DELETE FROM "animal_batch_group_relationship"; + DELETE FROM "animal_group"; + DELETE FROM "animal"; + DELETE FROM "animal_batch_sex_detail"; + DELETE FROM "animal_batch"; + DELETE FROM "animal_sex"; + DELETE FROM "animal_identifier_color"; + DELETE FROM "animal_identifier_type"; + DELETE FROM "animal_origin"; + DELETE FROM "animal_type_use_relationship"; + DELETE FROM "animal_use"; + DELETE FROM "default_animal_breed"; + DELETE FROM "custom_animal_breed"; + DELETE FROM "default_animal_type"; + DELETE FROM "custom_animal_type"; + DELETE FROM "animal_removal_reason"; + DELETE FROM "location"; DELETE FROM "userFarm"; DELETE FROM "farm"; DELETE FROM "users" WHERE user_id <> '1'; diff --git a/packages/api/tests/utils/animalUtils.js b/packages/api/tests/utils/animalUtils.js new file mode 100644 index 0000000000..f34240f1e8 --- /dev/null +++ b/packages/api/tests/utils/animalUtils.js @@ -0,0 +1,127 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import chai from 'chai'; +import mocks from '../mock.factories.js'; + +import chaiHttp from 'chai-http'; +chai.use(chaiHttp); + +import server from '../../src/server.js'; + +export const makeFarmsWithAnimalsAndBatches = async (user) => { + const [firstFarm] = await mocks.userFarmFactory({ promisedUser: [user], roleId: 1 }); + const [secondFarm] = await mocks.userFarmFactory({ promisedUser: [user], roleId: 1 }); + const [thirdFarm] = await mocks.userFarmFactory({ promisedUser: [user], roleId: 1 }); + const [fourthFarm] = await mocks.userFarmFactory({ promisedUser: [user], roleId: 1 }); + + const existingAnimalsAndBatchesCountsPerFarm = [ + { farm: firstFarm, animalCount: 3, batchCount: 2 }, + { farm: secondFarm, animalCount: 0, batchCount: 4 }, + { farm: thirdFarm, animalCount: 10, batchCount: 0 }, + { farm: fourthFarm, animalCount: 0, batchCount: 0 }, + ]; + + // add animals and batches to the DB + for (const { farm, animalCount, batchCount } of existingAnimalsAndBatchesCountsPerFarm) { + for (let i = 0; i < animalCount; i++) { + await mocks.animalFactory({ promisedFarm: [farm] }); + } + for (let i = 0; i < batchCount; i++) { + await mocks.animal_batchFactory({ promisedFarm: [farm] }); + } + } + + return { existingAnimalsAndBatchesCountsPerFarm }; +}; + +/** + * Returns animal or animal batch depending on the given kind. + * @param {string} kind 'animal' or 'batch' + * @param {object} farm + * @return {object} animal or batch + */ +export const makeAnimalOrBatchForFarm = async ({ kind, farm }) => { + const [data] = + kind === 'animal' + ? await mocks.animalFactory({ promisedFarm: [farm] }) + : await mocks.animal_batchFactory({ promisedFarm: [farm] }); + + return data; +}; + +const entityEndpoints = { + animal: 'animals', + batch: 'animal_batches', +}; + +const getGetRequest = (entity) => async ({ user_id, farm_id }) => { + return await chai + .request(server) + .get(`/${entity}`) + .set('user_id', user_id) + .set('farm_id', farm_id); +}; + +const getPostRequest = (entity) => async ({ user_id, farm_id }, data) => { + return await chai + .request(server) + .post(`/${entity}`) + .set('user_id', user_id) + .set('farm_id', farm_id) + .send(data); +}; + +const getRemoveRequest = (entity) => async ({ user_id, farm_id }, data) => { + return await chai + .request(server) + .patch(`/${entity}/remove`) + .set('Content-Type', 'application/json') + .set('user_id', user_id) + .set('farm_id', farm_id) + .send(data); +}; + +const getPatchRequest = (entity) => async ({ user_id, farm_id }, data) => { + return await chai + .request(server) + .patch(`/${entity}`) + .set('Content-Type', 'application/json') + .set('user_id', user_id) + .set('farm_id', farm_id) + .send(data); +}; + +const getDeleteRequest = (entity) => async ({ user_id, farm_id, query = '' }) => { + return await chai + .request(server) + .delete(`/${entity}?${query}`) + .set('Content-Type', 'application/json') + .set('user_id', user_id) + .set('farm_id', farm_id); +}; + +export const { + animalGetRequest = getGetRequest(entityEndpoints['animal']), + animalPostRequest = getPostRequest(entityEndpoints['animal']), + animalRemoveRequest = getRemoveRequest(entityEndpoints['animal']), + animalPatchRequest = getPatchRequest(entityEndpoints['animal']), + animalDeleteRequest = getDeleteRequest(entityEndpoints['animal']), + batchGetRequest = getGetRequest(entityEndpoints['batch']), + batchPostRequest = getPostRequest(entityEndpoints['batch']), + batchRemoveRequest = getRemoveRequest(entityEndpoints['batch']), + batchPatchRequest = getPatchRequest(entityEndpoints['batch']), + batchDeleteRequest = getDeleteRequest(entityEndpoints['batch']), +} = {}; diff --git a/packages/api/tests/utils/taskUtils.js b/packages/api/tests/utils/taskUtils.js new file mode 100644 index 0000000000..4a4197b204 --- /dev/null +++ b/packages/api/tests/utils/taskUtils.js @@ -0,0 +1,232 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import chai from 'chai'; +import chaiHttp from 'chai-http'; + +chai.use(chaiHttp); +import server from '../../src/server.js'; +import knex from '../../src/util/knex.js'; +import mocks from '../mock.factories.js'; +import { faker } from '@faker-js/faker'; + +/** + * Converts a given Date to the local date in ISO-8601 extended format (YYYY-MM-DD). + * Date.prototype.toISOString() returns the same format of the UTC (not local) date. + * @param {Date} date - The date to be converted. + * @returns {string} The input's local date in YYYY-MM-DD format. + */ +export function toLocal8601Extended(date) { + return ( + `${date.getFullYear()}-` + + `${(date.getMonth() + 1).toString().padStart(2, '0')}-` + + `${date.getDate().toString().padStart(2, '0')}` + ); +} + +const today = new Date(); +export const todayWithTimezone = new Date(today.getFullYear(), today.getMonth(), today.getDate()); + +const yesterday = new Date(); +yesterday.setDate(yesterday.getDate() - 1); +export const yesterdayInYYYYMMDD = toLocal8601Extended(yesterday); + +export const fakeCompletionData = { + complete_date: '2222-01-01', + duration: 15, + happiness: 5, + completion_notes: faker.lorem.sentence(), +}; + +export const CROP_FAILURE = 'CROP_FAILURE'; +export const sampleNote = 'This is a sample note'; +export const abandonTaskBody = { + abandonment_reason: CROP_FAILURE, + other_abandonment_reason: null, + abandonment_notes: sampleNote, + abandon_date: new Date(), +}; + +export async function postTaskRequest({ user_id, farm_id }, type, data) { + return chai + .request(server) + .post(`/task/${type}`) + .set('user_id', user_id) + .set('farm_id', farm_id) + .send(data); +} + +export async function getTasksRequest({ user_id, farm_id }) { + return chai + .request(server) + .get(`/task/${farm_id}`) + .set('user_id', user_id) + .set('farm_id', farm_id); +} + +export async function patchTaskDateRequest({ user_id, farm_id }, data, task_id) { + return chai + .request(server) + .patch(`/task/patch_due_date/${task_id}`) + .set('user_id', user_id) + .set('farm_id', farm_id) + .send(data); +} + +export async function completeTaskRequest({ user_id, farm_id }, data, task_id, type) { + return chai + .request(server) + .patch(`/task/complete/${type}/${task_id}`) + .set('user_id', user_id) + .set('farm_id', farm_id) + .send(data); +} + +export async function abandonTaskRequest({ user_id, farm_id }, data, task_id) { + return chai + .request(server) + .patch(`/task/abandon/${task_id}`) + .set('user_id', user_id) + .set('farm_id', farm_id) + .send(data); +} + +export function fakeUserFarm(role = 1) { + return { ...mocks.fakeUserFarm(), role_id: role }; +} + +export function customFieldWorkTask(task) { + return { ...mocks.fakeFieldWorkTask(), field_work_task_type: task }; +} + +export async function userFarmTaskGenerator(linkPlan = true) { + const userFarm = { ...fakeUserFarm(1), wage: { type: '', amount: 30 } }; + const [{ user_id, farm_id }] = await mocks.userFarmFactory({}, userFarm); + const [{ task_type_id }] = await mocks.task_typeFactory({ promisedFarm: [{ farm_id }] }); + const [{ location_id }] = await mocks.locationFactory({ promisedFarm: [{ farm_id }] }); + const [{ crop_variety_id }] = await mocks.crop_varietyFactory({ promisedFarm: [{ farm_id }] }); + + const [{ management_plan_id }] = linkPlan + ? await mocks.crop_management_planFactory({ + promisedFarm: [{ farm_id }], + promisedLocation: [{ location_id }], + crop_variety: [{ crop_variety_id }], + }) + : [{ management_plan_id: null }]; + const [{ planting_management_plan_id }] = linkPlan + ? await knex('planting_management_plan').where({ management_plan_id }) + : [{ planting_management_plan_id: null }]; + return { + user_id, + farm_id, + location_id, + management_plan_id, + planting_management_plan_id, + task_type_id, + }; +} + +const generateAnimalMovementTask = async (taskId, animalMovementTask) => { + if (!animalMovementTask) { + return; + } + + // Insert animal_movement_task + await mocks.animal_movement_taskFactory({ promisedTask: [{ task_id: taskId }] }); + + if (!animalMovementTask.purpose_relationships) { + return { animal_movement_task: { task_id: taskId } }; + } + + // Handle relationships with purposes + await Promise.all( + animalMovementTask.purpose_relationships.map(({ purpose_id, other_purpose }) => + mocks.animal_movement_task_purpose_relationshipFactory({ + promisedTask: [{ task_id: taskId }], + promisedPurpose: [{ id: purpose_id }], + other_purpose, + }), + ), + ); + + const purposeRelationships = await knex('animal_movement_task_purpose_relationship').where({ + task_id: taskId, + }); + + return { task_id: taskId, purpose_relationships: purposeRelationships }; +}; + +export const animalTaskGenerator = async (taskData) => { + const { animals, animal_batches, locations, animal_movement_task, ...otherData } = taskData; + + // Insert the main task record + const [task] = await mocks.taskFactory({}, otherData); + const { task_id } = task; + + // Handle relationships with locations + await Promise.all( + locations.map(({ location_id }) => + mocks.location_tasksFactory({ + promisedTask: [{ task_id }], + promisedField: [{ location_id }], + }), + ), + ); + + // Handle relationships with animals + if (animals?.length) { + await knex('task_animal_relationship') + .insert(animals.map(({ id }) => ({ task_id, animal_id: id }))) + .returning('*'); + } + + // Handle relationships with animal_batches + if (animal_batches?.length) { + await knex('task_animal_batch_relationship') + .insert(animal_batches.map(({ id }) => ({ task_id, animal_batch_id: id }))) + .returning('*'); + } + + // Handle animal_movement_task + const movementTask = await generateAnimalMovementTask(task_id, animal_movement_task); + + const createdTask = { ...task, locations, animals, animal_batches }; + if (movementTask) { + createdTask.animal_movement_task = movementTask; + } + + return createdTask; +}; + +export const generateUserFarms = async (number) => { + const userFarms = []; + const [user] = await mocks.usersFactory(); + + for (let i = 0; i < number; i++) { + const [farm] = await mocks.farmFactory(); + const [{ farm_id }] = await mocks.userFarmFactory( + { promisedUser: [user], promisedFarm: [farm] }, + { role_id: 1, status: 'Active' }, + ); + + userFarms.push({ user_id: user.user_id, farm_id }); + } + + return userFarms; +}; + +export async function getTask(task_id) { + return knex('task').where({ task_id }).first(); +} diff --git a/packages/end-to-end/.gitignore b/packages/end-to-end/.gitignore new file mode 100644 index 0000000000..185e60be19 --- /dev/null +++ b/packages/end-to-end/.gitignore @@ -0,0 +1 @@ +.nyc_output \ No newline at end of file diff --git a/packages/end-to-end/cypress.config.js b/packages/end-to-end/cypress.config.js index 97f47c4127..b52054b0f8 100644 --- a/packages/end-to-end/cypress.config.js +++ b/packages/end-to-end/cypress.config.js @@ -1,9 +1,25 @@ -const { defineConfig } = require("cypress"); +const { defineConfig } = require('cypress'); module.exports = defineConfig({ + projectId: 'wzcbom', + defaultCommandTimeout: 15 * 1000, + video: true, + env: { + 'cypress-react-selector': { + root: '#root', + }, + USER: 0, // for local use; in CI the CYPRESS_USER variable defined in the GitHub workflow will override this, see docs.cypress.io/guides/guides/environment-variables#Option-3-CYPRESS_ + }, e2e: { + baseUrl: 'http://localhost:3000', + specPattern: 'cypress/e2e/**/*.{js,jsx,ts,tsx}', setupNodeEvents(on, config) { - // implement node event listeners here + require('@cypress/code-coverage/task')(on, config); + // include any other plugin code... + + // It's IMPORTANT to return the config object + // with any changed environment variables + return config; }, }, }); diff --git a/packages/end-to-end/cypress/e2e/crops.js b/packages/end-to-end/cypress/e2e/crops.js new file mode 100644 index 0000000000..3b33a749f3 --- /dev/null +++ b/packages/end-to-end/cypress/e2e/crops.js @@ -0,0 +1,135 @@ +/* + * Copyright 2023, 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import moment from 'moment'; +import * as Selectors from '../support/selectorConstants.ts'; +import { loadTranslationsAndConfigureUserFarm } from '../support/utilities.js'; + +describe('Crops', () => { + let translation; + let crops; + + beforeEach(() => { + loadTranslationsAndConfigureUserFarm({ additionalTranslation: 'crop_group' }).then( + ([baseTranslation, additionalTranslation]) => { + translation = baseTranslation; + crops = additionalTranslation; + }, + ); + }); + + it('should successfully add a crop variety and crop plan', () => { + const uniqueSeed = Date.now().toString(); + const uniqueId = Cypress._.uniqueId(uniqueSeed); + + // Add a crop variety + cy.contains(translation['MENU']['CROPS']).should('exist').click(); + cy.url().should('include', '/crop_catalogue'); + + cy.get(Selectors.CROP_ADD_LINK).should('exist').and('not.be.disabled').click(); + + cy.url().should('include', '/crop/new'); + cy.get(Selectors.CROP_CROP_NAME) + .should('exist') + .type('New Crop' + uniqueId); + // cy.contains(translation['INVITE_USER']['CHOOSE_ROLE']) + cy.getVisible(Selectors.REACT_SELECT) + .find('input') + .type(crops['CEREALS'] + '{enter}'); + + cy.get(Selectors.CAN_BE_COVER_CROP).first().check({ force: true }); + + cy.get(Selectors.CROP_SUBMIT).should('exist').and('not.be.disabled').click(); + cy.url().should('include', '/crop/new/add_crop_variety'); + cy.get(Selectors.CROP_VARIETY).should('exist').type('New Variety'); + cy.get(Selectors.CROP_SUPPLIER).should('exist').type('New Supplier'); + cy.get(Selectors.CROP_ANNUAL).should('exist').check({ force: true }); + cy.get(Selectors.VARIETY_SUBMIT).should('exist').and('not.be.disabled').click(); + cy.url().should('include', '/crop/new/add_crop_variety/compliance'); + cy.get(Selectors.COMPLIANCE_NEW_VARIETY_SAVE).should('exist').and('be.disabled'); + cy.get(Selectors.COMPLIANCE_SEED).eq(1).should('exist').check({ force: true }); + cy.get(Selectors.COMPLIANCE_SEED).eq(1).should('exist').check({ force: true }); + cy.get(Selectors.COMPLIANCE_SEED_AVAILABILITY).eq(1).should('exist').check({ force: true }); + cy.get(Selectors.COMPLIANCE_SEED_ENGINEERED).eq(0).should('exist').check({ force: true }); + cy.get(Selectors.COMPLIANCE_SEED_TREATED).eq(2).should('exist').check({ force: true }); + cy.get(Selectors.COMPLIANCE_NEW_VARIETY_SAVE).should('exist').and('not.be.disabled').click(); + + // Check if spotlight was shown + cy.window() + .its('store') + .invoke('getState') + .its('entitiesReducer.showedSpotlightReducer.management_plan_creation') + .then((managementPlanCreation) => { + if (!managementPlanCreation) { + // Checks if the value is false + cy.get(Selectors.SPOTLIGHT_NEXT).should('exist').and('not.be.disabled').click(); + cy.get(Selectors.SPOTLIGHT_NEXT).should('exist').and('not.be.disabled').click(); + } + }); + + // Add Management Plan + cy.contains(translation['CROP_DETAIL']['ADD_PLAN']).click(); + cy.get(Selectors.PLANTING_METHOD_GROUND_PLANTED).first().check(); + cy.get(Selectors.CROP_PLAN_SUBMIT).should('exist').and('not.be.disabled').click(); + cy.get(Selectors.CROP_PLAN_TRANSPLANT_SUBMIT).should('exist').and('not.be.disabled').click(); + + const date = new Date(); + date.setDate(date.getDate() + 1); + const getDateInputFormat = (date) => moment(date).format('YYYY-MM-DD'); + const dueDate = getDateInputFormat(date); + cy.get(Selectors.CROP_PLAN_PLANT_DATE).should('exist').type(dueDate); + cy.get(Selectors.CROP_PLAN_SEED_GERMINATION).should('exist').type('15'); + cy.get(Selectors.CROP_PLAN_PLANT_HARVEST).should('exist').type('30'); + cy.get(Selectors.PLANT_DATE_SUBMIT).should('exist').and('not.be.disabled').click(); + + // Select field + cy.contains('First Field').should('be.visible'); + // eslint-disable-next-line cypress/no-unnecessary-waiting + cy.wait(500, { log: false }); + cy.get(Selectors.MAP_SELECT_LOCATION).click({ force: false }); + cy.get(Selectors.CROP_PLAN_LOCATION_SUBMIT).should('exist').and('not.be.disabled').click(); + + // Planning Method + cy.get(Selectors.PLANTING_METHOD_ROW).check(); + cy.get(Selectors.PLANTING_METHOD_SUBMIT).should('exist').and('not.be.disabled').click(); + + // Row length + cy.get(Selectors.ROW_METHOD_EQUAL_LENGTH).first().check(); + + cy.get(Selectors.ROW_METHOD_ROWS).should('exist').type('15{enter}'); + cy.get(Selectors.ROW_METHOD_LENGTH).should('exist').type('15{enter}'); + cy.get(Selectors.ROW_METHOD_SPACING).should('exist').type('15{enter}'); + cy.contains(translation['MANAGEMENT_PLAN']['PLANT_SPACING']).click({ force: true }); + cy.get(Selectors.ROW_METHOD_YIELD).should('exist').type('15'); + cy.contains(translation['MANAGEMENT_PLAN']['PLANT_SPACING']).click({ force: true }); + cy.get(Selectors.ROW_METHOD_SUBMIT).should('exist').and('not.be.disabled').click(); + + cy.get(Selectors.PLAN_GUIDANCE_SUBMIT).should('exist').and('not.be.disabled').click(); + cy.get(Selectors.CROP_PLAN_SAVE).should('exist').and('not.be.disabled').click(); + + // Check if spotlight was shown + cy.window() + .its('store') + .invoke('getState') + .its('entitiesReducer.showedSpotlightReducer.crop_variety_detail') + .then((managementPlanCreation) => { + if (!managementPlanCreation) { + // Checks if the value is false + cy.get(Selectors.SPOTLIGHT_NEXT).should('exist').and('not.be.disabled').click(); + cy.get(Selectors.SPOTLIGHT_NEXT).should('exist').and('not.be.disabled').click(); + } + }); + }); +}); diff --git a/packages/end-to-end/cypress/e2e/farm_people.js b/packages/end-to-end/cypress/e2e/farm_people.js new file mode 100644 index 0000000000..fa11d124d6 --- /dev/null +++ b/packages/end-to-end/cypress/e2e/farm_people.js @@ -0,0 +1,115 @@ +/* + * Copyright 2023, 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import * as Selectors from '../support/selectorConstants.ts'; +import { loadTranslationsAndConfigureUserFarm } from '../support/utilities.js'; + +describe('Farm People', () => { + let translation; + let roles; + + beforeEach(() => { + loadTranslationsAndConfigureUserFarm({ additionalTranslation: 'role' }).then( + ([baseTranslation, additionalTranslation]) => { + translation = baseTranslation; + roles = additionalTranslation; + }, + ); + }); + + it('should invite a manager user', () => { + const uniqueSeed = Date.now().toString(); + const uniqueId = Cypress._.uniqueId(uniqueSeed); + + cy.contains(translation['MENU']['PEOPLE']) + .should('exist') + .and('not.be.disabled') + .click({ force: true }); + cy.url().should('include', '/people'); + + cy.get(Selectors.INVITE_USER).should('exist').and('not.be.disabled').click(); + + cy.get(Selectors.INVITE_USER_NAME).click(); + cy.get(Selectors.INVITE_USER_NAME).should('exist').type('Awesome Farm Manager'); + + cy.contains(translation['INVITE_USER']['CHOOSE_ROLE']).click({ force: true }); + cy.contains(roles['MANAGER']).click({ force: true }); + + cy.get(Selectors.INVITE_USER_EMAIL) + .should('exist') + .type('farm_manager' + uniqueId + '@litefarm.com'); + cy.get(Selectors.INVITE_USER_SUBMIT).should('exist').and('not.be.disabled').click(); + }); + + it('it should fail to invite an invalid email address', () => { + cy.contains(translation['MENU']['PEOPLE']) + .should('exist') + .and('not.be.disabled') + .click({ force: true }); + cy.url().should('include', '/people'); + + cy.get(Selectors.INVITE_USER).should('exist').and('not.be.disabled').click(); + + cy.get(Selectors.INVITE_USER_NAME).click(); + cy.get(Selectors.INVITE_USER_NAME).should('exist').type('Invalid Farm Manager'); + cy.get(Selectors.INVITE_USER_EMAIL).should('exist').type('Invalid email'); + cy.get(Selectors.INVITE_USER_NAME).click(); + cy.get(Selectors.INPUT_ERROR) + .contains(translation['INVITE_USER']['INVALID_EMAIL_ERROR']) + .should('exist'); + }); + + it('it should fail to invite a duplicate email address', () => { + const uniqueSeed = Date.now().toString(); + const uniqueId = Cypress._.uniqueId(uniqueSeed); + + cy.contains(translation['MENU']['PEOPLE']) + .should('exist') + .and('not.be.disabled') + .click({ force: true }); + cy.url().should('include', '/people'); + + cy.get(Selectors.INVITE_USER).should('exist').and('not.be.disabled').click(); + + cy.get(Selectors.INVITE_USER_NAME).click(); + cy.get(Selectors.INVITE_USER_NAME).should('exist').type('Awesome Farm Manager'); + + cy.contains(translation['INVITE_USER']['CHOOSE_ROLE']).click({ force: true }); + cy.contains(roles['MANAGER']).click({ force: true }); + + cy.get(Selectors.INVITE_USER_EMAIL) + .should('exist') + .type('farm_manager' + uniqueId + '@litefarm.com'); + cy.get(Selectors.INVITE_USER_SUBMIT).should('exist').and('not.be.disabled').click(); + + // Invite the same user again + cy.get(Selectors.INVITE_USER).should('exist').and('not.be.disabled').click(); + + cy.get(Selectors.INVITE_USER_NAME).click(); + cy.get(Selectors.INVITE_USER_NAME).should('exist').type('Awesome Farm Manager'); + + cy.contains(translation['INVITE_USER']['CHOOSE_ROLE']).click({ force: true }); + cy.contains(roles['MANAGER']).click({ force: true }); + + cy.get(Selectors.INVITE_USER_EMAIL) + .should('exist') + .type('farm_manager' + uniqueId + '@litefarm.com'); + + cy.get(Selectors.INVITE_USER_NAME).click(); + cy.get(Selectors.INPUT_ERROR) + .contains(translation['INVITE_USER']['ALREADY_EXISTING_EMAIL_ERROR']) + .should('exist'); + }); +}); diff --git a/packages/end-to-end/cypress/e2e/tasks.js b/packages/end-to-end/cypress/e2e/tasks.js new file mode 100644 index 0000000000..b673437e6d --- /dev/null +++ b/packages/end-to-end/cypress/e2e/tasks.js @@ -0,0 +1,144 @@ +/* + * Copyright 2023, 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import moment from 'moment'; +import * as Selectors from '../support/selectorConstants.ts'; +import { loadTranslationsAndConfigureUserFarm } from '../support/utilities.js'; + +// Utility function to check Redux state with a retry mechanism +const checkReduxState = (endTime) => { + const currentTime = new Date().getTime(); + + if (currentTime > endTime) { + throw new Error('Timed out waiting for Redux state to populate'); + } +}; + +describe('Tasks', () => { + let translation; + let tasks; + + beforeEach(() => { + loadTranslationsAndConfigureUserFarm({ additionalTranslation: 'task' }).then( + ([baseTranslation, additionalTranslation]) => { + translation = baseTranslation; + tasks = additionalTranslation; + + const endTime = new Date().getTime() + 15000; // Set the end time to 15 seconds from now + checkReduxState(endTime); + }, + ); + }); + + it('it should successfully create a cleaning task', () => { + // Confirm that location exists + cy.contains(translation['MENU']['MAP']) + .should('exist') + .and('not.be.disabled') + .click({ force: true }); + cy.contains('First Field').should('be.visible'); + + cy.contains(translation['MENU']['TASKS']).should('exist').click(); + cy.waitForReact(); + + cy.get(`[aria-label="${translation['TASK']['ADD_TASK']}"]`) + .should('exist') + .and('not.be.disabled') + .click(); + cy.waitForReact(); + cy.get(Selectors.TASK_SELECTION).contains(tasks['CLEANING_TASK']).should('exist').click(); + + //Create an unassigned cleaning task due tomorrow + const date = new Date(); + date.setDate(date.getDate() + 1); + const getDateInputFormat = (date) => moment(date).format('YYYY-MM-DD'); + const dueDate = getDateInputFormat(date); + cy.get(Selectors.ADD_TASK_TASK_DATE).should('exist').type(dueDate); + + cy.get(Selectors.ADD_TASK_CONTINUE).should('exist').and('not.be.disabled').click(); + + cy.contains('First Field').should('be.visible'); + // eslint-disable-next-line cypress/no-unnecessary-waiting + cy.wait(500, { log: false }); + cy.get(Selectors.MAP_SELECT_LOCATION).click({ force: false }); + + cy.get(Selectors.ADD_TASK_LOCATION_CONTINUE).should('exist').and('not.be.disabled').click(); + + // This screen only present when this test file is run after crops.js + cy.get(Selectors.ADD_TASK_CROPS_CONTINUE).should('exist').and('not.be.disabled').click(); + + cy.get(Selectors.ADD_TASK_DETAILS_CONTINUE).should('exist').and('not.be.disabled').click(); + cy.get(Selectors.ADD_TASK_ASSIGNMENT_SAVE).should('exist').and('not.be.disabled').click(); + cy.waitForReact(); + + // Open the card and mark as complete + cy.get(Selectors.TASK_CARD).first().click(); + cy.get(Selectors.TASK_READ_ONLY_COMPLETE).scrollIntoView(); + cy.get(Selectors.TASK_READ_ONLY_COMPLETE).click(); + cy.get(Selectors.BEFORE_COMPLETE_SUBMIT).click(); + cy.get(Selectors.HARVEST_COMPLETE_RATING).check({ force: true }); + cy.get(Selectors.HARVEST_COMPLETE_SAVE).click(); + }); + + it('it should successfully create a field work task', () => { + cy.contains(translation['MENU']['TASKS']).should('exist').click(); + cy.waitForReact(); + cy.get(`[aria-label="${translation['TASK']['ADD_TASK']}"]`) + .should('exist') + .and('not.be.disabled') + .click(); + cy.waitForReact(); + cy.get(Selectors.TASK_SELECTION) + .contains(tasks['FIELD_WORK_TASK']) + .should('exist') + .and('not.be.disabled') + .click({ force: true }); + + //Create an unassigned cleaning task due tomorrow + const date = new Date(); + date.setDate(date.getDate() + 1); + const getDateInputFormat = (date) => moment(date).format('YYYY-MM-DD'); + const dueDate = getDateInputFormat(date); + cy.get(Selectors.ADD_TASK_TASK_DATE).should('exist').type(dueDate); + cy.get(Selectors.ADD_TASK_CONTINUE).should('exist').and('not.be.disabled').click(); + + cy.contains('First Field').should('be.visible'); + // eslint-disable-next-line cypress/no-unnecessary-waiting + cy.wait(500, { log: false }); + cy.get(Selectors.MAP_SELECT_LOCATION).click({ force: false }); + cy.get(Selectors.ADD_TASK_LOCATION_CONTINUE).should('exist').and('not.be.disabled').click(); + + // This screen only present when this test file is run after crops.js + cy.get(Selectors.ADD_TASK_CROPS_CONTINUE).should('exist').and('not.be.disabled').click(); + + // Select type of work + cy.getVisible(Selectors.REACT_SELECT).find('input').click({ force: true }); + cy.contains(translation['ADD_TASK']['FIELD_WORK_VIEW']['TYPE']['PRUNING']).click({ + force: true, + }); + + cy.get(Selectors.ADD_TASK_DETAILS_CONTINUE).should('exist').and('not.be.disabled').click(); + cy.get(Selectors.ADD_TASK_ASSIGNMENT_SAVE).should('exist').and('not.be.disabled').click(); + cy.waitForReact(); + + // Open the card and mark as complete + cy.get(Selectors.TASK_CARD).first().click(); + cy.get(Selectors.TASK_READ_ONLY_COMPLETE).scrollIntoView(); + cy.get(Selectors.TASK_READ_ONLY_COMPLETE).click(); + cy.get(Selectors.BEFORE_COMPLETE_SUBMIT).click(); + cy.get(Selectors.HARVEST_COMPLETE_RATING).check({ force: true }); + cy.get(Selectors.HARVEST_COMPLETE_SAVE).click(); + }); +}); diff --git a/packages/end-to-end/cypress/fixtures/e2e-test-users.json b/packages/end-to-end/cypress/fixtures/e2e-test-users.json new file mode 100644 index 0000000000..42e41883b1 --- /dev/null +++ b/packages/end-to-end/cypress/fixtures/e2e-test-users.json @@ -0,0 +1,16 @@ +[ + { + "name": "English User", + "email": "test_user_english@cypress.io", + "password": "Test123445566!", + "language": "English", + "locale": "en" + }, + { + "name": "Spanish User", + "email": "test_user_spanish@cypress.io", + "password": "Test123445566!", + "language": "Spanish", + "locale": "es" + } +] diff --git a/packages/end-to-end/cypress/plugins/email-account.js b/packages/end-to-end/cypress/plugins/email-account.js new file mode 100644 index 0000000000..37cebbe72e --- /dev/null +++ b/packages/end-to-end/cypress/plugins/email-account.js @@ -0,0 +1,76 @@ +// cypress/plugins/email-account.js + +const nodemailer = require('nodemailer'); +const imaps = require('imap-simple'); +const { simpleParser } = require('mailparser'); + +exports.makeEmailAccount = async () => { + const testAccount = await nodemailer.createTestAccount(); + // use testAccount.user and testAccount.pass + // to log in into the email inbox + const emailConfig = { + imap: { + user: testAccount.user, + password: testAccount.pass, + host: 'imap.ethereal.email', + port: 993, + tls: true, + authTimeout: 10000, + }, + }; + + console.log('created new email account %s', testAccount.user); + console.log('for debugging, the password is %s', testAccount.pass); + + const userEmail = { + email: testAccount.user, + password: testAccount.pass, + + /** + * Utility method for getting the last email + * for the Ethereal email account created above. + */ + async getLastEmail() { + // makes debugging very simple + console.log('getting the last email'); + console.log(emailConfig); + + try { + const connection = await imaps.connect(emailConfig); + + // grab up to 50 emails from the inbox + await connection.openBox('INBOX'); + const searchCriteria = ['1:50']; + const fetchOptions = { + bodies: [''], + }; + const messages = await connection.search(searchCriteria, fetchOptions); + // and close the connection to avoid it hanging + connection.end(); + + if (!messages.length) { + console.log('cannot find any emails'); + return null; + } else { + console.log('there are %d messages', messages.length); + // grab the last email + const mail = await simpleParser(messages[messages.length - 1].parts[0].body); + console.log(mail.subject); + console.log(mail.text); + + // and returns the main fields + return { + subject: mail.subject, + text: mail.text, + html: mail.html, + }; + } + } catch (e) { + console.error(e); + return null; + } + }, + }; + + return userEmail; +}; diff --git a/packages/end-to-end/cypress/support/commands.js b/packages/end-to-end/cypress/support/commands.js index 66ea16ef0e..56a0dec063 100644 --- a/packages/end-to-end/cypress/support/commands.js +++ b/packages/end-to-end/cypress/support/commands.js @@ -1,25 +1,255 @@ -// *********************************************** -// This example commands.js shows you how to -// create various custom commands and overwrite -// existing commands. -// -// For more comprehensive examples of custom -// commands please read more here: -// https://on.cypress.io/custom-commands -// *********************************************** -// -// -// -- This is a parent command -- -// Cypress.Commands.add('login', (email, password) => { ... }) -// -// -// -- This is a child command -- -// Cypress.Commands.add('drag', { prevSubject: 'element'}, (subject, options) => { ... }) -// -// -// -- This is a dual command -- -// Cypress.Commands.add('dismiss', { prevSubject: 'optional'}, (subject, options) => { ... }) -// -// -// -- This will overwrite an existing command -- -// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... }) \ No newline at end of file +/* + * Copyright 2023, 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import 'cypress-react-selector'; +import * as Selectors from './selectorConstants.ts'; + +Cypress.Commands.add('waitUntilAnyVisible', (selector1, selector2, timeout = 10000) => { + const startTime = new Date().getTime(); + + const checkVisibility = () => { + return cy.get('body', { log: false }).then(($body) => { + if ($body.find(selector1).is(':visible')) { + return cy.wrap($body.find(selector1), { log: false }); + } else if ($body.find(selector2).is(':visible')) { + return cy.wrap($body.find(selector2), { log: false }); + } else if (new Date().getTime() - startTime < timeout) { + // If timeout hasn't passed, recursively call the function + // eslint-disable-next-line cypress/no-unnecessary-waiting + return cy.wait(100, { log: false }).then(checkVisibility); + } else { + // If timeout has passed, throw an error + throw new Error( + `Neither ${selector1} nor ${selector2} became visible within ${timeout}ms.`, + ); + } + }); + }; + + return checkVisibility(); +}); + +Cypress.Commands.add('getVisible', (selector, ...args) => { + return cy.get(selector, ...args).filter(':visible'); +}); + +Cypress.Commands.add( + 'loginOrCreateAccount', + (email, password, fullName, language, crop_menu_name, map_menu_name, fieldString) => { + //Login page + cy.get(Selectors.SIGNUP_EMAIL).type(email); + cy.intercept('GET', '**/login/user/' + email, (req) => { + delete req.headers['if-none-match']; + }).as('emailLogin'); + cy.get(Selectors.SIGNUP_CONTINUE).should('exist').and('be.enabled').click(); + + cy.waitUntilAnyVisible(Selectors.CREATE_USER_EMAIL, Selectors.ENTER_PASSWORD_PASSWORD); + + // Check if we are on pasword page or create account and act accordingly + cy.get(Selectors.CREATE_USER_EMAIL, { timeout: 0 }).then(($element) => { + if ($element.is(':visible')) { + cy.get(Selectors.CREATE_USER_NAME).type(fullName); + + cy.contains('English').click({ force: true }); + cy.contains(language).click({ force: true }); + + cy.get(Selectors.CREATE_USER_PASSWORD).type(password); + cy.get(Selectors.CREATE_USER_SUBMIT).should('exist').and('be.enabled').click(); + + cy.intercept('POST', '**/user').as('createUser'); + cy.get(Selectors.WELCOME_GET_STARTED).should('exist').and('not.be.disabled').click(); + + addFarm('UBC FARM', '49.250833, -123.2410777'); + + onboardCompleteQuestions('Manager'); + + acceptSlideMenuSpotlights(crop_menu_name); + + cy.createFirstLocation(map_menu_name, fieldString); + cy.visit('/'); + } else { + cy.get(Selectors.ENTER_PASSWORD_PASSWORD).type(password); + cy.get(Selectors.ENTER_PASSWORD_SUBMIT).should('exist').and('be.enabled').click(); + + // Flaky in this sense: www.cypress.io/blog/2019/01/22/when-can-the-test-click + // May require hard-coded wait if this is insufficient + cy.waitForReact(); + cy.get(Selectors.CHOOSE_FARM_PROCEED) + .should('be.visible') + .and('be.enabled') + .click({ force: true }); + } + }); + }, +); + +const addFarm = (farmName, location) => { + cy.intercept('GET', '**/maps.googleapis.com/maps/api/js/GeocodeService.*').as( + 'googleMapGeocodeCall', + ); + cy.url().should('include', '/add_farm'); + + cy.waitForReact(); + cy.get(Selectors.ADD_FARM_CONTINUE).should('exist').should('be.disabled'); + cy.get(Selectors.ADD_FARM_NAME).should('exist').type(farmName); + cy.get(Selectors.ADD_FARM_LOCATION).should('exist').type(location); + cy.wait('@googleMapGeocodeCall'); + cy.waitForReact(); + cy.get(Selectors.ADD_FARM_CONTINUE).should('not.be.disabled').click(); +}; + +const onboardCompleteQuestions = (role) => { + // cy.clock(); + cy.url().should('include', '/role_selection'); + // cy.tick(); + cy.get(Selectors.ROLE_SELECTION_CONTINUE).should('exist').and('be.disabled'); + cy.waitForReact(); + cy.get(Selectors.ROLE_SELECTION_ROLE).should('exist').check(role, { force: true }); + cy.get(Selectors.ROLE_SELECTION_CONTINUE).should('not.be.disabled').click(); + // cy.clock().then((clock) => { + // clock.restore(); + // }); + + // Give consent + cy.url().should('include', '/consent'); + cy.get(Selectors.CONSENT_CONTENT, { timeout: 180 * 1000 }).should('exist'); + cy.get(Selectors.CONSENT_CONTINUE).should('exist').and('be.disabled'); + cy.get(Selectors.CHECKBOX).should('exist').click(); + cy.get(Selectors.CONSENT_CONTINUE).should('not.be.disabled').click(); + + // Interested in Organic + cy.log('Interested in Organic'); + + cy.url().should('include', '/certification/interested_in_organic'); + cy.get(Selectors.INTERESTED_IN_ORGANIC_CONTINUE, { timeout: 180 * 1000 }) + .should('exist') + .and('be.disabled'); + cy.get(Selectors.INTERESTED_IN_ORGANIC_SELECT).should('exist'); + cy.get(Selectors.RADIO).first().check(); + cy.get(Selectors.INTERESTED_IN_ORGANIC_CONTINUE).should('not.be.disabled').click(); + + cy.url().should('include', '/certification/selection'); + cy.get(Selectors.CERTIFICATION_SELECTION_CONTINUE).should('exist').and('be.disabled'); + cy.get(Selectors.THIRD_PARTY_ORGANIC).should('exist'); + cy.get(Selectors.THIRD_PARTY_ORGANIC).check(); + cy.get(Selectors.CERTIFICATION_SELECTION_CONTINUE).should('not.be.disabled').click(); + + // Select certifier + cy.get(Selectors.CERTIFIER_SELECTION_PROCEED).should('exist').and('be.disabled'); + cy.get(Selectors.CERTIFICATION_SELECTION_ITEM).should('exist').eq(1).click(); + let certifier; + cy.get(Selectors.CERTIFICATION_SELECTION_ITEM) + .eq(1) + .then(function ($elem) { + certifier = $elem.text(); + let end = certifier.indexOf('('); + let result = certifier.substring(1, end); + //click the proceed button and ensure test is on the certification summary view and the certification selected is displayed + cy.get(Selectors.CERTIFIER_SELECTION_PROCEED).should('not.be.disabled').click(); + cy.url().should('include', '/certification/summary'); + cy.contains(result).should('exist'); + }); + + //certification summary + cy.get(Selectors.CERTIFICATION_SUMMARY_CONTINUE).should('exist').and('not.be.disabled').click(); + + // Outro + cy.url().should('include', '/outro'); + cy.get(Selectors.OUTRO_FINISH).should('exist').and('not.be.disabled').click(); +}; + +Cypress.Commands.add('createFirstLocation', (map_menu_name, fieldString) => { + cy.intercept('GET', '**/maps.googleapis.com/maps/api/**').as('googleMapsApiCall'); + + cy.contains(map_menu_name).should('exist').click(); + + //arrive at farm map page and draw a field + cy.url().should('include', '/map'); + + cy.get(Selectors.SPOTLIGHT_NEXT, { timeout: 60 * 1000 }) + .should('exist') + .and('not.be.disabled') + .click(); + cy.get(Selectors.SPOTLIGHT_NEXT).should('exist').and('not.be.disabled').click(); + cy.get(Selectors.SPOTLIGHT_NEXT).should('exist').and('not.be.disabled').click(); + cy.get(Selectors.MAP_ADD_FEATURE).should('exist').and('not.be.disabled').click(); + + cy.wait('@googleMapsApiCall'); + cy.waitForReact(); + + // Select "Field" + cy.contains(fieldString).click(); + + cy.get(Selectors.MAP_SELECTION).should('be.visible'); + cy.get(Selectors.MAP_TUTORIAL_CONTINUE).should('exist').and('not.be.disabled').click(); + + cy.get(Selectors.MAP_CONTAINER).click(500, 300); + // eslint-disable-next-line cypress/no-unnecessary-waiting + cy.wait(400, { log: false }); + cy.get(Selectors.MAP_CONTAINER).click(700, 300); + // eslint-disable-next-line cypress/no-unnecessary-waiting + cy.wait(400, { log: false }); + cy.get(Selectors.MAP_CONTAINER).click(700, 400); + // eslint-disable-next-line cypress/no-unnecessary-waiting + cy.wait(400, { log: false }); + cy.get(Selectors.MAP_CONTAINER).click(500, 400); + // eslint-disable-next-line cypress/no-unnecessary-waiting + cy.wait(400, { log: false }); + cy.get(Selectors.MAP_CONTAINER).click(500, 300); + // eslint-disable-next-line cypress/no-unnecessary-waiting + cy.wait(400, { log: false }); + cy.get(Selectors.MAP_TUTORIAL_CONTINUE).should('exist').and('not.be.disabled').click(); + cy.get(Selectors.MAP_DRAW_COMPLETE_CONTINUE).should('exist').and('not.be.disabled').click(); + + cy.get(Selectors.AREA_DETAILS_NAME).should('exist').type('First Field'); + cy.get(Selectors.CREATE_FIELD_SAVE).should('exist').and('not.be.disabled').click(); + + cy.get(Selectors.SNACKBAR).should('exist').and('be.visible'); + + cy.waitForReact(); + + // Confirm that location exists + cy.visit('/'); + cy.contains(map_menu_name).should('exist').click(); + cy.contains('First Field').should('be.visible'); + + // Check that it is in Redux + cy.window() + .its('store') + .invoke('getState') + .its('entitiesReducer') + .its('gardenReducer') + .its('ids') + .should('not.be.empty'); +}); + +const acceptSlideMenuSpotlights = (crop_menu_name) => { + // Check the spotlights + cy.get(Selectors.SPOTLIGHT_NEXT).should('exist').and('not.be.disabled').click(); + cy.get(Selectors.SPOTLIGHT_NEXT).should('exist').and('not.be.disabled').click(); + + // Mark spotlights in crops + cy.contains(crop_menu_name).should('exist').click(); + cy.url().should('include', '/crop_catalogue'); + + cy.get(Selectors.SPOTLIGHT_NEXT, { timeout: 120 * 1000 }) + .should('exist') + .and('not.be.disabled') + .click(); + cy.get(Selectors.SPOTLIGHT_NEXT, { timeout: 120 * 1000 }) + .should('exist') + .and('not.be.disabled') + .click(); +}; diff --git a/packages/end-to-end/cypress/support/e2e.js b/packages/end-to-end/cypress/support/e2e.js index 0e7290a13d..f5200bc3ef 100644 --- a/packages/end-to-end/cypress/support/e2e.js +++ b/packages/end-to-end/cypress/support/e2e.js @@ -1,5 +1,5 @@ // *********************************************************** -// This example support/e2e.js is processed and +// This example support/index.js is processed and // loaded automatically before your test files. // // This is a great place to put global configuration and @@ -13,8 +13,10 @@ // https://on.cypress.io/configuration // *********************************************************** -// Import commands.js using ES2015 syntax: -import './commands' - -// Alternatively you can use CommonJS syntax: -// require('./commands') \ No newline at end of file +import './commands'; +import '@cypress/code-coverage/support'; +Cypress.on('uncaught:exception', () => { + // returning false here prevents Cypress from + // failing the test + return false; +}); diff --git a/packages/end-to-end/cypress/support/selectorConstants.ts b/packages/end-to-end/cypress/support/selectorConstants.ts new file mode 100644 index 0000000000..a56bb5d100 --- /dev/null +++ b/packages/end-to-end/cypress/support/selectorConstants.ts @@ -0,0 +1,116 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +// commands.js +export const CHECKBOX = '[data-cy=checkbox-component]'; +export const SPOTLIGHT_NEXT = '[data-cy=spotlight-next]'; +export const SNACKBAR = '[data-cy=snackBar]'; +export const OUTRO_FINISH = '[data-cy=outro-finish]'; + +export const SIGNUP_EMAIL = '[data-cy=email]'; +export const SIGNUP_CONTINUE = '[data-cy=continue]'; +export const ENTER_PASSWORD_PASSWORD = '[data-cy=enterPassword-password]'; +export const ENTER_PASSWORD_SUBMIT = '[data-cy=enterPassword-submit]'; + +export const CREATE_USER_EMAIL = '[data-cy=createUser-email]'; +export const CREATE_USER_NAME = '[data-cy=createUser-fullName]'; +export const CREATE_USER_PASSWORD = '[data-cy=createUser-password]'; +export const CREATE_USER_SUBMIT = '[data-cy=createUser-create]'; + +export const WELCOME_GET_STARTED = '[data-cy=getStarted]'; +export const CHOOSE_FARM_PROCEED = '[data-cy=chooseFarm-proceed]'; + +export const ADD_FARM_CONTINUE = '[data-cy=addFarm-continue]'; +export const ADD_FARM_NAME = '[data-cy=addFarm-farmName]'; +export const ADD_FARM_LOCATION = '[data-cy=addFarm-location]'; + +export const ROLE_SELECTION_CONTINUE = '[data-cy=roleSelection-continue]'; +export const ROLE_SELECTION_ROLE = '[data-cy=roleSelection-role]'; + +export const CERTIFICATION_SELECTION_CONTINUE = '[data-cy=certificationSelection-continue]'; +export const THIRD_PARTY_ORGANIC = '[data-cy=certification_type-THIRD_PARTY_ORGANIC]'; +export const CERTIFICATION_SUMMARY_CONTINUE = '[data-cy=certificationSummary-continue]'; +export const CERTIFICATION_SELECTION_ITEM = '[data-cy=certifierSelection-item]'; +export const CERTIFIER_SELECTION_PROCEED = '[data-cy=certifierSelection-proceed]'; + +export const CONSENT_CONTINUE = '[data-cy=consent-continue]'; +export const CONSENT_CONTENT = '[data-cy=consentPage-content]'; + +export const INTERESTED_IN_ORGANIC_CONTINUE = '[data-cy=interestedInOrganic-continue]'; +export const INTERESTED_IN_ORGANIC_SELECT = '[data-cy=interestedInOrganic-select]'; +export const MAP_ADD_FEATURE = '[data-cy=map-addFeature]'; +export const MAP_DRAW_COMPLETE_CONTINUE = '[data-cy=map-drawCompleteContinue]'; +export const MAP_CONTAINER = '[data-cy=map-mapContainer]'; +export const MAP_TUTORIAL_CONTINUE = '[data-cy=mapTutorial-continue]'; +export const CREATE_FIELD_SAVE = '[data-cy=createField-save]'; +export const MAP_SELECTION = '[data-cy="map-selection"]'; +export const AREA_DETAILS_NAME = '[data-cy=areaDetails-name]'; + +// farm_people.js +export const INVITE_USER = '[data-cy=people-inviteUser]'; +export const INVITE_USER_NAME = '[data-cy=invite-fullName]'; +export const INVITE_USER_EMAIL = '[data-cy=invite-email]'; +export const INVITE_USER_SUBMIT = '[data-cy=invite-submit]'; +export const INPUT_ERROR = '[data-cy=error]'; + +// crops.js +export const RADIO = '[type="radio"]'; +export const REACT_SELECT = '[data-cy="react-select"]'; +export const CAN_BE_COVER_CROP = '[name="can_be_cover_crop"]'; +export const CROP_PLAN_LOCATION_SUBMIT = '[data-cy="cropPlan-locationSubmit"]'; +export const CROP_PLAN_PLANT_DATE = '[data-cy="cropPlan-plantDate"]'; +export const CROP_PLAN_PLANT_HARVEST = '[data-cy="cropPlan-plantHarvest"]'; +export const CROP_PLAN_SAVE = '[data-cy="cropPlan-save"]'; +export const CROP_PLAN_SEED_GERMINATION = '[data-cy="cropPlan-seedGermination"]'; +export const CROP_PLAN_TRANSPLANT_SUBMIT = '[data-cy="cropPlan-transplantSubmit"]'; +export const PLAN_GUIDANCE_SUBMIT = '[data-cy="planGuidance-submit"]'; +export const PLANT_DATE_SUBMIT = '[data-cy="plantDate-submit"]'; +export const PLANTING_METHOD_GROUND_PLANTED = '[data-cy="cropPlan-groundPlanted"]'; +export const PLANTING_METHOD_ROW = 'input[data-cy="cropPlan-plantingMethod"][value="ROW_METHOD"]'; +export const PLANTING_METHOD_SUBMIT = '[data-cy="plantingMethod-submit"]'; +export const ROW_METHOD_LENGTH = '[data-cy="rowMethod-length"]'; +export const ROW_METHOD_ROWS = '[data-cy="rowMethod-rows"]'; +export const ROW_METHOD_SPACING = '[data-cy="rowMethod-spacing"]'; +export const ROW_METHOD_SUBMIT = '[data-cy="rowMethod-submit"]'; +export const ROW_METHOD_YIELD = '[data-cy="rowMethod-yield"]'; +export const COMPLIANCE_NEW_VARIETY_SAVE = '[data-cy=compliance-newVarietySave]'; +export const COMPLIANCE_SEED_AVAILABILITY = '[data-cy=compliance-seedAvailability]'; +export const COMPLIANCE_SEED_ENGINEERED = '[data-cy=compliance-seedEngineered]'; +export const COMPLIANCE_SEED_TREATED = '[data-cy=compliance-seedTreated]'; +export const COMPLIANCE_SEED = '[data-cy=compliance-seed]'; +export const CROP_ADD_LINK = '[data-cy=crop-addLink]'; +export const CROP_ANNUAL = '[data-cy=crop-annual]'; +export const CROP_CROP_NAME = '[data-cy=crop-cropName]'; +export const CROP_SUBMIT = '[data-cy=crop-submit]'; +export const CROP_SUPPLIER = '[data-cy=crop-supplier]'; +export const CROP_VARIETY = '[data-cy=crop-variety]'; +export const CROP_PLAN_SUBMIT = '[data-cy=cropPlan-submit]'; +export const MAP_SELECT_LOCATION = '[data-cy=map-selectLocation]'; +export const ROW_METHOD_EQUAL_LENGTH = '[data-cy=rowMethod-equalLength]'; +export const VARIETY_SUBMIT = '[data-cy=variety-submit]'; + +// tasks.js +export const ADD_TASK_ASSIGNMENT_SAVE = '[data-cy=addTask-assignmentSave]'; +export const ADD_TASK_CONTINUE = '[data-cy=addTask-continue]'; +export const ADD_TASK_CROPS_CONTINUE = '[data-cy=addTask-cropsContinue]'; +export const ADD_TASK_DETAILS_CONTINUE = '[data-cy=addTask-detailsContinue]'; +export const ADD_TASK_LOCATION_CONTINUE = '[data-cy=addTask-locationContinue]'; +export const ADD_TASK_TASK_DATE = '[data-cy=addTask-taskDate]'; +export const BEFORE_COMPLETE_SUBMIT = '[data-cy=beforeComplete-submit]'; +export const HARVEST_COMPLETE_RATING = '[data-cy=harvestComplete-rating]'; +export const HARVEST_COMPLETE_SAVE = '[data-cy=harvestComplete-save]'; +export const TASK_SELECTION = '[data-cy=task-selection]'; +export const TASK_CARD = '[data-cy=taskCard]'; +export const TASK_READ_ONLY_COMPLETE = '[data-cy=taskReadOnly-complete]'; diff --git a/packages/end-to-end/cypress/support/utilities.js b/packages/end-to-end/cypress/support/utilities.js new file mode 100644 index 0000000000..9d9500fe81 --- /dev/null +++ b/packages/end-to-end/cypress/support/utilities.js @@ -0,0 +1,45 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +export const loadTranslationsAndConfigureUserFarm = ({ additionalTranslation }) => { + return cy.fixture('e2e-test-users.json').then((loadedUsers) => { + const users = loadedUsers; + const user = users[Cypress.env('USER')]; + + return cy + .fixture('../../../webapp/public/locales/' + user.locale + '/translation.json') + .then((translation) => { + cy.visit('/'); + + cy.loginOrCreateAccount( + user.email, + user.password, + user.name, + user.language, + translation['MENU']['CROPS'], + translation['MENU']['MAP'], + translation['FARM_MAP']['MAP_FILTER']['GARDEN'], + ); + + return cy + .fixture( + '../../../webapp/public/locales/' + user.locale + `/${additionalTranslation}.json`, + ) + .then((additionalTranslationData) => { + return [translation, additionalTranslationData]; + }); + }); + }); +}; diff --git a/packages/end-to-end/package-lock.json b/packages/end-to-end/package-lock.json index abb38e4025..003554d847 100644 --- a/packages/end-to-end/package-lock.json +++ b/packages/end-to-end/package-lock.json @@ -12,10 +12,14 @@ "eslint-plugin-cypress": "^2.13.3" }, "devDependencies": { - "cypress": "^13.0.0", + "@cypress/code-coverage": "^3.12.1", + "cypress": "^13.2.0", + "cypress-react-selector": "^3.0.0", + "cypress-terminal-report": "^5.3.2", "eslint": "^8.43.0", "eslint-plugin-prettier": "^4.2.1", "lint-staged": "^13.2.3", + "moment": "^2.29.4", "prettier": "^2.8.8" } }, @@ -27,2642 +31,2931 @@ "node": ">=0.10.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==", + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", "dev": true, - "optional": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, "engines": { - "node": ">=0.1.90" + "node": ">=6.0.0" } }, - "node_modules/@cypress/request": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.0.tgz", - "integrity": "sha512-GKFCqwZwMYmL3IBoNeR2MM1SnxRIGERsQOTWeQKoYBt2JLqcqiy7JXqO894FLrpjZYqGxW92MNwRH2BN56obdQ==", + "node_modules/@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dev": true, "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": "~2.3.2", - "http-signature": "~1.3.6", - "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.10.3", - "safe-buffer": "^5.1.2", - "tough-cookie": "^4.1.3", - "tunnel-agent": "^0.6.0", - "uuid": "^8.3.2" + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" }, "engines": { - "node": ">= 6" + "node": ">=6.9.0" } }, - "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==", + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "dependencies": { - "debug": "^3.1.0", - "lodash.once": "^4.1.1" + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" } }, - "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==", + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "dependencies": { - "ms": "^2.1.1" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "node_modules/@babel/code-frame/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, + "color-name": "1.1.3" + } + }, + "node_modules/@babel/code-frame/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/code-frame/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, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + "node": ">=0.8.0" } }, - "node_modules/@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "node_modules/@babel/code-frame/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=4" } }, - "node_modules/@eslint/eslintrc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", - "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", + "node_modules/@babel/code-frame/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.5.2", - "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" + "has-flag": "^3.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=4" } }, - "node_modules/@eslint/js": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.43.0.tgz", - "integrity": "sha512-s2UHCoiXfxMvmfzqoN+vrQ84ahUSYde9qNO1MdxmoEhyHWsfmwOpFlwYV+ePJEVc7gFnATGUi376WowX1N7tFg==", + "node_modules/@babel/compat-data": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", + "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", + "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=6.9.0" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", - "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", + "node_modules/@babel/core": { + "version": "7.22.19", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.19.tgz", + "integrity": "sha512-Q8Yj5X4LHVYTbLCKVz0//2D2aDmHF4xzCdEttYvKOnWvErGsa6geHXD6w46x64n5tP69VfeH+IfSrdyH3MLhwA==", + "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.22.15", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.22.19", + "@babel/helpers": "^7.22.15", + "@babel/parser": "^7.22.16", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.22.19", + "@babel/types": "^7.22.19", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" }, "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==", - "engines": { - "node": ">=12.22" + "node": ">=6.9.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } }, - "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==", + "node_modules/@babel/generator": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "dev": true, "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "@babel/types": "^7.23.6", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" }, "engines": { - "node": ">= 8" + "node": ">=6.9.0" } }, - "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==", + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, "engines": { - "node": ">= 8" + "node": ">=6.9.0" } }, - "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==", + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "dev": true, + "peer": true, "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "@babel/types": "^7.22.15" }, "engines": { - "node": ">= 8" + "node": ">=6.9.0" } }, - "node_modules/@types/node": { - "version": "16.18.46", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", - "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==", - "dev": true + "node_modules/@babel/helper-compilation-targets": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.15", + "browserslist": "^4.21.9", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } }, - "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 + "node_modules/@babel/helper-compilation-targets/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==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } }, - "node_modules/@types/sizzle": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", - "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==", + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, - "node_modules/@types/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", + "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", "dev": true, - "optional": true, + "peer": true, "dependencies": { - "@types/node": "*" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/acorn": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz", - "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==", + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "peer": true, "bin": { - "acorn": "bin/acorn" + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" }, "engines": { - "node": ">=0.4.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.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==", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" } }, - "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==", + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", + "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", "dev": true, + "peer": true, "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "@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-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, "engines": { - "node": ">=8" + "node": ">=6.9.0" } }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": 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" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=6.9.0" } }, - "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==", + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, "engines": { - "node": ">=6" + "node": ">=6.9.0" } }, - "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==", + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.15.tgz", + "integrity": "sha512-qLNsZbgrNh0fDQBCPocSL8guki1hcPvltGDv/NxvUoABwFq7GkKSu1nRXeJkVZc+wJvne2E0RKQz+2SQrz6eAA==", "dev": true, + "peer": true, "dependencies": { - "type-fest": "^0.21.3" + "@babel/types": "^7.22.15" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6.9.0" } }, - "node_modules/ansi-escapes/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==", + "node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", "dev": true, + "dependencies": { + "@babel/types": "^7.22.15" + }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6.9.0" } }, - "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==", + "node_modules/@babel/helper-module-transforms": { + "version": "7.22.19", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.19.tgz", + "integrity": "sha512-m6h1cJvn+OJ+R3jOHp30faq5xKJ7VbjwDj5RGgHuRlU9hrMeKsGC+JpihkR5w1g7IfseCPPtZ0r7/hB4UKaYlA==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.19" + }, "engines": { - "node": ">=8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "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==", + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dev": true, + "peer": true, "dependencies": { - "color-convert": "^2.0.1" + "@babel/types": "^7.22.5" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=6.9.0" } }, - "node_modules/arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", "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" - } - ] - }, - "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==" + "peer": true, + "engines": { + "node": ">=6.9.0" + } }, - "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==", + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.22.17", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.17.tgz", + "integrity": "sha512-bxH77R5gjH3Nkde6/LuncQoLaP16THYPscurp1S8z7S9ZgezCyV3G8Hc+TZiCmY8pz4fp8CvKSgtJMW0FkLAxA==", "dev": true, + "peer": true, "dependencies": { - "safer-buffer": "~2.1.0" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-wrap-function": "^7.22.17" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.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==", + "node_modules/@babel/helper-replace-supers": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz", + "integrity": "sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==", "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5" + }, "engines": { - "node": ">=0.8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "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==", + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, "engines": { - "node": ">=8" + "node": ">=6.9.0" } }, - "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", - "dev": true - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "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==", + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", "dev": true, + "peer": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, "engines": { - "node": ">= 4.0.0" + "node": ">=6.9.0" } }, - "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==", + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, "engines": { - "node": "*" + "node": ">=6.9.0" } }, - "node_modules/aws4": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", - "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", - "dev": true + "node_modules/@babel/helper-string-parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, - "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==" + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, - "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==", + "node_modules/@babel/helper-validator-option": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", "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" - } - ] + "engines": { + "node": ">=6.9.0" + } }, - "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==", + "node_modules/@babel/helper-wrap-function": { + "version": "7.22.17", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.17.tgz", + "integrity": "sha512-nAhoheCMlrqU41tAojw9GpVEKDlTS8r3lzFmF0lP52LwblCPbuFSO7nGIZoIcoU5NIm1ABrna0cJExE4Ay6l2Q==", "dev": true, + "peer": true, "dependencies": { - "tweetnacl": "^0.14.3" + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.17" + }, + "engines": { + "node": ">=6.9.0" } }, - "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 + "node_modules/@babel/helpers": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.15.tgz", + "integrity": "sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.22.15", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.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 + "node_modules/@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } }, - "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==", + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "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" - } - ], "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "color-name": "1.1.3" } }, - "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==", + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/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, "engines": { - "node": "*" + "node": ">=0.8.0" } }, - "node_modules/cachedir": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", - "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "has-flag": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=4" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "node_modules/@babel/parser": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", + "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, "engines": { - "node": ">=6" + "node": ">=6.0.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 - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.22.15", + "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.22.15.tgz", + "integrity": "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==", + "dev": true, + "peer": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": ">=10" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/chalk/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==", + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz", + "integrity": "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==", + "dev": true, + "peer": true, "dependencies": { - "has-flag": "^4.0.0" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.15" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" } }, - "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==", + "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==", "dev": true, + "peer": true, "engines": { - "node": ">= 0.8.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "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==", + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, - "engines": { - "node": ">=6" + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "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==", + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, + "peer": true, "dependencies": { - "restore-cursor": "^3.1.0" + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/cli-table3": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", - "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, + "peer": true, "dependencies": { - "string-width": "^4.2.0" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": "10.* || >= 12.*" + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" }, - "optionalDependencies": { - "@colors/colors": "1.5.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/cli-truncate": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", - "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", + "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", "dev": true, + "peer": true, "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^5.0.0" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/cli-truncate/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", + "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, "engines": { - "node": ">=12" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/cli-truncate/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==", - "dev": true - }, - "node_modules/cli-truncate/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, + "peer": true, "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" + "@babel/helper-plugin-utils": "^7.10.4" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/cli-truncate/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, + "peer": true, "dependencies": { - "ansi-regex": "^6.0.1" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">=12" + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "peerDependencies": { + "@babel/core": "^7.0.0-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==", + "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==", + "dev": true, + "peer": true, "dependencies": { - "color-name": "~1.1.4" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">=7.0.0" + "peerDependencies": { + "@babel/core": "^7.0.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==" + "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==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "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 + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "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==", + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, + "peer": true, "dependencies": { - "delayed-stream": "~1.0.0" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">= 0.8" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "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==", "dev": true, - "engines": { - "node": ">= 6" + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "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==", + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, "engines": { - "node": ">=4.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.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==" - }, - "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 - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "peer": true, "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { - "node": ">= 8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/cypress": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.0.0.tgz", - "integrity": "sha512-nWHU5dUxP2Wm/zrMd8SWTTl706aJex/l+H4vi/tbu2SWUr17BUcd/sIYeqyxeoSPW1JFV2pT1pf4JEImH/POMg==", + "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==", "dev": true, - "hasInstallScript": true, + "peer": true, "dependencies": { - "@cypress/request": "^3.0.0", - "@cypress/xvfb": "^1.2.4", - "@types/node": "^16.18.39", - "@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.6.0", - "cachedir": "^2.3.0", - "chalk": "^4.1.0", - "check-more-types": "^2.24.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-ci": "^3.0.0", - "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.1", - "untildify": "^4.0.0", - "yauzl": "^2.10.0" - }, - "bin": { - "cypress": "bin/cypress" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { - "node": "^16.0.0 || ^18.0.0 || >=20.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", + "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", "dev": true, + "peer": true, "dependencies": { - "assert-plus": "^1.0.0" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": ">=0.10" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/dayjs": { - "version": "1.11.8", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.8.tgz", - "integrity": "sha512-LcgxzFoWMEPO7ggRv1Y2N31hUf2R0Vj7fuy/m+Bg1K8rr+KAs1AEy4y9jd5DXe8pbHgX+srkHNS7TH6Q6ZhYeQ==", - "dev": true - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.15.tgz", + "integrity": "sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w==", + "dev": true, + "peer": true, "dependencies": { - "ms": "2.1.2" + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" }, "engines": { - "node": ">=6.0" + "node": ">=6.9.0" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "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==" - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", + "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "peer": true, "dependencies": { - "esutils": "^2.0.2" + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.5" }, "engines": { - "node": ">=6.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "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==", + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", + "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", "dev": true, + "peer": true, "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "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 - }, - "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==", + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.15.tgz", + "integrity": "sha512-G1czpdJBZCtngoK1sJgloLiOHUnkb/bLZwqVZD8kXmq0ZnVfTTWUcs9OWtp0mBtYJ+4LQY1fllqBkOIPhXmFmw==", "dev": true, + "peer": true, "dependencies": { - "once": "^1.4.0" + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", + "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", "dev": true, + "peer": true, "dependencies": { - "ansi-colors": "^4.1.1" + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": ">=8.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==", - "engines": { - "node": ">=10" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/eslint": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.43.0.tgz", - "integrity": "sha512-aaCpf2JqqKesMFGgmRPessmVKjcGXqdlAYLLC3THM8t5nBRZRQ+st5WM/hoJXkdioEXLLbXgclUpM0TXo5HX5Q==", + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz", + "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==", + "dev": true, + "peer": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.3", - "@eslint/js": "8.43.0", - "@humanwhocodes/config-array": "^0.11.10", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "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.0", - "eslint-visitor-keys": "^3.4.1", - "espree": "^9.5.2", - "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", - "import-fresh": "^3.0.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.1", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=6.9.0" }, - "funding": { - "url": "https://opencollective.com/eslint" + "peerDependencies": { + "@babel/core": "^7.12.0" } }, - "node_modules/eslint-plugin-cypress": { - "version": "2.13.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-2.13.3.tgz", - "integrity": "sha512-nAPjZE5WopCsgJwl3vHm5iafpV+ZRO76Z9hMyRygWhmg5ODXDPd+9MaPl7kdJ2azj+sO87H3P1PRnggIrz848g==", + "node_modules/@babel/plugin-transform-classes": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz", + "integrity": "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==", + "dev": true, + "peer": true, "dependencies": { - "globals": "^11.12.0" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "eslint": ">= 3.2.1" + "@babel/core": "^7.0.0-0" } }, - "node_modules/eslint-plugin-cypress/node_modules/globals": { + "node_modules/@babel/plugin-transform-classes/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==", + "dev": true, + "peer": true, "engines": { "node": ">=4" } }, - "node_modules/eslint-plugin-prettier": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", - "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", + "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", "dev": true, + "peer": true, "dependencies": { - "prettier-linter-helpers": "^1.0.0" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.5" }, "engines": { - "node": ">=12.0.0" + "node": ">=6.9.0" }, "peerDependencies": { - "eslint": ">=7.28.0", - "prettier": ">=2.0.0" - }, - "peerDependenciesMeta": { - "eslint-config-prettier": { - "optional": true - } + "@babel/core": "^7.0.0-0" } }, - "node_modules/eslint-scope": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.15.tgz", + "integrity": "sha512-HzG8sFl1ZVGTme74Nw+X01XsUTqERVQ6/RLHo3XjGRzm7XD6QTtfS3NJotVgCGy8BzkDqRjRBD8dAyJn5TuvSQ==", + "dev": true, + "peer": true, "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=6.9.0" }, - "funding": { - "url": "https://opencollective.com/eslint" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", + "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=6.9.0" }, - "funding": { - "url": "https://opencollective.com/eslint" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/espree": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", - "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", + "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", + "dev": true, + "peer": true, "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=6.9.0" }, - "funding": { - "url": "https://opencollective.com/eslint" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz", + "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==", + "dev": true, + "peer": true, "dependencies": { - "estraverse": "^5.1.0" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, "engines": { - "node": ">=0.10" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "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==", + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", + "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", + "dev": true, + "peer": true, "dependencies": { - "estraverse": "^5.2.0" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": ">=4.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-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==", + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz", + "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, "engines": { - "node": ">=4.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz", + "integrity": "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-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 - }, - "node_modules/execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", + "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", "dev": true, + "peer": true, "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" + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": ">=10" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/executable": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", - "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz", + "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==", "dev": true, + "peer": true, "dependencies": { - "pify": "^2.2.0" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" }, "engines": { - "node": ">=4" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "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 - }, - "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==", + "node_modules/@babel/plugin-transform-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", + "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", "dev": true, + "peer": true, "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": ">= 10.17.0" + "node": ">=6.9.0" }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "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==", + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz", + "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==", "dev": true, - "engines": [ - "node >=0.6.0" - ] - }, - "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==" - }, - "node_modules/fast-diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true - }, - "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==" - }, - "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==" - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "peer": true, "dependencies": { - "reusify": "^1.0.4" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "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==", + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", + "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", "dev": true, + "peer": true, "dependencies": { - "pend": "~1.2.0" + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz", + "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==", "dev": true, + "peer": true, "dependencies": { - "escape-string-regexp": "^1.0.5" + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "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==", + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.15.tgz", + "integrity": "sha512-jWL4eh90w0HQOTKP2MoXXUpVxilxsB2Vl4ji69rSjS3EcZ/v4sBmn+A3NpepuJzBhOaEBbR7udonlHHn5DWidg==", "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" + }, "engines": { - "node": ">=0.8.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-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==", + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.11.tgz", + "integrity": "sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA==", + "dev": true, + "peer": true, "dependencies": { - "flat-cache": "^3.0.4" + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.22.9", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", + "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", "dev": true, + "peer": true, "dependencies": { - "to-regex-range": "^5.0.1" + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "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==", + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "dev": true, + "peer": true, "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": ">=10" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", + "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", + "dev": true, + "peer": true, "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" - }, - "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==", + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz", + "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==", "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, "engines": { - "node": "*" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz", + "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==", "dev": true, + "peer": true, "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, "engines": { - "node": ">= 0.12" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "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==", + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz", + "integrity": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==", "dev": true, + "peer": true, "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.22.15" }, "engines": { - "node": ">=10" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "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==" - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", + "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz", + "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==", "dev": true, + "peer": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "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==", + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.15.tgz", + "integrity": "sha512-ngQ2tBhq5vvSJw2Q2Z9i7ealNkpDMU0rGWnHPKqRZO0tzZ5tlaoz4hDvhXioOoaE0X2vfNss1djwg0DXlfu30A==", "dev": true, + "peer": true, "dependencies": { - "pump": "^3.0.0" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/getos": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", - "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz", + "integrity": "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==", "dev": true, + "peer": true, "dependencies": { - "async": "^3.2.0" + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", + "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", "dev": true, + "peer": true, "dependencies": { - "assert-plus": "^1.0.0" + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.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==", + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz", + "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==", + "dev": true, + "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" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { - "node": "*" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "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==", + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", + "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", + "dev": true, + "peer": true, "dependencies": { - "is-glob": "^4.0.3" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": ">=10.13.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-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==", + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", + "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", "dev": true, + "peer": true, "dependencies": { - "ini": "2.0.0" + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.2" }, "engines": { - "node": ">=10" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", + "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", + "dev": true, + "peer": true, "dependencies": { - "type-fest": "^0.20.2" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "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 - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", + "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", "dev": true, + "peer": true, "dependencies": { - "function-bind": "^1.1.1" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": ">= 0.4.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "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==", + "node_modules/@babel/plugin-transform-spread": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", + "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, "engines": { - "node": ">=8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", + "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, "engines": { - "node": ">= 0.4" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", + "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, "engines": { - "node": ">= 0.4" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/http-signature": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", - "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", + "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", "dev": true, + "peer": true, "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^2.0.2", - "sshpk": "^1.14.1" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": ">=0.10" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "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==", + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", + "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, "engines": { - "node": ">=8.12.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-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==", + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", + "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", "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" - } - ] - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "peer": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, "engines": { - "node": ">= 4" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "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==", + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", + "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", + "dev": true, + "peer": true, "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": ">=6" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", + "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, "engines": { - "node": ">=0.8.19" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.15.tgz", + "integrity": "sha512-tZFHr54GBkHk6hQuVA8w4Fmq+MSPsfvMG0vPnOYyTnJpyfMqybL8/MbNCPRT9zc2KBO2pe4tq15g6Uno4Jpoag==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.15", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.15", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.22.5", + "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.22.5", + "@babel/plugin-transform-async-generator-functions": "^7.22.15", + "@babel/plugin-transform-async-to-generator": "^7.22.5", + "@babel/plugin-transform-block-scoped-functions": "^7.22.5", + "@babel/plugin-transform-block-scoping": "^7.22.15", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-class-static-block": "^7.22.11", + "@babel/plugin-transform-classes": "^7.22.15", + "@babel/plugin-transform-computed-properties": "^7.22.5", + "@babel/plugin-transform-destructuring": "^7.22.15", + "@babel/plugin-transform-dotall-regex": "^7.22.5", + "@babel/plugin-transform-duplicate-keys": "^7.22.5", + "@babel/plugin-transform-dynamic-import": "^7.22.11", + "@babel/plugin-transform-exponentiation-operator": "^7.22.5", + "@babel/plugin-transform-export-namespace-from": "^7.22.11", + "@babel/plugin-transform-for-of": "^7.22.15", + "@babel/plugin-transform-function-name": "^7.22.5", + "@babel/plugin-transform-json-strings": "^7.22.11", + "@babel/plugin-transform-literals": "^7.22.5", + "@babel/plugin-transform-logical-assignment-operators": "^7.22.11", + "@babel/plugin-transform-member-expression-literals": "^7.22.5", + "@babel/plugin-transform-modules-amd": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.15", + "@babel/plugin-transform-modules-systemjs": "^7.22.11", + "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.22.5", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", + "@babel/plugin-transform-numeric-separator": "^7.22.11", + "@babel/plugin-transform-object-rest-spread": "^7.22.15", + "@babel/plugin-transform-object-super": "^7.22.5", + "@babel/plugin-transform-optional-catch-binding": "^7.22.11", + "@babel/plugin-transform-optional-chaining": "^7.22.15", + "@babel/plugin-transform-parameters": "^7.22.15", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-property-literals": "^7.22.5", + "@babel/plugin-transform-regenerator": "^7.22.10", + "@babel/plugin-transform-reserved-words": "^7.22.5", + "@babel/plugin-transform-shorthand-properties": "^7.22.5", + "@babel/plugin-transform-spread": "^7.22.5", + "@babel/plugin-transform-sticky-regex": "^7.22.5", + "@babel/plugin-transform-template-literals": "^7.22.5", + "@babel/plugin-transform-typeof-symbol": "^7.22.5", + "@babel/plugin-transform-unicode-escapes": "^7.22.10", + "@babel/plugin-transform-unicode-property-regex": "^7.22.5", + "@babel/plugin-transform-unicode-regex": "^7.22.5", + "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "@babel/types": "^7.22.15", + "babel-plugin-polyfill-corejs2": "^0.4.5", + "babel-plugin-polyfill-corejs3": "^0.8.3", + "babel-plugin-polyfill-regenerator": "^0.5.2", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "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==", + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "engines": { - "node": ">=8" + "peer": true, + "bin": { + "semver": "bin/semver.js" } }, - "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==", + "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==", + "dev": true, + "peer": true, "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "@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/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true, + "peer": true }, - "node_modules/ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "node_modules/@babel/runtime": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz", + "integrity": "sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==", "dev": true, + "peer": true, + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, "engines": { - "node": ">=10" + "node": ">=6.9.0" } }, - "node_modules/is-ci": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", - "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dev": true, "dependencies": { - "ci-info": "^3.2.0" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" }, - "bin": { - "is-ci": "bin.js" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "node_modules/@babel/traverse": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz", + "integrity": "sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.6", + "@babel/types": "^7.23.6", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" } }, - "node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "node_modules/@babel/traverse/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==", "dev": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "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==", + "node_modules/@babel/types": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", + "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", + "dev": true, "dependencies": { - "is-extglob": "^2.1.1" + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" } }, - "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==", + "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, - "dependencies": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" - }, + "optional": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.1.90" } }, - "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==", + "node_modules/@cypress/code-coverage": { + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/@cypress/code-coverage/-/code-coverage-3.12.1.tgz", + "integrity": "sha512-4gSVkgcTo8NSWrOwLO0NxyvD2apIZFM/2k9sxdmP3eR3ko8tZVYrWfTdfxSXLDSkNnzVh+oXv7utaOLn+yemUg==", "dev": true, - "engines": { - "node": ">=0.12.0" + "dependencies": { + "@cypress/webpack-preprocessor": "^5.11.0", + "chalk": "4.1.2", + "dayjs": "1.11.9", + "debug": "4.3.4", + "execa": "4.1.0", + "globby": "11.0.4", + "istanbul-lib-coverage": "3.0.0", + "js-yaml": "4.1.0", + "nyc": "15.1.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.1", + "@babel/preset-env": "^7.0.0", + "babel-loader": "^8.3 || ^9", + "cypress": "*", + "webpack": "^4 || ^5" } }, - "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==", + "node_modules/@cypress/request": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.1.tgz", + "integrity": "sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ==", + "dev": true, + "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": "~2.3.2", + "http-signature": "~1.3.6", + "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.10.4", + "safe-buffer": "^5.1.2", + "tough-cookie": "^4.1.3", + "tunnel-agent": "^0.6.0", + "uuid": "^8.3.2" + }, "engines": { - "node": ">=8" + "node": ">= 6" } }, - "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==", + "node_modules/@cypress/webpack-preprocessor": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/@cypress/webpack-preprocessor/-/webpack-preprocessor-5.17.1.tgz", + "integrity": "sha512-FE/e8ikPc8z4EVopJCaior3RGy0jd2q9Xcp5NtiwNG4XnLfEnUFTZlAGwXe75sEh4fNMPrBJW1KIz77PX5vGAw==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "bluebird": "3.7.1", + "debug": "^4.3.4", + "lodash": "^4.17.20" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "^7.0.1", + "@babel/preset-env": "^7.0.0", + "babel-loader": "^8.0.2 || ^9", + "webpack": "^4 || ^5" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "node_modules/@cypress/webpack-preprocessor/node_modules/bluebird": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz", + "integrity": "sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==", "dev": true }, - "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, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "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, + "dependencies": { + "debug": "^3.1.0", + "lodash.once": "^4.1.1" } }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "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 + "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, + "dependencies": { + "ms": "^2.1.1" + } }, - "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==", + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dependencies": { - "argparse": "^2.0.1" + "eslint-visitor-keys": "^3.3.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true + "node_modules/@eslint-community/regexpp": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", + "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } }, - "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 + "node_modules/@eslint/eslintrc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", + "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.5.2", + "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/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==" + "node_modules/@eslint/js": { + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.43.0.tgz", + "integrity": "sha512-s2UHCoiXfxMvmfzqoN+vrQ84ahUSYde9qNO1MdxmoEhyHWsfmwOpFlwYV+ePJEVc7gFnATGUi376WowX1N7tFg==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } }, - "node_modules/json-stable-stringify-without-jsonify": { + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", + "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { "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==" + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } }, - "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 + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, "dependencies": { - "universalify": "^2.0.0" + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "engines": { + "node": ">=8" } }, - "node_modules/jsprim": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", - "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "engines": [ - "node >=0.6.0" - ], "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" + "sprintf-js": "~1.0.2" } }, - "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==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, "engines": { - "node": "> 0.8" + "node": ">=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==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, - "engines": { - "node": ">= 0.8.0" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/lint-staged": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.2.3.tgz", - "integrity": "sha512-zVVEXLuQIhr1Y7R7YAWx4TZLdvuzk7DnmrsTNL0fax6Z3jrpFcas+vKbzxhhvp6TA55m1SQuWkpzI1qbfDZbAg==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "dependencies": { - "chalk": "5.2.0", - "cli-truncate": "^3.1.0", - "commander": "^10.0.0", - "debug": "^4.3.4", - "execa": "^7.0.0", - "lilconfig": "2.1.0", - "listr2": "^5.0.7", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-inspect": "^1.12.3", - "pidtree": "^0.6.0", - "string-argv": "^0.3.1", - "yaml": "^2.2.2" - }, - "bin": { - "lint-staged": "bin/lint-staged.js" + "p-try": "^2.0.0" }, "engines": { - "node": "^14.13.1 || >=16.0.0" + "node": ">=6" }, "funding": { - "url": "https://opencollective.com/lint-staged" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lint-staged/node_modules/chalk": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", - "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "dependencies": { + "p-limit": "^2.2.0" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "engines": { + "node": ">=8" } }, - "node_modules/lint-staged/node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, "engines": { - "node": ">=14" + "node": ">=8" } }, - "node_modules/lint-staged/node_modules/execa": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz", - "integrity": "sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==", + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^4.3.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { - "node": "^14.18.0 || ^16.14.0 || >=18.0.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node": ">=6.0.0" } }, - "node_modules/lint-staged/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6.0.0" } }, - "node_modules/lint-staged/node_modules/human-signals": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", - "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "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==", "dev": true, "engines": { - "node": ">=14.18.0" + "node": ">=6.0.0" } }, - "node_modules/lint-staged/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==", + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", "dev": true, - "engines": { - "node": ">=8" + "peer": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, - "node_modules/lint-staged/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==", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "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==", "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/lint-staged/node_modules/listr2": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.8.tgz", - "integrity": "sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==", - "dev": true, + "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==", "dependencies": { - "cli-truncate": "^2.1.0", - "colorette": "^2.0.19", - "log-update": "^4.0.0", - "p-map": "^4.0.0", - "rfdc": "^1.3.0", - "rxjs": "^7.8.0", - "through": "^2.3.8", - "wrap-ansi": "^7.0.0" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, "engines": { - "node": "^14.13.1 || >=16.0.0" - }, - "peerDependencies": { - "enquirer": ">= 2.3.0 < 3" - }, - "peerDependenciesMeta": { - "enquirer": { - "optional": true - } + "node": ">= 8" } }, - "node_modules/lint-staged/node_modules/listr2/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, + "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==", + "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==", "dependencies": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 8" } }, - "node_modules/lint-staged/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==", + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peer": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "dev": true, + "peer": true + }, + "node_modules/@types/node": { + "version": "18.17.16", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.16.tgz", + "integrity": "sha512-e0zgs7qe1XH/X3KEPnldfkD07LH9O1B9T31U8qoO7lqGSjj3/IrBuvqMeJ1aYejXRK3KOphIUDw6pLIplEW17A==", + "dev": true + }, + "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 + }, + "node_modules/@types/sizzle": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", + "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==", + "dev": true + }, + "node_modules/@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "dev": true, + "optional": true, + "dependencies": { + "@types/node": "*" } }, - "node_modules/lint-staged/node_modules/npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "node_modules/@webassemblyjs/ast": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", "dev": true, + "peer": true, "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, - "node_modules/lint-staged/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==", + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, + "peer": true, "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" } }, - "node_modules/lint-staged/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==", + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peer": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" } }, - "node_modules/lint-staged/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==", + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, + "peer": true, "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=8" + "@xtuc/ieee754": "^1.2.0" } }, - "node_modules/lint-staged/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==", + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peer": true, + "dependencies": { + "@xtuc/long": "4.2.2" } }, - "node_modules/listr2": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", - "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "dev": true, + "peer": true, "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 - } + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" } }, - "node_modules/listr2/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==", + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", "dev": true, + "peer": true, "dependencies": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, - "node_modules/listr2/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==", + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", "dev": true, - "engines": { - "node": ">=8" + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" } }, - "node_modules/listr2/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==", + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", "dev": true, + "peer": true, "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=8" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, - "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==", + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "dev": true, + "peer": true, "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@webassemblyjs/ast": "1.12.1", + "@xtuc/long": "4.2.2" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true, + "peer": true }, - "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==" - }, - "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 - }, - "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==", + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "peer": true }, - "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, - "dependencies": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" + "node_modules/acorn": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz", + "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==", + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.4.0" } }, - "node_modules/log-update/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==", + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", "dev": true, - "engines": { - "node": ">=8" + "peer": true, + "peerDependencies": { + "acorn": "^8" } }, - "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, - "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/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "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==", + "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, "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dependencies": { - "yallist": "^4.0.0" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "engines": { - "node": ">=10" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "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==", - "dev": true - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "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==", "dev": true, + "peer": true, "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" + "ajv": "^8.0.0" }, - "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==", - "dev": true, - "engines": { - "node": ">= 0.6" + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } } }, - "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==", + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, + "peer": true, "dependencies": { - "mime-db": "1.52.0" + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" }, - "engines": { - "node": ">= 0.6" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "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==", + "node_modules/ajv-formats/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==", "dev": true, - "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==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } + "peer": true }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peer": true, + "peerDependencies": { + "ajv": "^6.9.1" } }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "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, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "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==", + "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, "dependencies": { - "path-key": "^3.0.0" + "type-fest": "^0.21.3" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "node_modules/ansi-escapes/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, + "engines": { + "node": ">=10" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", - "dependencies": { - "wrappy": "1" + "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==", + "engines": { + "node": ">=8" } }, - "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, + "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==", "dependencies": { - "mimic-fn": "^2.1.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=6" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "node_modules/append-transform": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", + "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", + "dev": true, "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" + "default-require-extensions": "^3.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=8" } }, - "node_modules/ospath": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", - "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", - "dev": true + "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" + } + ] }, - "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==", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", + "dev": true }, - "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==", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "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==" }, - "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==", + "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==", "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "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==", + "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, "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "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==", - "engines": { - "node": ">=8" + "safer-buffer": "~2.1.0" } }, - "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==", + "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, "engines": { - "node": ">=0.10.0" + "node": ">=0.8" } }, - "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==", + "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, "engines": { "node": ">=8" } }, - "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==", + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", "dev": true }, - "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==", + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pidtree": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", - "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "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, - "bin": { - "pidtree": "bin/pidtree.js" - }, "engines": { - "node": ">=0.10" + "node": ">= 4.0.0" } }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "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, "engines": { - "node": ">=0.10.0" + "node": "*" } }, - "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==", - "engines": { - "node": ">= 0.8.0" - } + "node_modules/aws4": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", + "dev": true }, - "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "node_modules/babel-loader": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", "dev": true, - "bin": { - "prettier": "bin-prettier.js" + "peer": true, + "dependencies": { + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" }, "engines": { - "node": ">=10.13.0" + "node": ">= 14.15.0" }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" } }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", + "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", "dev": true, + "peer": true, "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "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, - "engines": { - "node": ">=6" + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.2", + "semver": "^6.3.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "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==", + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "engines": { - "node": ">= 0.6.0" + "peer": true, + "bin": { + "semver": "bin/semver.js" } }, - "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 - }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz", + "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==", "dev": true, + "peer": true, "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "engines": { - "node": ">=6" + "@babel/helper-define-polyfill-provider": "^0.4.2", + "core-js-compat": "^3.31.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/qs": { - "version": "6.10.4", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz", - "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==", + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", + "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", "dev": true, + "peer": true, "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" + "@babel/helper-define-polyfill-provider": "^0.4.2" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "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==", + "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==" + }, + "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", @@ -2678,75 +2971,85 @@ } ] }, - "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==", + "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, "dependencies": { - "throttleit": "^1.0.0" + "tweetnacl": "^0.14.3" } }, - "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==", + "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 }, - "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==", - "engines": { - "node": ">=4" + "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 + }, + "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==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "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==", + "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==", "dev": true, "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" + "fill-range": "^7.1.1" }, "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==", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "node_modules/browserslist": { + "version": "4.21.10", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", + "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", + "dev": true, + "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" + } + ], "dependencies": { - "glob": "^7.1.3" + "caniuse-lite": "^1.0.30001517", + "electron-to-chromium": "^1.4.477", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.11" }, "bin": { - "rimraf": "bin.js" + "browserslist": "cli.js" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "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==", + "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", @@ -2762,477 +3065,5929 @@ } ], "dependencies": { - "queue-microtask": "^1.2.2" + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "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==", + "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, + "engines": { + "node": "*" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "peer": true + }, + "node_modules/cachedir": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", + "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caching-transform": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", + "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", "dev": true, "dependencies": { - "tslib": "^2.1.0" + "hasha": "^5.0.0", + "make-dir": "^3.0.0", + "package-hash": "^4.0.0", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "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==", + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "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==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001534", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001534.tgz", + "integrity": "sha512-vlPVrhsCS7XaSh2VvWluIQEzVhefrUQcEsQWSS5A5V+dM07uv1qHeQzAOTGIMy9i3e9bH15+muvI/UHojVgS/Q==", "dev": true, "funding": [ { - "type": "github", - "url": "https://github.com/sponsors/feross" + "type": "opencollective", + "url": "https://opencollective.com/browserslist" }, { - "type": "patreon", - "url": "https://www.patreon.com/feross" + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" }, { - "type": "consulting", - "url": "https://feross.org/support" + "type": "github", + "url": "https://github.com/sponsors/ai" } ] }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", "dev": true }, - "node_modules/semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", - "dev": true, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "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==", + "node_modules/chalk/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==", "dependencies": { - "shebang-regex": "^3.0.0" + "has-flag": "^4.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==", + "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, "engines": { - "node": ">=8" + "node": ">= 0.8.0" } }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peer": true, + "engines": { + "node": ">=6.0" } }, - "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 - }, - "node_modules/slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "node_modules/ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", "dev": true, - "dependencies": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" - }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], "engines": { - "node": ">=12" + "node": ">=8" + } + }, + "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, + "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, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-table3": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-truncate": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", + "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", + "dev": true, + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "node_modules/cli-truncate/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, "engines": { "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "node_modules/cli-truncate/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==", + "dev": true + }, + "node_modules/cli-truncate/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, "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" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/string-argv": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", - "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "node_modules/cli-truncate/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, "engines": { - "node": ">=0.6.19" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "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==", + "node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/cliui/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, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/string-width/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, + "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==", + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "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==", + "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==" + }, + "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 + }, + "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==", + "dev": true, "dependencies": { - "ansi-regex": "^5.0.1" + "delayed-stream": "~1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "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==", + "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, "engines": { - "node": ">=6" + "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==", + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true, + "peer": true + }, + "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, "engines": { - "node": ">=8" + "node": ">=4.0.0" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "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==", + "dev": true + }, + "node_modules/core-js-compat": { + "version": "3.32.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.2.tgz", + "integrity": "sha512-+GjlguTDINOijtVRUxrQOv3kfu9rl+qPNdX2LTbJ/ZyVTuxK+ksVSAGX1nHstu4hrv1En/uPTtWgq2gI5wt4AQ==", + "dev": true, + "peer": true, + "dependencies": { + "browserslist": "^4.21.10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "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 + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cypress": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.2.0.tgz", + "integrity": "sha512-AvDQxBydE771GTq0TR4ZUBvv9m9ffXuB/ueEtpDF/6gOcvFR96amgwSJP16Yhqw6VhmwqspT5nAGzoxxB+D89g==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@cypress/request": "^3.0.0", + "@cypress/xvfb": "^1.2.4", + "@types/node": "^18.17.5", + "@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.6.0", + "cachedir": "^2.3.0", + "chalk": "^4.1.0", + "check-more-types": "^2.24.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-ci": "^3.0.0", + "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.1", + "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-react-selector": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cypress-react-selector/-/cypress-react-selector-3.0.0.tgz", + "integrity": "sha512-AQCgwbcMDkIdYcf6knvLxqzBnejahIbJPHqUhARi8k+QbM8sgUBDds98PaHJVMdPiX2J8RJjXHmUMPD8VerPSw==", + "dev": true, + "dependencies": { + "resq": "1.10.2" + } + }, + "node_modules/cypress-terminal-report": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/cypress-terminal-report/-/cypress-terminal-report-5.3.2.tgz", + "integrity": "sha512-0Gf/pXjrYpTkf2aR3LAFGoxEM0KulWsMKCu+52YJB6l7GEP2RLAOAr32tcZHZiL2EWnS0vE4ollomMzGvCci0w==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "fs-extra": "^10.1.0", + "safe-json-stringify": "^1.2.0", + "semver": "^7.3.5", + "tv4": "^1.3.0" + }, + "peerDependencies": { + "cypress": ">=10.0.0" + } + }, + "node_modules/cypress-terminal-report/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "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, + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dayjs": { + "version": "1.11.9", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.9.tgz", + "integrity": "sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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==" + }, + "node_modules/default-require-extensions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz", + "integrity": "sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==", + "dev": true, + "dependencies": { + "strip-bom": "^4.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.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==", + "dev": true, + "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==", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "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, + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.522", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.522.tgz", + "integrity": "sha512-KGKjcafTpOxda0kqwQ72M0tDmX6RsGhUJTy0Hr7slt0+CgHh9Oex8JdjY9Og68dUkTLUlBOJC0A5W5Mw3QSGCg==", + "dev": true + }, + "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 + }, + "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, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "dev": true, + "peer": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/es-module-lexer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz", + "integrity": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==", + "dev": true, + "peer": true + }, + "node_modules/es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "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==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.43.0.tgz", + "integrity": "sha512-aaCpf2JqqKesMFGgmRPessmVKjcGXqdlAYLLC3THM8t5nBRZRQ+st5WM/hoJXkdioEXLLbXgclUpM0TXo5HX5Q==", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.3", + "@eslint/js": "8.43.0", + "@humanwhocodes/config-array": "^0.11.10", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "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.0", + "eslint-visitor-keys": "^3.4.1", + "espree": "^9.5.2", + "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", + "import-fresh": "^3.0.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.1", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "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-plugin-cypress": { + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-2.13.3.tgz", + "integrity": "sha512-nAPjZE5WopCsgJwl3vHm5iafpV+ZRO76Z9hMyRygWhmg5ODXDPd+9MaPl7kdJ2azj+sO87H3P1PRnggIrz848g==", + "dependencies": { + "globals": "^11.12.0" + }, + "peerDependencies": { + "eslint": ">= 3.2.1" + } + }, + "node_modules/eslint-plugin-cypress/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==", + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "eslint": ">=7.28.0", + "prettier": ">=2.0.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", + "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "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.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", + "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", + "dependencies": { + "acorn": "^8.8.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/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "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==", + "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==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "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 + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.8.x" + } + }, + "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, + "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, + "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 + }, + "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, + "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" + ] + }, + "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==" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dev": true, + "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==", + "dev": true, + "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==" + }, + "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==" + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "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, + "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, + "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, + "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==", + "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==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "dev": true, + "peer": true, + "dependencies": { + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "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.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" + }, + "node_modules/foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "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, + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/fromentries": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", + "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", + "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" + } + ] + }, + "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, + "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==" + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "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, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "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, + "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==", + "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==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true, + "peer": true + }, + "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, + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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 + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasha": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", + "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", + "dev": true, + "dependencies": { + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/hasha/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/http-signature": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", + "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^2.0.2", + "sshpk": "^1.14.1" + }, + "engines": { + "node": ">=0.10" + } + }, + "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, + "engines": { + "node": ">=8.12.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" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "engines": { + "node": ">= 4" + } + }, + "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==", + "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==", + "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, + "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==", + "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==" + }, + "node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dev": true, + "dependencies": { + "ci-info": "^3.2.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "dev": true, + "peer": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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, + "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-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "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==", + "engines": { + "node": ">=8" + } + }, + "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, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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 + }, + "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, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "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 + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-hook": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", + "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", + "dev": true, + "dependencies": { + "append-transform": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-processinfo": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz", + "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==", + "dev": true, + "dependencies": { + "archy": "^1.0.0", + "cross-spawn": "^7.0.3", + "istanbul-lib-coverage": "^3.2.0", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-processinfo/node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-processinfo/node_modules/p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/istanbul-lib-report/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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "peer": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "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==", + "dev": true + }, + "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==", + "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 + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true, + "peer": true + }, + "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 + }, + "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==" + }, + "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==" + }, + "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 + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "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, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "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" + ], + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "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, + "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==", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/lint-staged": { + "version": "13.2.3", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.2.3.tgz", + "integrity": "sha512-zVVEXLuQIhr1Y7R7YAWx4TZLdvuzk7DnmrsTNL0fax6Z3jrpFcas+vKbzxhhvp6TA55m1SQuWkpzI1qbfDZbAg==", + "dev": true, + "dependencies": { + "chalk": "5.2.0", + "cli-truncate": "^3.1.0", + "commander": "^10.0.0", + "debug": "^4.3.4", + "execa": "^7.0.0", + "lilconfig": "2.1.0", + "listr2": "^5.0.7", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-inspect": "^1.12.3", + "pidtree": "^0.6.0", + "string-argv": "^0.3.1", + "yaml": "^2.2.2" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, + "engines": { + "node": "^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" + } + }, + "node_modules/lint-staged/node_modules/chalk": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", + "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/lint-staged/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/lint-staged/node_modules/execa": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz", + "integrity": "sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/lint-staged/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "dev": true, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/lint-staged/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/lint-staged/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==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/listr2": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.8.tgz", + "integrity": "sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==", + "dev": true, + "dependencies": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.19", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.8.0", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": "^14.13.1 || >=16.0.0" + }, + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + }, + "peerDependenciesMeta": { + "enquirer": { + "optional": true + } + } + }, + "node_modules/lint-staged/node_modules/listr2/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, + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/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==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "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/lint-staged/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==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/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==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/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, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lint-staged/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==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "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/listr2/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, + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/listr2/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, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6.11.5" + } + }, + "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==", + "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==", + "dev": true + }, + "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==", + "dev": true, + "peer": true + }, + "node_modules/lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", + "dev": true + }, + "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==" + }, + "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 + }, + "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, + "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, + "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/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, + "engines": { + "node": ">=8" + } + }, + "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, + "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, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "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==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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, + "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==", + "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==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "peer": true + }, + "node_modules/node-preload": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", + "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", + "dev": true, + "dependencies": { + "process-on-spawn": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", + "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", + "dev": true, + "dependencies": { + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "caching-transform": "^4.0.0", + "convert-source-map": "^1.7.0", + "decamelize": "^1.2.0", + "find-cache-dir": "^3.2.0", + "find-up": "^4.1.0", + "foreground-child": "^2.0.0", + "get-package-type": "^0.1.0", + "glob": "^7.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-hook": "^3.0.0", + "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "make-dir": "^3.0.0", + "node-preload": "^0.2.1", + "p-map": "^3.0.0", + "process-on-spawn": "^1.0.0", + "resolve-from": "^5.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "spawn-wrap": "^2.0.0", + "test-exclude": "^6.0.0", + "yargs": "^15.0.2" + }, + "bin": { + "nyc": "bin/nyc.js" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/nyc/node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/nyc/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nyc/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true, + "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==", + "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, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "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 + }, + "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==", + "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==", + "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, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/package-hash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", + "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.15", + "hasha": "^5.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "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==", + "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==", + "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==", + "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==", + "dev": true, + "peer": true + }, + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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 + }, + "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 + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "dev": true, + "peer": true, + "dependencies": { + "find-up": "^6.3.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, + "peer": true, + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "peer": true, + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "peer": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "peer": true, + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "peer": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/pkg-dir/node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "peer": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "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, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-on-spawn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", + "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", + "dev": true, + "dependencies": { + "fromentries": "^1.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "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 + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.10.4", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz", + "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "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==", + "dev": true + }, + "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" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "peer": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "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==", + "dev": true, + "peer": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dev": true, + "peer": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", + "dev": true, + "peer": true + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "peer": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "peer": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/release-zalgo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==", + "dev": true, + "dependencies": { + "es6-error": "^4.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "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, + "dependencies": { + "throttleit": "^1.0.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.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==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "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==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.5.tgz", + "integrity": "sha512-qWhv7PF1V95QPvRoUGHxOtnAlEvlXBylMZcjUR9pAumMmveFtcHJRXGIr+TkjfNJVQypqv2qcDiiars2y1PsSg==", + "dev": true, + "peer": true, + "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/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==", + "engines": { + "node": ">=4" + } + }, + "node_modules/resq": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/resq/-/resq-1.10.2.tgz", + "integrity": "sha512-HmgVS3j+FLrEDBTDYysPdPVF9/hioDMJ/otOiQDKqk77YfZeeLOj0qi34yObumcud1gBpk+wpBTEg4kMicD++A==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^2.0.1" + } + }, + "node_modules/resq/node_modules/fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==", + "dev": true + }, + "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, + "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==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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" + } + ], + "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, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "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" + } + ] + }, + "node_modules/safe-json-stringify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz", + "integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==", + "dev": true + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/schema-utils/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==", + "dev": true, + "peer": true + }, + "node_modules/semver": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "peer": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "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==", + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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 + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "peer": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spawn-wrap": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", + "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", + "dev": true, + "dependencies": { + "foreground-child": "^2.0.0", + "is-windows": "^1.0.2", + "make-dir": "^3.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "which": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dev": true, + "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/string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "dev": true, + "engines": { + "node": ">=0.6.19" + } + }, + "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, + "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/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, + "engines": { + "node": ">=8" + } + }, + "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==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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, + "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==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "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==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.31.6", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.6.tgz", + "integrity": "sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==", + "dev": true, + "peer": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "dev": true, + "peer": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "peer": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "peer": true + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "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==" + }, + "node_modules/throttleit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", + "integrity": "sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==", + "dev": true + }, + "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 + }, + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/tslib": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", + "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==", + "dev": true + }, + "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, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tv4": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz", + "integrity": "sha512-afizzfpJgvPr+eDkREK4MxJ/+r8nEEHcmitwgnPUqpaP+FpwQyadnxNoSACbgc/b1LsZYtODGoPiFxQrgJgjvw==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + }, + "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==", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "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==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "peer": true, + "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==", + "dev": true, + "peer": true, + "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.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "peer": true, + "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==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "dev": true, + "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" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.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==", + "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==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "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, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "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" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/watchpack": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", + "dev": true, + "peer": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack": { + "version": "5.94.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", + "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", + "dev": true, + "peer": true, + "dependencies": { + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.7.1", + "acorn-import-attributes": "^1.9.5", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/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==", + "dev": true, + "peer": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "peer": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "dev": true + }, + "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, + "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==" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yaml": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", + "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "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==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==" + }, + "@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "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 + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/compat-data": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", + "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", + "dev": true + }, + "@babel/core": { + "version": "7.22.19", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.19.tgz", + "integrity": "sha512-Q8Yj5X4LHVYTbLCKVz0//2D2aDmHF4xzCdEttYvKOnWvErGsa6geHXD6w46x64n5tP69VfeH+IfSrdyH3MLhwA==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.22.15", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.22.19", + "@babel/helpers": "^7.22.15", + "@babel/parser": "^7.22.16", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.22.19", + "@babel/types": "^7.22.19", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "dev": true, + "requires": { + "@babel/types": "^7.23.6", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "peer": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "dev": true, + "peer": true, + "requires": { + "@babel/types": "^7.22.15" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.15", + "browserslist": "^4.21.9", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", + "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "peer": true + } + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "peer": true + } + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", + "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true + }, + "@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "requires": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.15.tgz", + "integrity": "sha512-qLNsZbgrNh0fDQBCPocSL8guki1hcPvltGDv/NxvUoABwFq7GkKSu1nRXeJkVZc+wJvne2E0RKQz+2SQrz6eAA==", + "dev": true, + "peer": true, + "requires": { + "@babel/types": "^7.22.15" + } + }, + "@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dev": true, + "requires": { + "@babel/types": "^7.22.15" + } + }, + "@babel/helper-module-transforms": { + "version": "7.22.19", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.19.tgz", + "integrity": "sha512-m6h1cJvn+OJ+R3jOHp30faq5xKJ7VbjwDj5RGgHuRlU9hrMeKsGC+JpihkR5w1g7IfseCPPtZ0r7/hB4UKaYlA==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.19" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dev": true, + "peer": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "dev": true, + "peer": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.22.17", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.17.tgz", + "integrity": "sha512-bxH77R5gjH3Nkde6/LuncQoLaP16THYPscurp1S8z7S9ZgezCyV3G8Hc+TZiCmY8pz4fp8CvKSgtJMW0FkLAxA==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-wrap-function": "^7.22.17" + } + }, + "@babel/helper-replace-supers": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz", + "integrity": "sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5" + } + }, + "@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dev": true, + "peer": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-string-parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.22.17", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.17.tgz", + "integrity": "sha512-nAhoheCMlrqU41tAojw9GpVEKDlTS8r3lzFmF0lP52LwblCPbuFSO7nGIZoIcoU5NIm1ABrna0cJExE4Ay6l2Q==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.17" + } + }, + "@babel/helpers": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.15.tgz", + "integrity": "sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==", + "dev": true, + "requires": { + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.22.15", + "@babel/types": "^7.22.15" + } + }, + "@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "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 + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", + "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", + "dev": true + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.22.15", + "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.22.15.tgz", + "integrity": "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz", + "integrity": "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.15" + } + }, + "@babel/plugin-proposal-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==", + "dev": true, + "peer": true, + "requires": {} + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-import-assertions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", + "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-import-attributes": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", + "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@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==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@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==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@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==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@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==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", + "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-async-generator-functions": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.15.tgz", + "integrity": "sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", + "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.5" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", + "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.15.tgz", + "integrity": "sha512-G1czpdJBZCtngoK1sJgloLiOHUnkb/bLZwqVZD8kXmq0ZnVfTTWUcs9OWtp0mBtYJ+4LQY1fllqBkOIPhXmFmw==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-class-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", + "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-class-static-block": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz", + "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz", + "integrity": "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + }, + "dependencies": { + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "peer": true + } + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", + "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.5" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.15.tgz", + "integrity": "sha512-HzG8sFl1ZVGTme74Nw+X01XsUTqERVQ6/RLHo3XjGRzm7XD6QTtfS3NJotVgCGy8BzkDqRjRBD8dAyJn5TuvSQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", + "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", + "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-dynamic-import": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz", + "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", + "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-export-namespace-from": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz", + "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz", + "integrity": "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", + "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-json-strings": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz", + "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", + "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-logical-assignment-operators": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz", + "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", + "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz", + "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.15.tgz", + "integrity": "sha512-jWL4eh90w0HQOTKP2MoXXUpVxilxsB2Vl4ji69rSjS3EcZ/v4sBmn+A3NpepuJzBhOaEBbR7udonlHHn5DWidg==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-module-transforms": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.11.tgz", + "integrity": "sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.22.9", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", + "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", + "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz", + "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, - "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==", + "@babel/plugin-transform-numeric-separator": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz", + "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==", "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, - "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==" + "@babel/plugin-transform-object-rest-spread": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz", + "integrity": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==", + "dev": true, + "peer": true, + "requires": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.22.15" + } }, - "node_modules/throttleit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", - "integrity": "sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==", - "dev": true + "@babel/plugin-transform-object-super": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", + "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5" + } }, - "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 + "@babel/plugin-transform-optional-catch-binding": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz", + "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } }, - "node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "@babel/plugin-transform-optional-chaining": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.15.tgz", + "integrity": "sha512-ngQ2tBhq5vvSJw2Q2Z9i7ealNkpDMU0rGWnHPKqRZO0tzZ5tlaoz4hDvhXioOoaE0X2vfNss1djwg0DXlfu30A==", "dev": true, - "dependencies": { - "rimraf": "^3.0.0" - }, - "engines": { - "node": ">=8.17.0" + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, - "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==", + "@babel/plugin-transform-parameters": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz", + "integrity": "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==", "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" } }, - "node_modules/tough-cookie": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", - "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "@babel/plugin-transform-private-methods": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", + "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", "dev": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" + "peer": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" } }, - "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==", + "@babel/plugin-transform-private-property-in-object": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz", + "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==", "dev": true, - "engines": { - "node": ">= 4.0.0" + "peer": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, - "node_modules/tslib": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", - "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==", - "dev": true + "@babel/plugin-transform-property-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", + "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } }, - "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==", + "@babel/plugin-transform-regenerator": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", + "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.2" } }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true + "@babel/plugin-transform-reserved-words": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", + "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } }, - "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==", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" + "@babel/plugin-transform-shorthand-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", + "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" } }, - "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==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@babel/plugin-transform-spread": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", + "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" } }, - "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "@babel/plugin-transform-sticky-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", + "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", "dev": true, - "engines": { - "node": ">= 10.0.0" + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" } }, - "node_modules/untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "@babel/plugin-transform-template-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", + "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", "dev": true, - "engines": { - "node": ">=8" + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" } }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dependencies": { - "punycode": "^2.1.0" + "@babel/plugin-transform-typeof-symbol": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", + "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" } }, - "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==", + "@babel/plugin-transform-unicode-escapes": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", + "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", "dev": true, - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" } }, - "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==", + "@babel/plugin-transform-unicode-property-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", + "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", "dev": true, - "bin": { - "uuid": "dist/bin/uuid" + "peer": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" } }, - "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==", + "@babel/plugin-transform-unicode-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", + "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", "dev": true, - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" + "peer": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" } }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" + "@babel/plugin-transform-unicode-sets-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", + "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" } }, - "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==", + "@babel/preset-env": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.15.tgz", + "integrity": "sha512-tZFHr54GBkHk6hQuVA8w4Fmq+MSPsfvMG0vPnOYyTnJpyfMqybL8/MbNCPRT9zc2KBO2pe4tq15g6Uno4Jpoag==", "dev": true, - "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" + "peer": true, + "requires": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.15", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.15", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.22.5", + "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.22.5", + "@babel/plugin-transform-async-generator-functions": "^7.22.15", + "@babel/plugin-transform-async-to-generator": "^7.22.5", + "@babel/plugin-transform-block-scoped-functions": "^7.22.5", + "@babel/plugin-transform-block-scoping": "^7.22.15", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-class-static-block": "^7.22.11", + "@babel/plugin-transform-classes": "^7.22.15", + "@babel/plugin-transform-computed-properties": "^7.22.5", + "@babel/plugin-transform-destructuring": "^7.22.15", + "@babel/plugin-transform-dotall-regex": "^7.22.5", + "@babel/plugin-transform-duplicate-keys": "^7.22.5", + "@babel/plugin-transform-dynamic-import": "^7.22.11", + "@babel/plugin-transform-exponentiation-operator": "^7.22.5", + "@babel/plugin-transform-export-namespace-from": "^7.22.11", + "@babel/plugin-transform-for-of": "^7.22.15", + "@babel/plugin-transform-function-name": "^7.22.5", + "@babel/plugin-transform-json-strings": "^7.22.11", + "@babel/plugin-transform-literals": "^7.22.5", + "@babel/plugin-transform-logical-assignment-operators": "^7.22.11", + "@babel/plugin-transform-member-expression-literals": "^7.22.5", + "@babel/plugin-transform-modules-amd": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.15", + "@babel/plugin-transform-modules-systemjs": "^7.22.11", + "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.22.5", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", + "@babel/plugin-transform-numeric-separator": "^7.22.11", + "@babel/plugin-transform-object-rest-spread": "^7.22.15", + "@babel/plugin-transform-object-super": "^7.22.5", + "@babel/plugin-transform-optional-catch-binding": "^7.22.11", + "@babel/plugin-transform-optional-chaining": "^7.22.15", + "@babel/plugin-transform-parameters": "^7.22.15", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-property-literals": "^7.22.5", + "@babel/plugin-transform-regenerator": "^7.22.10", + "@babel/plugin-transform-reserved-words": "^7.22.5", + "@babel/plugin-transform-shorthand-properties": "^7.22.5", + "@babel/plugin-transform-spread": "^7.22.5", + "@babel/plugin-transform-sticky-regex": "^7.22.5", + "@babel/plugin-transform-template-literals": "^7.22.5", + "@babel/plugin-transform-typeof-symbol": "^7.22.5", + "@babel/plugin-transform-unicode-escapes": "^7.22.10", + "@babel/plugin-transform-unicode-property-regex": "^7.22.5", + "@babel/plugin-transform-unicode-regex": "^7.22.5", + "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "@babel/types": "^7.22.15", + "babel-plugin-polyfill-corejs2": "^0.4.5", + "babel-plugin-polyfill-corejs3": "^0.8.3", + "babel-plugin-polyfill-regenerator": "^0.5.2", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "peer": true + } } }, - "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==" + "@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==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true, + "peer": true }, - "node_modules/yaml": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", - "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", + "@babel/runtime": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz", + "integrity": "sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==", "dev": true, - "engines": { - "node": ">= 14" + "peer": true, + "requires": { + "regenerator-runtime": "^0.14.0" } }, - "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==", + "@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dev": true, - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" + "requires": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" } }, - "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==", - "engines": { - "node": ">=10" + "@babel/traverse": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz", + "integrity": "sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.6", + "@babel/types": "^7.23.6", + "debug": "^4.3.1", + "globals": "^11.1.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", + "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" } - } - }, - "dependencies": { - "@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==" }, "@colors/colors": { "version": "1.5.0", @@ -3241,10 +8996,27 @@ "dev": true, "optional": true }, + "@cypress/code-coverage": { + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/@cypress/code-coverage/-/code-coverage-3.12.1.tgz", + "integrity": "sha512-4gSVkgcTo8NSWrOwLO0NxyvD2apIZFM/2k9sxdmP3eR3ko8tZVYrWfTdfxSXLDSkNnzVh+oXv7utaOLn+yemUg==", + "dev": true, + "requires": { + "@cypress/webpack-preprocessor": "^5.11.0", + "chalk": "4.1.2", + "dayjs": "1.11.9", + "debug": "4.3.4", + "execa": "4.1.0", + "globby": "11.0.4", + "istanbul-lib-coverage": "3.0.0", + "js-yaml": "4.1.0", + "nyc": "15.1.0" + } + }, "@cypress/request": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.0.tgz", - "integrity": "sha512-GKFCqwZwMYmL3IBoNeR2MM1SnxRIGERsQOTWeQKoYBt2JLqcqiy7JXqO894FLrpjZYqGxW92MNwRH2BN56obdQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.1.tgz", + "integrity": "sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ==", "dev": true, "requires": { "aws-sign2": "~0.7.0", @@ -3260,13 +9032,32 @@ "json-stringify-safe": "~5.0.1", "mime-types": "~2.1.19", "performance-now": "^2.1.0", - "qs": "~6.10.3", + "qs": "6.10.4", "safe-buffer": "^5.1.2", "tough-cookie": "^4.1.3", "tunnel-agent": "^0.6.0", "uuid": "^8.3.2" } }, + "@cypress/webpack-preprocessor": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/@cypress/webpack-preprocessor/-/webpack-preprocessor-5.17.1.tgz", + "integrity": "sha512-FE/e8ikPc8z4EVopJCaior3RGy0jd2q9Xcp5NtiwNG4XnLfEnUFTZlAGwXe75sEh4fNMPrBJW1KIz77PX5vGAw==", + "dev": true, + "requires": { + "bluebird": "3.7.1", + "debug": "^4.3.4", + "lodash": "^4.17.20" + }, + "dependencies": { + "bluebird": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz", + "integrity": "sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==", + "dev": true + } + } + }, "@cypress/xvfb": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", @@ -3342,6 +9133,139 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true + }, + "@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==", + "dev": true + }, + "@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, + "peer": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "@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==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -3365,10 +9289,24 @@ "fastq": "^1.6.0" } }, + "@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true, + "peer": true + }, + "@types/json-schema": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "dev": true, + "peer": true + }, "@types/node": { - "version": "16.18.46", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", - "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==", + "version": "18.17.16", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.16.tgz", + "integrity": "sha512-e0zgs7qe1XH/X3KEPnldfkD07LH9O1B9T31U8qoO7lqGSjj3/IrBuvqMeJ1aYejXRK3KOphIUDw6pLIplEW17A==", "dev": true }, "@types/sinonjs__fake-timers": { @@ -3393,11 +9331,194 @@ "@types/node": "*" } }, + "@webassemblyjs/ast": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true, + "peer": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true, + "peer": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", + "dev": true, + "peer": true + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true, + "peer": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, + "peer": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, + "peer": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true, + "peer": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true, + "peer": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true, + "peer": true + }, "acorn": { "version": "8.9.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz", "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==" }, + "acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "dev": true, + "peer": true, + "requires": {} + }, "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -3425,6 +9546,46 @@ "uri-js": "^4.2.2" } }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "peer": true, + "requires": { + "ajv": "^8.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "peer": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "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==", + "dev": true, + "peer": true + } + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peer": true, + "requires": {} + }, "ansi-colors": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", @@ -3461,17 +9622,38 @@ "color-convert": "^2.0.1" } }, + "append-transform": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", + "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", + "dev": true, + "requires": { + "default-require-extensions": "^3.0.0" + } + }, "arch": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", "dev": true }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", + "dev": true + }, "argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, + "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==", + "dev": true + }, "asn1": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", @@ -3523,6 +9705,59 @@ "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", "dev": true }, + "babel-loader": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "dev": true, + "peer": true, + "requires": { + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", + "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", + "dev": true, + "peer": true, + "requires": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.2", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "peer": true + } + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz", + "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.4.2", + "core-js-compat": "^3.31.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", + "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.4.2" + } + }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -3565,12 +9800,24 @@ } }, "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "requires": { + "fill-range": "^7.1.1" + } + }, + "browserslist": { + "version": "4.21.10", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", + "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", "dev": true, "requires": { - "fill-range": "^7.0.1" + "caniuse-lite": "^1.0.30001517", + "electron-to-chromium": "^1.4.477", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.11" } }, "buffer": { @@ -3589,12 +9836,31 @@ "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "peer": true + }, "cachedir": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", "dev": true }, + "caching-transform": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", + "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", + "dev": true, + "requires": { + "hasha": "^5.0.0", + "make-dir": "^3.0.0", + "package-hash": "^4.0.0", + "write-file-atomic": "^3.0.0" + } + }, "call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -3610,6 +9876,18 @@ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001534", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001534.tgz", + "integrity": "sha512-vlPVrhsCS7XaSh2VvWluIQEzVhefrUQcEsQWSS5A5V+dM07uv1qHeQzAOTGIMy9i3e9bH15+muvI/UHojVgS/Q==", + "dev": true + }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -3641,6 +9919,13 @@ "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", "dev": true }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "peer": true + }, "ci-info": { "version": "3.8.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", @@ -3716,6 +10001,30 @@ } } }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "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, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -3750,17 +10059,46 @@ "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", "dev": true }, + "common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true, + "peer": true + }, "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 }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, + "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==", + "dev": true + }, + "core-js-compat": { + "version": "3.32.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.2.tgz", + "integrity": "sha512-+GjlguTDINOijtVRUxrQOv3kfu9rl+qPNdX2LTbJ/ZyVTuxK+ksVSAGX1nHstu4hrv1En/uPTtWgq2gI5wt4AQ==", + "dev": true, + "peer": true, + "requires": { + "browserslist": "^4.21.10" + } + }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -3778,14 +10116,14 @@ } }, "cypress": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.0.0.tgz", - "integrity": "sha512-nWHU5dUxP2Wm/zrMd8SWTTl706aJex/l+H4vi/tbu2SWUr17BUcd/sIYeqyxeoSPW1JFV2pT1pf4JEImH/POMg==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.2.0.tgz", + "integrity": "sha512-AvDQxBydE771GTq0TR4ZUBvv9m9ffXuB/ueEtpDF/6gOcvFR96amgwSJP16Yhqw6VhmwqspT5nAGzoxxB+D89g==", "dev": true, "requires": { "@cypress/request": "^3.0.0", "@cypress/xvfb": "^1.2.4", - "@types/node": "^16.18.39", + "@types/node": "^18.17.5", "@types/sinonjs__fake-timers": "8.1.1", "@types/sizzle": "^2.3.2", "arch": "^2.2.0", @@ -3828,6 +10166,41 @@ "yauzl": "^2.10.0" } }, + "cypress-react-selector": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cypress-react-selector/-/cypress-react-selector-3.0.0.tgz", + "integrity": "sha512-AQCgwbcMDkIdYcf6knvLxqzBnejahIbJPHqUhARi8k+QbM8sgUBDds98PaHJVMdPiX2J8RJjXHmUMPD8VerPSw==", + "dev": true, + "requires": { + "resq": "1.10.2" + } + }, + "cypress-terminal-report": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/cypress-terminal-report/-/cypress-terminal-report-5.3.2.tgz", + "integrity": "sha512-0Gf/pXjrYpTkf2aR3LAFGoxEM0KulWsMKCu+52YJB6l7GEP2RLAOAr32tcZHZiL2EWnS0vE4ollomMzGvCci0w==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "fs-extra": "^10.1.0", + "safe-json-stringify": "^1.2.0", + "semver": "^7.3.5", + "tv4": "^1.3.0" + }, + "dependencies": { + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + } + } + }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -3838,9 +10211,9 @@ } }, "dayjs": { - "version": "1.11.8", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.8.tgz", - "integrity": "sha512-LcgxzFoWMEPO7ggRv1Y2N31hUf2R0Vj7fuy/m+Bg1K8rr+KAs1AEy4y9jd5DXe8pbHgX+srkHNS7TH6Q6ZhYeQ==", + "version": "1.11.9", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.9.tgz", + "integrity": "sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==", "dev": true }, "debug": { @@ -3851,17 +10224,41 @@ "ms": "2.1.2" } }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true + }, "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==" }, + "default-require-extensions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz", + "integrity": "sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==", + "dev": true, + "requires": { + "strip-bom": "^4.0.0" + } + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -3886,6 +10283,12 @@ "safer-buffer": "^2.1.0" } }, + "electron-to-chromium": { + "version": "1.4.522", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.522.tgz", + "integrity": "sha512-KGKjcafTpOxda0kqwQ72M0tDmX6RsGhUJTy0Hr7slt0+CgHh9Oex8JdjY9Og68dUkTLUlBOJC0A5W5Mw3QSGCg==", + "dev": true + }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -3901,6 +10304,17 @@ "once": "^1.4.0" } }, + "enhanced-resolve": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "dev": true, + "peer": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, "enquirer": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", @@ -3910,6 +10324,25 @@ "ansi-colors": "^4.1.1" } }, + "es-module-lexer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz", + "integrity": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==", + "dev": true, + "peer": true + }, + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, "escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -4009,6 +10442,12 @@ "eslint-visitor-keys": "^3.4.1" } }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, "esquery": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", @@ -4041,6 +10480,13 @@ "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", "dev": true }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "peer": true + }, "execa": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", @@ -4102,6 +10548,30 @@ "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", "dev": true }, + "fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dev": true, + "requires": { + "@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" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, "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", @@ -4155,14 +10625,25 @@ } }, "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "requires": { "to-regex-range": "^5.0.1" } }, + "find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "dev": true, + "peer": true, + "requires": { + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" + } + }, "find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -4186,6 +10667,16 @@ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" }, + "foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + } + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -4203,6 +10694,12 @@ "mime-types": "^2.1.12" } }, + "fromentries": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", + "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", + "dev": true + }, "fs-extra": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", @@ -4226,6 +10723,18 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, + "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==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, "get-intrinsic": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", @@ -4238,6 +10747,12 @@ "has-symbols": "^1.0.3" } }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, "get-stream": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", @@ -4286,6 +10801,13 @@ "is-glob": "^4.0.3" } }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true, + "peer": true + }, "global-dirs": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", @@ -4303,6 +10825,20 @@ "type-fest": "^0.20.2" } }, + "globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + }, "graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -4340,6 +10876,30 @@ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true }, + "hasha": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", + "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", + "dev": true, + "requires": { + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, "http-signature": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", @@ -4417,6 +10977,16 @@ "ci-info": "^3.2.0" } }, + "is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "dev": true, + "peer": true, + "requires": { + "has": "^1.0.3" + } + }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -4475,6 +11045,12 @@ "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -4486,6 +11062,142 @@ "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", "dev": true }, + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", + "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", + "dev": true, + "requires": { + "append-transform": "^2.0.0" + } + }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "istanbul-lib-processinfo": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz", + "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==", + "dev": true, + "requires": { + "archy": "^1.0.0", + "cross-spawn": "^7.0.3", + "istanbul-lib-coverage": "^3.2.0", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "uuid": "^8.3.2" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true + }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + } + } + }, + "istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "requires": { + "semver": "^7.5.3" + } + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + } + }, + "istanbul-reports": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "peer": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -4500,6 +11212,19 @@ "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", "dev": true }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "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==", + "dev": true, + "peer": true + }, "json-schema": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", @@ -4522,6 +11247,12 @@ "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", "dev": true }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true + }, "jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -4761,6 +11492,13 @@ } } }, + "loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "peer": true + }, "locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -4775,6 +11513,19 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true, + "peer": true + }, + "lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", + "dev": true + }, "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -4847,19 +11598,42 @@ "yallist": "^4.0.0" } }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, "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==", "dev": true }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "requires": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" } }, @@ -4898,6 +11672,12 @@ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true }, + "moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -4908,6 +11688,28 @@ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "peer": true + }, + "node-preload": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", + "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", + "dev": true, + "requires": { + "process-on-spawn": "^1.0.0" + } + }, + "node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "dev": true + }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -4923,6 +11725,115 @@ "path-key": "^3.0.0" } }, + "nyc": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", + "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", + "dev": true, + "requires": { + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "caching-transform": "^4.0.0", + "convert-source-map": "^1.7.0", + "decamelize": "^1.2.0", + "find-cache-dir": "^3.2.0", + "find-up": "^4.1.0", + "foreground-child": "^2.0.0", + "get-package-type": "^0.1.0", + "glob": "^7.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-hook": "^3.0.0", + "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "make-dir": "^3.0.0", + "node-preload": "^0.2.1", + "p-map": "^3.0.0", + "process-on-spawn": "^1.0.0", + "resolve-from": "^5.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "spawn-wrap": "^2.0.0", + "test-exclude": "^6.0.0", + "yargs": "^15.0.2" + }, + "dependencies": { + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, "object-inspect": { "version": "1.12.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", @@ -4990,6 +11901,24 @@ "aggregate-error": "^3.0.0" } }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "package-hash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", + "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.15", + "hasha": "^5.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" + } + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -5013,6 +11942,19 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" }, + "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==", + "dev": true, + "peer": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, "pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", @@ -5025,6 +11967,12 @@ "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", "dev": true }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, "picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -5043,6 +11991,73 @@ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true }, + "pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "dev": true, + "peer": true, + "requires": { + "find-up": "^6.3.0" + }, + "dependencies": { + "find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, + "peer": true, + "requires": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + } + }, + "locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "peer": true, + "requires": { + "p-locate": "^6.0.0" + } + }, + "p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "peer": true, + "requires": { + "yocto-queue": "^1.0.0" + } + }, + "p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "peer": true, + "requires": { + "p-limit": "^4.0.0" + } + }, + "path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "peer": true + }, + "yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "peer": true + } + } + }, "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -5075,6 +12090,15 @@ "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", "dev": true }, + "process-on-spawn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", + "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", + "dev": true, + "requires": { + "fromentries": "^1.2.0" + } + }, "proxy-from-env": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", @@ -5122,6 +12146,93 @@ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "peer": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true, + "peer": true + }, + "regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dev": true, + "peer": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", + "dev": true, + "peer": true + }, + "regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, + "peer": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + } + }, + "regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "peer": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "peer": true + } + } + }, + "release-zalgo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==", + "dev": true, + "requires": { + "es6-error": "^4.0.1" + } + }, "request-progress": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", @@ -5131,17 +12242,65 @@ "throttleit": "^1.0.0" } }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "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==", + "dev": true, + "peer": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", "dev": true }, + "resolve": { + "version": "1.22.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.5.tgz", + "integrity": "sha512-qWhv7PF1V95QPvRoUGHxOtnAlEvlXBylMZcjUR9pAumMmveFtcHJRXGIr+TkjfNJVQypqv2qcDiiars2y1PsSg==", + "dev": true, + "peer": true, + "requires": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, "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==" }, + "resq": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/resq/-/resq-1.10.2.tgz", + "integrity": "sha512-HmgVS3j+FLrEDBTDYysPdPVF9/hioDMJ/otOiQDKqk77YfZeeLOj0qi34yObumcud1gBpk+wpBTEg4kMicD++A==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1" + }, + "dependencies": { + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==", + "dev": true + } + } + }, "restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -5194,12 +12353,63 @@ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true }, + "safe-json-stringify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz", + "integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==", + "dev": true + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, + "schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "peer": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "peer": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "peer": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "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==", + "dev": true, + "peer": true + } + } + }, "semver": { "version": "7.5.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", @@ -5209,6 +12419,22 @@ "lru-cache": "^6.0.0" } }, + "serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "peer": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -5239,6 +12465,12 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, "slice-ansi": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", @@ -5257,6 +12489,43 @@ } } }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "peer": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "spawn-wrap": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", + "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", + "dev": true, + "requires": { + "foreground-child": "^2.0.0", + "is-windows": "^1.0.2", + "make-dir": "^3.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "which": "^2.0.1" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, "sshpk": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", @@ -5307,6 +12576,12 @@ "ansi-regex": "^5.0.1" } }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + }, "strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -5327,6 +12602,81 @@ "has-flag": "^4.0.0" } }, + "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==", + "dev": true, + "peer": true + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "peer": true + }, + "terser": { + "version": "5.31.6", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.6.tgz", + "integrity": "sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==", + "dev": true, + "peer": true, + "requires": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "peer": true + } + } + }, + "terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "dev": true, + "peer": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "peer": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -5353,6 +12703,12 @@ "rimraf": "^3.0.0" } }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true + }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -5397,6 +12753,12 @@ "safe-buffer": "^5.0.1" } }, + "tv4": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz", + "integrity": "sha512-afizzfpJgvPr+eDkREK4MxJ/+r8nEEHcmitwgnPUqpaP+FpwQyadnxNoSACbgc/b1LsZYtODGoPiFxQrgJgjvw==", + "dev": true + }, "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", @@ -5416,6 +12778,47 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "peer": true + }, + "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==", + "dev": true, + "peer": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "peer": true + }, + "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==", + "dev": true, + "peer": true + }, "universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", @@ -5428,6 +12831,16 @@ "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", "dev": true }, + "update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -5463,6 +12876,88 @@ "extsprintf": "^1.2.0" } }, + "watchpack": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", + "dev": true, + "peer": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "webpack": { + "version": "5.94.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", + "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", + "dev": true, + "peer": true, + "requires": { + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.7.1", + "acorn-import-attributes": "^1.9.5", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "dependencies": { + "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==", + "dev": true, + "peer": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "peer": true + }, + "schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "peer": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "peer": true + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -5471,6 +12966,12 @@ "isexe": "^2.0.0" } }, + "which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "dev": true + }, "wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -5487,6 +12988,24 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -5499,6 +13018,74 @@ "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", "dev": true }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + } + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, "yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", diff --git a/packages/end-to-end/package.json b/packages/end-to-end/package.json index da47a48400..cdb9bba5a1 100644 --- a/packages/end-to-end/package.json +++ b/packages/end-to-end/package.json @@ -3,6 +3,7 @@ "version": "1.0.0", "description": "Cypress e2e tests for LiteFarm", "main": "index.js", + "type": "commonjs", "scripts": { "precommit": "lint-staged", "cypress": "cypress open" @@ -10,10 +11,14 @@ "author": "", "license": "GPL-3.0", "devDependencies": { - "cypress": "^13.0.0", + "@cypress/code-coverage": "^3.12.1", + "cypress": "^13.2.0", + "cypress-react-selector": "^3.0.0", + "cypress-terminal-report": "^5.3.2", "eslint": "^8.43.0", "eslint-plugin-prettier": "^4.2.1", "lint-staged": "^13.2.3", + "moment": "^2.29.4", "prettier": "^2.8.8" }, "dependencies": { diff --git a/packages/end-to-end/tsconfig.json b/packages/end-to-end/tsconfig.json new file mode 100644 index 0000000000..bb2d20029a --- /dev/null +++ b/packages/end-to-end/tsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": ["es5", "dom"], + "types": ["cypress", "node"], + "baseUrl": "./cypress" + }, + "include": ["**/*.ts"] +} diff --git a/packages/shared/locales/de/sensorCSV.json b/packages/shared/locales/de/sensorCSV.json index b7f63368c7..7d898e8cb2 100644 --- a/packages/shared/locales/de/sensorCSV.json +++ b/packages/shared/locales/de/sensorCSV.json @@ -14,4 +14,4 @@ "soil_water_potential": "Boden_Wasser_Potenzial", "temperature": "Temperatur" } -} \ No newline at end of file +} diff --git a/packages/shared/locales/en/sensorCSV.json b/packages/shared/locales/en/sensorCSV.json index b3ba8c6aab..4f45412fd9 100644 --- a/packages/shared/locales/en/sensorCSV.json +++ b/packages/shared/locales/en/sensorCSV.json @@ -14,4 +14,4 @@ "soil_water_potential": "soil_water_potential", "temperature": "temperature" } -} \ No newline at end of file +} diff --git a/packages/shared/locales/es/sensorCSV.json b/packages/shared/locales/es/sensorCSV.json index 50bf47392c..6cfc037def 100644 --- a/packages/shared/locales/es/sensorCSV.json +++ b/packages/shared/locales/es/sensorCSV.json @@ -14,4 +14,4 @@ "soil_water_potential": "potencial_hídrico_del_suelo", "temperature": "temperatura" } -} \ No newline at end of file +} diff --git a/packages/shared/locales/fr/sensorCSV.json b/packages/shared/locales/fr/sensorCSV.json index 495f439878..436dbef402 100644 --- a/packages/shared/locales/fr/sensorCSV.json +++ b/packages/shared/locales/fr/sensorCSV.json @@ -14,4 +14,4 @@ "soil_water_potential": "potentiel_hydrique_du_sol", "temperature": "température" } -} \ No newline at end of file +} diff --git a/packages/shared/locales/hi/sensorCSV.json b/packages/shared/locales/hi/sensorCSV.json index b7872a5487..fb2c7804e1 100644 --- a/packages/shared/locales/hi/sensorCSV.json +++ b/packages/shared/locales/hi/sensorCSV.json @@ -14,4 +14,4 @@ "soil_water_potential": "मृदा_जल_क्षमता", "temperature": "तापमान" } -} \ No newline at end of file +} diff --git a/packages/shared/locales/ml/sensorCSV.json b/packages/shared/locales/ml/sensorCSV.json index 286dbe02d3..2c91cd0e3c 100644 --- a/packages/shared/locales/ml/sensorCSV.json +++ b/packages/shared/locales/ml/sensorCSV.json @@ -14,4 +14,4 @@ "soil_water_potential": "മണ്ണ്_ജലം_ ശേഷി", "temperature": "താപനില" } -} \ No newline at end of file +} diff --git a/packages/shared/locales/pa/sensorCSV.json b/packages/shared/locales/pa/sensorCSV.json index c3a864c9cc..3346f34dec 100644 --- a/packages/shared/locales/pa/sensorCSV.json +++ b/packages/shared/locales/pa/sensorCSV.json @@ -14,4 +14,4 @@ "soil_water_potential": "ਮਿੱਟੀ_ਪਾਣੀ_ਸੰਭਾਵੀ", "temperature": "ਤਾਪਮਾਨ" } -} \ No newline at end of file +} diff --git a/packages/shared/locales/pt/sensorCSV.json b/packages/shared/locales/pt/sensorCSV.json index 9154dada7a..fd94ab2a91 100644 --- a/packages/shared/locales/pt/sensorCSV.json +++ b/packages/shared/locales/pt/sensorCSV.json @@ -14,4 +14,4 @@ "soil_water_potential": "potencial_de_água_do_solo", "temperature": "temperatura" } -} \ No newline at end of file +} diff --git a/packages/webapp/.storybook/main.cjs b/packages/webapp/.storybook/main.cjs index 6bf404d4df..24424ddf45 100644 --- a/packages/webapp/.storybook/main.cjs +++ b/packages/webapp/.storybook/main.cjs @@ -1,24 +1,32 @@ module.exports = { - stories: ['../src/stories/**/*.stories.mdx', '../src/stories/**/*.stories.@(js|jsx|ts|tsx)'], - "addons": ["@storybook/addon-links", "@storybook/addon-essentials", "@storybook/addon-interactions", '@storybook/addon-a11y'], - "framework": { - name: "@storybook/react-vite", - options: {} - }, - "features": { - "storyStoreV7": true + stories: ['../src/stories/**/*.mdx', '../src/stories/**/*.stories.@(js|jsx|ts|tsx)'], + + addons: [ + '@storybook/addon-links', + '@storybook/addon-essentials', + '@storybook/addon-interactions', + '@storybook/addon-a11y', + ], + + framework: { + name: '@storybook/react-vite', + options: {}, }, + async viteFinal(config) { return { ...config, - plugins: [...config.plugins.filter(plugin => !['@mdx-js/rollup'].includes(plugin.name))], + plugins: [...config.plugins.filter((plugin) => !['@mdx-js/rollup'].includes(plugin.name))], optimizeDeps: { ...config.optimizeDeps, - include: [...(config.optimizeDeps?.include ?? []), '@storybook/addon-docs/blocks'] - } + include: [...(config.optimizeDeps?.include ?? []), '@storybook/addon-docs/blocks'], + }, }; }, - docs: { - autodocs: true + + docs: {}, + + typescript: { + reactDocgen: 'react-docgen-typescript' } -}; \ No newline at end of file +}; diff --git a/packages/webapp/.storybook/preview.jsx b/packages/webapp/.storybook/preview.jsx index dc8eff9844..a0968daab1 100644 --- a/packages/webapp/.storybook/preview.jsx +++ b/packages/webapp/.storybook/preview.jsx @@ -94,3 +94,4 @@ export const globalTypes = { }, }, }; +export const tags = ['autodocs']; diff --git a/packages/webapp/index.html b/packages/webapp/index.html index 0276cf299a..c366ccfaa1 100644 --- a/packages/webapp/index.html +++ b/packages/webapp/index.html @@ -1,4 +1,4 @@ - + diff --git a/packages/webapp/package.json b/packages/webapp/package.json index a5000b96b2..7cefb3f8ee 100644 --- a/packages/webapp/package.json +++ b/packages/webapp/package.json @@ -1,6 +1,6 @@ { "name": "litefarm-webapp", - "version": "3.6.8", + "version": "3.7.0", "description": "LiteFarm Web application", "type": "module", "scripts": { @@ -30,11 +30,11 @@ "@reduxjs/toolkit": "^1.9.1", "@sentry/react": "^6.19.7", "@sentry/tracing": "^6.19.7", - "axios": "^0.25.0", + "axios": "^1.7.4", "chart.js": "^4.4.0", "clsx": "^1.2.1", "compressorjs": "^1.1.1", - "convert-units": "^3.0.0-beta.5", + "convert-units": "3.0.0-beta.5", "d3": "^7.6.1", "file-saver": "^2.0.5", "framer-motion": "^6.5.1", @@ -80,24 +80,27 @@ "@emotion/babel-plugin": "^11.10.5", "@mdx-js/react": "^1.6.22", "@mdx-js/rollup": "^2.3.0", - "@storybook/addon-a11y": "7.0.27", - "@storybook/addon-actions": "7.0.27", - "@storybook/addon-docs": "7.0.27", - "@storybook/addon-essentials": "7.0.27", - "@storybook/addon-interactions": "7.0.27", - "@storybook/addon-links": "7.0.27", - "@storybook/addon-mdx-gfm": "7.0.27", - "@storybook/addon-viewport": "7.0.27", - "@storybook/jest": "^0.2.3", - "@storybook/react": "7.0.27", - "@storybook/react-vite": "7.0.27", - "@storybook/test-runner": "^0.9.4", - "@storybook/testing-library": "^0.0.14-next.1", + "@storybook/addon-a11y": "^8.2.8", + "@storybook/addon-actions": "^8.2.8", + "@storybook/addon-docs": "^8.2.8", + "@storybook/addon-essentials": "^8.2.8", + "@storybook/addon-interactions": "^8.2.8", + "@storybook/addon-links": "^8.2.8", + "@storybook/addon-mdx-gfm": "^8.2.8", + "@storybook/addon-viewport": "^8.2.8", + "@storybook/react": "^8.2.8", + "@storybook/react-vite": "^8.2.8", + "@storybook/test": "^8.2.8", + "@storybook/test-runner": "^0.19.1", "@types/d3": "^7.4.0", + "@types/lodash-es": "^4.17.12", "@types/prop-types": "^15.7.5", "@types/react": "^18.0.25", "@types/react-dom": "^18.0.9", "@types/react-redux": "^7.1.25", + "@types/react-router-dom": "4.3.1", + "@types/react-table": "^7.7.19", + "@types/uuid": "^10.0.0", "@typescript-eslint/parser": "^5.45.0", "@vitejs/plugin-react": "^4.1.0", "babel-loader": "^8.3.0", @@ -108,8 +111,8 @@ "eslint-plugin-json": "^3.1.0", "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-react": "^7.31.11", - "eslint-plugin-storybook": "^0.6.10", - "happy-dom": "^12.9.1", + "eslint-plugin-storybook": "^0.8.0", + "happy-dom": "^15.10.2", "i18next-parser": "^5.4.0", "imap-simple": "^5.1.0", "lint-staged": "^12.5.0", @@ -117,9 +120,9 @@ "nodemailer": "^6.8.0", "react-select-event": "^5.5.1", "sass": "^1.56.1", - "storybook": "7.0.27", + "storybook": "^8.2.8", "typescript": "^4.9.5", - "vite": "^4.1.5", + "vite": "^4.5.5", "vite-plugin-istanbul": "^4.0.0", "vite-plugin-pwa": "^0.14.3", "vite-plugin-svgr": "^2.4.0", diff --git a/packages/webapp/pnpm-lock.yaml b/packages/webapp/pnpm-lock.yaml index c6745a9c38..541f3cd94e 100644 --- a/packages/webapp/pnpm-lock.yaml +++ b/packages/webapp/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: '6.0' +lockfileVersion: '9.0' settings: autoInstallPeers: true @@ -9,8404 +9,10538 @@ overrides: glob-parent@<5.1.2: '>=5.1.2' semver@<7.5.2: '>=7.5.2' -dependencies: - '@emotion/react': - specifier: ^11.10.5 - version: 11.10.5(@babel/core@7.20.5)(@types/react@18.0.25)(react@18.2.0) - '@emotion/styled': - specifier: ^11.11.0 - version: 11.11.0(@emotion/react@11.10.5)(@types/react@18.0.25)(react@18.2.0) - '@formatjs/intl-datetimeformat': - specifier: ^6.15.0 - version: 6.15.0 - '@googlemaps/markerclusterer': - specifier: ^2.0.14 - version: 2.0.14 - '@mui/base': - specifier: 5.0.0-beta.26 - version: 5.0.0-beta.26(@types/react@18.0.25)(react-dom@18.2.0)(react@18.2.0) - '@mui/icons-material': - specifier: ^5.11.16 - version: 5.11.16(@mui/material@5.13.5)(@types/react@18.0.25)(react@18.2.0) - '@mui/material': - specifier: ^5.13.5 - version: 5.13.5(@emotion/react@11.10.5)(@emotion/styled@11.11.0)(@types/react@18.0.25)(react-dom@18.2.0)(react@18.2.0) - '@mui/styles': - specifier: ^5.13.2 - version: 5.13.2(@types/react@18.0.25)(react@18.2.0) - '@react-oauth/google': - specifier: ^0.7.0 - version: 0.7.0(react-dom@18.2.0)(react@18.2.0) - '@reactour/tour': - specifier: ^3.1.6 - version: 3.1.6(react@18.2.0) - '@reduxjs/toolkit': - specifier: ^1.9.1 - version: 1.9.1(react-redux@7.2.9)(react@18.2.0) - '@sentry/react': - specifier: ^6.19.7 - version: 6.19.7(react@18.2.0) - '@sentry/tracing': - specifier: ^6.19.7 - version: 6.19.7 - axios: - specifier: ^0.25.0 - version: 0.25.0 - chart.js: - specifier: ^4.4.0 - version: 4.4.0 - clsx: - specifier: ^1.2.1 - version: 1.2.1 - compressorjs: - specifier: ^1.1.1 - version: 1.1.1 - convert-units: - specifier: ^3.0.0-beta.5 - version: 3.0.0-beta.5 - d3: - specifier: ^7.6.1 - version: 7.6.1 - file-saver: - specifier: ^2.0.5 - version: 2.0.5 - framer-motion: - specifier: ^6.5.1 - version: 6.5.1(react-dom@18.2.0)(react@18.2.0) - google-map-react: - specifier: ^2.2.0 - version: 2.2.0(react-dom@18.2.0)(react@18.2.0) - history: - specifier: ^5.3.0 - version: 5.3.0 - html2canvas: - specifier: ^1.4.1 - version: 1.4.1 - i18next: - specifier: ^21.10.0 - version: 21.10.0 - i18next-browser-languagedetector: - specifier: ^6.1.8 - version: 6.1.8 - i18next-xhr-backend: - specifier: ^3.2.2 - version: 3.2.2 - immer: - specifier: ^9.0.16 - version: 9.0.16 - jszip: - specifier: ^3.10.1 - version: 3.10.1 - lodash-es: - specifier: ^4.17.21 - version: 4.17.21 - moment: - specifier: ^2.29.4 - version: 2.29.4 - moment-range: - specifier: ^4.0.2 - version: 4.0.2(moment@2.29.4) - notistack: - specifier: ^3.0.1 - version: 3.0.1(csstype@3.1.2)(react-dom@18.2.0)(react@18.2.0) - prop-types: - specifier: ^15.8.1 - version: 15.8.1 - rc-year-calendar: - specifier: ^1.0.2 - version: 1.0.2(prop-types@15.8.1)(react@18.2.0) - react: - specifier: ^18.2.0 - version: 18.2.0 - react-chartjs-2: - specifier: ^5.2.0 - version: 5.2.0(chart.js@4.4.0)(react@18.2.0) - react-dom: - specifier: ^18.2.0 - version: 18.2.0(react@18.2.0) - react-error-boundary: - specifier: ^4.0.12 - version: 4.0.12(react@18.2.0) - react-google-login: - specifier: ^5.2.2 - version: 5.2.2(react-dom@18.2.0)(react@18.2.0) - react-hook-form: - specifier: ^7.40.0 - version: 7.40.0(react@18.2.0) - react-i18next: - specifier: ^11.18.6 - version: 11.18.6(i18next@21.10.0)(react-dom@18.2.0)(react@18.2.0) - react-icons: - specifier: ^4.7.1 - version: 4.7.1(react@18.2.0) - react-jwt: - specifier: ^1.1.8 - version: 1.1.8(react@18.2.0) - react-load-script: - specifier: ^0.0.6 - version: 0.0.6(prop-types@15.8.1)(react@18.2.0) - react-redux: - specifier: ^7.2.9 - version: 7.2.9(react-dom@18.2.0)(react@18.2.0) - react-redux-form: - specifier: ^1.16.14 - version: 1.16.14(react-dom@18.2.0)(react-redux@7.2.9)(react@18.2.0)(redux@4.2.0) - react-router-dom: - specifier: ^4.3.1 - version: 4.3.1(react@18.2.0) - react-select: - specifier: ^5.7.0 - version: 5.7.0(@babel/core@7.20.5)(@types/react@18.0.25)(react-dom@18.2.0)(react@18.2.0) - react-table: - specifier: ^6.11.5 - version: 6.11.5(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0) - recharts: - specifier: ^2.1.16 - version: 2.1.16(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0) - redux: - specifier: ^4.2.0 - version: 4.2.0 - redux-persist: - specifier: ^6.0.0 - version: 6.0.0(react@18.2.0)(redux@4.2.0) - redux-saga: - specifier: ^1.2.1 - version: 1.2.1 - reselect: - specifier: ^4.1.7 - version: 4.1.7 - rrule: - specifier: 2.7.2 - version: 2.7.2 - uuid: - specifier: ^8.3.2 - version: 8.3.2 - -devDependencies: - '@babel/core': - specifier: ^7.20.5 - version: 7.20.5 - '@emotion/babel-plugin': - specifier: ^11.10.5 - version: 11.10.5(@babel/core@7.20.5) - '@mdx-js/react': - specifier: ^1.6.22 - version: 1.6.22(react@18.2.0) - '@mdx-js/rollup': - specifier: ^2.3.0 - version: 2.3.0(rollup@3.25.3) - '@storybook/addon-a11y': - specifier: 7.0.27 - version: 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-actions': - specifier: 7.0.27 - version: 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-docs': - specifier: 7.0.27 - version: 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-essentials': - specifier: 7.0.27 - version: 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-interactions': - specifier: 7.0.27 - version: 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-links': - specifier: 7.0.27 - version: 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-mdx-gfm': - specifier: 7.0.27 - version: 7.0.27 - '@storybook/addon-viewport': - specifier: 7.0.27 - version: 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/jest': - specifier: ^0.2.3 - version: 0.2.3(jest@28.1.3)(vitest@0.34.5) - '@storybook/react': - specifier: 7.0.27 - version: 7.0.27(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@storybook/react-vite': - specifier: 7.0.27 - version: 7.0.27(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(vite@4.1.5) - '@storybook/test-runner': - specifier: ^0.9.4 - version: 0.9.4(eslint@8.28.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@storybook/testing-library': - specifier: ^0.0.14-next.1 - version: 0.0.14-next.1(storybook@7.0.27) - '@types/d3': - specifier: ^7.4.0 - version: 7.4.0 - '@types/prop-types': - specifier: ^15.7.5 - version: 15.7.5 - '@types/react': - specifier: ^18.0.25 - version: 18.0.25 - '@types/react-dom': - specifier: ^18.0.9 - version: 18.0.9 - '@types/react-redux': - specifier: ^7.1.25 - version: 7.1.25 - '@typescript-eslint/parser': - specifier: ^5.45.0 - version: 5.45.0(eslint@8.28.0)(typescript@4.9.5) - '@vitejs/plugin-react': - specifier: ^4.1.0 - version: 4.1.0(vite@4.1.5) - babel-loader: - specifier: ^8.3.0 - version: 8.3.0(@babel/core@7.20.5)(webpack@5.88.0) - check-code-coverage: - specifier: ^1.10.4 - version: 1.10.4 - chromatic: - specifier: ^6.11.4 - version: 6.11.4 - eslint: - specifier: ^8.28.0 - version: 8.28.0 - eslint-config-prettier: - specifier: ^8.5.0 - version: 8.5.0(eslint@8.28.0) - eslint-plugin-json: - specifier: ^3.1.0 - version: 3.1.0 - eslint-plugin-prettier: - specifier: ^4.2.1 - version: 4.2.1(eslint-config-prettier@8.5.0)(eslint@8.28.0)(prettier@2.8.8) - eslint-plugin-react: - specifier: ^7.31.11 - version: 7.31.11(eslint@8.28.0) - eslint-plugin-storybook: - specifier: ^0.6.10 - version: 0.6.10(eslint@8.28.0)(typescript@4.9.5) - happy-dom: - specifier: ^12.9.1 - version: 12.9.1 - i18next-parser: - specifier: ^5.4.0 - version: 5.4.0 - imap-simple: - specifier: ^5.1.0 - version: 5.1.0 - lint-staged: - specifier: ^12.5.0 - version: 12.5.0 - mailparser: - specifier: ^3.5.0 - version: 3.5.0 - nodemailer: - specifier: ^6.8.0 - version: 6.8.0 - react-select-event: - specifier: ^5.5.1 - version: 5.5.1 - sass: - specifier: ^1.56.1 - version: 1.56.1 - storybook: - specifier: 7.0.27 - version: 7.0.27 - typescript: - specifier: ^4.9.5 - version: 4.9.5 - vite: - specifier: ^4.1.5 - version: 4.1.5(@types/node@20.3.2)(sass@1.56.1) - vite-plugin-istanbul: - specifier: ^4.0.0 - version: 4.0.0(vite@4.1.5) - vite-plugin-pwa: - specifier: ^0.14.3 - version: 0.14.3(vite@4.1.5)(workbox-build@6.6.0)(workbox-window@6.6.0) - vite-plugin-svgr: - specifier: ^2.4.0 - version: 2.4.0(rollup@3.25.3)(vite@4.1.5) - vitest: - specifier: ^0.34.5 - version: 0.34.5(happy-dom@12.9.1)(sass@1.56.1) +importers: + + .: + dependencies: + '@emotion/react': + specifier: ^11.10.5 + version: 11.10.5(@babel/core@7.20.5)(@types/react@18.0.25)(react@18.2.0) + '@emotion/styled': + specifier: ^11.11.0 + version: 11.11.0(@emotion/react@11.10.5(@babel/core@7.20.5)(@types/react@18.0.25)(react@18.2.0))(@types/react@18.0.25)(react@18.2.0) + '@formatjs/intl-datetimeformat': + specifier: ^6.15.0 + version: 6.15.0 + '@googlemaps/markerclusterer': + specifier: ^2.0.14 + version: 2.0.14 + '@mui/base': + specifier: 5.0.0-beta.26 + version: 5.0.0-beta.26(@types/react@18.0.25)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@mui/icons-material': + specifier: ^5.11.16 + version: 5.11.16(@mui/material@5.13.5(@emotion/react@11.10.5(@babel/core@7.20.5)(@types/react@18.0.25)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.10.5(@babel/core@7.20.5)(@types/react@18.0.25)(react@18.2.0))(@types/react@18.0.25)(react@18.2.0))(@types/react@18.0.25)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@types/react@18.0.25)(react@18.2.0) + '@mui/material': + specifier: ^5.13.5 + version: 5.13.5(@emotion/react@11.10.5(@babel/core@7.20.5)(@types/react@18.0.25)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.10.5(@babel/core@7.20.5)(@types/react@18.0.25)(react@18.2.0))(@types/react@18.0.25)(react@18.2.0))(@types/react@18.0.25)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@mui/styles': + specifier: ^5.13.2 + version: 5.13.2(@types/react@18.0.25)(react@18.2.0) + '@react-oauth/google': + specifier: ^0.7.0 + version: 0.7.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@reactour/tour': + specifier: ^3.1.6 + version: 3.1.6(react@18.2.0) + '@reduxjs/toolkit': + specifier: ^1.9.1 + version: 1.9.1(react-redux@7.2.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) + '@sentry/react': + specifier: ^6.19.7 + version: 6.19.7(react@18.2.0) + '@sentry/tracing': + specifier: ^6.19.7 + version: 6.19.7 + axios: + specifier: ^1.7.4 + version: 1.7.4 + chart.js: + specifier: ^4.4.0 + version: 4.4.0 + clsx: + specifier: ^1.2.1 + version: 1.2.1 + compressorjs: + specifier: ^1.1.1 + version: 1.1.1 + convert-units: + specifier: 3.0.0-beta.5 + version: 3.0.0-beta.5 + d3: + specifier: ^7.6.1 + version: 7.6.1 + file-saver: + specifier: ^2.0.5 + version: 2.0.5 + framer-motion: + specifier: ^6.5.1 + version: 6.5.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + google-map-react: + specifier: ^2.2.0 + version: 2.2.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + history: + specifier: ^5.3.0 + version: 5.3.0 + html2canvas: + specifier: ^1.4.1 + version: 1.4.1 + i18next: + specifier: ^21.10.0 + version: 21.10.0 + i18next-browser-languagedetector: + specifier: ^6.1.8 + version: 6.1.8 + i18next-xhr-backend: + specifier: ^3.2.2 + version: 3.2.2 + immer: + specifier: ^9.0.16 + version: 9.0.16 + jszip: + specifier: ^3.10.1 + version: 3.10.1 + lodash-es: + specifier: ^4.17.21 + version: 4.17.21 + moment: + specifier: ^2.29.4 + version: 2.29.4 + moment-range: + specifier: ^4.0.2 + version: 4.0.2(moment@2.29.4) + notistack: + specifier: ^3.0.1 + version: 3.0.1(csstype@3.1.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + prop-types: + specifier: ^15.8.1 + version: 15.8.1 + rc-year-calendar: + specifier: ^1.0.2 + version: 1.0.2(prop-types@15.8.1)(react@18.2.0) + react: + specifier: ^18.2.0 + version: 18.2.0 + react-chartjs-2: + specifier: ^5.2.0 + version: 5.2.0(chart.js@4.4.0)(react@18.2.0) + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + react-error-boundary: + specifier: ^4.0.12 + version: 4.0.12(react@18.2.0) + react-google-login: + specifier: ^5.2.2 + version: 5.2.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-hook-form: + specifier: ^7.40.0 + version: 7.40.0(react@18.2.0) + react-i18next: + specifier: ^11.18.6 + version: 11.18.6(i18next@21.10.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-icons: + specifier: ^4.7.1 + version: 4.7.1(react@18.2.0) + react-jwt: + specifier: ^1.1.8 + version: 1.1.8(react@18.2.0) + react-load-script: + specifier: ^0.0.6 + version: 0.0.6(prop-types@15.8.1)(react@18.2.0) + react-redux: + specifier: ^7.2.9 + version: 7.2.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-redux-form: + specifier: ^1.16.14 + version: 1.16.14(react-dom@18.2.0(react@18.2.0))(react-redux@7.2.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0)(redux@4.2.0) + react-router-dom: + specifier: ^4.3.1 + version: 4.3.1(react@18.2.0) + react-select: + specifier: ^5.7.0 + version: 5.7.0(@babel/core@7.20.5)(@types/react@18.0.25)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-table: + specifier: ^6.11.5 + version: 6.11.5(prop-types@15.8.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + recharts: + specifier: ^2.1.16 + version: 2.1.16(prop-types@15.8.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + redux: + specifier: ^4.2.0 + version: 4.2.0 + redux-persist: + specifier: ^6.0.0 + version: 6.0.0(react@18.2.0)(redux@4.2.0) + redux-saga: + specifier: ^1.2.1 + version: 1.2.1 + reselect: + specifier: ^4.1.7 + version: 4.1.7 + rrule: + specifier: 2.7.2 + version: 2.7.2 + uuid: + specifier: ^8.3.2 + version: 8.3.2 + devDependencies: + '@babel/core': + specifier: ^7.20.5 + version: 7.20.5 + '@emotion/babel-plugin': + specifier: ^11.10.5 + version: 11.10.5(@babel/core@7.20.5) + '@mdx-js/react': + specifier: ^1.6.22 + version: 1.6.22(react@18.2.0) + '@mdx-js/rollup': + specifier: ^2.3.0 + version: 2.3.0(rollup@3.25.3) + '@storybook/addon-a11y': + specifier: ^8.2.8 + version: 8.2.8(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9))) + '@storybook/addon-actions': + specifier: ^8.2.8 + version: 8.2.8(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9))) + '@storybook/addon-docs': + specifier: ^8.2.8 + version: 8.2.8(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))(webpack-sources@3.2.3) + '@storybook/addon-essentials': + specifier: ^8.2.8 + version: 8.2.8(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))(webpack-sources@3.2.3) + '@storybook/addon-interactions': + specifier: ^8.2.8 + version: 8.2.8(@jest/globals@29.7.0)(jest@29.7.0(@types/node@20.3.2)(babel-plugin-macros@3.1.0))(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))(vitest@0.34.5(happy-dom@15.10.2)(playwright@1.35.1)(sass@1.56.1)(terser@5.18.2)) + '@storybook/addon-links': + specifier: ^8.2.8 + version: 8.2.8(react@18.2.0)(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9))) + '@storybook/addon-mdx-gfm': + specifier: ^8.2.8 + version: 8.2.8(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9))) + '@storybook/addon-viewport': + specifier: ^8.2.8 + version: 8.2.8(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9))) + '@storybook/react': + specifier: ^8.2.8 + version: 8.2.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))(typescript@4.9.5) + '@storybook/react-vite': + specifier: ^8.2.8 + version: 8.2.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@3.25.3)(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))(typescript@4.9.5)(vite@4.5.5(@types/node@20.3.2)(sass@1.56.1)(terser@5.18.2))(webpack-sources@3.2.3) + '@storybook/test': + specifier: ^8.2.8 + version: 8.2.8(@jest/globals@29.7.0)(jest@29.7.0(@types/node@20.3.2)(babel-plugin-macros@3.1.0))(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))(vitest@0.34.5(happy-dom@15.10.2)(playwright@1.35.1)(sass@1.56.1)(terser@5.18.2)) + '@storybook/test-runner': + specifier: ^0.19.1 + version: 0.19.1(@types/node@20.3.2)(babel-plugin-macros@3.1.0)(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9))) + '@types/d3': + specifier: ^7.4.0 + version: 7.4.0 + '@types/lodash-es': + specifier: ^4.17.12 + version: 4.17.12 + '@types/prop-types': + specifier: ^15.7.5 + version: 15.7.5 + '@types/react': + specifier: ^18.0.25 + version: 18.0.25 + '@types/react-dom': + specifier: ^18.0.9 + version: 18.0.9 + '@types/react-redux': + specifier: ^7.1.25 + version: 7.1.25 + '@types/react-router-dom': + specifier: 4.3.1 + version: 4.3.1 + '@types/react-table': + specifier: ^7.7.19 + version: 7.7.19 + '@types/uuid': + specifier: ^10.0.0 + version: 10.0.0 + '@typescript-eslint/parser': + specifier: ^5.45.0 + version: 5.45.0(eslint@8.28.0)(typescript@4.9.5) + '@vitejs/plugin-react': + specifier: ^4.1.0 + version: 4.1.0(vite@4.5.5(@types/node@20.3.2)(sass@1.56.1)(terser@5.18.2)) + babel-loader: + specifier: ^8.3.0 + version: 8.3.0(@babel/core@7.20.5)(webpack@5.88.0(@swc/core@1.7.39)(esbuild@0.18.20)) + check-code-coverage: + specifier: ^1.10.4 + version: 1.10.4 + chromatic: + specifier: ^6.11.4 + version: 6.11.4 + eslint: + specifier: ^8.28.0 + version: 8.28.0 + eslint-config-prettier: + specifier: ^8.5.0 + version: 8.5.0(eslint@8.28.0) + eslint-plugin-json: + specifier: ^3.1.0 + version: 3.1.0 + eslint-plugin-prettier: + specifier: ^4.2.1 + version: 4.2.1(eslint-config-prettier@8.5.0(eslint@8.28.0))(eslint@8.28.0)(prettier@3.3.3) + eslint-plugin-react: + specifier: ^7.31.11 + version: 7.31.11(eslint@8.28.0) + eslint-plugin-storybook: + specifier: ^0.8.0 + version: 0.8.0(eslint@8.28.0)(typescript@4.9.5) + happy-dom: + specifier: ^15.10.2 + version: 15.10.2 + i18next-parser: + specifier: ^5.4.0 + version: 5.4.0 + imap-simple: + specifier: ^5.1.0 + version: 5.1.0 + lint-staged: + specifier: ^12.5.0 + version: 12.5.0 + mailparser: + specifier: ^3.5.0 + version: 3.5.0 + nodemailer: + specifier: ^6.8.0 + version: 6.8.0 + react-select-event: + specifier: ^5.5.1 + version: 5.5.1 + sass: + specifier: ^1.56.1 + version: 1.56.1 + storybook: + specifier: ^8.2.8 + version: 8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)) + typescript: + specifier: ^4.9.5 + version: 4.9.5 + vite: + specifier: ^4.5.5 + version: 4.5.5(@types/node@20.3.2)(sass@1.56.1)(terser@5.18.2) + vite-plugin-istanbul: + specifier: ^4.0.0 + version: 4.0.0(vite@4.5.5(@types/node@20.3.2)(sass@1.56.1)(terser@5.18.2)) + vite-plugin-pwa: + specifier: ^0.14.3 + version: 0.14.3(vite@4.5.5(@types/node@20.3.2)(sass@1.56.1)(terser@5.18.2))(workbox-build@6.6.0(@types/babel__core@7.20.3))(workbox-window@6.6.0) + vite-plugin-svgr: + specifier: ^2.4.0 + version: 2.4.0(rollup@3.25.3)(vite@4.5.5(@types/node@20.3.2)(sass@1.56.1)(terser@5.18.2)) + vitest: + specifier: ^0.34.5 + version: 0.34.5(happy-dom@15.10.2)(playwright@1.35.1)(sass@1.56.1)(terser@5.18.2) packages: - /@adobe/css-tools@4.3.2: + '@adobe/css-tools@4.3.2': resolution: {integrity: sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw==} - dev: true - /@ampproject/remapping@2.2.1: + '@ampproject/remapping@2.2.1': resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 - /@apideck/better-ajv-errors@0.3.6(ajv@8.12.0): + '@apideck/better-ajv-errors@0.3.6': resolution: {integrity: sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==} engines: {node: '>=10'} peerDependencies: ajv: '>=8' - dependencies: - ajv: 8.12.0 - json-schema: 0.4.0 - jsonpointer: 5.0.1 - leven: 3.1.0 - dev: true - - /@aw-web-design/x-default-browser@1.4.88: - resolution: {integrity: sha512-AkEmF0wcwYC2QkhK703Y83fxWARttIWXDmQN8+cof8FmFZ5BRhnNXGymeb1S73bOCLfWjYELxtujL56idCN/XA==} - hasBin: true - dependencies: - default-browser-id: 3.0.0 - dev: true - /@babel/code-frame@7.22.13: + '@babel/code-frame@7.22.13': resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.22.20 - chalk: 2.4.2 - dev: true - /@babel/code-frame@7.22.5: + '@babel/code-frame@7.22.5': resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.22.5 - /@babel/compat-data@7.22.5: - resolution: {integrity: sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==} + '@babel/code-frame@7.25.9': + resolution: {integrity: sha512-z88xeGxnzehn2sqZ8UdGQEvYErF1odv2CftxInpSYJt6uHuPe9YjahKZITGs3l5LeI9d2ROG+obuDAoSlqbNfQ==} engines: {node: '>=6.9.0'} - /@babel/compat-data@7.23.2: - resolution: {integrity: sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==} + '@babel/compat-data@7.22.5': + resolution: {integrity: sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==} engines: {node: '>=6.9.0'} - dev: true - /@babel/core@7.12.9: - resolution: {integrity: sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==} + '@babel/compat-data@7.25.9': + resolution: {integrity: sha512-yD+hEuJ/+wAJ4Ox2/rpNv5HIuPG82x3ZlQvYVn8iYCprdxzE7P1udpGF1jyjQVBU4dgznN+k2h103vxZ7NdPyw==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.22.5 - '@babel/generator': 7.22.5 - '@babel/helper-module-transforms': 7.22.5 - '@babel/helpers': 7.22.5 - '@babel/parser': 7.23.0 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.5 - '@babel/types': 7.23.0 - convert-source-map: 1.9.0 - debug: 4.3.4(supports-color@9.3.1) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - lodash: 4.17.21 - resolve: 1.22.2 - semver: 7.5.3 - source-map: 0.5.7 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/core@7.20.5: + '@babel/core@7.20.5': resolution: {integrity: sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ==} engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.22.5 - '@babel/generator': 7.22.5 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.20.5) - '@babel/helper-module-transforms': 7.22.5 - '@babel/helpers': 7.22.5 - '@babel/parser': 7.22.5 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.5 - '@babel/types': 7.22.5 - convert-source-map: 1.9.0 - debug: 4.3.4(supports-color@9.3.1) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 7.5.3 - transitivePeerDependencies: - - supports-color - - /@babel/core@7.21.8: - resolution: {integrity: sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.22.5 - '@babel/generator': 7.22.5 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.21.8) - '@babel/helper-module-transforms': 7.22.5 - '@babel/helpers': 7.22.5 - '@babel/parser': 7.23.0 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.5 - '@babel/types': 7.23.0 - convert-source-map: 1.9.0 - debug: 4.3.4(supports-color@9.3.1) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 7.5.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/core@7.22.5: - resolution: {integrity: sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.22.5 - '@babel/generator': 7.22.5 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) - '@babel/helper-module-transforms': 7.22.5 - '@babel/helpers': 7.22.5 - '@babel/parser': 7.22.5 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.5 - '@babel/types': 7.22.5 - convert-source-map: 1.9.0 - debug: 4.3.4(supports-color@9.3.1) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 7.5.3 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/core@7.23.2: + '@babel/core@7.23.2': resolution: {integrity: sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==} engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.22.13 - '@babel/generator': 7.23.0 - '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) - '@babel/helpers': 7.23.2 - '@babel/parser': 7.23.0 - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.2 - '@babel/types': 7.23.0 - convert-source-map: 2.0.0 - debug: 4.3.4(supports-color@9.3.1) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 7.5.3 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/generator@7.21.9: - resolution: {integrity: sha512-F3fZga2uv09wFdEjEQIJxXALXfz0+JaOb7SabvVMmjHxeVTuGW8wgE8Vp1Hd7O+zMTYtcfEISGRzPkeiaPPsvg==} + '@babel/core@7.25.9': + resolution: {integrity: sha512-WYvQviPw+Qyib0v92AwNIrdLISTp7RfDkM7bPqBvpbnhY4wq8HvHBZREVdYDXk98C8BkOIVnHAY3yvj7AVISxQ==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.0 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 - jsesc: 2.5.2 - dev: true - /@babel/generator@7.22.5: + '@babel/generator@7.22.5': resolution: {integrity: sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.5 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 - jsesc: 2.5.2 - /@babel/generator@7.23.0: + '@babel/generator@7.23.0': resolution: {integrity: sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.0 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 - jsesc: 2.5.2 - dev: true - /@babel/helper-annotate-as-pure@7.22.5: - resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} + '@babel/generator@7.25.9': + resolution: {integrity: sha512-omlUGkr5EaoIJrhLf9CJ0TvjBRpd9+AXRG//0GEQ9THSo8wPiTlbpy1/Ow8ZTrbXpjd9FHXfbFQx32I04ht0FA==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.0 - dev: true - /@babel/helper-builder-binary-assignment-operator-visitor@7.22.5: - resolution: {integrity: sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw==} + '@babel/helper-annotate-as-pure@7.22.5': + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.0 - dev: true - /@babel/helper-compilation-targets@7.22.15: - resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} + '@babel/helper-annotate-as-pure@7.25.9': + resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/compat-data': 7.23.2 - '@babel/helper-validator-option': 7.22.15 - browserslist: 4.21.9 - lru-cache: 5.1.1 - semver: 7.5.3 - dev: true - /@babel/helper-compilation-targets@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==} + '@babel/helper-builder-binary-assignment-operator-visitor@7.25.9': + resolution: {integrity: sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.22.5 - '@babel/core': 7.20.5 - '@babel/helper-validator-option': 7.22.5 - browserslist: 4.21.9 - lru-cache: 5.1.1 - semver: 7.5.3 - /@babel/helper-compilation-targets@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==} + '@babel/helper-compilation-targets@7.22.15': + resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.22.5 - '@babel/core': 7.21.8 - '@babel/helper-validator-option': 7.22.5 - browserslist: 4.21.9 - lru-cache: 5.1.1 - semver: 7.5.3 - dev: true - /@babel/helper-compilation-targets@7.22.5(@babel/core@7.22.5): + '@babel/helper-compilation-targets@7.22.5': resolution: {integrity: sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.22.5 - '@babel/core': 7.22.5 - '@babel/helper-validator-option': 7.22.5 - browserslist: 4.21.9 - lru-cache: 5.1.1 - semver: 7.5.3 - dev: true - /@babel/helper-compilation-targets@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==} + '@babel/helper-compilation-targets@7.25.9': + resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.22.5 - '@babel/core': 7.23.2 - '@babel/helper-validator-option': 7.22.5 - browserslist: 4.21.9 - lru-cache: 5.1.1 - semver: 7.5.3 - dev: true - /@babel/helper-create-class-features-plugin@7.22.5(@babel/core@7.20.5): + '@babel/helper-create-class-features-plugin@7.22.5': resolution: {integrity: sha512-xkb58MyOYIslxu3gKmVXmjTtUPvBU4odYzbiIQbWwLKIHCsx6UGZGX6F1IznMFVnDdirseUZopzN+ZRt8Xb33Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 - '@babel/helper-member-expression-to-functions': 7.22.5 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.5 - semver: 7.5.3 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-create-class-features-plugin@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-xkb58MyOYIslxu3gKmVXmjTtUPvBU4odYzbiIQbWwLKIHCsx6UGZGX6F1IznMFVnDdirseUZopzN+ZRt8Xb33Q==} + '@babel/helper-create-class-features-plugin@7.25.9': + resolution: {integrity: sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 - '@babel/helper-member-expression-to-functions': 7.22.5 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.5 - semver: 7.5.3 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-create-class-features-plugin@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-xkb58MyOYIslxu3gKmVXmjTtUPvBU4odYzbiIQbWwLKIHCsx6UGZGX6F1IznMFVnDdirseUZopzN+ZRt8Xb33Q==} + '@babel/helper-create-regexp-features-plugin@7.22.5': + resolution: {integrity: sha512-1VpEFOIbMRaXyDeUwUfmTIxExLwQ+zkW+Bh5zXpApA3oQedBx9v/updixWxnx/bZpKw7u8VxWjb/qWpIcmPq8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 - '@babel/helper-member-expression-to-functions': 7.22.5 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.5 - semver: 7.5.3 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-create-class-features-plugin@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-xkb58MyOYIslxu3gKmVXmjTtUPvBU4odYzbiIQbWwLKIHCsx6UGZGX6F1IznMFVnDdirseUZopzN+ZRt8Xb33Q==} + '@babel/helper-create-regexp-features-plugin@7.25.9': + resolution: {integrity: sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 - '@babel/helper-member-expression-to-functions': 7.22.5 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.5 - semver: 7.5.3 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-create-regexp-features-plugin@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-1VpEFOIbMRaXyDeUwUfmTIxExLwQ+zkW+Bh5zXpApA3oQedBx9v/updixWxnx/bZpKw7u8VxWjb/qWpIcmPq8A==} - engines: {node: '>=6.9.0'} + '@babel/helper-define-polyfill-provider@0.6.2': + resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-annotate-as-pure': 7.22.5 - regexpu-core: 5.3.2 - semver: 7.5.3 - dev: true + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - /@babel/helper-create-regexp-features-plugin@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-1VpEFOIbMRaXyDeUwUfmTIxExLwQ+zkW+Bh5zXpApA3oQedBx9v/updixWxnx/bZpKw7u8VxWjb/qWpIcmPq8A==} + '@babel/helper-environment-visitor@7.22.20': + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-annotate-as-pure': 7.22.5 - regexpu-core: 5.3.2 - semver: 7.5.3 - dev: true - /@babel/helper-create-regexp-features-plugin@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-1VpEFOIbMRaXyDeUwUfmTIxExLwQ+zkW+Bh5zXpApA3oQedBx9v/updixWxnx/bZpKw7u8VxWjb/qWpIcmPq8A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-annotate-as-pure': 7.22.5 - regexpu-core: 5.3.2 - semver: 7.5.3 - dev: true - - /@babel/helper-create-regexp-features-plugin@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-1VpEFOIbMRaXyDeUwUfmTIxExLwQ+zkW+Bh5zXpApA3oQedBx9v/updixWxnx/bZpKw7u8VxWjb/qWpIcmPq8A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-annotate-as-pure': 7.22.5 - regexpu-core: 5.3.2 - semver: 7.5.3 - dev: true - - /@babel/helper-define-polyfill-provider@0.1.5(@babel/core@7.22.5): - resolution: {integrity: sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==} - peerDependencies: - '@babel/core': ^7.4.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) - '@babel/helper-module-imports': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/traverse': 7.22.5 - debug: 4.3.4(supports-color@9.3.1) - lodash.debounce: 4.0.8 - resolve: 1.22.2 - semver: 7.5.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-define-polyfill-provider@0.3.3(@babel/core@7.21.8): - resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} - peerDependencies: - '@babel/core': ^7.4.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.21.8) - '@babel/helper-plugin-utils': 7.22.5 - debug: 4.3.4(supports-color@9.3.1) - lodash.debounce: 4.0.8 - resolve: 1.22.2 - semver: 7.5.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-define-polyfill-provider@0.4.0(@babel/core@7.20.5): - resolution: {integrity: sha512-RnanLx5ETe6aybRi1cO/edaRH+bNYWaryCEmjDDYyNr4wnSzyOp8T0dWipmqVHKEY3AbVKUom50AKSlj1zmKbg==} - peerDependencies: - '@babel/core': ^7.4.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.20.5) - '@babel/helper-plugin-utils': 7.22.5 - debug: 4.3.4(supports-color@9.3.1) - lodash.debounce: 4.0.8 - resolve: 1.22.2 - semver: 7.5.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-define-polyfill-provider@0.4.0(@babel/core@7.22.5): - resolution: {integrity: sha512-RnanLx5ETe6aybRi1cO/edaRH+bNYWaryCEmjDDYyNr4wnSzyOp8T0dWipmqVHKEY3AbVKUom50AKSlj1zmKbg==} - peerDependencies: - '@babel/core': ^7.4.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 - debug: 4.3.4(supports-color@9.3.1) - lodash.debounce: 4.0.8 - resolve: 1.22.2 - semver: 7.5.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-define-polyfill-provider@0.4.0(@babel/core@7.23.2): - resolution: {integrity: sha512-RnanLx5ETe6aybRi1cO/edaRH+bNYWaryCEmjDDYyNr4wnSzyOp8T0dWipmqVHKEY3AbVKUom50AKSlj1zmKbg==} - peerDependencies: - '@babel/core': ^7.4.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.23.2) - '@babel/helper-plugin-utils': 7.22.5 - debug: 4.3.4(supports-color@9.3.1) - lodash.debounce: 4.0.8 - resolve: 1.22.2 - semver: 7.5.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-environment-visitor@7.22.20: - resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-environment-visitor@7.22.5: - resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} + '@babel/helper-environment-visitor@7.22.5': + resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} engines: {node: '>=6.9.0'} - /@babel/helper-function-name@7.22.5: + '@babel/helper-function-name@7.22.5': resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.22.5 - '@babel/types': 7.23.0 - /@babel/helper-function-name@7.23.0: + '@babel/helper-function-name@7.23.0': resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.22.15 - '@babel/types': 7.23.0 - dev: true - /@babel/helper-hoist-variables@7.22.5: + '@babel/helper-hoist-variables@7.22.5': resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.0 - /@babel/helper-member-expression-to-functions@7.22.5: + '@babel/helper-member-expression-to-functions@7.22.5': resolution: {integrity: sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.0 - dev: true - /@babel/helper-module-imports@7.22.15: - resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + '@babel/helper-member-expression-to-functions@7.25.9': + resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.0 - dev: true - /@babel/helper-module-imports@7.22.5: + '@babel/helper-module-imports@7.22.5': resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.5 - /@babel/helper-module-transforms@7.22.5: + '@babel/helper-module-imports@7.25.9': + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.22.5': resolution: {integrity: sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-module-imports': 7.22.5 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.5 - '@babel/helper-validator-identifier': 7.22.5 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.5 - '@babel/types': 7.22.5 - transitivePeerDependencies: - - supports-color - /@babel/helper-module-transforms@7.23.0(@babel/core@7.23.2): + '@babel/helper-module-transforms@7.23.0': resolution: {integrity: sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 - dev: true - /@babel/helper-optimise-call-expression@7.22.5: + '@babel/helper-module-transforms@7.25.9': + resolution: {integrity: sha512-TvLZY/F3+GvdRYFZFyxMvnsKi+4oJdgZzU3BoGN9Uc2d9C6zfNwJcKKhjqLAhK8i46mv93jsO74fDh3ih6rpHA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.22.5': resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.0 - dev: true - /@babel/helper-plugin-utils@7.10.4: - resolution: {integrity: sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==} - dev: true + '@babel/helper-optimise-call-expression@7.25.9': + resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} + engines: {node: '>=6.9.0'} - /@babel/helper-plugin-utils@7.22.5: + '@babel/helper-plugin-utils@7.22.5': resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} engines: {node: '>=6.9.0'} - /@babel/helper-remap-async-to-generator@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-cU0Sq1Rf4Z55fgz7haOakIyM7+x/uCFwXpLPaeRzfoUtAEAuUZjZvFPjL/rk5rW693dIgn2hng1W7xbT7lWT4g==} + '@babel/helper-plugin-utils@7.25.9': + resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-wrap-function': 7.22.5 - '@babel/types': 7.23.0 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-remap-async-to-generator@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-cU0Sq1Rf4Z55fgz7haOakIyM7+x/uCFwXpLPaeRzfoUtAEAuUZjZvFPjL/rk5rW693dIgn2hng1W7xbT7lWT4g==} + '@babel/helper-remap-async-to-generator@7.25.9': + resolution: {integrity: sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-wrap-function': 7.22.5 - '@babel/types': 7.23.0 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-remap-async-to-generator@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-cU0Sq1Rf4Z55fgz7haOakIyM7+x/uCFwXpLPaeRzfoUtAEAuUZjZvFPjL/rk5rW693dIgn2hng1W7xbT7lWT4g==} + '@babel/helper-replace-supers@7.22.5': + resolution: {integrity: sha512-aLdNM5I3kdI/V9xGNyKSF3X/gTyMUBohTZ+/3QdQKAA9vxIiy12E+8E2HoOP1/DjeqU+g6as35QHJNMDDYpuCg==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-wrap-function': 7.22.5 - '@babel/types': 7.23.0 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-remap-async-to-generator@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-cU0Sq1Rf4Z55fgz7haOakIyM7+x/uCFwXpLPaeRzfoUtAEAuUZjZvFPjL/rk5rW693dIgn2hng1W7xbT7lWT4g==} + '@babel/helper-replace-supers@7.25.9': + resolution: {integrity: sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-wrap-function': 7.22.5 - '@babel/types': 7.23.0 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-replace-supers@7.22.5: - resolution: {integrity: sha512-aLdNM5I3kdI/V9xGNyKSF3X/gTyMUBohTZ+/3QdQKAA9vxIiy12E+8E2HoOP1/DjeqU+g6as35QHJNMDDYpuCg==} + '@babel/helper-simple-access@7.22.5': + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-member-expression-to-functions': 7.22.5 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.5 - '@babel/types': 7.23.0 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-simple-access@7.22.5: - resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + '@babel/helper-simple-access@7.25.9': + resolution: {integrity: sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.0 - /@babel/helper-skip-transparent-expression-wrappers@7.22.5: - resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': + resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.0 - dev: true - /@babel/helper-split-export-declaration@7.22.5: + '@babel/helper-split-export-declaration@7.22.5': resolution: {integrity: sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.0 - /@babel/helper-split-export-declaration@7.22.6: + '@babel/helper-split-export-declaration@7.22.6': resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.0 - dev: true - /@babel/helper-string-parser@7.22.5: + '@babel/helper-string-parser@7.22.5': resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier@7.22.20: + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.22.20': resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier@7.22.5: + '@babel/helper-validator-identifier@7.22.5': resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option@7.22.15: - resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-validator-option@7.22.5: + '@babel/helper-validator-option@7.22.5': resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} engines: {node: '>=6.9.0'} - /@babel/helper-wrap-function@7.22.5: - resolution: {integrity: sha512-bYqLIBSEshYcYQyfks8ewYA8S30yaGSeRslcvKMvoUk6HHPySbxHq9YRi6ghhzEU+yhQv9bP/jXnygkStOcqZw==} + '@babel/helper-validator-option@7.25.9': + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-function-name': 7.22.5 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.5 - '@babel/types': 7.23.0 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helpers@7.22.5: + '@babel/helper-wrap-function@7.25.9': + resolution: {integrity: sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.22.5': resolution: {integrity: sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.5 - '@babel/types': 7.22.5 - transitivePeerDependencies: - - supports-color - /@babel/helpers@7.23.2: + '@babel/helpers@7.23.2': resolution: {integrity: sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.2 - '@babel/types': 7.23.0 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/highlight@7.22.20: - resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==} + '@babel/helpers@7.25.9': + resolution: {integrity: sha512-oKWp3+usOJSzDZOucZUAMayhPz/xVjzymyDzUN8dk0Wd3RWMlGLXi07UCQ/CgQVb8LvXx3XBajJH4XGgkt7H7g==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.22.20 - chalk: 2.4.2 - js-tokens: 4.0.0 - dev: true - /@babel/highlight@7.22.5: + '@babel/highlight@7.22.5': resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.22.20 - chalk: 2.4.2 - js-tokens: 4.0.0 - /@babel/parser@7.21.9: - resolution: {integrity: sha512-q5PNg/Bi1OpGgx5jYlvWZwAorZepEudDMCLtj967aeS7WMont7dUZI46M2XwcIQqvUlMxWfdLFu4S/qSxeUu5g==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.23.0 - dev: true + '@babel/highlight@7.25.9': + resolution: {integrity: sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==} + engines: {node: '>=6.9.0'} - /@babel/parser@7.22.5: + '@babel/parser@7.22.5': resolution: {integrity: sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==} engines: {node: '>=6.0.0'} hasBin: true - dependencies: - '@babel/types': 7.22.5 - /@babel/parser@7.23.0: + '@babel/parser@7.23.0': resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==} engines: {node: '>=6.0.0'} hasBin: true - dependencies: - '@babel/types': 7.23.0 - dev: true - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/parser@7.25.9': + resolution: {integrity: sha512-aI3jjAAO1fh7vY/pBGsn1i9LDbRP43+asrRlkPuTXW5yHXtd1NgTEMudbBoDDxrf1daEEfPJqR+JBMakzrR4Dg==} + engines: {node: '>=6.0.0'} + hasBin: true - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==} + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9': + resolution: {integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==} + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9': + resolution: {integrity: sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==} + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9': + resolution: {integrity: sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==} + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9': + resolution: {integrity: sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.22.5(@babel/core@7.20.5) - dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==} + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9': + resolution: {integrity: sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.13.0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.22.5(@babel/core@7.21.8) - dev: true + '@babel/core': ^7.0.0 - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==} + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.13.0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.22.5(@babel/core@7.22.5) - dev: true + '@babel/core': ^7.0.0-0 - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==} - engines: {node: '>=6.9.0'} + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: - '@babel/core': ^7.13.0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.22.5(@babel/core@7.23.2) - dev: true + '@babel/core': ^7.0.0-0 - /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.21.8): - resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} - engines: {node: '>=6.9.0'} + '@babel/plugin-syntax-bigint@7.8.3': + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.5(@babel/core@7.21.8) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.8) - transitivePeerDependencies: - - supports-color - dev: true - /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.21.8): - resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-flow@7.25.9': + resolution: {integrity: sha512-F3FVgxwamIRS3+kfjNaPARX0DSAiH1exrQUVajXiR34hkdA9eyK+8rJbnu55DQjKL/ayuXqjNr2HDXwBEMEtFQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.21.8) - '@babel/helper-plugin-utils': 7.22.5 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.22.5): - resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + '@babel/plugin-syntax-import-assertions@7.25.9': + resolution: {integrity: sha512-4GHX5uzr5QMOOuzV0an9MFju4hKlm0OyePl/lHhcsTVae5t/IKVHnb8W67Vr6FuLlk5lPqLB7n7O+K5R46emYg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/plugin-proposal-class-static-block@7.21.0(@babel/core@7.21.8): - resolution: {integrity: sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==} + '@babel/plugin-syntax-import-attributes@7.25.9': + resolution: {integrity: sha512-u3EN9ub8LyYvgTnrgp8gboElouayiwPdnM7x5tcnW3iSt09/lQYPwMNK40I9IUxo7QOZhAsPHCmmuO7EPdruqg==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.12.0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.21.8) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.21.8) - transitivePeerDependencies: - - supports-color - dev: true + '@babel/core': ^7.0.0-0 - /@babel/plugin-proposal-decorators@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-h8hlezQ4dl6ixodgXkH8lUfcD7x+WAuIqPUjwGoItynrXOAv4a4Tci1zA/qjzQjjcl0v3QpLdc2LM6ZACQuY7A==} - engines: {node: '>=6.9.0'} + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.5 - '@babel/plugin-syntax-decorators': 7.22.5(@babel/core@7.22.5) - transitivePeerDependencies: - - supports-color - dev: true - /@babel/plugin-proposal-dynamic-import@7.18.6(@babel/core@7.21.8): - resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} - engines: {node: '>=6.9.0'} + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.21.8) - dev: true - /@babel/plugin-proposal-export-default-from@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-UCe1X/hplyv6A5g2WnQ90tnHRvYL29dabCWww92lO7VdfMVTVReBTRrhiMrKQejHD9oVkdnRdwYuzUZkBVQisg==} + '@babel/plugin-syntax-jsx@7.22.5': + resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-default-from': 7.22.5(@babel/core@7.22.5) - dev: true - /@babel/plugin-proposal-export-namespace-from@7.18.9(@babel/core@7.21.8): - resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} + '@babel/plugin-syntax-jsx@7.25.9': + resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.21.8) - dev: true - /@babel/plugin-proposal-json-strings@7.18.6(@babel/core@7.21.8): - resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} - engines: {node: '>=6.9.0'} + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.21.8) - dev: true - /@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.21.8): - resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} - engines: {node: '>=6.9.0'} + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.21.8) - dev: true - /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.21.8): - resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} - engines: {node: '>=6.9.0'} + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.8) - dev: true - /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.22.5): - resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} - engines: {node: '>=6.9.0'} + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.5) - dev: true - /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.21.8): - resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} - engines: {node: '>=6.9.0'} + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.21.8) - dev: true - /@babel/plugin-proposal-object-rest-spread@7.12.1(@babel/core@7.12.9): - resolution: {integrity: sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==} + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.12.9) - '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.12.9) - dev: true - /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.21.8): - resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.22.5 - '@babel/core': 7.21.8 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.21.8) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.8) - '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.21.8) - dev: true - /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.22.5): - resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} + '@babel/plugin-syntax-typescript@7.22.5': + resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.22.5 - '@babel/core': 7.22.5 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.22.5) - dev: true - /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.21.8): - resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} + '@babel/plugin-syntax-typescript@7.25.9': + resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.21.8) - dev: true - /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.21.8): - resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} + '@babel/plugin-syntax-unicode-sets-regex@7.18.6': + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.8) - dev: true + '@babel/core': ^7.0.0 - /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.22.5): - resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} + '@babel/plugin-transform-arrow-functions@7.25.9': + resolution: {integrity: sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.5) - dev: true - /@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.21.8): - resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} + '@babel/plugin-transform-async-generator-functions@7.25.9': + resolution: {integrity: sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.21.8) - '@babel/helper-plugin-utils': 7.22.5 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.22.5): - resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} + '@babel/plugin-transform-async-to-generator@7.25.9': + resolution: {integrity: sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.20.5): - resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + '@babel/plugin-transform-block-scoped-functions@7.25.9': + resolution: {integrity: sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - dev: true - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.5): - resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + '@babel/plugin-transform-block-scoping@7.25.9': + resolution: {integrity: sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - dev: true - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.2): - resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + '@babel/plugin-transform-class-properties@7.22.5': + resolution: {integrity: sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - dev: true - /@babel/plugin-proposal-private-property-in-object@7.21.11(@babel/core@7.21.8): - resolution: {integrity: sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==} + '@babel/plugin-transform-class-properties@7.25.9': + resolution: {integrity: sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.21.8) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.21.8) - transitivePeerDependencies: - - supports-color - dev: true - /@babel/plugin-proposal-private-property-in-object@7.21.11(@babel/core@7.22.5): - resolution: {integrity: sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==} + '@babel/plugin-transform-class-static-block@7.25.9': + resolution: {integrity: sha512-UIf+72C7YJ+PJ685/PpATbCz00XqiFEzHX5iysRwfvNT0Ko+FaXSvRgLytFSp8xUItrG9pFM/KoBBZDrY/cYyg==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.5) - transitivePeerDependencies: - - supports-color - dev: true + '@babel/core': ^7.12.0 - /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.20.5): - resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} - engines: {node: '>=4'} + '@babel/plugin-transform-classes@7.25.9': + resolution: {integrity: sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.20.5) - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.21.8): - resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} - engines: {node: '>=4'} + '@babel/plugin-transform-computed-properties@7.25.9': + resolution: {integrity: sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.21.8) - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.22.5): - resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} - engines: {node: '>=4'} + '@babel/plugin-transform-destructuring@7.25.9': + resolution: {integrity: sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.23.2): - resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} - engines: {node: '>=4'} + '@babel/plugin-transform-dotall-regex@7.25.9': + resolution: {integrity: sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.23.2) - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.20.5): - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + '@babel/plugin-transform-duplicate-keys@7.25.9': + resolution: {integrity: sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.21.8): - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9': + resolution: {integrity: sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==} + engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/core': ^7.0.0 - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.5): - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + '@babel/plugin-transform-dynamic-import@7.25.9': + resolution: {integrity: sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.2): - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + '@babel/plugin-transform-exponentiation-operator@7.25.9': + resolution: {integrity: sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.5): - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + '@babel/plugin-transform-export-namespace-from@7.25.9': + resolution: {integrity: sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.20.5): - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + '@babel/plugin-transform-flow-strip-types@7.25.9': + resolution: {integrity: sha512-/VVukELzPDdci7UUsWQaSkhgnjIWXnIyRpM02ldxaVoFK96c41So8JcKT3m0gYjyv7j5FNPGS5vfELrWalkbDA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.21.8): - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + '@babel/plugin-transform-for-of@7.25.9': + resolution: {integrity: sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.5): - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + '@babel/plugin-transform-function-name@7.25.9': + resolution: {integrity: sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.2): - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + '@babel/plugin-transform-json-strings@7.25.9': + resolution: {integrity: sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.20.5): - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + '@babel/plugin-transform-literals@7.25.9': + resolution: {integrity: sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.21.8): - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + '@babel/plugin-transform-logical-assignment-operators@7.25.9': + resolution: {integrity: sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.22.5): - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + '@babel/plugin-transform-member-expression-literals@7.25.9': + resolution: {integrity: sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.2): - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + '@babel/plugin-transform-modules-amd@7.25.9': + resolution: {integrity: sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-decorators@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-avpUOBS7IU6al8MmF1XpAyj9QYeLPuSDJI5D4pVMSMdL7xQokKqJPYQC67RCT0aCTashUXPiGwMJ0DEXXCEmMA==} + '@babel/plugin-transform-modules-commonjs@7.25.9': + resolution: {integrity: sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.20.5): - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + '@babel/plugin-transform-modules-systemjs@7.25.9': + resolution: {integrity: sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.21.8): - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + '@babel/plugin-transform-modules-umd@7.25.9': + resolution: {integrity: sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.22.5): - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + '@babel/plugin-transform-named-capturing-groups-regex@7.25.9': + resolution: {integrity: sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==} + engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/core': ^7.0.0 - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.2): - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + '@babel/plugin-transform-new-target@7.25.9': + resolution: {integrity: sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-export-default-from@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-ODAqWWXB/yReh/jVQDag/3/tl6lgBueQkk/TcfW/59Oykm4c8a55XloX0CTk2k2VJiFWMgHby9xNX29IbCv9dQ==} + '@babel/plugin-transform-nullish-coalescing-operator@7.25.9': + resolution: {integrity: sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.20.5): - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + '@babel/plugin-transform-numeric-separator@7.25.9': + resolution: {integrity: sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.21.8): - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + '@babel/plugin-transform-object-rest-spread@7.25.9': + resolution: {integrity: sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.22.5): - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + '@babel/plugin-transform-object-super@7.25.9': + resolution: {integrity: sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.2): - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + '@babel/plugin-transform-optional-catch-binding@7.25.9': + resolution: {integrity: sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-flow@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==} + '@babel/plugin-transform-optional-chaining@7.25.9': + resolution: {integrity: sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==} + '@babel/plugin-transform-parameters@7.25.9': + resolution: {integrity: sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==} + '@babel/plugin-transform-private-methods@7.22.5': + resolution: {integrity: sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==} + '@babel/plugin-transform-private-methods@7.25.9': + resolution: {integrity: sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==} + '@babel/plugin-transform-private-property-in-object@7.25.9': + resolution: {integrity: sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-import-attributes@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==} + '@babel/plugin-transform-property-literals@7.25.9': + resolution: {integrity: sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-import-attributes@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==} + '@babel/plugin-transform-react-jsx-self@7.22.5': + resolution: {integrity: sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-import-attributes@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==} + '@babel/plugin-transform-react-jsx-source@7.22.5': + resolution: {integrity: sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.20.5): - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + '@babel/plugin-transform-regenerator@7.25.9': + resolution: {integrity: sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.21.8): - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + '@babel/plugin-transform-reserved-words@7.25.9': + resolution: {integrity: sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.5): - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + '@babel/plugin-transform-shorthand-properties@7.25.9': + resolution: {integrity: sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.2): - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + '@babel/plugin-transform-spread@7.25.9': + resolution: {integrity: sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.20.5): - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + '@babel/plugin-transform-sticky-regex@7.25.9': + resolution: {integrity: sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.21.8): - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + '@babel/plugin-transform-template-literals@7.25.9': + resolution: {integrity: sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.5): - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + '@babel/plugin-transform-typeof-symbol@7.25.9': + resolution: {integrity: sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.2): - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + '@babel/plugin-transform-typescript@7.25.9': + resolution: {integrity: sha512-7PbZQZP50tzv2KGGnhh82GSyMB01yKY9scIjf1a+GfZCtInOWqUH5+1EBU4t9fyR5Oykkkc9vFTs4OHrhHXljQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-jsx@7.12.1(@babel/core@7.12.9): - resolution: {integrity: sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==} + '@babel/plugin-transform-unicode-escapes@7.25.9': + resolution: {integrity: sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} + '@babel/plugin-transform-unicode-property-regex@7.25.9': + resolution: {integrity: sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} + '@babel/plugin-transform-unicode-regex@7.25.9': + resolution: {integrity: sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.20.5): - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + '@babel/plugin-transform-unicode-sets-regex@7.25.9': + resolution: {integrity: sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==} + engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/core': ^7.0.0 - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.21.8): - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + '@babel/preset-env@7.25.9': + resolution: {integrity: sha512-XqDEt+hfsQukahSX9JOBDHhpUHDhj2zGSxoqWQFCMajOSBnbhBdgON/bU/5PkBA1yX5tqW6tTzuIPVsZTQ7h5Q==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.5): - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + '@babel/preset-flow@7.25.9': + resolution: {integrity: sha512-EASHsAhE+SSlEzJ4bzfusnXSHiU+JfAYzj+jbw2vgQKgq5HrUr8qs+vgtiEL5dOH6sEweI+PNt2D7AqrDSHyqQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.2): - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + '@babel/preset-modules@0.1.6-no-external-plugins': + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.20.5): - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + '@babel/preset-typescript@7.25.9': + resolution: {integrity: sha512-XWxw1AcKk36kgxf4C//fl0ikjLeqGUWn062/Fd8GtpTfDJOX6Ud95FK+4JlDA36BX4bNGndXi3a6Vr4Jo5/61A==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.21.8): - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + '@babel/register@7.25.9': + resolution: {integrity: sha512-8D43jXtGsYmEeDvm4MWHYUpWf8iiXgWYx3fW7E7Wb7Oe6FWqJPl5K6TuFW0dOwNZzEE5rjlaSJYH9JjrUKJszA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.5): - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/regjsgen@0.8.0': + resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.2): - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/runtime@7.22.5': + resolution: {integrity: sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==} + engines: {node: '>=6.9.0'} - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.20.5): - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/runtime@7.23.5': + resolution: {integrity: sha512-NdUTHcPe4C99WxPub+K9l9tK5/lV4UXIoaHSYgzco9BCyjKAAwzdBI+wWtYqHt7LJdbo74ZjRPJgzVweq1sz0w==} + engines: {node: '>=6.9.0'} - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.21.8): - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/template@7.22.15': + resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} + engines: {node: '>=6.9.0'} - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.5): - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/template@7.22.5': + resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} + engines: {node: '>=6.9.0'} - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.2): - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/template@7.25.9': + resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} + engines: {node: '>=6.9.0'} - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.12.9): - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/traverse@7.22.5': + resolution: {integrity: sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==} + engines: {node: '>=6.9.0'} - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.20.5): - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/traverse@7.23.2': + resolution: {integrity: sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==} + engines: {node: '>=6.9.0'} - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.21.8): - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/traverse@7.25.9': + resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==} + engines: {node: '>=6.9.0'} - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.5): - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/types@7.22.5': + resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} + engines: {node: '>=6.9.0'} - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.2): - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/types@7.23.0': + resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==} + engines: {node: '>=6.9.0'} - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.20.5): - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/types@7.25.9': + resolution: {integrity: sha512-OwS2CM5KocvQ/k7dFJa8i5bNGJP0hXWfVCfDkqRFP1IreH1JDC7wG6eCYCi0+McbfT8OR/kNqsI0UU0xP9H6PQ==} + engines: {node: '>=6.9.0'} - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.21.8): - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@base2/pretty-print-object@1.0.1': + resolution: {integrity: sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==} - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.5): - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.2): - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@discoveryjs/json-ext@0.5.7': + resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} + engines: {node: '>=10.0.0'} - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.20.5): - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + '@emotion/babel-plugin@11.10.5': + resolution: {integrity: sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA==} peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/core': ^7.0.0 - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.21.8): - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@emotion/babel-plugin@11.11.0': + resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==} - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.5): - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@emotion/cache@11.11.0': + resolution: {integrity: sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==} - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.2): - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@emotion/hash@0.9.1': + resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==} - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.20.5): - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@emotion/is-prop-valid@0.8.8': + resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==} - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.21.8): - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@emotion/is-prop-valid@1.2.1': + resolution: {integrity: sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==} - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.22.5): - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@emotion/memoize@0.7.4': + resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.2): - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@emotion/memoize@0.8.1': + resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.20.5): - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} + '@emotion/react@11.10.5': + resolution: {integrity: sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A==} peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/core': ^7.0.0 + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@babel/core': + optional: true + '@types/react': + optional: true - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.21.8): - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@emotion/serialize@1.1.2': + resolution: {integrity: sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==} - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.5): - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@emotion/sheet@1.2.2': + resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==} - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.2): - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} + '@emotion/styled@11.11.0': + resolution: {integrity: sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==} peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@emotion/react': ^11.0.0-rc.0 + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true - /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@emotion/unitless@0.8.1': + resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==} - /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} - engines: {node: '>=6.9.0'} + '@emotion/use-insertion-effect-with-fallbacks@1.0.1': + resolution: {integrity: sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==} peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + react: '>=16.8.0' + + '@emotion/utils@1.2.1': + resolution: {integrity: sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==} + + '@emotion/weak-memoize@0.3.1': + resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==} + + '@esbuild/android-arm64@0.18.20': + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.18.20': + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.18.20': + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.18.20': + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.18.20': + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.18.20': + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.18.20': + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.18.20': + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.18.20': + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.18.20': + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.18.20': + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.18.20': + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.18.20': + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.18.20': + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.18.20': + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.18.20': + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.18.20': + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.18.20': + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.18.20': + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.18.20': + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.18.20': + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.18.20': + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.4.0': + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint/eslintrc@1.4.1': + resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@floating-ui/core@1.3.1': + resolution: {integrity: sha512-Bu+AMaXNjrpjh41znzHqaz3r2Nr8hHuHZT6V2LBKMhyMl0FgKA62PNYbqnfgmzOhoWZj70Zecisbo4H1rotP5g==} + + '@floating-ui/core@1.5.2': + resolution: {integrity: sha512-Ii3MrfY/GAIN3OhXNzpCKaLxHQfJF9qvwq/kEJYdqDxeIHa01K8sldugal6TmeeXl+WMvhv9cnVzUTaFFJF09A==} + + '@floating-ui/dom@1.4.2': + resolution: {integrity: sha512-VKmvHVatWnewmGGy+7Mdy4cTJX71Pli6v/Wjb5RQBuq5wjUYx+Ef+kRThi8qggZqDgD8CogCpqhRoVp3+yQk+g==} + + '@floating-ui/dom@1.5.3': + resolution: {integrity: sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==} + + '@floating-ui/react-dom@2.0.4': + resolution: {integrity: sha512-CF8k2rgKeh/49UrnIBs4BdxPUV6vize/Db1d/YbCLyp9GiVZ0BEwf5AiDSxJRCr6yOkGqTFHtmrULxkEfYZ7dQ==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/utils@0.1.6': + resolution: {integrity: sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==} + + '@formatjs/ecma402-abstract@2.2.0': + resolution: {integrity: sha512-IpM+ev1E4QLtstniOE29W1rqH9eTdx5hQdNL8pzrflMj/gogfaoONZqL83LUeQScHAvyMbpqP5C9MzNf+fFwhQ==} + + '@formatjs/fast-memoize@2.2.1': + resolution: {integrity: sha512-XS2RcOSyWxmUB7BUjj3mlPH0exsUzlf6QfhhijgI941WaJhVxXQ6mEWkdUFIdnKi3TuTYxRdelsgv3mjieIGIA==} + + '@formatjs/intl-datetimeformat@6.15.0': + resolution: {integrity: sha512-rlCAGenAXqqi0og6vRW+2zOpCEy+YslSwhHFckv1JcfRSaIWjLsj0qtByTXJQQCyaefzPtcwhjXKXmfQFq02JQ==} + + '@formatjs/intl-localematcher@0.5.5': + resolution: {integrity: sha512-t5tOGMgZ/i5+ALl2/offNqAQq/lfUnKLEw0mXQI4N4bqpedhrSE+fyKLpwnd22sK0dif6AV+ufQcTsKShB9J1g==} + + '@googlemaps/js-api-loader@1.16.2': + resolution: {integrity: sha512-psGw5u0QM6humao48Hn4lrChOM2/rA43ZCm3tKK9qQsEj1/VzqkCqnvGfEOshDbBQflydfaRovbKwZMF4AyqbA==} + + '@googlemaps/markerclusterer@2.0.14': + resolution: {integrity: sha512-/AKSz4kqMKOGc1ByPK4FWygOi0SHE2MjZdueelx4oShagcR5d9eIz77YMxcyxOUIc/dI0x5/Y0VoUTn+aWEUtQ==} + + '@hapi/hoek@9.3.0': + resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} + + '@hapi/topo@5.1.0': + resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + + '@humanwhocodes/config-array@0.11.10': + resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/object-schema@1.2.1': + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + deprecated: Use @eslint/object-schema instead + + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jest/console@29.7.0': + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/core@29.7.0': + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/create-cache-key-function@29.7.0': + resolution: {integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/environment@29.7.0': + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect-utils@29.7.0': + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect@29.7.0': + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/fake-timers@29.7.0': + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/globals@29.7.0': + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/reporters@29.7.0': + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/source-map@29.6.3': + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/test-result@29.7.0': + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/test-sequencer@29.7.0': + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/transform@29.7.0': + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/types@29.6.3': + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@joshwooding/vite-plugin-react-docgen-typescript@0.3.1': + resolution: {integrity: sha512-pdoMZ9QaPnVlSM+SdU/wgg0nyD/8wQ7y90ttO2CMCyrrm7RxveYIJ5eNfjPaoMFqW41LZra7QO9j+xV4Y18Glw==} + peerDependencies: + typescript: '>= 4.3.x' + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@jridgewell/gen-mapping@0.3.3': + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.0': + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.1.2': + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.3': + resolution: {integrity: sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==} + + '@jridgewell/sourcemap-codec@1.4.14': + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + + '@jridgewell/sourcemap-codec@1.4.15': + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + '@jridgewell/trace-mapping@0.3.18': + resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@kurkle/color@0.3.2': + resolution: {integrity: sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==} + + '@mapbox/point-geometry@0.1.0': + resolution: {integrity: sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==} + + '@mdx-js/mdx@2.3.0': + resolution: {integrity: sha512-jLuwRlz8DQfQNiUCJR50Y09CGPq3fLtmtUQfVrj79E0JWu3dvsVcxVIcfhR5h0iXu+/z++zDrYeiJqifRynJkA==} + + '@mdx-js/react@1.6.22': + resolution: {integrity: sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==} + peerDependencies: + react: ^16.13.1 || ^17.0.0 + + '@mdx-js/react@3.1.0': + resolution: {integrity: sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==} + peerDependencies: + '@types/react': '>=16' + react: '>=16' + + '@mdx-js/rollup@2.3.0': + resolution: {integrity: sha512-wLvRfJS/M4UmdqTd+WoaySEE7q4BIejYf1xAHXYvtT1du/1Tl/z2450Gg2+Hu7fh05KwRRiehiTP9Yc/Dtn0fA==} + peerDependencies: + rollup: '>=2' + + '@motionone/animation@10.15.1': + resolution: {integrity: sha512-mZcJxLjHor+bhcPuIFErMDNyrdb2vJur8lSfMCsuCB4UyV8ILZLvK+t+pg56erv8ud9xQGK/1OGPt10agPrCyQ==} + + '@motionone/dom@10.12.0': + resolution: {integrity: sha512-UdPTtLMAktHiqV0atOczNYyDd/d8Cf5fFsd1tua03PqTwwCe/6lwhLSQ8a7TbnQ5SN0gm44N1slBfj+ORIhrqw==} + + '@motionone/easing@10.15.1': + resolution: {integrity: sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw==} + + '@motionone/generators@10.15.1': + resolution: {integrity: sha512-67HLsvHJbw6cIbLA/o+gsm7h+6D4Sn7AUrB/GPxvujse1cGZ38F5H7DzoH7PhX+sjvtDnt2IhFYF2Zp1QTMKWQ==} + + '@motionone/types@10.15.1': + resolution: {integrity: sha512-iIUd/EgUsRZGrvW0jqdst8st7zKTzS9EsKkP+6c6n4MPZoQHwiHuVtTQLD6Kp0bsBLhNzKIBlHXponn/SDT4hA==} + + '@motionone/utils@10.15.1': + resolution: {integrity: sha512-p0YncgU+iklvYr/Dq4NobTRdAPv9PveRDUXabPEeOjBLSO/1FNB2phNTZxOxpi1/GZwYpAoECEa0Wam+nsmhSw==} + + '@mui/base@5.0.0-beta.26': + resolution: {integrity: sha512-gPMRKC84VRw+tjqYoyBzyrBUqHQucMXdlBpYazHa5rCXrb91fYEQk5SqQ2U5kjxx9QxZxTBvWAmZ6DblIgaGhQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@mui/base@5.0.0-beta.4': + resolution: {integrity: sha512-ejhtqYJpjDgHGEljjMBQWZ22yEK0OzIXNa7toJmmXsP4TT3W7xVy8bTJ0TniPDf+JNjrsgfgiFTDGdlEhV1E+g==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@mui/core-downloads-tracker@5.13.4': + resolution: {integrity: sha512-yFrMWcrlI0TqRN5jpb6Ma9iI7sGTHpytdzzL33oskFHNQ8UgrtPas33Y1K7sWAMwCrr1qbWDrOHLAQG4tAzuSw==} + + '@mui/icons-material@5.11.16': + resolution: {integrity: sha512-oKkx9z9Kwg40NtcIajF9uOXhxiyTZrrm9nmIJ4UjkU2IdHpd4QVLbCc/5hZN/y0C6qzi2Zlxyr9TGddQx2vx2A==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@mui/material': ^5.0.0 + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@mui/material@5.13.5': + resolution: {integrity: sha512-eMay+Ue1OYXOFMQA5Aau7qbAa/kWHLAyi0McsbPTWssCbGehqkF6CIdPsfVGw6tlO+xPee1hUitphHJNL3xpOQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.5.0 + '@emotion/styled': ^11.3.0 + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@types/react': + optional: true + + '@mui/private-theming@5.13.1': + resolution: {integrity: sha512-HW4npLUD9BAkVppOUZHeO1FOKUJWAwbpy0VQoGe3McUYTlck1HezGHQCfBQ5S/Nszi7EViqiimECVl9xi+/WjQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@mui/styled-engine@5.13.2': + resolution: {integrity: sha512-VCYCU6xVtXOrIN8lcbuPmoG+u7FYuOERG++fpY74hPpEWkyFQG97F+/XfTQVYzlR2m7nPjnwVUgATcTCMEaMvw==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.4.1 + '@emotion/styled': ^11.3.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + + '@mui/styles@5.13.2': + resolution: {integrity: sha512-gKNkVyk6azQ8wfCamh3yU/wLv1JscYrsQX9huQBwfwtE7kUTq2rgggdfJjRADjbcmT6IPX+oCHYjGfqqFgDIQQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@mui/system@5.13.6': + resolution: {integrity: sha512-G3Xr28uLqU3DyF6r2LQkHGw/ku4P0AHzlKVe7FGXOPl7X1u+hoe2xxj8Vdiq/69II/mh9OP21i38yBWgWb7WgQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.5.0 + '@emotion/styled': ^11.3.0 + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@types/react': + optional: true + + '@mui/types@7.2.10': + resolution: {integrity: sha512-wX1vbDC+lzF7FlhT6A3ffRZgEoKWPF8VqRoTu4lZwouFX2t90KyCMsgepMw5DxLak1BSp/KP86CmtZttikb/gQ==} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@mui/types@7.2.4': + resolution: {integrity: sha512-LBcwa8rN84bKF+f5sDyku42w1NTxaPgPyYKODsh01U1fVstTClbUoSA96oyRBnSNyEiAVjKm6Gwx9vjR+xyqHA==} + peerDependencies: + '@types/react': '*' + peerDependenciesMeta: + '@types/react': + optional: true + + '@mui/utils@5.13.6': + resolution: {integrity: sha512-ggNlxl5NPSbp+kNcQLmSig6WVB0Id+4gOxhx644987v4fsji+CSXc+MFYLocFB/x4oHtzCUlSzbVHlJfP/fXoQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + react: ^17.0.0 || ^18.0.0 + + '@mui/utils@5.14.20': + resolution: {integrity: sha512-Y6yL5MoFmtQml20DZnaaK1znrCEwG6/vRSzW8PKOTrzhyqKIql0FazZRUR7sA5EPASgiyKZfq0FPwISRXm5NdA==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@popperjs/core@2.11.8': + resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} + + '@react-oauth/google@0.7.0': + resolution: {integrity: sha512-KLLYlLYYpXf1zmcrsJPAxImvoq2b0Rs0Pi/6GYfdwjmTh66Pf6jkZ4fpO10tuJuUPWvEeqloPEC/i4BySgbYVQ==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@reactour/mask@1.1.0': + resolution: {integrity: sha512-GkJMLuTs3vTsm4Ryq2uXcE4sMzRP1p4xSd6juSOMqbHa7IVD/UiLCLqJWHR9xGSQPbYhpZAZAORUG5cS0U5tBA==} + peerDependencies: + react: 16.x || 17.x || 18.x + + '@reactour/popover@1.1.1': + resolution: {integrity: sha512-BouulO0sXfmuHSPX8FwCYI0fMeT+VsWqk7UTao3NQcUC5H903ZeKOV2GYpwSJtRUQhsyNEu1Q8cEruGRf1SOXQ==} + peerDependencies: + react: 16.x || 17.x || 18.x + + '@reactour/tour@3.1.6': + resolution: {integrity: sha512-TqKDax1pEqKfzlFyQjRAO8iwzPTK8G6UQtB5MrT0uxJeKNduBcZshcT8lA5GYYJqemCL1gRuhrbjJQZdHft5qg==} + peerDependencies: + react: 16.x || 17.x || 18.x + + '@reactour/utils@0.5.0': + resolution: {integrity: sha512-yQs5Nm/Dg1xRM7d/S/UILBV5OInrTgrjGzgc81/RP5khqdO5KnpOaC46yF83kDtCalte8X3RCwp+F2YA509k1w==} + peerDependencies: + react: 16.x || 17.x || 18.x + + '@redux-saga/core@1.2.3': + resolution: {integrity: sha512-U1JO6ncFBAklFTwoQ3mjAeQZ6QGutsJzwNBjgVLSWDpZTRhobUzuVDS1qH3SKGJD8fvqoaYOjp6XJ3gCmeZWgA==} + + '@redux-saga/deferred@1.2.1': + resolution: {integrity: sha512-cmin3IuuzMdfQjA0lG4B+jX+9HdTgHZZ+6u3jRAOwGUxy77GSlTi4Qp2d6PM1PUoTmQUR5aijlA39scWWPF31g==} + + '@redux-saga/delay-p@1.2.1': + resolution: {integrity: sha512-MdiDxZdvb1m+Y0s4/hgdcAXntpUytr9g0hpcOO1XFVyyzkrDu3SKPgBFOtHn7lhu7n24ZKIAT1qtKyQjHqRd+w==} + + '@redux-saga/is@1.1.3': + resolution: {integrity: sha512-naXrkETG1jLRfVfhOx/ZdLj0EyAzHYbgJWkXbB3qFliPcHKiWbv/ULQryOAEKyjrhiclmr6AMdgsXFyx7/yE6Q==} + + '@redux-saga/symbols@1.1.3': + resolution: {integrity: sha512-hCx6ZvU4QAEUojETnX8EVg4ubNLBFl1Lps4j2tX7o45x/2qg37m3c6v+kSp8xjDJY+2tJw4QB3j8o8dsl1FDXg==} + + '@redux-saga/types@1.2.1': + resolution: {integrity: sha512-1dgmkh+3so0+LlBWRhGA33ua4MYr7tUOj+a9Si28vUi0IUFNbff1T3sgpeDJI/LaC75bBYnQ0A3wXjn0OrRNBA==} + + '@reduxjs/toolkit@1.9.1': + resolution: {integrity: sha512-HikrdY+IDgRfRYlCTGUQaiCxxDDgM1mQrRbZ6S1HFZX5ZYuJ4o8EstNmhTwHdPl2rTmLxzwSu0b3AyeyTlR+RA==} + peerDependencies: + react: ^16.9.0 || ^17.0.0 || ^18 + react-redux: ^7.2.1 || ^8.0.2 + peerDependenciesMeta: + react: + optional: true + react-redux: + optional: true + + '@rollup/plugin-babel@5.3.1': + resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} + engines: {node: '>= 10.0.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@types/babel__core': ^7.1.9 + rollup: ^1.20.0||^2.0.0 + peerDependenciesMeta: + '@types/babel__core': + optional: true + + '@rollup/plugin-node-resolve@11.2.1': + resolution: {integrity: sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==} + engines: {node: '>= 10.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + + '@rollup/plugin-replace@2.4.2': + resolution: {integrity: sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==} + peerDependencies: + rollup: ^1.20.0 || ^2.0.0 + + '@rollup/plugin-replace@5.0.2': + resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/pluginutils@3.1.0': + resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + + '@rollup/pluginutils@5.0.2': + resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rooks/use-mutation-observer@4.11.2': + resolution: {integrity: sha512-vpsdrZdr6TkB1zZJcHx+fR1YC/pHs2BaqcuYiEGjBVbwY5xcC49+h0hAUtQKHth3oJqXfIX/Ng8S7s5HFHdM/A==} + peerDependencies: + react: '>=16.8.0' + + '@selderee/plugin-htmlparser2@0.6.0': + resolution: {integrity: sha512-J3jpy002TyBjd4N/p6s+s90eX42H2eRhK3SbsZuvTDv977/E8p2U3zikdiehyJja66do7FlxLomZLPlvl2/xaA==} + + '@sentry/browser@6.19.7': + resolution: {integrity: sha512-oDbklp4O3MtAM4mtuwyZLrgO1qDVYIujzNJQzXmi9YzymJCuzMLSRDvhY83NNDCRxf0pds4DShgYeZdbSyKraA==} + engines: {node: '>=6'} + + '@sentry/core@6.19.7': + resolution: {integrity: sha512-tOfZ/umqB2AcHPGbIrsFLcvApdTm9ggpi/kQZFkej7kMphjT+SGBiQfYtjyg9jcRW+ilAR4JXC9BGKsdEQ+8Vw==} + engines: {node: '>=6'} + + '@sentry/hub@6.19.7': + resolution: {integrity: sha512-y3OtbYFAqKHCWezF0EGGr5lcyI2KbaXW2Ik7Xp8Mu9TxbSTuwTe4rTntwg8ngPjUQU3SUHzgjqVB8qjiGqFXCA==} + engines: {node: '>=6'} + + '@sentry/minimal@6.19.7': + resolution: {integrity: sha512-wcYmSJOdvk6VAPx8IcmZgN08XTXRwRtB1aOLZm+MVHjIZIhHoBGZJYTVQS/BWjldsamj2cX3YGbGXNunaCfYJQ==} + engines: {node: '>=6'} + + '@sentry/react@6.19.7': + resolution: {integrity: sha512-VzJeBg/v41jfxUYPkH2WYrKjWc4YiMLzDX0f4Zf6WkJ4v3IlDDSkX6DfmWekjTKBho6wiMkSNy2hJ1dHfGZ9jA==} + engines: {node: '>=6'} + peerDependencies: + react: 15.x || 16.x || 17.x || 18.x + + '@sentry/tracing@6.19.7': + resolution: {integrity: sha512-ol4TupNnv9Zd+bZei7B6Ygnr9N3Gp1PUrNI761QSlHtPC25xXC5ssSD3GMhBgyQrcvpuRcCFHVNNM97tN5cZiA==} + engines: {node: '>=6'} + + '@sentry/types@6.19.7': + resolution: {integrity: sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg==} + engines: {node: '>=6'} + + '@sentry/utils@6.19.7': + resolution: {integrity: sha512-z95ECmE3i9pbWoXQrD/7PgkBAzJYR+iXtPuTkpBjDKs86O3mT+PXOT3BAn79w2wkn7/i3vOGD2xVr1uiMl26dA==} + engines: {node: '>=6'} + + '@sideway/address@4.1.5': + resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} + + '@sideway/formula@3.0.1': + resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} + + '@sideway/pinpoint@2.0.0': + resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} + + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + '@sindresorhus/is@4.6.0': + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + + '@sindresorhus/merge-streams@2.3.0': + resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} + engines: {node: '>=18'} + + '@sinonjs/commons@3.0.1': + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + + '@sinonjs/fake-timers@10.3.0': + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + + '@storybook/addon-a11y@8.2.8': + resolution: {integrity: sha512-pUjTjJjoP/52hoB2BGqWmGPOUpM1YwEKsYJmY4ki3qJo/ehau+mMlal9xY9/mxafYFkYbrWvHoVSLxSRBxt3yg==} + peerDependencies: + storybook: ^8.2.8 + + '@storybook/addon-actions@8.2.8': + resolution: {integrity: sha512-dyajqsMNAUktpi7aiml0Fsm4ey8Nh2YwRyTDuTJZ1iJFcFyARqfr5iKH4/qElq80y0FYXGgGRJB+dKJsCdefLw==} + peerDependencies: + storybook: ^8.2.8 + + '@storybook/addon-backgrounds@8.2.8': + resolution: {integrity: sha512-OqXGpq8KzWwAAQWPnby/v4ayWuUAB18Twgi6zeb+QNLEQdFnSp7kz6+4mP8ZVg8RS3ACGXD31nnvvlF7GYoJjQ==} + peerDependencies: + storybook: ^8.2.8 + + '@storybook/addon-controls@8.2.8': + resolution: {integrity: sha512-adhg68CSFaR/r95rgyKU4ZzWwZz+MU0c4vr9hqrR1UGvg/zl33IZQQzb5j5v3Axo0O31yPMaY6LRty7pOv3+/Q==} + peerDependencies: + storybook: ^8.2.8 + + '@storybook/addon-docs@8.2.8': + resolution: {integrity: sha512-8hqUYYveJjR3e/XdXt0vduA7TxFRIFWgXoa9jN5axa63kqfiHcfkpFYPjM8jCRhsfDIRgdrwe2qxsA0wewO1pA==} + peerDependencies: + storybook: ^8.2.8 + + '@storybook/addon-essentials@8.2.8': + resolution: {integrity: sha512-NRbFv2ociM1l/Oi/1go/ZC5bUU41n9aKD1DzIbguEKBhUs/TGAES+f5x+7DvYnt3Hvd925/FyTXuMU+vNUeiUA==} + peerDependencies: + storybook: ^8.2.8 + + '@storybook/addon-highlight@8.2.8': + resolution: {integrity: sha512-IM1pPx6CCZbHV0bv3oB1qBCGDsr8soq7XLl93tc7mc4hstWSDFfNn7rx4CWycSlCqXlNTKh8cEkbrPrhV9cwbg==} + peerDependencies: + storybook: ^8.2.8 + + '@storybook/addon-interactions@8.2.8': + resolution: {integrity: sha512-ggctlrSlK72xMfhviHHRslZF5tr9aHr1VFwCG/tjF7s1lM3S7OGqgHLJpcja/wNREvq9GMEvX95ZSu5NMh5CtA==} + peerDependencies: + storybook: ^8.2.8 + + '@storybook/addon-links@8.2.8': + resolution: {integrity: sha512-2igEaSdKAFjKjioT6LGdBxZulpbVCzmlmV//sTu3sQiVnnxRjjGFt77sEeLMajrsSvg9DB1RMbDsvJ4FJTzXfQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.2.8 + peerDependenciesMeta: + react: + optional: true + + '@storybook/addon-mdx-gfm@8.2.8': + resolution: {integrity: sha512-PthYeCsYwgFl3cyXL8csdylea/XzPnzBnR+FfX+1koYOIZ3dWM0CXP6vPP1prdbqG2dSnfMNVkxpg8gq2buIgw==} + peerDependencies: + storybook: ^8.2.8 + + '@storybook/addon-measure@8.2.8': + resolution: {integrity: sha512-oqZiX571F9NNy8o/oVyM1Pe2cJz3WJ/OpL0lVbepHrV4ir1f+SDYZdMI58jGBAtoM52cwFc2ZPbzXKQs7a513A==} + peerDependencies: + storybook: ^8.2.8 + + '@storybook/addon-outline@8.2.8': + resolution: {integrity: sha512-Cbk4Z0ojggiXjpbS2c4WUP56yikQdT4O7+8AuBNNjVUHNvJQADWYovi6SvDmrS5dH1iyIkB+4saXMr0syp+BDw==} + peerDependencies: + storybook: ^8.2.8 + + '@storybook/addon-toolbars@8.2.8': + resolution: {integrity: sha512-k64G3FUpX3H/mhJ7AG1r/4Drsk6cdUtxI3yVdgWb7O3Ka7v/OFZexRXRSiV03n5q/kaqVKDu96Tuog57+7EB4w==} + peerDependencies: + storybook: ^8.2.8 + + '@storybook/addon-viewport@8.2.8': + resolution: {integrity: sha512-/JZeIgB33yhryUvWaNO+3t9akcS8nGLyAUmlljPFr3LUDDYrO/0H9tE4CgjLqtwCXBq3k3s0HLzEJOrKI9Tmbw==} + peerDependencies: + storybook: ^8.2.8 + + '@storybook/blocks@8.2.8': + resolution: {integrity: sha512-AHBXu9s73Xv9r1JageIL7C4eGf5XYEByai4Y6NYQsE+jF7b7e8oaSUoLW6fWSyLGuqvjRx+5P7GMNI2K1EngBA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.2.8 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + + '@storybook/builder-vite@8.2.8': + resolution: {integrity: sha512-p9EJfZkX9ZsVi1Qr3jYyCJaZZ/2pt0KVTOYnDzNnhi3P/suU6O3Lp/YCV5+KOfAmlg2IgTND0EidqZinqPIBSg==} + peerDependencies: + '@preact/preset-vite': '*' + storybook: ^8.2.8 + typescript: '>= 4.3.x' + vite: ^4.0.0 || ^5.0.0 + vite-plugin-glimmerx: '*' + peerDependenciesMeta: + '@preact/preset-vite': + optional: true + typescript: + optional: true + vite-plugin-glimmerx: + optional: true + + '@storybook/codemod@8.2.8': + resolution: {integrity: sha512-dqD4j6JTsS8BM2y1yHBIe5fHvsGM08qpJQXkE77aXJIm5UfUeuWC7rY0xAheX3fU5G98l3BJk0ySUGspQL5pNg==} + + '@storybook/components@8.3.6': + resolution: {integrity: sha512-TXuoGZY7X3iixF45lXkYOFk8k2q9OHcqHyHyem1gATLLQXgyOvDgzm+VB7uKBNzssRQPEE+La70nfG8bq/viRw==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/core-common@8.3.6': + resolution: {integrity: sha512-67GHzjuYIvIfD/sqOuTeY1PmOdXZ2Hv9iTCc5xTMJCVBW0XN2Uqqy0ORP111x4EQblBPmnuNAfyYHoWrRxvTxg==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/core@8.2.8': + resolution: {integrity: sha512-Wwm/Txh87hbxqU9OaxXwdGAmdRBjDn7rlZEPjNBx0tt43SQ11fKambY7nVWrWuw46YsJpdF9V/PQr4noNEXXEA==} + + '@storybook/csf-plugin@8.2.8': + resolution: {integrity: sha512-CEHY7xloBPE8d8h0wg2AM2kRaZkHK8/vkYMNZPbccqAYj6PQIdTuOcXZIBAhAGydyIBULZmsmmsASxM9RO5fKA==} + peerDependencies: + storybook: ^8.2.8 + + '@storybook/csf-tools@8.3.6': + resolution: {integrity: sha512-92D+GUXdmx5eDYcuQ2ajYSUINQngSjB345//43Tx+Xn30eS4flRBmgPsbSPN8IvSBSQlsUU/w8+MFKBK1qGnUw==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/csf@0.0.1': + resolution: {integrity: sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw==} + + '@storybook/csf@0.1.11': + resolution: {integrity: sha512-dHYFQH3mA+EtnCkHXzicbLgsvzYjcDJ1JWsogbItZogkPHgSJM/Wr71uMkcvw8v9mmCyP4NpXJuu6bPoVsOnzg==} + + '@storybook/global@5.0.0': + resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} + + '@storybook/icons@1.2.12': + resolution: {integrity: sha512-UxgyK5W3/UV4VrI3dl6ajGfHM4aOqMAkFLWe2KibeQudLf6NJpDrDMSHwZj+3iKC4jFU7dkKbbtH2h/al4sW3Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + + '@storybook/instrumenter@8.2.8': + resolution: {integrity: sha512-6Gk3CzoYQQXBXpW86PKqYSozOB/C9dSYiFvwPRo4XsEfjARDi8yglqkbOtG+FVqKDL66I5krcveB8bTWigqc9g==} + peerDependencies: + storybook: ^8.2.8 + + '@storybook/manager-api@8.3.6': + resolution: {integrity: sha512-Xt5VFZcL+G/9uzaHjzWFhxRNrP+4rPhSRKEvCZorAbC9+Hv+ZDs1JSZS5wMb4WKpXBZ0rwDVOLwngqbVtfRHuQ==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/preview-api@8.3.6': + resolution: {integrity: sha512-/Wxvb7wbI2O2iH63arRQQyyojA630vibdshkFjuC/u1nYdptEV1jkxa0OYmbZbKCn4/ze6uH4hfsKOpDPV9SWg==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/react-dom-shim@8.2.8': + resolution: {integrity: sha512-2my3dGBOpBe30+FsSdQOIYCfxMyT68+SEq0qcXxfuax0BkhhJnZLpwvpqOna6EOVTgBD+Tk1TKmjpGwxuwp4rg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.2.8 + + '@storybook/react-vite@8.2.8': + resolution: {integrity: sha512-xzXWyhFnLoFtJGgj8F5j/33QB4YTyEX61On6kolt7WFAjRFaUWJGYUC8cPPL4PNwsdouyCrnHvlJj77AvFlvfQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.2.8 + vite: ^4.0.0 || ^5.0.0 + + '@storybook/react@8.2.8': + resolution: {integrity: sha512-Nln0DDTQ930P4J+SEkWbLSgaDe8eDd5gP6h3l4b5RwT7sRuSyHtTtYHPCnU9U7sLQ3AbMsclgtJukHXDitlccg==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.2.8 + typescript: '>= 4.2.x' + peerDependenciesMeta: + typescript: + optional: true + + '@storybook/test-runner@0.19.1': + resolution: {integrity: sha512-Nc4djXw3Lv3AAXg6TJ7yVTeuMryjMsTDd8GCbE/PStU602rpe8syEqElz78GPoJqB1VYWQ3T9pcu93MKyHT+xQ==} + engines: {node: ^16.10.0 || ^18.0.0 || >=20.0.0} + hasBin: true + + '@storybook/test@8.2.8': + resolution: {integrity: sha512-Lbt4DHP8WhnakTPw981kP85DeoONKN+zVLjFPa5ptllyT+jazZANjIdGhNUlBdIzOw3oyDXhGlWIdtqztS3pSA==} + peerDependencies: + storybook: ^8.2.8 + + '@storybook/theming@8.3.6': + resolution: {integrity: sha512-LQjUk6GXRW9ELkoBKuqzQKFUW+ajfGPfVELcfs3/VQX61VhthJ4olov4bGPc04wsmmFMgN/qODxT485IwOHfPQ==} + peerDependencies: + storybook: ^8.3.6 + + '@surma/rollup-plugin-off-main-thread@2.2.3': + resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==} + + '@svgr/babel-plugin-add-jsx-attribute@6.5.1': + resolution: {integrity: sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-remove-jsx-attribute@8.0.0': + resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0': + resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-replace-jsx-attribute-value@6.5.1': + resolution: {integrity: sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-svg-dynamic-title@6.5.1': + resolution: {integrity: sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-svg-em-dimensions@6.5.1': + resolution: {integrity: sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-transform-react-native-svg@6.5.1': + resolution: {integrity: sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-transform-svg-component@6.5.1': + resolution: {integrity: sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==} + engines: {node: '>=12'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-preset@6.5.1': + resolution: {integrity: sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/core@6.5.1': + resolution: {integrity: sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==} + engines: {node: '>=10'} + + '@svgr/hast-util-to-babel-ast@6.5.1': + resolution: {integrity: sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==} + engines: {node: '>=10'} + + '@svgr/plugin-jsx@6.5.1': + resolution: {integrity: sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==} + engines: {node: '>=10'} + peerDependencies: + '@svgr/core': ^6.0.0 + + '@swc/core-darwin-arm64@1.7.39': + resolution: {integrity: sha512-o2nbEL6scMBMCTvY9OnbyVXtepLuNbdblV9oNJEFia5v5eGj9WMrnRQiylH3Wp/G2NYkW7V1/ZVW+kfvIeYe9A==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.7.39': + resolution: {integrity: sha512-qMlv3XPgtPi/Fe11VhiPDHSLiYYk2dFYl747oGsHZPq+6tIdDQjIhijXPcsUHIXYDyG7lNpODPL8cP/X1sc9MA==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.7.39': + resolution: {integrity: sha512-NP+JIkBs1ZKnpa3Lk2W1kBJMwHfNOxCUJXuTa2ckjFsuZ8OUu2gwdeLFkTHbR43dxGwH5UzSmuGocXeMowra/Q==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.7.39': + resolution: {integrity: sha512-cPc+/HehyHyHcvAsk3ML/9wYcpWVIWax3YBaA+ScecJpSE04l/oBHPfdqKUPslqZ+Gcw0OWnIBGJT/fBZW2ayw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-arm64-musl@1.7.39': + resolution: {integrity: sha512-8RxgBC6ubFem66bk9XJ0vclu3exJ6eD7x7CwDhp5AD/tulZslTYXM7oNPjEtje3xxabXuj/bEUMNvHZhQRFdqA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-x64-gnu@1.7.39': + resolution: {integrity: sha512-3gtCPEJuXLQEolo9xsXtuPDocmXQx12vewEyFFSMSjOfakuPOBmOQMa0sVL8Wwius8C1eZVeD1fgk0omMqeC+Q==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-linux-x64-musl@1.7.39': + resolution: {integrity: sha512-mg39pW5x/eqqpZDdtjZJxrUvQNSvJF4O8wCl37fbuFUqOtXs4TxsjZ0aolt876HXxxhsQl7rS+N4KioEMSgTZw==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-win32-arm64-msvc@1.7.39': + resolution: {integrity: sha512-NZwuS0mNJowH3e9bMttr7B1fB8bW5svW/yyySigv9qmV5VcQRNz1kMlCvrCLYRsa93JnARuiaBI6FazSeG8mpA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.7.39': + resolution: {integrity: sha512-qFmvv5UExbJPXhhvCVDBnjK5Duqxr048dlVB6ZCgGzbRxuarOlawCzzLK4N172230pzlAWGLgn9CWl3+N6zfHA==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.7.39': + resolution: {integrity: sha512-o+5IMqgOtj9+BEOp16atTfBgCogVak9svhBpwsbcJQp67bQbxGYhAPPDW/hZ2rpSSF7UdzbY9wudoX9G4trcuQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.7.39': + resolution: {integrity: sha512-jns6VFeOT49uoTKLWIEfiQqJAlyqldNAt80kAr8f7a5YjX0zgnG3RBiLMpksx4Ka4SlK4O6TJ/lumIM3Trp82g==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '*' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/jest@0.2.36': + resolution: {integrity: sha512-8X80dp81ugxs4a11z1ka43FPhP+/e+mJNXJSxiNYk8gIX/jPBtY4gQTrKu/KIoco8bzKuPI5lUxjfLiGsfvnlw==} + engines: {npm: '>= 7.0.0'} + peerDependencies: + '@swc/core': '*' + + '@swc/types@0.1.13': + resolution: {integrity: sha512-JL7eeCk6zWCbiYQg2xQSdLXQJl8Qoc9rXmG2cEKvHe3CKwMHwHGpfOb8frzNLmbycOo6I51qxnLnn9ESf4I20Q==} + + '@szmarczak/http-timer@4.0.6': + resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} + engines: {node: '>=10'} + + '@testing-library/dom@10.1.0': + resolution: {integrity: sha512-wdsYKy5zupPyLCW2Je5DLHSxSfbIp6h80WoHOQc+RPtmPGA52O9x5MJEkv92Sjonpq+poOAtUKhh1kBGAXBrNA==} + engines: {node: '>=18'} + + '@testing-library/dom@9.3.1': + resolution: {integrity: sha512-0DGPd9AR3+iDTjGoMpxIkAsUihHZ3Ai6CneU6bRRrffXMgzCdlNk43jTrD2/5LT6CBb3MWTP8v510JzYtahD2w==} + engines: {node: '>=14'} + + '@testing-library/jest-dom@6.4.5': + resolution: {integrity: sha512-AguB9yvTXmCnySBP1lWjfNNUwpbElsaQ567lt2VdGqAdHtpieLgjmcVyv1q7PMIvLbgpDdkWV5Ydv3FEejyp2A==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + peerDependencies: + '@jest/globals': '>= 28' + '@types/bun': latest + '@types/jest': '>= 28' + jest: '>= 28' + vitest: '>= 0.32' + peerDependenciesMeta: + '@jest/globals': + optional: true + '@types/bun': + optional: true + '@types/jest': + optional: true + jest: + optional: true + vitest: + optional: true + + '@testing-library/user-event@14.5.2': + resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} + engines: {node: '>=12', npm: '>=6'} + peerDependencies: + '@testing-library/dom': '>=7.21.4' + + '@types/acorn@4.0.6': + resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} + + '@types/aria-query@5.0.1': + resolution: {integrity: sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==} + + '@types/babel__core@7.20.3': + resolution: {integrity: sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA==} + + '@types/babel__generator@7.6.4': + resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} + + '@types/babel__template@7.4.1': + resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} + + '@types/babel__traverse@7.20.1': + resolution: {integrity: sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==} + + '@types/body-parser@1.19.2': + resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} + + '@types/cacheable-request@6.0.3': + resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} + + '@types/chai-subset@1.3.3': + resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} + + '@types/chai@4.3.8': + resolution: {integrity: sha512-yW/qTM4mRBBcsA9Xw9FbcImYtFPY7sgr+G/O5RDYVmxiy9a+pE5FyoFUi8JYCZY5nicj8atrr1pcfPiYpeNGOA==} + + '@types/connect@3.4.35': + resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} + + '@types/cross-spawn@6.0.6': + resolution: {integrity: sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==} + + '@types/d3-array@3.0.5': + resolution: {integrity: sha512-Qk7fpJ6qFp+26VeQ47WY0mkwXaiq8+76RJcncDEfMc2ocRzXLO67bLFRNI4OX1aGBoPzsM5Y2T+/m1pldOgD+A==} + + '@types/d3-axis@3.0.2': + resolution: {integrity: sha512-uGC7DBh0TZrU/LY43Fd8Qr+2ja1FKmH07q2FoZFHo1eYl8aj87GhfVoY1saJVJiq24rp1+wpI6BvQJMKgQm8oA==} + + '@types/d3-brush@3.0.2': + resolution: {integrity: sha512-2TEm8KzUG3N7z0TrSKPmbxByBx54M+S9lHoP2J55QuLU0VSQ9mE96EJSAOVNEqd1bbynMjeTS9VHmz8/bSw8rA==} + + '@types/d3-chord@3.0.2': + resolution: {integrity: sha512-abT/iLHD3sGZwqMTX1TYCMEulr+wBd0SzyOQnjYNLp7sngdOHYtNkMRI5v3w5thoN+BWtlHVDx2Osvq6fxhZWw==} + + '@types/d3-color@2.0.3': + resolution: {integrity: sha512-+0EtEjBfKEDtH9Rk3u3kLOUXM5F+iZK+WvASPb0MhIZl8J8NUvGeZRwKCXl+P3HkYx5TdU4YtcibpqHkSR9n7w==} + + '@types/d3-color@3.1.0': + resolution: {integrity: sha512-HKuicPHJuvPgCD+np6Se9MQvS6OCbJmOjGvylzMJRlDwUXjKTTXs6Pwgk79O09Vj/ho3u1ofXnhFOaEWWPrlwA==} + + '@types/d3-contour@3.0.2': + resolution: {integrity: sha512-k6/bGDoAGJZnZWaKzeB+9glgXCYGvh6YlluxzBREiVo8f/X2vpTEdgPy9DN7Z2i42PZOZ4JDhVdlTSTSkLDPlQ==} + + '@types/d3-delaunay@6.0.1': + resolution: {integrity: sha512-tLxQ2sfT0p6sxdG75c6f/ekqxjyYR0+LwPrsO1mbC9YDBzPJhs2HbJJRrn8Ez1DBoHRo2yx7YEATI+8V1nGMnQ==} + + '@types/d3-dispatch@3.0.2': + resolution: {integrity: sha512-rxN6sHUXEZYCKV05MEh4z4WpPSqIw+aP7n9ZN6WYAAvZoEAghEK1WeVZMZcHRBwyaKflU43PCUAJNjFxCzPDjg==} + + '@types/d3-drag@3.0.2': + resolution: {integrity: sha512-qmODKEDvyKWVHcWWCOVcuVcOwikLVsyc4q4EBJMREsoQnR2Qoc2cZQUyFUPgO9q4S3qdSqJKBsuefv+h0Qy+tw==} + + '@types/d3-dsv@3.0.1': + resolution: {integrity: sha512-76pBHCMTvPLt44wFOieouXcGXWOF0AJCceUvaFkxSZEu4VDUdv93JfpMa6VGNFs01FHfuP4a5Ou68eRG1KBfTw==} + + '@types/d3-ease@3.0.0': + resolution: {integrity: sha512-aMo4eaAOijJjA6uU+GIeW018dvy9+oH5Y2VPPzjjfxevvGQ/oRDs+tfYC9b50Q4BygRR8yE2QCLsrT0WtAVseA==} + + '@types/d3-fetch@3.0.2': + resolution: {integrity: sha512-gllwYWozWfbep16N9fByNBDTkJW/SyhH6SGRlXloR7WdtAaBui4plTP+gbUgiEot7vGw/ZZop1yDZlgXXSuzjA==} + + '@types/d3-force@3.0.4': + resolution: {integrity: sha512-q7xbVLrWcXvSBBEoadowIUJ7sRpS1yvgMWnzHJggFy5cUZBq2HZL5k/pBSm0GdYWS1vs5/EDwMjSKF55PDY4Aw==} + + '@types/d3-format@3.0.1': + resolution: {integrity: sha512-5KY70ifCCzorkLuIkDe0Z9YTf9RR2CjBX1iaJG+rgM/cPP+sO+q9YdQ9WdhQcgPj1EQiJ2/0+yUkkziTG6Lubg==} + + '@types/d3-geo@3.0.3': + resolution: {integrity: sha512-bK9uZJS3vuDCNeeXQ4z3u0E7OeJZXjUgzFdSOtNtMCJCLvDtWDwfpRVWlyt3y8EvRzI0ccOu9xlMVirawolSCw==} + + '@types/d3-hierarchy@3.1.2': + resolution: {integrity: sha512-9hjRTVoZjRFR6xo8igAJyNXQyPX6Aq++Nhb5ebrUF414dv4jr2MitM2fWiOY475wa3Za7TOS2Gh9fmqEhLTt0A==} + + '@types/d3-interpolate@2.0.2': + resolution: {integrity: sha512-lElyqlUfIPyWG/cD475vl6msPL4aMU7eJvx1//Q177L8mdXoVPFl1djIESF2FKnc0NyaHvQlJpWwKJYwAhUoCw==} + + '@types/d3-interpolate@3.0.1': + resolution: {integrity: sha512-jx5leotSeac3jr0RePOH1KdR9rISG91QIE4Q2PYTu4OymLTZfA3SrnURSLzKH48HmXVUru50b8nje4E79oQSQw==} + + '@types/d3-path@2.0.2': + resolution: {integrity: sha512-3YHpvDw9LzONaJzejXLOwZ3LqwwkoXb9LI2YN7Hbd6pkGo5nIlJ09ul4bQhBN4hQZJKmUpX8HkVqbzgUKY48cg==} + + '@types/d3-path@3.0.0': + resolution: {integrity: sha512-0g/A+mZXgFkQxN3HniRDbXMN79K3CdTpLsevj+PXiTcb2hVyvkZUBg37StmgCQkaD84cUJ4uaDAWq7UJOQy2Tg==} + + '@types/d3-polygon@3.0.0': + resolution: {integrity: sha512-D49z4DyzTKXM0sGKVqiTDTYr+DHg/uxsiWDAkNrwXYuiZVd9o9wXZIo+YsHkifOiyBkmSWlEngHCQme54/hnHw==} + + '@types/d3-quadtree@3.0.2': + resolution: {integrity: sha512-QNcK8Jguvc8lU+4OfeNx+qnVy7c0VrDJ+CCVFS9srBo2GL9Y18CnIxBdTF3v38flrGy5s1YggcoAiu6s4fLQIw==} + + '@types/d3-random@3.0.1': + resolution: {integrity: sha512-IIE6YTekGczpLYo/HehAy3JGF1ty7+usI97LqraNa8IiDur+L44d0VOjAvFQWJVdZOJHukUJw+ZdZBlgeUsHOQ==} + + '@types/d3-scale-chromatic@3.0.0': + resolution: {integrity: sha512-dsoJGEIShosKVRBZB0Vo3C8nqSDqVGujJU6tPznsBJxNJNwMF8utmS83nvCBKQYPpjCzaaHcrf66iTRpZosLPw==} + + '@types/d3-scale@3.3.2': + resolution: {integrity: sha512-gGqr7x1ost9px3FvIfUMi5XA/F/yAf4UkUDtdQhpH92XCT0Oa7zkkRzY61gPVJq+DxpHn/btouw5ohWkbBsCzQ==} + + '@types/d3-scale@4.0.3': + resolution: {integrity: sha512-PATBiMCpvHJSMtZAMEhc2WyL+hnzarKzI6wAHYjhsonjWJYGq5BXTzQjv4l8m2jO183/4wZ90rKvSeT7o72xNQ==} + + '@types/d3-selection@3.0.5': + resolution: {integrity: sha512-xCB0z3Hi8eFIqyja3vW8iV01+OHGYR2di/+e+AiOcXIOrY82lcvWW8Ke1DYE/EUVMsBl4Db9RppSBS3X1U6J0w==} + + '@types/d3-shape@2.1.3': + resolution: {integrity: sha512-HAhCel3wP93kh4/rq+7atLdybcESZ5bRHDEZUojClyZWsRuEMo3A52NGYJSh48SxfxEU6RZIVbZL2YFZ2OAlzQ==} + + '@types/d3-shape@3.1.1': + resolution: {integrity: sha512-6Uh86YFF7LGg4PQkuO2oG6EMBRLuW9cbavUW46zkIO5kuS2PfTqo2o9SkgtQzguBHbLgNnU90UNsITpsX1My+A==} + + '@types/d3-time-format@4.0.0': + resolution: {integrity: sha512-yjfBUe6DJBsDin2BMIulhSHmr5qNR5Pxs17+oW4DoVPyVIXZ+m6bs7j1UVKP08Emv6jRmYrYqxYzO63mQxy1rw==} + + '@types/d3-time@2.1.1': + resolution: {integrity: sha512-9MVYlmIgmRR31C5b4FVSWtuMmBHh2mOWQYfl7XAYOa8dsnb7iEmUmRSWSFgXFtkjxO65d7hTUHQC+RhR/9IWFg==} + + '@types/d3-time@3.0.0': + resolution: {integrity: sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg==} + + '@types/d3-timer@3.0.0': + resolution: {integrity: sha512-HNB/9GHqu7Fo8AQiugyJbv6ZxYz58wef0esl4Mv828w1ZKpAshw/uFWVDUcIB9KKFeFKoxS3cHY07FFgtTRZ1g==} + + '@types/d3-transition@3.0.3': + resolution: {integrity: sha512-/S90Od8Id1wgQNvIA8iFv9jRhCiZcGhPd2qX0bKF/PS+y0W5CrXKgIiELd2CvG1mlQrWK/qlYh3VxicqG1ZvgA==} + + '@types/d3-zoom@3.0.3': + resolution: {integrity: sha512-OWk1yYIIWcZ07+igN6BeoG6rqhnJ/pYe+R1qWFM2DtW49zsoSjgb9G5xB0ZXA8hh2jAzey1XuRmMSoXdKw8MDA==} + + '@types/d3@7.4.0': + resolution: {integrity: sha512-jIfNVK0ZlxcuRDKtRS/SypEyOQ6UHaFQBKv032X45VvxSJ6Yi5G9behy9h6tNTHTDGh5Vq+KbmBjUWLgY4meCA==} + + '@types/debug@4.1.8': + resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==} + + '@types/doctrine@0.0.9': + resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==} + + '@types/emscripten@1.39.13': + resolution: {integrity: sha512-cFq+fO/isvhvmuP/+Sl4K4jtU6E23DoivtbO4r50e3odaxAiVdbfSYRDdJ4gCdxx+3aRjhphS5ZMwIH4hFy/Cw==} + + '@types/escodegen@0.0.6': + resolution: {integrity: sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig==} + + '@types/eslint-scope@3.7.4': + resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==} + + '@types/eslint@8.40.2': + resolution: {integrity: sha512-PRVjQ4Eh9z9pmmtaq8nTjZjQwKFk7YIHIud3lRoKRBgUQjgjRmoGxxGEPXQkF+lH7QkHJRNr5F4aBgYCW0lqpQ==} + + '@types/estree-jsx@1.0.0': + resolution: {integrity: sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==} + + '@types/estree@0.0.39': + resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} + + '@types/estree@0.0.51': + resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} + + '@types/estree@1.0.1': + resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} + + '@types/express-serve-static-core@4.17.35': + resolution: {integrity: sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==} + + '@types/express@4.17.21': + resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} + + '@types/find-cache-dir@3.2.1': + resolution: {integrity: sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw==} + + '@types/geojson@7946.0.10': + resolution: {integrity: sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA==} + + '@types/glob@7.2.0': + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + + '@types/graceful-fs@4.1.6': + resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} + + '@types/hast@2.3.4': + resolution: {integrity: sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==} + + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + + '@types/history@4.7.11': + resolution: {integrity: sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==} + + '@types/history@5.0.0': + resolution: {integrity: sha512-hy8b7Y1J8OGe6LbAjj3xniQrj3v6lsivCcrmf4TzSgPzLkhIeKgc5IZnT7ReIqmEuodjfO8EYAuoFvIrHi/+jQ==} + deprecated: This is a stub types definition. history provides its own type definitions, so you do not need this installed. + + '@types/hoist-non-react-statics@3.3.1': + resolution: {integrity: sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==} + + '@types/http-cache-semantics@4.0.1': + resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==} + + '@types/http-errors@2.0.1': + resolution: {integrity: sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==} + + '@types/istanbul-lib-coverage@2.0.4': + resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} + + '@types/istanbul-lib-report@3.0.0': + resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} + + '@types/istanbul-reports@3.0.1': + resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} + + '@types/json-schema@7.0.12': + resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} + + '@types/keyv@3.1.4': + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + + '@types/lodash-es@4.17.12': + resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} + + '@types/lodash@4.14.195': + resolution: {integrity: sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg==} + + '@types/mdast@3.0.11': + resolution: {integrity: sha512-Y/uImid8aAwrEA24/1tcRZwpxX3pIFTSilcNDKSPn+Y2iDywSEachzRuvgAYYLR3wpGXAsMbv5lvKLDZLeYPAw==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/mdx@2.0.5': + resolution: {integrity: sha512-76CqzuD6Q7LC+AtbPqrvD9AqsN0k8bsYo2bM2J8pmNldP1aIPAbzUQ7QbobyXL4eLr1wK5x8FZFe8eF/ubRuBg==} + + '@types/mime@1.3.2': + resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==} + + '@types/mime@3.0.1': + resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} + + '@types/minimatch@3.0.5': + resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} + + '@types/minimatch@5.1.2': + resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + + '@types/ms@0.7.31': + resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} + + '@types/node@18.19.59': + resolution: {integrity: sha512-vizm2EqwV/7Zay+A6J3tGl9Lhr7CjZe2HmWS988sefiEmsyP9CeXEleho6i4hJk/8UtZAo0bWN4QPZZr83RxvQ==} + + '@types/node@20.3.2': + resolution: {integrity: sha512-vOBLVQeCQfIcF/2Y7eKFTqrMnizK5lRNQ7ykML/5RuwVXVWxYkgwS7xbt4B6fKCUPgbSL5FSsjHQpaGQP/dQmw==} + + '@types/parse-json@4.0.0': + resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} + + '@types/prop-types@15.7.11': + resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} + + '@types/prop-types@15.7.5': + resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} + + '@types/qs@6.9.7': + resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} + + '@types/range-parser@1.2.4': + resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} + + '@types/react-dom@18.0.9': + resolution: {integrity: sha512-qnVvHxASt/H7i+XG1U1xMiY5t+IHcPGUK7TDMDzom08xa7e86eCeKOiLZezwCKVxJn6NEiiy2ekgX8aQssjIKg==} + + '@types/react-is@18.2.1': + resolution: {integrity: sha512-wyUkmaaSZEzFZivD8F2ftSyAfk6L+DfFliVj/mYdOXbVjRcS87fQJLTnhk6dRZPuJjI+9g6RZJO4PNCngUrmyw==} + + '@types/react-redux@7.1.25': + resolution: {integrity: sha512-bAGh4e+w5D8dajd6InASVIyCo4pZLJ66oLb80F9OBLO1gKESbZcRCJpTT6uLXX+HAB57zw1WTdwJdAsewuTweg==} + + '@types/react-router-dom@4.3.1': + resolution: {integrity: sha512-GbztJAScOmQ/7RsQfO4cd55RuH1W4g6V1gDW3j4riLlt+8yxYLqqsiMzmyuXBLzdFmDtX/uU2Bpcm0cmudv44A==} + + '@types/react-router@5.1.20': + resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} + + '@types/react-table@6.8.10': + resolution: {integrity: sha512-tM+yAmJtMn9dMMeo8kxgwpqnxTaoGQgZmJf3KIHFDV1tUK01YVC8Pq2xC9kvHENrQ89KXSomv8gvIkcUKQPJnw==} + + '@types/react-table@7.7.19': + resolution: {integrity: sha512-47jMa1Pai7ily6BXJCW33IL5ghqmCWs2VM9s+h1D4mCaK5P4uNkZOW3RMMg8MCXBvAJ0v9+sPqKjhid0PaJPQA==} + + '@types/react-transition-group@4.4.6': + resolution: {integrity: sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==} + + '@types/react@18.0.25': + resolution: {integrity: sha512-xD6c0KDT4m7n9uD4ZHi02lzskaiqcBxf4zi+tXZY98a04wvc0hi/TcCPC2FOESZi51Nd7tlUeOJY8RofL799/g==} + + '@types/resolve@1.17.1': + resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} + + '@types/resolve@1.20.6': + resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==} + + '@types/responselike@1.0.0': + resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} + + '@types/scheduler@0.16.3': + resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} + + '@types/semver@7.5.0': + resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} + + '@types/send@0.17.1': + resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} + + '@types/serve-static@1.15.2': + resolution: {integrity: sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==} + + '@types/stack-utils@2.0.1': + resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} + + '@types/symlink-or-copy@1.2.0': + resolution: {integrity: sha512-Lja2xYuuf2B3knEsga8ShbOdsfNOtzT73GyJmZyY7eGl2+ajOqrs8yM5ze0fsSoYwvA6bw7/Qr7OZ7PEEmYwWg==} + + '@types/trusted-types@2.0.3': + resolution: {integrity: sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==} + + '@types/unist@2.0.6': + resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@types/uuid@10.0.0': + resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} + + '@types/uuid@9.0.8': + resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} + + '@types/wait-on@5.3.1': + resolution: {integrity: sha512-2FFOKCF/YydrMUaqg+fkk49qf0e5rDgwt6aQsMzFQzbS419h2gNOXyiwp/o2yYy27bi/C1z+HgfncryjGzlvgQ==} + + '@types/webpack-env@1.18.1': + resolution: {integrity: sha512-D0HJET2/UY6k9L6y3f5BL+IDxZmPkYmPT4+qBrRdmRLYRuV0qNKizMgTvYxXZYn+36zjPeoDZAEYBCM6XB+gww==} + + '@types/yargs-parser@21.0.0': + resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} + + '@types/yargs@17.0.24': + resolution: {integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==} + + '@typescript-eslint/parser@5.45.0': + resolution: {integrity: sha512-brvs/WSM4fKUmF5Ot/gEve6qYiCMjm6w4HkHPfS6ZNmxTS0m0iNN4yOChImaCkqc1hRwFGqUyanMXuGal6oyyQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@5.45.0': + resolution: {integrity: sha512-noDMjr87Arp/PuVrtvN3dXiJstQR1+XlQ4R1EvzG+NMgXi8CuMCXpb8JqNtFHKceVSQ985BZhfRdowJzbv4yKw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/scope-manager@5.62.0': + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/types@5.45.0': + resolution: {integrity: sha512-QQij+u/vgskA66azc9dCmx+rev79PzX8uDHpsqSjEFtfF2gBUTRCpvYMh2gw2ghkJabNkPlSUCimsyBEQZd1DA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/types@5.62.0': + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/typescript-estree@5.45.0': + resolution: {integrity: sha512-maRhLGSzqUpFcZgXxg1qc/+H0bT36lHK4APhp0AEUVrpSwXiRAomm/JGjSG+kNUio5kAa3uekCYu/47cnGn5EQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/typescript-estree@5.62.0': + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@5.62.0': + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + + '@typescript-eslint/visitor-keys@5.45.0': + resolution: {integrity: sha512-jc6Eccbn2RtQPr1s7th6jJWQHBHI6GBVQkCHoJFQ5UreaKm59Vxw+ynQUPPY2u2Amquc+7tmEoC2G52ApsGNNg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/visitor-keys@5.62.0': + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@ungap/structured-clone@1.2.0': + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + + '@vitejs/plugin-react@4.1.0': + resolution: {integrity: sha512-rM0SqazU9iqPUraQ2JlIvReeaxOoRj6n+PzB1C0cBzIbd8qP336nC39/R9yPi3wVcah7E7j/kdU1uCUqMEU4OQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 + + '@vitest/expect@0.34.5': + resolution: {integrity: sha512-/3RBIV9XEH+nRpRMqDJBufKIOQaYUH2X6bt0rKSCW0MfKhXFLYsR5ivHifeajRSTsln0FwJbitxLKHSQz/Xwkw==} + + '@vitest/expect@1.6.0': + resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} + + '@vitest/runner@0.34.5': + resolution: {integrity: sha512-RDEE3ViVvl7jFSCbnBRyYuu23XxmvRTSZWW6W4M7eC5dOsK75d5LIf6uhE5Fqf809DQ1+9ICZZNxhIolWHU4og==} + + '@vitest/snapshot@0.34.5': + resolution: {integrity: sha512-+ikwSbhu6z2yOdtKmk/aeoDZ9QPm2g/ZO5rXT58RR9Vmu/kB2MamyDSx77dctqdZfP3Diqv4mbc/yw2kPT8rmA==} + + '@vitest/spy@0.34.5': + resolution: {integrity: sha512-epsicsfhvBjRjCMOC/3k00mP/TBGQy8/P0DxOFiWyLt55gnZ99dqCfCiAsKO17BWVjn4eZRIjKvcqNmSz8gvmg==} + + '@vitest/spy@1.6.0': + resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} + + '@vitest/utils@0.34.5': + resolution: {integrity: sha512-ur6CmmYQoeHMwmGb0v+qwkwN3yopZuZyf4xt1DBBSGBed8Hf9Gmbm/5dEWqgpLPdRx6Av6jcWXrjcKfkTzg/pw==} + + '@vitest/utils@1.6.0': + resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} + + '@webassemblyjs/ast@1.11.6': + resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} + + '@webassemblyjs/floating-point-hex-parser@1.11.6': + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + + '@webassemblyjs/helper-api-error@1.11.6': + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + + '@webassemblyjs/helper-buffer@1.11.6': + resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} + + '@webassemblyjs/helper-numbers@1.11.6': + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + + '@webassemblyjs/helper-wasm-bytecode@1.11.6': + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + + '@webassemblyjs/helper-wasm-section@1.11.6': + resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} + + '@webassemblyjs/ieee754@1.11.6': + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + + '@webassemblyjs/leb128@1.11.6': + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + + '@webassemblyjs/utf8@1.11.6': + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + + '@webassemblyjs/wasm-edit@1.11.6': + resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} + + '@webassemblyjs/wasm-gen@1.11.6': + resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} + + '@webassemblyjs/wasm-opt@1.11.6': + resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} + + '@webassemblyjs/wasm-parser@1.11.6': + resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} + + '@webassemblyjs/wast-printer@1.11.6': + resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} + + '@xtuc/ieee754@1.2.0': + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + + '@xtuc/long@4.2.2': + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + + '@yarnpkg/fslib@2.10.3': + resolution: {integrity: sha512-41H+Ga78xT9sHvWLlFOZLIhtU6mTGZ20pZ29EiZa97vnxdohJD2AF42rCoAoWfqUz486xY6fhjMH+DYEM9r14A==} + engines: {node: '>=12 <14 || 14.2 - 14.9 || >14.10.0'} + + '@yarnpkg/libzip@2.3.0': + resolution: {integrity: sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg==} + engines: {node: '>=12 <14 || 14.2 - 14.9 || >14.10.0'} + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + acorn-import-assertions@1.9.0: + resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + deprecated: package has been renamed to acorn-import-attributes + peerDependencies: + acorn: ^8 + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@7.2.0: + resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} + engines: {node: '>=0.4.0'} + + acorn-walk@8.2.0: + resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} + engines: {node: '>=0.4.0'} + + acorn@7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + + acorn@8.10.0: + resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} + engines: {node: '>=0.4.0'} + hasBin: true + + acorn@8.13.0: + resolution: {integrity: sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==} + engines: {node: '>=0.4.0'} + hasBin: true + + acorn@8.9.0: + resolution: {integrity: sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==} + engines: {node: '>=0.4.0'} + hasBin: true + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + + ajv-keywords@3.5.2: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-escapes@6.2.0: + resolution: {integrity: sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==} + engines: {node: '>=14.16'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + append-buffer@1.0.2: + resolution: {integrity: sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==} + engines: {node: '>=0.10.0'} + + append-transform@2.0.0: + resolution: {integrity: sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==} + engines: {node: '>=8'} + + archy@1.0.0: + resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} + + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-query@5.1.3: + resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} + + aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + + array-buffer-byte-length@1.0.0: + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + + array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + + array-includes@3.1.6: + resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} + engines: {node: '>= 0.4'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array.prototype.flatmap@1.3.1: + resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} + engines: {node: '>= 0.4'} + + array.prototype.tosorted@1.1.1: + resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} + + assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + + ast-types@0.16.1: + resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} + engines: {node: '>=4'} + + astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + + astring@1.8.6: + resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==} + hasBin: true + + async@3.2.4: + resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + + available-typed-arrays@1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + + axe-core@4.7.2: + resolution: {integrity: sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==} + engines: {node: '>=4'} + + axios@1.7.4: + resolution: {integrity: sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==} + + babel-core@7.0.0-bridge.0: + resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + babel-jest@29.7.0: + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + + babel-loader@8.3.0: + resolution: {integrity: sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==} + engines: {node: '>= 8.9'} + peerDependencies: + '@babel/core': ^7.0.0 + webpack: '>=2' + + babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + + babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + + babel-plugin-polyfill-corejs2@0.4.11: + resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.10.6: + resolution: {integrity: sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-regenerator@0.6.2: + resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-preset-current-node-syntax@1.0.1: + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-preset-jest@29.6.3: + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + + bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base64-arraybuffer@1.0.2: + resolution: {integrity: sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==} + engines: {node: '>= 0.6.0'} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + + binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + blueimp-canvas-to-blob@3.29.0: + resolution: {integrity: sha512-0pcSSGxC0QxT+yVkivxIqW0Y4VlO2XSDPofBAqoJ1qJxgH9eiUDLv50Rixij2cDuEfx4M6DpD9UGZpRhT5Q8qg==} + + body-parser@1.20.3: + resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + + broccoli-node-api@1.7.0: + resolution: {integrity: sha512-QIqLSVJWJUVOhclmkmypJJH9u9s/aWH4+FH6Q6Ju5l+Io4dtwqdPUNmDfw40o6sxhbZHhqGujDJuHTML1wG8Yw==} + + broccoli-node-info@2.2.0: + resolution: {integrity: sha512-VabSGRpKIzpmC+r+tJueCE5h8k6vON7EIMMWu6d/FyPdtijwLQ7QvzShEw+m3mHoDzUaj/kiZsDYrS8X2adsBg==} + engines: {node: 8.* || >= 10.*} + + broccoli-output-wrapper@3.2.5: + resolution: {integrity: sha512-bQAtwjSrF4Nu0CK0JOy5OZqw9t5U0zzv2555EA/cF8/a8SLDTIetk9UgrtMVw7qKLKdSpOZ2liZNeZZDaKgayw==} + engines: {node: 10.* || >= 12.*} + + broccoli-plugin@4.0.7: + resolution: {integrity: sha512-a4zUsWtA1uns1K7p9rExYVYG99rdKeGRymW0qOCNkvDPHQxVi3yVyJHhQbM3EZwdt2E0mnhr5e0c/bPpJ7p3Wg==} + engines: {node: 10.* || >= 12.*} + + browser-assert@1.2.1: + resolution: {integrity: sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==} + + browserslist@4.21.9: + resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + browserslist@4.24.2: + resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + + buffer-equal@1.0.1: + resolution: {integrity: sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==} + engines: {node: '>=0.4'} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + cacheable-lookup@5.0.4: + resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} + engines: {node: '>=10.6.0'} + + cacheable-request@7.0.4: + resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} + engines: {node: '>=8'} + + caching-transform@4.0.0: + resolution: {integrity: sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==} + engines: {node: '>=8'} + + call-bind@1.0.5: + resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + caniuse-lite@1.0.30001508: + resolution: {integrity: sha512-sdQZOJdmt3GJs1UMNpCCCyeuS2IEGLXnHyAo9yIO5JJDjbjoVRij4M1qep6P6gFpptD1PqIYgzM+gwJbOi92mw==} + + caniuse-lite@1.0.30001669: + resolution: {integrity: sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + chai@4.3.10: + resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==} + engines: {node: '>=4'} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.2.0: + resolution: {integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + + char-regex@2.0.1: + resolution: {integrity: sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==} + engines: {node: '>=12.20'} + + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + + chart.js@4.4.0: + resolution: {integrity: sha512-vQEj6d+z0dcsKLlQvbKIMYFHd3t8W/7L2vfJIbYcfyPcRx92CsHqECpueN8qVGNlKyDcr5wBrYAYKnfu/9Q1hQ==} + engines: {pnpm: '>=7'} + + check-code-coverage@1.10.4: + resolution: {integrity: sha512-0kzwKFzxb0elHixpqeYAXuDq6HKjHKE3uqcb+S5qMcOyt1EZuSbq+PMVA3C94o/vt6pkIKN79iUr7oJfLNtW4A==} + hasBin: true + + check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + + cheerio-select@2.1.0: + resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} + + cheerio@1.0.0-rc.12: + resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} + engines: {node: '>= 6'} + + chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + + chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + + chromatic@6.11.4: + resolution: {integrity: sha512-f1TcuIXKjGUuOjPuwFF44kzbuEcESFcDxHzrzWPLmHuC90dV8HLxbufqYaTOBYMO/rJ32Zftb7S9pXuF/Rhfog==} + hasBin: true + + chrome-trace-event@1.0.3: + resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + engines: {node: '>=6.0'} + + ci-info@3.8.0: + resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} + engines: {node: '>=8'} + + cjs-module-lexer@1.2.3: + resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} + + classnames@2.3.2: + resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} + + clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + + cli-spinners@2.9.0: + resolution: {integrity: sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==} + engines: {node: '>=6'} + + cli-truncate@2.1.0: + resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} + engines: {node: '>=8'} + + cli-truncate@3.1.0: + resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clone-buffer@1.0.0: + resolution: {integrity: sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==} + engines: {node: '>= 0.10'} + + clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} + + clone-response@1.0.3: + resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} + + clone-stats@1.0.0: + resolution: {integrity: sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + + clone@2.1.2: + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} + engines: {node: '>=0.8'} + + cloneable-readable@1.1.3: + resolution: {integrity: sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==} + + clsx@1.2.1: + resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} + engines: {node: '>=6'} + + clsx@2.0.0: + resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} + engines: {node: '>=6'} + + co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + collect-v8-coverage@1.0.1: + resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + colors@1.4.0: + resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} + engines: {node: '>=0.1.90'} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@3.0.2: + resolution: {integrity: sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==} + + commander@5.1.0: + resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} + engines: {node: '>= 6'} + + commander@6.2.1: + resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} + engines: {node: '>= 6'} + + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + + commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + + common-tags@1.8.2: + resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} + engines: {node: '>=4.0.0'} + + commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + + compressorjs@1.1.1: + resolution: {integrity: sha512-SysRuUPfmUNoq+RviE0iMFVUmoX2q/x+7PkEPUmk6NGkd85hDrmvujx0Qtp8UCGA6KMe5kuodsylPQcNaLf60w==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + concat-stream@2.0.0: + resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} + engines: {'0': node >= 6.0} + + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + convert-units@3.0.0-beta.5: + resolution: {integrity: sha512-qCy+1W8CqfK8TDuJTdT2E9hNBpG9kDub6rYsrVXOVfdmuFOLqj8RQnW8o26MFCz2XdD3beyOYZYoh9Nh7jSABA==} + + cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + + cookie@0.7.1: + resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} + engines: {node: '>= 0.6'} + + core-js-compat@3.38.1: + resolution: {integrity: sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + + create-jest@29.7.0: + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + + crypto-random-string@2.0.0: + resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} + engines: {node: '>=8'} + + crypto-random-string@4.0.0: + resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} + engines: {node: '>=12'} + + css-line-break@2.1.0: + resolution: {integrity: sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==} + + css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + + css-unit-converter@1.1.2: + resolution: {integrity: sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==} + + css-vendor@2.0.8: + resolution: {integrity: sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==} + + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + + css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + + csstype@3.1.2: + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + + cwd@0.10.0: + resolution: {integrity: sha512-YGZxdTTL9lmLkCUTpg4j0zQ7IhRB5ZmqNBbGCl3Tg6MP/d5/6sY7L5mmTjzbc6JKgVZYiqTQTNhPFsbXNGlRaA==} + engines: {node: '>=0.8'} + + d3-array@2.12.1: + resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==} + + d3-array@3.2.4: + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} + engines: {node: '>=12'} + + d3-axis@3.0.0: + resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} + engines: {node: '>=12'} + + d3-brush@3.0.0: + resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} + engines: {node: '>=12'} + + d3-chord@3.0.1: + resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} + engines: {node: '>=12'} + + d3-color@2.0.0: + resolution: {integrity: sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==} + + d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + + d3-contour@4.0.2: + resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==} + engines: {node: '>=12'} + + d3-delaunay@6.0.4: + resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==} + engines: {node: '>=12'} + + d3-dispatch@3.0.1: + resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} + engines: {node: '>=12'} + + d3-drag@3.0.0: + resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} + engines: {node: '>=12'} + + d3-dsv@3.0.1: + resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} + engines: {node: '>=12'} + hasBin: true + + d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} + + d3-fetch@3.0.1: + resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} + engines: {node: '>=12'} + + d3-force@3.0.0: + resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} + engines: {node: '>=12'} + + d3-format@2.0.0: + resolution: {integrity: sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==} + + d3-format@3.1.0: + resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} + engines: {node: '>=12'} + + d3-geo@3.1.0: + resolution: {integrity: sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==} + engines: {node: '>=12'} + + d3-hierarchy@3.1.2: + resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} + engines: {node: '>=12'} + + d3-interpolate@2.0.1: + resolution: {integrity: sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==} + + d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + + d3-path@2.0.0: + resolution: {integrity: sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA==} + + d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} + engines: {node: '>=12'} + + d3-polygon@3.0.1: + resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} + engines: {node: '>=12'} + + d3-quadtree@3.0.1: + resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} + engines: {node: '>=12'} + + d3-random@3.0.1: + resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} + engines: {node: '>=12'} + + d3-scale-chromatic@3.0.0: + resolution: {integrity: sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==} + engines: {node: '>=12'} + + d3-scale@3.3.0: + resolution: {integrity: sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==} + + d3-scale@4.0.2: + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} + engines: {node: '>=12'} + + d3-selection@3.0.0: + resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} + engines: {node: '>=12'} + + d3-shape@2.1.0: + resolution: {integrity: sha512-PnjUqfM2PpskbSLTJvAzp2Wv4CZsnAgTfcVRTwW03QR3MkXF8Uo7B1y/lWkAsmbKwuecto++4NlsYcvYpXpTHA==} + + d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} + engines: {node: '>=12'} + + d3-time-format@3.0.0: + resolution: {integrity: sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==} + + d3-time-format@4.1.0: + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} + engines: {node: '>=12'} + + d3-time@2.1.1: + resolution: {integrity: sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==} + + d3-time@3.1.0: + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} + engines: {node: '>=12'} + + d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} + + d3-transition@3.0.1: + resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} + engines: {node: '>=12'} + peerDependencies: + d3-selection: 2 - 3 + + d3-zoom@3.0.0: + resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} + engines: {node: '>=12'} + + d3@7.6.1: + resolution: {integrity: sha512-txMTdIHFbcpLx+8a0IFhZsbp+PfBBPt8yfbmukZTQFroKuFqIwqswF0qE5JXWefylaAVpSXFoKm3yP+jpNLFLw==} + engines: {node: '>=12'} + + d@1.0.1: + resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} + + de-indent@1.0.2: + resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + decimal.js-light@2.5.1: + resolution: {integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==} + + decode-named-character-reference@1.0.2: + resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + + dedent@1.5.3: + resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + + deep-eql@4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} + + deep-equal@2.2.1: + resolution: {integrity: sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + default-require-extensions@3.0.1: + resolution: {integrity: sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==} + engines: {node: '>=8'} + + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + + defer-to-connect@2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} + + define-data-property@1.1.1: + resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + engines: {node: '>= 0.4'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-properties@1.2.0: + resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} + engines: {node: '>= 0.4'} + + defu@6.1.2: + resolution: {integrity: sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ==} + + delaunator@5.0.0: + resolution: {integrity: sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + + detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + diff-sequences@29.4.3: + resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + diff@5.1.0: + resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} + engines: {node: '>=0.3.1'} + + diffable-html@4.1.0: + resolution: {integrity: sha512-++kyNek+YBLH8cLXS+iTj/Hiy2s5qkRJEJ8kgu/WHbFrVY2vz9xPFUT+fii2zGF0m1CaojDlQJjkfrCt7YWM1g==} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + discontinuous-range@1.0.0: + resolution: {integrity: sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + + dom-accessibility-api@0.6.3: + resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + + dom-helpers@3.4.0: + resolution: {integrity: sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==} + + dom-helpers@5.2.1: + resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + + dom-serializer@0.2.2: + resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==} + + dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@1.3.1: + resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@2.4.2: + resolution: {integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==} + + domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@1.7.0: + resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==} + + domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + + domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + + duplexify@3.7.1: + resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + ejs@3.1.9: + resolution: {integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==} + engines: {node: '>=0.10.0'} + hasBin: true + + electron-to-chromium@1.4.442: + resolution: {integrity: sha512-RkrZF//Ya+0aJq2NM3OdisNh5ZodZq1rdXOS96G8DdDgpDKqKE81yTbbQ3F/4CKm1JBPsGu1Lp/akkna2xO06Q==} + + electron-to-chromium@1.5.45: + resolution: {integrity: sha512-vOzZS6uZwhhbkZbcRyiy99Wg+pYFV5hk+5YaECvx0+Z31NR3Tt5zS6dze2OepT6PCTzVzT0dIJItti+uAW5zmw==} + + emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + emojis-list@3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + + encoding-japanese@2.0.0: + resolution: {integrity: sha512-++P0RhebUC8MJAwJOsT93dT+5oc5oPImp1HubZpAuCZ5kTLnhuuBhKHj2jJeO/Gj93idPBWmIuQ9QWMe5rX3pQ==} + engines: {node: '>=8.10.0'} + + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + + enhanced-resolve@5.15.0: + resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} + engines: {node: '>=10.13.0'} + + ensure-posix-path@1.1.1: + resolution: {integrity: sha512-VWU0/zXzVbeJNXvME/5EmLuEj2TauvoaTz6aFYK1Z92JCBlDlZ3Gu0tuGR42kpW1754ywTs+QB0g5TP0oj9Zaw==} + + entities@1.1.2: + resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==} + + entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + envinfo@7.10.0: + resolution: {integrity: sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==} + engines: {node: '>=4'} + hasBin: true + + eol@0.9.1: + resolution: {integrity: sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + es-abstract@1.21.2: + resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-get-iterator@1.1.3: + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} + + es-module-lexer@1.5.4: + resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} + + es-set-tostringtag@2.0.1: + resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.0.0: + resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} + + es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + + es5-ext@0.10.62: + resolution: {integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==} + engines: {node: '>=0.10'} + + es6-error@4.1.1: + resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} + + es6-iterator@2.0.3: + resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} + + es6-symbol@3.1.3: + resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==} + + esbuild-register@3.6.0: + resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} + peerDependencies: + esbuild: '>=0.12 <1' + + esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + + escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + + eslint-config-prettier@8.5.0: + resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-plugin-json@3.1.0: + resolution: {integrity: sha512-MrlG2ynFEHe7wDGwbUuFPsaT2b1uhuEFhJ+W1f1u+1C2EkXmTYJp4B1aAdQQ8M+CC3t//N/oRKiIVw14L2HR1g==} + engines: {node: '>=12.0'} + + eslint-plugin-prettier@4.2.1: + resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + eslint: '>=7.28.0' + eslint-config-prettier: '*' + prettier: '>=2.0.0' + peerDependenciesMeta: + eslint-config-prettier: + optional: true + + eslint-plugin-react@7.31.11: + resolution: {integrity: sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + + eslint-plugin-storybook@0.8.0: + resolution: {integrity: sha512-CZeVO5EzmPY7qghO2t64oaFM+8FTaD4uzOEjHKp516exyTKo+skKAL9GI3QALS2BXhyALJjNtwbmr1XinGE8bA==} + engines: {node: '>= 18'} + peerDependencies: + eslint: '>=6' + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + eslint-scope@7.2.0: + resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-utils@3.0.0: + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + + eslint-visitor-keys@2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + + eslint-visitor-keys@3.4.1: + resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint@8.28.0: + resolution: {integrity: sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true + + espree@9.5.2: + resolution: {integrity: sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-util-attach-comments@2.1.1: + resolution: {integrity: sha512-+5Ba/xGGS6mnwFbXIuQiDPTbuTxuMCooq3arVv7gPZtYpjp+VXH/NkHAP35OOefPhNG/UGqU3vt/LTABwcHX0w==} + + estree-util-build-jsx@2.2.2: + resolution: {integrity: sha512-m56vOXcOBuaF+Igpb9OPAy7f9w9OIkb5yhjsZuaPm7HoGi4oTOQi0h2+yZ+AtKklYFZ+rPC4n0wYCJCEU1ONqg==} + + estree-util-is-identifier-name@2.1.0: + resolution: {integrity: sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==} + + estree-util-to-js@1.2.0: + resolution: {integrity: sha512-IzU74r1PK5IMMGZXUVZbmiu4A1uhiPgW5hm1GjcOfr4ZzHaMPpLNJjR7HjXiIOzi25nZDrgFTobHTkV5Q6ITjA==} + + estree-util-visit@1.2.1: + resolution: {integrity: sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==} + + estree-walker@1.0.1: + resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + + expand-tilde@1.2.2: + resolution: {integrity: sha512-rtmc+cjLZqnu9dSYosX9EWmSJhTwpACgJQTfj4hgg2JjOD/6SIQalZrt4a3aQeh++oNxkazcaxrhPUj6+g5G/Q==} + engines: {node: '>=0.10.0'} + + expect-playwright@0.8.0: + resolution: {integrity: sha512-+kn8561vHAY+dt+0gMqqj1oY+g5xWrsuGMk4QGxotT2WS545nVqqjs37z6hrYfIuucwqthzwJfCJUEYqixyljg==} + + expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + express@4.21.1: + resolution: {integrity: sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==} + engines: {node: '>= 0.10.0'} + + ext@1.7.0: + resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + + fast-equals@5.0.1: + resolution: {integrity: sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==} + engines: {node: '>=6.0.0'} + + fast-glob@3.2.12: + resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} + engines: {node: '>=8.6.0'} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + + fd-package-json@1.2.0: + resolution: {integrity: sha512-45LSPmWf+gC5tdCQMNH4s9Sr00bIkiD9aN7dc5hqkrEw1geRYyDQS1v1oMHAW3ysfxfndqGsrDREHHjNNbKUfA==} + + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + + file-saver@2.0.5: + resolution: {integrity: sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==} + + filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + + fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + + finalhandler@1.3.1: + resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} + engines: {node: '>= 0.8'} + + find-cache-dir@2.1.0: + resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} + engines: {node: '>=6'} + + find-cache-dir@3.3.2: + resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} + engines: {node: '>=8'} + + find-file-up@0.1.3: + resolution: {integrity: sha512-mBxmNbVyjg1LQIIpgO8hN+ybWBgDQK8qjht+EbrTCGmmPV/sc7RF1i9stPTD6bpvXZywBdrwRYxhSdJv867L6A==} + engines: {node: '>=0.10.0'} + + find-pkg@0.1.2: + resolution: {integrity: sha512-0rnQWcFwZr7eO0513HahrWafsc3CTFioEB7DRiEYCUM/70QXSY8f3mCST17HXLcPvEhzH/Ty/Bxd72ZZsr/yvw==} + engines: {node: '>=0.10.0'} + + find-process@1.4.7: + resolution: {integrity: sha512-/U4CYp1214Xrp3u3Fqr9yNynUrr5Le4y0SsJh2lMDDSbpwYSz3M2SMWQC+wqcx79cN8PQtHQIL8KnuY9M66fdg==} + hasBin: true + + find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + + find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@3.0.4: + resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} + engines: {node: ^10.12.0 || >=12.0.0} + + flatted@3.2.7: + resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + + flow-parser@0.210.1: + resolution: {integrity: sha512-M0SdOwD0wZHhk6K/AOaPReBnw2vB7p9KUFUFZHJRsU3ZMl/+WVrMpmb8AfEM6GXZ5mEssCx9vHugxxJg1ieoew==} + engines: {node: '>=0.4.0'} + + flush-write-stream@1.1.1: + resolution: {integrity: sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==} + + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + + foreground-child@2.0.0: + resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} + engines: {node: '>=8.0.0'} + + form-data@4.0.1: + resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} + engines: {node: '>= 6'} + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + framer-motion@6.5.1: + resolution: {integrity: sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw==} + peerDependencies: + react: '>=16.8 || ^17.0.0 || ^18.0.0' + react-dom: '>=16.8 || ^17.0.0 || ^18.0.0' + + framesync@6.0.1: + resolution: {integrity: sha512-fUY88kXvGiIItgNC7wcTOl0SNRCVXMKSWW2Yzfmn7EKNc+MpCzcz9DhdHcdjbrtN3c6R4H5dTY2jiCpPdysEjA==} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + fromentries@1.3.2: + resolution: {integrity: sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==} + + fs-exists-sync@0.1.0: + resolution: {integrity: sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg==} + engines: {node: '>=0.10.0'} + + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + + fs-extra@11.1.1: + resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} + engines: {node: '>=14.14'} + + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + + fs-merger@3.2.1: + resolution: {integrity: sha512-AN6sX12liy0JE7C2evclwoo0aCG3PFulLjrTLsJpWh/2mM+DinhpSGqYLbHBBbIW1PLRNcFhJG8Axtz8mQW3ug==} + + fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + + fs-mkdirp-stream@1.0.0: + resolution: {integrity: sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==} + engines: {node: '>= 0.10'} + + fs-tree-diff@2.0.1: + resolution: {integrity: sha512-x+CfAZ/lJHQqwlD64pYM5QxWjzWhSjroaVsr8PW831zOApL55qPibed0c+xebaLWVr2BnHFoHdrwOv8pzt8R5A==} + engines: {node: 6.* || 8.* || >= 10.*} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.5: + resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + + get-intrinsic@1.2.1: + resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} + + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + + get-own-enumerable-property-symbols@3.0.2: + resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} + + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-symbol-description@1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + + giget@1.1.2: + resolution: {integrity: sha512-HsLoS07HiQ5oqvObOI+Qb2tyZH4Gj5nYGfF9qQcZNrPw+uEFhdXtgJr01aO2pWadGHucajYDLxxbtQkm97ON2A==} + hasBin: true + + github-slugger@2.0.0: + resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob-promise@4.2.2: + resolution: {integrity: sha512-xcUzJ8NWN5bktoTIX7eOclO1Npxd/dyVqUJxlLIDasT4C7KZyqlPIwkdJ0Ypiy3p2ZKahTjK4M9uC3sNSfNMzw==} + engines: {node: '>=12'} + peerDependencies: + glob: ^7.1.6 + + glob-stream@6.1.0: + resolution: {integrity: sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==} + engines: {node: '>= 0.10'} + + glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + global-modules@0.2.3: + resolution: {integrity: sha512-JeXuCbvYzYXcwE6acL9V2bAOeSIGl4dD+iwLY9iUx2VBJJ80R18HCn+JCwHM9Oegdfya3lEkGCdaRkSyc10hDA==} + engines: {node: '>=0.10.0'} + + global-prefix@0.1.5: + resolution: {integrity: sha512-gOPiyxcD9dJGCEArAhF4Hd0BAqvAe/JzERP7tYumE4yIkmIedPUVXcJFWbV3/p/ovIIvKjkrTk+f1UVkq7vvbw==} + engines: {node: '>=0.10.0'} + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@13.20.0: + resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} + engines: {node: '>=8'} + + globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + globby@14.0.2: + resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==} + engines: {node: '>=18'} + + goober@2.1.13: + resolution: {integrity: sha512-jFj3BQeleOoy7t93E9rZ2de+ScC4lQICLwiAQmKMg9F6roKGaLSHoCDYKkWlSafg138jejvq/mTdvmnwDQgqoQ==} + peerDependencies: + csstype: ^3.0.10 + + google-map-react@2.2.0: + resolution: {integrity: sha512-UPiTwR3qNKJJizURXTuCbnBr8kLtLsiikj/KH1UTLGhadnU6fT+CE3CLw1lzZwk5zZIduQQODyIcEwNInECmUg==} + engines: {node: '>=10'} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 + + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + + got@11.8.5: + resolution: {integrity: sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==} + engines: {node: '>=10.19.0'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + grapheme-splitter@1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + + gulp-sort@2.0.0: + resolution: {integrity: sha512-MyTel3FXOdh1qhw1yKhpimQrAmur9q1X0ZigLmCOxouQD+BD3za9/89O+HfbgBQvvh4igEbp0/PUWO+VqGYG1g==} + + happy-dom@15.10.2: + resolution: {integrity: sha512-NbA5XrSovenJIIcfixCREX3ZnV7yHP4phhbfuxxf4CPn+LZpz/jIM9EqJ2DrPwgVDSMoAKH3pZwQvkbsSiCrUw==} + engines: {node: '>=18.0.0'} + + has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.0: + resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + + has@1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} + + hasha@5.2.2: + resolution: {integrity: sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==} + engines: {node: '>=8'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hast-util-heading-rank@3.0.0: + resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} + + hast-util-is-element@3.0.0: + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} + + hast-util-to-estree@2.3.3: + resolution: {integrity: sha512-ihhPIUPxN0v0w6M5+IiAZZrn0LH2uZomeWwhn7uP7avZC6TE7lIiEh2yBMPr5+zi1aUCXq6VoYRgs2Bw9xmycQ==} + + hast-util-to-string@3.0.1: + resolution: {integrity: sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==} + + hast-util-whitespace@2.0.1: + resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + heimdalljs-logger@0.1.10: + resolution: {integrity: sha512-pO++cJbhIufVI/fmB/u2Yty3KJD0TqNPecehFae0/eps0hkZ3b4Zc/PezUMOpYuHFQbA7FxHZxa305EhmjLj4g==} + + heimdalljs@0.2.6: + resolution: {integrity: sha512-o9bd30+5vLBvBtzCPwwGqpry2+n0Hi6H1+qwt6y+0kwRHGGF8TFIhJPmnuM0xO97zaKrDZMwO/V56fAnn8m/tA==} + + hey-listen@1.0.8: + resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} + + history@4.10.1: + resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} + + history@5.3.0: + resolution: {integrity: sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==} + + hoist-non-react-statics@2.5.5: + resolution: {integrity: sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==} + + hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + + homedir-polyfill@1.0.3: + resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} + engines: {node: '>=0.10.0'} + + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + html-parse-stringify@3.0.1: + resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==} + + html-tags@3.3.1: + resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} + engines: {node: '>=8'} + + html-to-text@8.2.0: + resolution: {integrity: sha512-CLXExYn1b++Lgri+ZyVvbUEFwzkLZppjjZOwB7X1qv2jIi8MrMEvxWX5KQ7zATAzTvcqgmtO00M2kCRMtEdOKQ==} + engines: {node: '>=10.23.2'} + hasBin: true + + html2canvas@1.4.1: + resolution: {integrity: sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==} + engines: {node: '>=8.0.0'} + + htmlparser2@3.10.1: + resolution: {integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==} + + htmlparser2@6.1.0: + resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} + + htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + + http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + http2-wrapper@1.0.3: + resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} + engines: {node: '>=10.19.0'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + hyphenate-style-name@1.0.4: + resolution: {integrity: sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==} + + i18next-browser-languagedetector@6.1.8: + resolution: {integrity: sha512-Svm+MduCElO0Meqpj1kJAriTC6OhI41VhlT/A0UPjGoPZBhAHIaGE5EfsHlTpgdH09UVX7rcc72pSDDBeKSQQA==} + + i18next-parser@5.4.0: + resolution: {integrity: sha512-AkMOy3NW09tnB+4CAVzHVWxhoab8q1L6E3aIugWeTZqbUVYTjb6dtW1AhiiUd4nLMOj29LaaVCkyqOhrTezp7Q==} + engines: {node: '>=12', npm: '>=6', yarn: '>=1'} + hasBin: true + + i18next-xhr-backend@3.2.2: + resolution: {integrity: sha512-OtRf2Vo3IqAxsttQbpjYnmMML12IMB5e0fc5B7qKJFLScitYaXa1OhMX0n0X/3vrfFlpHL9Ro/H+ps4Ej2j7QQ==} + deprecated: replaced by i18next-http-backend + + i18next@21.10.0: + resolution: {integrity: sha512-YeuIBmFsGjUfO3qBmMOc0rQaun4mIpGKET5WDwvu8lU7gvwpcariZLNtL0Fzj+zazcHUrlXHiptcFhBMFaxzfg==} + + icepick@1.3.0: + resolution: {integrity: sha512-wtkTJ9cS907NagkBjnHCT8PzaRdu7xM/v/5fXe01K/6zPXnqMsLHw0kn6xGubLvpo2ABZUAEqrQhTRfXKK+OLA==} + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + idb@7.1.1: + resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + engines: {node: '>= 4'} + + imap-simple@5.1.0: + resolution: {integrity: sha512-FLZm1v38C5ekN46l/9X5gBRNMQNVc5TSLYQ3Hsq3xBLvKwt1i5fcuShyth8MYMPuvId1R46oaPNrH92hFGHr/g==} + engines: {node: '>=6'} + + imap@0.8.19: + resolution: {integrity: sha512-z5DxEA1uRnZG73UcPA4ES5NSCGnPuuouUx43OPX7KZx1yzq3N8/vx2mtXEShT5inxB3pRgnfG1hijfu7XN2YMw==} + engines: {node: '>=0.8.0'} + + immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + + immer@9.0.16: + resolution: {integrity: sha512-qenGE7CstVm1NrHQbMh8YaSzTZTFNP3zPqr3YU0S0UY441j4bJTg4A2Hh5KAhwgaiU6ZZ1Ar6y/2f4TblnMReQ==} + + immutable@4.3.0: + resolution: {integrity: sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + import-local@3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + engines: {node: '>=8'} + hasBin: true + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + inflight@1.0.6: + resolution: {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. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + inline-style-parser@0.1.1: + resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} + + internal-slot@1.0.5: + resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} + engines: {node: '>= 0.4'} + + internmap@1.0.1: + resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==} + + internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} + + invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + is-absolute-url@4.0.1: + resolution: {integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-absolute@1.0.0: + resolution: {integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==} + engines: {node: '>=0.10.0'} + + is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + + is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + + is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + + is-array-buffer@3.0.2: + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-blob@2.1.0: + resolution: {integrity: sha512-SZ/fTft5eUhQM6oF/ZaASFDEdbFVe89Imltn9uZr03wdKMcWNVYSMjQPFtg05QuNkt5l5c135ElvXEQG0rk4tw==} + engines: {node: '>=6'} + + is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + + is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + + is-buffer@2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.12.1: + resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} + + is-core-module@2.15.1: + resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} + engines: {node: '>= 0.4'} + + is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + + is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + + is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + + is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + + is-in-browser@1.1.3: + resolution: {integrity: sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==} + + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + + is-map@2.0.2: + resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + + is-module@1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + + is-negated-glob@1.0.0: + resolution: {integrity: sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==} + engines: {node: '>=0.10.0'} + + is-negative-zero@2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + + is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-obj@1.0.1: + resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} + engines: {node: '>=0.10.0'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + + is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + + is-promise@1.0.1: + resolution: {integrity: sha512-mjWH5XxnhMA8cFnDchr6qRP9S/kLntKuEfIYku+PaN1CnS8v+OG9O/BKpRCVRJvpIkgAZm0Pf5Is3iSSOILlcg==} + + is-reference@3.0.1: + resolution: {integrity: sha512-baJJdQLiYaJdvFbJqXrcGv3WU3QCzBlUcI5QhbesIm6/xPsvmO+2CDoi/GMOFBQEQm+PXkwOPrp9KK5ozZsp2w==} + + is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + + is-regexp@1.0.0: + resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} + engines: {node: '>=0.10.0'} + + is-relative@1.0.0: + resolution: {integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==} + engines: {node: '>=0.10.0'} + + is-set@2.0.2: + resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} + + is-shared-array-buffer@1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + + is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.12: + resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + engines: {node: '>= 0.4'} + + is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + + is-unc-path@1.0.0: + resolution: {integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==} + engines: {node: '>=0.10.0'} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + is-utf8@0.2.1: + resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} + + is-valid-glob@1.0.0: + resolution: {integrity: sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==} + engines: {node: '>=0.10.0'} + + is-weakmap@2.0.1: + resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} + + is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + + is-weakset@2.0.2: + resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + + is-windows@0.2.0: + resolution: {integrity: sha512-n67eJYmXbniZB7RF4I/FTjK1s6RPOCTxhYrVYLRaCt3lF0mpWZPKr3T2LSZAqyjQsxR2qMmGYXXzK0YWwcPM1Q==} + engines: {node: '>=0.10.0'} + + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + + isarray@0.0.1: + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + + istanbul-lib-coverage@3.2.0: + resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} + engines: {node: '>=8'} + + istanbul-lib-hook@3.0.0: + resolution: {integrity: sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==} + engines: {node: '>=8'} + + istanbul-lib-instrument@4.0.3: + resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==} + engines: {node: '>=8'} + + istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@6.0.3: + resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} + engines: {node: '>=10'} + + istanbul-lib-processinfo@2.0.3: + resolution: {integrity: sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==} + engines: {node: '>=8'} + + istanbul-lib-report@3.0.0: + resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} + engines: {node: '>=8'} + + istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + + istanbul-reports@3.1.5: + resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} + engines: {node: '>=8'} + + jake@10.8.7: + resolution: {integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==} + engines: {node: '>=10'} + hasBin: true + + jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-cli@29.7.0: + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jest-config@29.7.0: + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + + jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-junit@16.0.0: + resolution: {integrity: sha512-A94mmw6NfJab4Fg/BlvVOUXzXgF0XIH6EmTgJ5NDPp4xoKq0Kr7sErb+4Xs9nZvu58pJojz5RFGpqnZYJTrRfQ==} + engines: {node: '>=10.12.0'} + + jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-playwright-preset@4.0.0: + resolution: {integrity: sha512-+dGZ1X2KqtwXaabVjTGxy0a3VzYfvYsWaRcuO8vMhyclHSOpGSI1+5cmlqzzCwQ3+fv0EjkTc7I5aV9lo08dYw==} + peerDependencies: + jest: ^29.3.1 + jest-circus: ^29.3.1 + jest-environment-node: ^29.3.1 + jest-runner: ^29.3.1 + + jest-pnp-resolver@1.2.3: + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + + jest-process-manager@0.4.0: + resolution: {integrity: sha512-80Y6snDyb0p8GG83pDxGI/kQzwVTkCxc7ep5FPe/F6JYdvRDhwr6RzRmPSP7SEwuLhxo80lBS/NqOdUIbHIfhw==} + + jest-regex-util@29.4.3: + resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-serializer-html@7.1.0: + resolution: {integrity: sha512-xYL2qC7kmoYHJo8MYqJkzrl/Fdlx+fat4U1AqYg+kafqwcKPiMkOcjWHPKhueuNEgr+uemhGc+jqXYiwCyRyLA==} + + jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-watch-typeahead@2.2.2: + resolution: {integrity: sha512-+QgOFW4o5Xlgd6jGS5X37i08tuuXNW8X0CV9WNFi+3n8ExCIP+E1melYhvYLjv5fE6D0yyzk74vsSO8I6GqtvQ==} + engines: {node: ^14.17.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + jest: ^27.0.0 || ^28.0.0 || ^29.0.0 + + jest-watcher@29.5.0: + resolution: {integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-worker@26.6.2: + resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} + engines: {node: '>= 10.13.0'} + + jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + + jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest@29.7.0: + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + joi@17.13.3: + resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} + + js-sdsl@4.4.1: + resolution: {integrity: sha512-6Gsx8R0RucyePbWqPssR8DyfuXmLBooYN5cZFZKjHGnQuaf7pEzhtpceagJxVu4LqhYY5EYA7nko3FmeHZ1KbA==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + js-year-calendar@1.0.2: + resolution: {integrity: sha512-ayHH/vE7xuXgGCprhQ23REbp3Rb2fy1rXO8jA26Wmuw4vYJ/TTIgFxFuNAlNPL8WR4tNXfnG41nlH3p+hjFesg==} + + jscodeshift@0.15.2: + resolution: {integrity: sha512-FquR7Okgmc4Sd0aEDwqho3rEiKR3BdvuG9jfdHjLJ6JQoWSMpavug3AoIfnfWhxFlf+5pzQh8qjqz0DWFrNQzA==} + hasBin: true + peerDependencies: + '@babel/preset-env': ^7.1.6 + peerDependenciesMeta: + '@babel/preset-env': + optional: true + + jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + + jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-schema@0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonc-parser@3.2.0: + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + jsonpointer@5.0.1: + resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} + engines: {node: '>=0.10.0'} + + jss-plugin-camel-case@10.10.0: + resolution: {integrity: sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==} + + jss-plugin-default-unit@10.10.0: + resolution: {integrity: sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==} + + jss-plugin-global@10.10.0: + resolution: {integrity: sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==} + + jss-plugin-nested@10.10.0: + resolution: {integrity: sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==} + + jss-plugin-props-sort@10.10.0: + resolution: {integrity: sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==} + + jss-plugin-rule-value-function@10.10.0: + resolution: {integrity: sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==} + + jss-plugin-vendor-prefixer@10.10.0: + resolution: {integrity: sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==} + + jss@10.10.0: + resolution: {integrity: sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==} + + jsx-ast-utils@3.3.3: + resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==} + engines: {node: '>=4.0'} + + jszip@3.10.1: + resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} + + kdbush@3.0.0: + resolution: {integrity: sha512-hRkd6/XW4HTsA9vjVpY9tuXJYLSlelnkTmVFu4M9/7MIYQtFcHpbugAU7UbOfjOiVSVYl2fqgBuJ32JUmRo5Ew==} + + keyv@4.5.2: + resolution: {integrity: sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + + lazystream@1.0.1: + resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} + engines: {node: '>= 0.6.3'} + + lead@1.0.0: + resolution: {integrity: sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==} + engines: {node: '>= 0.10'} + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + libbase64@1.2.1: + resolution: {integrity: sha512-l+nePcPbIG1fNlqMzrh68MLkX/gTxk/+vdvAb388Ssi7UuUN31MI44w4Yf33mM3Cm4xDfw48mdf3rkdHszLNew==} + + libmime@5.1.0: + resolution: {integrity: sha512-xOqorG21Va+3CjpFOfFTU7SWohHH2uIX9ZY4Byz6J+lvpfvc486tOAT/G9GfbrKtJ9O7NCX9o0aC2lxqbnZ9EA==} + + libqp@1.1.0: + resolution: {integrity: sha512-4Rgfa0hZpG++t1Vi2IiqXG9Ad1ig4QTmtuZF946QJP4bPqOYC78ixUXgz5TW/wE7lNaNKlplSYTxQ+fR2KZ0EA==} + + lie@3.3.0: + resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} + + lilconfig@2.0.5: + resolution: {integrity: sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==} + engines: {node: '>=10'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + linkify-it@4.0.0: + resolution: {integrity: sha512-QAxkXyzT/TXgwGyY4rTgC95Ex6/lZ5/lYTV9nug6eJt93BCBQGOE47D/g2+/m5J1MrVLr2ot97OXkBZ9bBpR4A==} + + lint-staged@12.5.0: + resolution: {integrity: sha512-BKLUjWDsKquV/JuIcoQW4MSAI3ggwEImF1+sB4zaKvyVx1wBk3FsG7UK9bpnmBTN1pm7EH2BBcMwINJzCRv12g==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + + listr2@4.0.5: + resolution: {integrity: sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==} + engines: {node: '>=12'} + peerDependencies: + enquirer: '>= 2.3.0 < 3' + peerDependenciesMeta: + enquirer: + optional: true + + loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + + loader-utils@2.0.4: + resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} + engines: {node: '>=8.9.0'} + + local-pkg@0.4.3: + resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} + engines: {node: '>=14'} + + locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + + lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + + lodash.flattendeep@4.4.0: + resolution: {integrity: sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==} + + lodash.get@4.4.2: + resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.sortby@4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + + lodash.topath@4.5.2: + resolution: {integrity: sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + log-update@4.0.0: + resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} + engines: {node: '>=10'} + + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + + lowercase-keys@2.0.0: + resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} + engines: {node: '>=8'} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + + lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + + magic-string@0.25.9: + resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} + + magic-string@0.27.0: + resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} + engines: {node: '>=12'} + + magic-string@0.30.5: + resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} + engines: {node: '>=12'} + + mailparser@3.5.0: + resolution: {integrity: sha512-mdr2DFgz8LKC0/Q6io6znA0HVnzaPFT0a4TTnLeZ7mWHlkfnm227Wxlq7mHh7AgeP32h7gOUpXvyhSfJJIEeyg==} + + mailsplit@5.3.2: + resolution: {integrity: sha512-coES12hhKqagkuBTJoqERX+y9bXNpxbxw3Esd07auuwKYmcagouVlgucyIVRp48fnswMKxcUtLoFn/L1a75ynQ==} + + make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + + make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + + map-or-similar@1.5.0: + resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==} + + markdown-extensions@1.1.1: + resolution: {integrity: sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==} + engines: {node: '>=0.10.0'} + + markdown-table@3.0.3: + resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} + + markdown-to-jsx@7.5.0: + resolution: {integrity: sha512-RrBNcMHiFPcz/iqIj0n3wclzHXjwS7mzjBNWecKKVhNTIxQepIix6Il/wZCn2Cg5Y1ow2Qi84+eJrryFRWBEWw==} + engines: {node: '>= 10'} + peerDependencies: + react: '>= 0.14.0' + + matcher-collection@2.0.1: + resolution: {integrity: sha512-daE62nS2ZQsDg9raM0IlZzLmI2u+7ZapXBwdoeBUKAYERPDDIc0qNqA8E0Rp2D+gspKR7BgIFP52GeujaGXWeQ==} + engines: {node: 6.* || 8.* || >= 10.*} + + mdast-util-definitions@5.1.2: + resolution: {integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==} + + mdast-util-find-and-replace@3.0.1: + resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} + + mdast-util-from-markdown@1.3.1: + resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==} + + mdast-util-from-markdown@2.0.1: + resolution: {integrity: sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==} + + mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} + + mdast-util-gfm-footnote@2.0.0: + resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} + + mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + + mdast-util-gfm@3.0.0: + resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} + + mdast-util-mdx-expression@1.3.2: + resolution: {integrity: sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==} + + mdast-util-mdx-jsx@2.1.4: + resolution: {integrity: sha512-DtMn9CmVhVzZx3f+optVDF8yFgQVt7FghCRNdlIaS3X5Bnym3hZwPbg/XW86vdpKjlc1PVj26SpnLGeJBXD3JA==} + + mdast-util-mdx@2.0.1: + resolution: {integrity: sha512-38w5y+r8nyKlGvNjSEqWrhG0w5PmnRA+wnBvm+ulYCct7nsGYhFVb0lljS9bQav4psDAS1eGkP2LMVcZBi/aqw==} + + mdast-util-mdxjs-esm@1.3.1: + resolution: {integrity: sha512-SXqglS0HrEvSdUEfoXFtcg7DRl7S2cwOXc7jkuusG472Mmjag34DUDeOJUZtl+BVnyeO1frIgVpHlNRWc2gk/w==} + + mdast-util-phrasing@3.0.1: + resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==} + + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + + mdast-util-to-hast@12.3.0: + resolution: {integrity: sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==} + + mdast-util-to-markdown@1.5.0: + resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==} + + mdast-util-to-markdown@2.1.0: + resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} + + mdast-util-to-string@3.2.0: + resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==} + + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + memoize-one@6.0.0: + resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} + + memoizerific@1.11.3: + resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} + + merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + + micromark-core-commonmark@1.1.0: + resolution: {integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==} + + micromark-core-commonmark@2.0.1: + resolution: {integrity: sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==} + + micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} + + micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} + + micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} + + micromark-extension-gfm-table@2.1.0: + resolution: {integrity: sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==} + + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + + micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} + + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + + micromark-extension-mdx-expression@1.0.8: + resolution: {integrity: sha512-zZpeQtc5wfWKdzDsHRBY003H2Smg+PUi2REhqgIhdzAa5xonhP03FcXxqFSerFiNUr5AWmHpaNPQTBVOS4lrXw==} + + micromark-extension-mdx-jsx@1.0.5: + resolution: {integrity: sha512-gPH+9ZdmDflbu19Xkb8+gheqEDqkSpdCEubQyxuz/Hn8DOXiXvrXeikOoBA71+e8Pfi0/UYmU3wW3H58kr7akA==} + + micromark-extension-mdx-md@1.0.1: + resolution: {integrity: sha512-7MSuj2S7xjOQXAjjkbjBsHkMtb+mDGVW6uI2dBL9snOBCbZmoNgDAeZ0nSn9j3T42UE/g2xVNMn18PJxZvkBEA==} + + micromark-extension-mdxjs-esm@1.0.5: + resolution: {integrity: sha512-xNRBw4aoURcyz/S69B19WnZAkWJMxHMT5hE36GtDAyhoyn/8TuAeqjFJQlwk+MKQsUD7b3l7kFX+vlfVWgcX1w==} + + micromark-extension-mdxjs@1.0.1: + resolution: {integrity: sha512-7YA7hF6i5eKOfFUzZ+0z6avRG52GpWR8DL+kN47y3f2KhxbBZMhmxe7auOeaTBrW2DenbbZTf1ea9tA2hDpC2Q==} + + micromark-factory-destination@1.1.0: + resolution: {integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==} + + micromark-factory-destination@2.0.0: + resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} + + micromark-factory-label@1.1.0: + resolution: {integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==} + + micromark-factory-label@2.0.0: + resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} + + micromark-factory-mdx-expression@1.0.9: + resolution: {integrity: sha512-jGIWzSmNfdnkJq05c7b0+Wv0Kfz3NJ3N4cBjnbO4zjXIlxJr+f8lk+5ZmwFvqdAbUy2q6B5rCY//g0QAAaXDWA==} + + micromark-factory-space@1.1.0: + resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==} + + micromark-factory-space@2.0.0: + resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} + + micromark-factory-title@1.1.0: + resolution: {integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==} + + micromark-factory-title@2.0.0: + resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} + + micromark-factory-whitespace@1.1.0: + resolution: {integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==} + + micromark-factory-whitespace@2.0.0: + resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} + + micromark-util-character@1.2.0: + resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==} + + micromark-util-character@2.1.0: + resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} + + micromark-util-chunked@1.1.0: + resolution: {integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==} + + micromark-util-chunked@2.0.0: + resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} + + micromark-util-classify-character@1.1.0: + resolution: {integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==} + + micromark-util-classify-character@2.0.0: + resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} + + micromark-util-combine-extensions@1.1.0: + resolution: {integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==} + + micromark-util-combine-extensions@2.0.0: + resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} + + micromark-util-decode-numeric-character-reference@1.1.0: + resolution: {integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==} + + micromark-util-decode-numeric-character-reference@2.0.1: + resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} + + micromark-util-decode-string@1.1.0: + resolution: {integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==} + + micromark-util-decode-string@2.0.0: + resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} + + micromark-util-encode@1.1.0: + resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==} + + micromark-util-encode@2.0.0: + resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} + + micromark-util-events-to-acorn@1.2.3: + resolution: {integrity: sha512-ij4X7Wuc4fED6UoLWkmo0xJQhsktfNh1J0m8g4PbIMPlx+ek/4YdW5mvbye8z/aZvAPUoxgXHrwVlXAPKMRp1w==} + + micromark-util-html-tag-name@1.2.0: + resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==} + + micromark-util-html-tag-name@2.0.0: + resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} + + micromark-util-normalize-identifier@1.1.0: + resolution: {integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==} + + micromark-util-normalize-identifier@2.0.0: + resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} + + micromark-util-resolve-all@1.1.0: + resolution: {integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==} + + micromark-util-resolve-all@2.0.0: + resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} + + micromark-util-sanitize-uri@1.2.0: + resolution: {integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==} + + micromark-util-sanitize-uri@2.0.0: + resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} + + micromark-util-subtokenize@1.1.0: + resolution: {integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==} + + micromark-util-subtokenize@2.0.1: + resolution: {integrity: sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==} + + micromark-util-symbol@1.1.0: + resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==} + + micromark-util-symbol@2.0.0: + resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} + + micromark-util-types@1.1.0: + resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==} + + micromark-util-types@2.0.0: + resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} + + micromark@3.2.0: + resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==} + + micromark@4.0.0: + resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} + + micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-response@1.0.1: + resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} + engines: {node: '>=4'} + + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + + minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + mktemp@0.4.0: + resolution: {integrity: sha512-IXnMcJ6ZyTuhRmJSjzvHSRhlVPiN9Jwc6e59V0bEJ0ba6OBeX2L0E+mRN1QseeOF4mM+F1Rit6Nh7o+rl2Yn/A==} + engines: {node: '>0.9'} + + mlly@1.4.2: + resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} + + moment-range@4.0.2: + resolution: {integrity: sha512-n8sceWwSTjmz++nFHzeNEUsYtDqjgXgcOBzsHi+BoXQU2FW+eU92LUaK8gqOiSu5PG57Q9sYj1Fz4LRDj4FtKA==} + peerDependencies: + moment: '>= 2' + + moment@2.29.4: + resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} + + moo@0.5.2: + resolution: {integrity: sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==} + + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + nearley@2.20.1: + resolution: {integrity: sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==} + hasBin: true + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + next-tick@1.1.0: + resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + + node-dir@0.1.17: + resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} + engines: {node: '>= 0.10.5'} + + node-fetch-native@1.2.0: + resolution: {integrity: sha512-5IAMBTl9p6PaAjYCnMv5FmqIF6GcZnawAVnzaCG0rX2aYZJ4CxEkZNtVPuTRug7fL7wyM5BQYTlAzcyMPi6oTQ==} + + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + node-preload@0.2.1: + resolution: {integrity: sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==} + engines: {node: '>=8'} + + node-releases@2.0.12: + resolution: {integrity: sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==} + + node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + + nodeify@1.0.1: + resolution: {integrity: sha512-n7C2NyEze8GCo/z73KdbjRsBiLbv6eBn1FxwYKQ23IqGo7pQY3mhQan61Sv7eEDJCiyUjTVrVkXTzJCo1dW7Aw==} + + nodemailer@6.7.3: + resolution: {integrity: sha512-KUdDsspqx89sD4UUyUKzdlUOper3hRkDVkrKh/89G+d9WKsU5ox51NWS4tB1XR5dPUdR4SP0E3molyEfOvSa3g==} + engines: {node: '>=6.0.0'} + + nodemailer@6.8.0: + resolution: {integrity: sha512-EjYvSmHzekz6VNkNd12aUqAco+bOkRe3Of5jVhltqKhEsjw/y0PYPJfp83+s9Wzh1dspYAkUW/YNQ350NATbSQ==} + engines: {node: '>=6.0.0'} + + normalize-path@2.1.1: + resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} + engines: {node: '>=0.10.0'} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-url@6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + + notistack@3.0.1: + resolution: {integrity: sha512-ntVZXXgSQH5WYfyU+3HfcXuKaapzAJ8fBLQ/G618rn3yvSzEbnOB8ZSOwhX+dAORy/lw+GC2N061JA0+gYWTVA==} + engines: {node: '>=12.0.0', npm: '>=6.0.0'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + + now-and-later@2.0.1: + resolution: {integrity: sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==} + engines: {node: '>= 0.10'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + nyc@15.1.0: + resolution: {integrity: sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==} + engines: {node: '>=8.9'} + hasBin: true + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.12.3: + resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + + object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} + + object-is@1.1.5: + resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.4: + resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + engines: {node: '>= 0.4'} + + object.entries@1.1.6: + resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.6: + resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} + engines: {node: '>= 0.4'} + + object.hasown@1.1.2: + resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} + + object.values@1.1.6: + resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} + engines: {node: '>= 0.4'} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + optionator@0.9.1: + resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} + engines: {node: '>= 0.8.0'} + + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + + ordered-read-streams@1.0.1: + resolution: {integrity: sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==} + + os-homedir@1.0.2: + resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} + engines: {node: '>=0.10.0'} + + p-cancelable@2.1.1: + resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} + engines: {node: '>=8'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-map@3.0.0: + resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==} + engines: {node: '>=8'} + + p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + package-hash@4.0.0: + resolution: {integrity: sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==} + engines: {node: '>=8'} + + pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-entities@4.0.1: + resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-passwd@1.0.0: + resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} + engines: {node: '>=0.10.0'} + + parse5-htmlparser2-tree-adapter@7.0.0: + resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} + + parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + + parseley@0.7.0: + resolution: {integrity: sha512-xyOytsdDu077M3/46Am+2cGXEKM9U9QclBDv7fimY7e+BBlxh2JcBp2mgNsmkyA9uvgyTjVzDi7cP1v4hcFxbw==} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-posix@1.0.0: + resolution: {integrity: sha512-1gJ0WpNIiYcQydgg3Ed8KzvIqTsDpNwq+cjBCssvBtuTWjEqY1AW+i+OepiEMqDCzyro9B2sLAe4RBPajMYFiA==} + + path-to-regexp@0.1.10: + resolution: {integrity: sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==} + + path-to-regexp@1.8.0: + resolution: {integrity: sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + path-type@5.0.0: + resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} + engines: {node: '>=12'} + + pathe@1.1.1: + resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} + + pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + + periscopic@3.1.0: + resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} + + picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pidtree@0.5.0: + resolution: {integrity: sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA==} + engines: {node: '>=0.10'} + hasBin: true + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + pkg-dir@3.0.0: + resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} + engines: {node: '>=6'} + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + pkg-types@1.0.3: + resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + + playwright-core@1.35.1: + resolution: {integrity: sha512-pNXb6CQ7OqmGDRspEjlxE49w+4YtR6a3X6mT1hZXeJHWmsEz7SunmvZeiG/+y1yyMZdHnnn73WKYdtV1er0Xyg==} + engines: {node: '>=16'} + hasBin: true + + playwright@1.35.1: + resolution: {integrity: sha512-NbwBeGJLu5m7VGM0+xtlmLAH9VUfWwYOhUi/lSEDyGg46r1CA9RWlvoc5yywxR9AzQb0mOCm7bWtOXV7/w43ZA==} + engines: {node: '>=16'} + hasBin: true + + polished@4.2.2: + resolution: {integrity: sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ==} + engines: {node: '>=10'} + + popmotion@11.0.3: + resolution: {integrity: sha512-Y55FLdj3UxkR7Vl3s7Qr4e9m0onSnP8W7d/xQLsoJM40vs6UKHFdygs6SWryasTZYqugMjm3BepCF4CWXDiHgA==} + + postcss-value-parser@3.3.1: + resolution: {integrity: sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==} + + postcss@8.4.47: + resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + + prettier@3.3.3: + resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} + engines: {node: '>=14'} + hasBin: true + + pretty-bytes@5.6.0: + resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} + engines: {node: '>=6'} + + pretty-bytes@6.1.0: + resolution: {integrity: sha512-Rk753HI8f4uivXi4ZCIYdhmG1V+WKzvRMg/X+M42a6t7D07RcmopXJMDNk6N++7Bl75URRGsb40ruvg7Hcp2wQ==} + engines: {node: ^14.13.1 || >=16.0.0} + + pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + pretty-format@29.5.0: + resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + process-on-spawn@1.0.0: + resolution: {integrity: sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==} + engines: {node: '>=8'} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + promise-map-series@0.3.0: + resolution: {integrity: sha512-3npG2NGhTc8BWBolLLf8l/92OxMGaRLbqvIh9wjCHhDXNvk4zsxaTaCpiCunW09qWPrN2zeNSNwRLVBrQQtutA==} + engines: {node: 10.* || >= 12.*} + + promise@1.3.0: + resolution: {integrity: sha512-R9WrbTF3EPkVtWjp7B7umQGVndpsi+rsDAfrR4xAALQpFLa/+2OriecLhawxzvii2gd9+DZFwROWDuUUaqS5yA==} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + property-information@6.2.0: + resolution: {integrity: sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==} + + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + pump@2.0.1: + resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} + + pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + + pumpify@1.5.1: + resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} + + punycode@2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + engines: {node: '>=6'} + + pure-rand@6.1.0: + resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + + qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + engines: {node: '>=0.6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + + quick-temp@0.1.8: + resolution: {integrity: sha512-YsmIFfD9j2zaFwJkzI6eMG7y0lQP7YeWzgtFgNl38pGWZBSXJooZbOWwkcRot7Vt0Fg9L23pX0tqWU3VvLDsiA==} + + quoted-printable@1.0.1: + resolution: {integrity: sha512-cihC68OcGiQOjGiXuo5Jk6XHANTHl1K4JLk/xlEJRTIXfy19Sg6XzB95XonYgr+1rB88bCpr7WZE7D7AlZow4g==} + hasBin: true + + railroad-diagrams@1.0.0: + resolution: {integrity: sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==} + + randexp@0.4.6: + resolution: {integrity: sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==} + engines: {node: '>=0.12'} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + + rc-year-calendar@1.0.2: + resolution: {integrity: sha512-TdEHZ4hs3WEuEAAmX/HEWlK7EZwhACkpuJKdkxL360igekuQDguyXTC9RuDFdk6lv4CAT7L4d4D6PTP7zUMBlQ==} + peerDependencies: + prop-types: ^15.7.2 + react: ^16.8.4 + + react-chartjs-2@5.2.0: + resolution: {integrity: sha512-98iN5aguJyVSxp5U3CblRLH67J8gkfyGNbiK3c+l1QI/G4irHMPQw44aEPmjVag+YKTyQ260NcF82GTQ3bdscA==} + peerDependencies: + chart.js: ^4.1.1 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + react-colorful@5.6.1: + resolution: {integrity: sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + react-docgen-typescript@2.2.2: + resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==} + peerDependencies: + typescript: '>= 4.3.x' + + react-docgen@7.1.0: + resolution: {integrity: sha512-APPU8HB2uZnpl6Vt/+0AFoVYgSRtfiP6FLrZgPPTDmqSb2R4qZRbgd0A3VzIFxDt5e+Fozjx79WjLWnF69DK8g==} + engines: {node: '>=16.14.0'} + + react-dom@18.2.0: + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + peerDependencies: + react: ^18.2.0 + + react-element-to-jsx-string@15.0.0: + resolution: {integrity: sha512-UDg4lXB6BzlobN60P8fHWVPX3Kyw8ORrTeBtClmIlGdkOOE+GYQSFvmEU5iLLpwp/6v42DINwNcwOhOLfQ//FQ==} + peerDependencies: + react: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0 + react-dom: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0 + + react-error-boundary@4.0.12: + resolution: {integrity: sha512-kJdxdEYlb7CPC1A0SeUY38cHpjuu6UkvzKiAmqmOFL21VRfMhOcWxTCBgLVCO0VEMh9JhFNcVaXlV4/BTpiwOA==} + peerDependencies: + react: '>=16.13.1' + + react-google-login@5.2.2: + resolution: {integrity: sha512-JUngfvaSMcOuV0lFff7+SzJ2qviuNMQdqlsDJkUM145xkGPVIfqWXq9Ui+2Dr6jdJWH5KYdynz9+4CzKjI5u6g==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + peerDependencies: + react: ^16 || ^17 + react-dom: ^16 || ^17 + + react-hook-form@7.40.0: + resolution: {integrity: sha512-0rokdxMPJs0k9bvFtY6dbcSydyNhnZNXCR49jgDr/aR03FDHFOK6gfh8ccqB3fl696Mk7lqh04xdm+agqWXKSw==} + engines: {node: '>=12.22.0'} + peerDependencies: + react: ^16.8.0 || ^17 || ^18 + + react-i18next@11.18.6: + resolution: {integrity: sha512-yHb2F9BiT0lqoQDt8loZ5gWP331GwctHz9tYQ8A2EIEUu+CcEdjBLQWli1USG3RdWQt3W+jqQLg/d4rrQR96LA==} + peerDependencies: + i18next: '>= 19.0.0' + react: '>= 16.8.0' + react-dom: '*' + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + + react-icons@4.7.1: + resolution: {integrity: sha512-yHd3oKGMgm7zxo3EA7H2n7vxSoiGmHk5t6Ou4bXsfcgWyhfDKMpyKfhHR6Bjnn63c+YXBLBPUql9H4wPJM6sXw==} + peerDependencies: + react: '*' + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + + react-is@18.1.0: + resolution: {integrity: sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==} + + react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + + react-jwt@1.1.8: + resolution: {integrity: sha512-e6OPgkQutK8oZpAt7mPi2PcRVpev1c1JxvFwgLyGijVRznqNLWnYgMuW00THdzWPh6m7hzqhimz3UY7VfY1sEw==} + engines: {node: '>=10'} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 + + react-lifecycles-compat@3.0.4: + resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} + + react-load-script@0.0.6: + resolution: {integrity: sha512-aRGxDGP9VoLxcsaYvKWIW+LRrMOzz2eEcubTS4NvQPPugjk2VvMhow0wWTkSl7RxookomD1MwcP4l5UStg5ShQ==} + deprecated: abandoned and unmaintained + peerDependencies: + prop-types: '>=15' + react: '>=0.14.9' + + react-native-segmented-control-tab@3.4.1: + resolution: {integrity: sha512-BNPdlE9Unr0Xabewn8W+FhBMLjssXy9Ey7S7AY0hXlrKrEKFdC9z0yT+eEWd5dLam4T6T4IuGL8b7ZF4uGyWNw==} + + react-redux-form@1.16.14: + resolution: {integrity: sha512-exd8FoWwJRQynjnYqCLmcbwcqgRPyU+qiKmTA7/T8qlNgyqgmbAgkYNe9NG9FYb5oLgHAtx5vDhVEpje888lIA==} + peerDependencies: + react: ^15.3.0 || ^16.0.0 + react-dom: ^0.14.7 || ^15.0.0 || ^16.0.0 + react-redux: ^4.0.0 || ^5.0.3 || ^7.0.0 + redux: ^3.0.0 || ^4.0.0 + + react-redux@7.2.9: + resolution: {integrity: sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==} + peerDependencies: + react: ^16.8.3 || ^17 || ^18 + react-dom: '*' + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + + react-refresh@0.14.0: + resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} + engines: {node: '>=0.10.0'} + + react-resize-detector@7.1.2: + resolution: {integrity: sha512-zXnPJ2m8+6oq9Nn8zsep/orts9vQv3elrpA+R8XTcW7DVVUJ9vwDwMXaBtykAYjMnkCIaOoK9vObyR7ZgFNlOw==} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 + + react-router-dom@4.3.1: + resolution: {integrity: sha512-c/MlywfxDdCp7EnB7YfPMOfMD3tOtIjrQlj/CKfNMBxdmpJP8xcz5P/UAFn3JbnQCNUxsHyVVqllF9LhgVyFCA==} + peerDependencies: + react: '>=15' + + react-router@4.3.1: + resolution: {integrity: sha512-yrvL8AogDh2X42Dt9iknk4wF4V8bWREPirFfS9gLU1huk6qK41sg7Z/1S81jjTrGHxa3B8R3J6xIkDAA6CVarg==} + peerDependencies: + react: '>=15' + + react-select-event@5.5.1: + resolution: {integrity: sha512-goAx28y0+iYrbqZA2FeRTreHHs/ZtSuKxtA+J5jpKT5RHPCbVZJ4MqACfPnWyFXsEec+3dP5bCrNTxIX8oYe9A==} + + react-select@5.7.0: + resolution: {integrity: sha512-lJGiMxCa3cqnUr2Jjtg9YHsaytiZqeNOKeibv6WF5zbK/fPegZ1hg3y/9P1RZVLhqBTs0PfqQLKuAACednYGhQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + + react-smooth@2.0.3: + resolution: {integrity: sha512-yl4y3XiMorss7ayF5QnBiSprig0+qFHui8uh7Hgg46QX5O+aRMRKlfGGNGLHno35JkQSvSYY8eCWkBfHfrSHfg==} + peerDependencies: + prop-types: ^15.6.0 + react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + + react-table@6.11.5: + resolution: {integrity: sha512-LM+AS9v//7Y7lAlgTWW/cW6Sn5VOb3EsSkKQfQTzOW8FngB1FUskLLNEVkAYsTX9LjOWR3QlGjykJqCE6eXT/g==} + peerDependencies: + prop-types: ^15.7.0 + react: ^16.x.x + react-dom: ^16.x.x + + react-transition-group@2.9.0: + resolution: {integrity: sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==} + peerDependencies: + react: '>=15.0.0' + react-dom: '>=15.0.0' + + react-transition-group@4.4.5: + resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} + peerDependencies: + react: '>=16.6.0' + react-dom: '>=16.6.0' + + react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} + + readable-stream@1.1.14: + resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + recast@0.23.9: + resolution: {integrity: sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==} + engines: {node: '>= 4'} + + recharts-scale@0.4.5: + resolution: {integrity: sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==} + + recharts@2.1.16: + resolution: {integrity: sha512-aYn1plTjYzRCo3UGxtWsduslwYd+Cuww3h/YAAEoRdGe0LRnBgYgaXSlVrNFkWOOSXrBavpmnli9h7pvRuk5wg==} + engines: {node: '>=12'} + peerDependencies: + prop-types: ^15.6.0 + react: ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 + + redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + + reduce-css-calc@2.1.8: + resolution: {integrity: sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg==} + + redux-persist@6.0.0: + resolution: {integrity: sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ==} + peerDependencies: + react: '>=16' + redux: '>4.0.0' + peerDependenciesMeta: + react: + optional: true + + redux-saga@1.2.1: + resolution: {integrity: sha512-fVCicLlf4hLP+KB6H7RHfZlZ8LdYckhaemXBB3wh//a2ESyz/z/l8ygxlm0OqPjS/PARdsQ2hIdAltxEB+NgvA==} + + redux-thunk@2.4.2: + resolution: {integrity: sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==} + peerDependencies: + redux: ^4 + + redux@4.2.0: + resolution: {integrity: sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA==} + + regenerate-unicode-properties@10.1.0: + resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} + engines: {node: '>=4'} + + regenerate-unicode-properties@10.2.0: + resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} + engines: {node: '>=4'} + + regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + + regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + + regenerator-runtime@0.14.0: + resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} + + regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + + regexp.prototype.flags@1.5.0: + resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} + engines: {node: '>= 0.4'} + + regexpp@3.2.0: + resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + engines: {node: '>=8'} + + regexpu-core@5.3.2: + resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} + engines: {node: '>=4'} + + regexpu-core@6.1.1: + resolution: {integrity: sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==} + engines: {node: '>=4'} + + regjsgen@0.8.0: + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} + + regjsparser@0.11.1: + resolution: {integrity: sha512-1DHODs4B8p/mQHU9kr+jv8+wIC9mtG4eBHxWxIq5mhjE3D5oORhCc6deRKzTjs9DcfRFmj9BHSDguZklqCGFWQ==} + hasBin: true + + regjsparser@0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true + + rehype-external-links@3.0.0: + resolution: {integrity: sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw==} + + rehype-slug@6.0.0: + resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==} + + release-zalgo@1.0.0: + resolution: {integrity: sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==} + engines: {node: '>=4'} + + remark-gfm@4.0.0: + resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} + + remark-mdx@2.3.0: + resolution: {integrity: sha512-g53hMkpM0I98MU266IzDFMrTD980gNF3BJnkyFcmN+dD873mQeD5rdMO3Y2X+x8umQfbSE0PcoEDl7ledSA+2g==} + + remark-parse@10.0.2: + resolution: {integrity: sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==} + + remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + + remark-rehype@10.1.0: + resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==} + + remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + + remove-bom-buffer@3.0.0: + resolution: {integrity: sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==} + engines: {node: '>=0.10.0'} + + remove-bom-stream@1.2.0: + resolution: {integrity: sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==} + engines: {node: '>= 0.10'} + + remove-trailing-separator@1.1.0: + resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} + + replace-ext@1.0.1: + resolution: {integrity: sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==} + engines: {node: '>= 0.10'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + + requireindex@1.2.0: + resolution: {integrity: sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==} + engines: {node: '>=0.10.5'} + + reselect@4.1.7: + resolution: {integrity: sha512-Zu1xbUt3/OPwsXL46hvOOoQrap2azE7ZQbokq61BQfiXvhewsKDwhMeZjTX9sX0nvw1t/U5Audyn1I9P/m9z0A==} + + resize-observer-polyfill@1.5.1: + resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} + + resolve-alpn@1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + + resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + + resolve-dir@0.1.1: + resolution: {integrity: sha512-QxMPqI6le2u0dCLyiGzgy92kjkkL6zO0XyvHzjdTNH3zM6e5Hz3BwG6+aEyNgiQ5Xz6PwTwgQEj3U50dByPKIA==} + engines: {node: '>=0.10.0'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-options@1.1.0: + resolution: {integrity: sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==} + engines: {node: '>= 0.10'} + + resolve-pathname@3.0.0: + resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==} + + resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} + + resolve@1.22.2: + resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} + hasBin: true + + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + resolve@2.0.0-next.4: + resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} + hasBin: true + + responselike@2.0.1: + resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} + + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + + ret@0.1.15: + resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} + engines: {node: '>=0.12'} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rfdc@1.3.0: + resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} + + rimraf@2.6.3: + resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + robust-predicates@3.0.2: + resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} + + rollup-plugin-terser@7.0.2: + resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==} + deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser + peerDependencies: + rollup: ^2.0.0 + + rollup@2.79.1: + resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} + engines: {node: '>=10.0.0'} + hasBin: true + + rollup@3.25.3: + resolution: {integrity: sha512-ZT279hx8gszBj9uy5FfhoG4bZx8c+0A1sbqtr7Q3KNWIizpTdDEPZbV2xcbvHsnFp4MavCQYZyzApJ+virB8Yw==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + + rollup@3.29.5: + resolution: {integrity: sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + + rrule@2.7.2: + resolution: {integrity: sha512-NkBsEEB6FIZOZ3T8frvEBOB243dm46SPufpDckY/Ap/YH24V1zLeMmDY8OA10lk452NdrF621+ynDThE7FQU2A==} + + rsvp@3.2.1: + resolution: {integrity: sha512-Rf4YVNYpKjZ6ASAmibcwTNciQ5Co5Ztq6iZPEykHpkoflnD/K5ryE/rHehFsTm4NJj8nKDhbi3eKBWGogmNnkg==} + + rsvp@4.8.5: + resolution: {integrity: sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==} + engines: {node: 6.* || >= 7.*} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + rw@1.3.3: + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + + rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + + sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-regex-test@1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sass@1.56.1: + resolution: {integrity: sha512-VpEyKpyBPCxE7qGDtOcdJ6fFbcpOM+Emu7uZLxVrkX8KVU/Dp5UF7WLvzqRuUhB6mqqQt1xffLoG+AndxTZrCQ==} + engines: {node: '>=12.0.0'} + hasBin: true + + scheduler@0.23.0: + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + + schema-utils@2.7.1: + resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==} + engines: {node: '>= 8.9.0'} + + schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + + selderee@0.6.0: + resolution: {integrity: sha512-ibqWGV5aChDvfVdqNYuaJP/HnVBhlRGSRrlbttmlMpHcLuTqqbMH36QkSs9GEgj5M88JDYLI8eyP94JaQ8xRlg==} + + semver@7.5.3: + resolution: {integrity: sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==} + engines: {node: '>=10'} + hasBin: true + + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + send@0.19.0: + resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} + engines: {node: '>= 0.8.0'} + + serialize-javascript@4.0.0: + resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} + + serialize-javascript@6.0.1: + resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} + + serve-static@1.16.2: + resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} + engines: {node: '>= 0.8.0'} + + set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + + set-function-length@1.1.1: + resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} + engines: {node: '>= 0.4'} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} + + shallow-compare@1.2.2: + resolution: {integrity: sha512-LUMFi+RppPlrHzbqmFnINTrazo0lPNwhcgzuAXVVcfy/mqPDrQmHAyz5bvV0gDAuRFrk804V0HpQ6u9sZ0tBeg==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + + side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} + + slice-ansi@3.0.0: + resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} + engines: {node: '>=8'} + + slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + + slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + + sort-keys@4.2.0: + resolution: {integrity: sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==} + engines: {node: '>=8'} + + source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + + source-map@0.8.0-beta.0: + resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} + engines: {node: '>= 8'} + + sourcemap-codec@1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + deprecated: Please use @jridgewell/sourcemap-codec instead + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + spawn-wrap@2.0.0: + resolution: {integrity: sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==} + engines: {node: '>=8'} + + spawnd@5.0.0: + resolution: {integrity: sha512-28+AJr82moMVWolQvlAIv3JcYDkjkFTEmfDc503wxrF5l2rQ3dFz6DpbXp3kD4zmgGGldfM4xM4v1sFj/ZaIOA==} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + sprintf-js@1.1.2: + resolution: {integrity: sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==} + + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + std-env@3.4.3: + resolution: {integrity: sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==} + + stop-iteration-iterator@1.0.0: + resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} + engines: {node: '>= 0.4'} + + storybook@8.2.8: + resolution: {integrity: sha512-sh4CNCXkieVgJ5GXrCOESS0BjRbQ9wG7BVnurQPl6izNnB9zR8rag+aUmjPZWBwbj55V1BFA5A/vEsCov21qjg==} + hasBin: true + + stream-shift@1.0.1: + resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} + + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + + string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + + string-length@5.0.1: + resolution: {integrity: sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==} + engines: {node: '>=12.20'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string.prototype.matchall@4.0.8: + resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} + + string.prototype.trim@1.2.7: + resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.6: + resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} + + string.prototype.trimstart@1.0.6: + resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} + + string_decoder@0.10.31: + resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + stringify-entities@4.0.3: + resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} + + stringify-object@3.3.0: + resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} + engines: {node: '>=4'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + + strip-comments@2.0.1: + resolution: {integrity: sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==} + engines: {node: '>=10'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + + strip-indent@4.0.0: + resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} + engines: {node: '>=12'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + strip-literal@1.3.0: + resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} + + style-to-object@0.4.1: + resolution: {integrity: sha512-HFpbb5gr2ypci7Qw+IOhnP2zOU7e77b+rzM+wTzXzfi1PrtBCX0E7Pk4wL4iTLnhzZ+JgEGAhX81ebTg/aYjQw==} + + style-value-types@5.0.0: + resolution: {integrity: sha512-08yq36Ikn4kx4YU6RD7jWEv27v4V+PUsOGa4n/as8Et3CuODMJQ00ENeAVXAeydX4Z2j1XHZF1K2sX4mGl18fA==} + + stylis@4.1.3: + resolution: {integrity: sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==} + + stylis@4.2.0: + resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} + + supercluster@7.1.5: + resolution: {integrity: sha512-EulshI3pGUM66o6ZdH3ReiFcvHpM3vAigyK+vcxdjpJyEbIIrtbmBdY23mGgnI24uXiGFvrGq9Gkum/8U7vJWg==} + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-color@9.3.1: + resolution: {integrity: sha512-knBY82pjmnIzK3NifMo3RxEIRD9E0kIzV4BKcyTZ9+9kWgLMxd4PrsTSMoFQUabgRBbF8KOLRDCyKgNV+iK44Q==} + engines: {node: '>=12'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + svg-parser@2.0.4: + resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} + + symlink-or-copy@1.3.1: + resolution: {integrity: sha512-0K91MEXFpBUaywiwSSkmKjnGcasG/rVBXFLJz5DrgGabpYD6N+3yZrfD6uUIfpuTu65DZLHi7N8CizHc07BPZA==} + + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + tar@6.1.15: + resolution: {integrity: sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==} + engines: {node: '>=10'} + + telejson@7.2.0: + resolution: {integrity: sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==} + + temp-dir@2.0.0: + resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} + engines: {node: '>=8'} + + temp-dir@3.0.0: + resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} + engines: {node: '>=14.16'} + + temp@0.8.4: + resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} + engines: {node: '>=6.0.0'} + + tempy@0.6.0: + resolution: {integrity: sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==} + engines: {node: '>=10'} + + tempy@3.1.0: + resolution: {integrity: sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==} + engines: {node: '>=14.16'} + + terser-webpack-plugin@5.3.9: + resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true - /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.20.5): - resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.20.5) - '@babel/helper-plugin-utils': 7.22.5 - dev: true + terser@5.18.2: + resolution: {integrity: sha512-Ah19JS86ypbJzTzvUCX7KOsEIhDaRONungA4aYBjEP3JZRf4ocuDzTg4QWZnPn9DEMiMYGJPiSOy7aykoCc70w==} + engines: {node: '>=10'} + hasBin: true - /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.22.5): - resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 - dev: true + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} - /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.2): - resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.23.2) - '@babel/helper-plugin-utils': 7.22.5 - dev: true + text-segmentation@1.0.3: + resolution: {integrity: sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==} - /@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - /@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + through2-filter@3.0.0: + resolution: {integrity: sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==} - /@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} - /@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + through2@4.0.2: + resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} - /@babel/plugin-transform-async-generator-functions@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-gGOEvFzm3fWoyD5uZq7vVTD57pPJ3PczPUD/xCFGjzBpUosnklmXyKnGQbbbGs1NPNPskFex0j93yKbHt0cHyg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.20.5) - transitivePeerDependencies: - - supports-color - dev: true + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - /@babel/plugin-transform-async-generator-functions@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-gGOEvFzm3fWoyD5uZq7vVTD57pPJ3PczPUD/xCFGjzBpUosnklmXyKnGQbbbGs1NPNPskFex0j93yKbHt0cHyg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.5) - transitivePeerDependencies: - - supports-color - dev: true + tiny-invariant@1.3.1: + resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} - /@babel/plugin-transform-async-generator-functions@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-gGOEvFzm3fWoyD5uZq7vVTD57pPJ3PczPUD/xCFGjzBpUosnklmXyKnGQbbbGs1NPNPskFex0j93yKbHt0cHyg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.2) - transitivePeerDependencies: - - supports-color - dev: true + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} - /@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-module-imports': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.5(@babel/core@7.20.5) - transitivePeerDependencies: - - supports-color - dev: true + tiny-warning@1.0.3: + resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} - /@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-module-imports': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.5(@babel/core@7.21.8) - transitivePeerDependencies: - - supports-color - dev: true + tinybench@2.5.1: + resolution: {integrity: sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==} - /@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-module-imports': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.5(@babel/core@7.22.5) - transitivePeerDependencies: - - supports-color - dev: true + tinypool@0.7.0: + resolution: {integrity: sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==} + engines: {node: '>=14.0.0'} - /@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-module-imports': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.5(@babel/core@7.23.2) - transitivePeerDependencies: - - supports-color - dev: true + tinyspy@2.2.0: + resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} + engines: {node: '>=14.0.0'} - /@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + tlds@1.231.0: + resolution: {integrity: sha512-L7UQwueHSkGxZHQBXHVmXW64oi+uqNtzFt2x6Ssk7NVnpIbw16CRs4eb/jmKOZ9t2JnqZ/b3Cfvo97lnXqKrhw==} + hasBin: true - /@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - /@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + to-absolute-glob@2.0.2: + resolution: {integrity: sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==} + engines: {node: '>=0.10.0'} - /@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} - /@babel/plugin-transform-block-scoping@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} - /@babel/plugin-transform-block-scoping@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + to-through@2.0.0: + resolution: {integrity: sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==} + engines: {node: '>= 0.10'} - /@babel/plugin-transform-block-scoping@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} - /@babel/plugin-transform-block-scoping@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + tr46@1.0.1: + resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} - /@babel/plugin-transform-class-properties@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.20.5) - '@babel/helper-plugin-utils': 7.22.5 - transitivePeerDependencies: - - supports-color - dev: true + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true - /@babel/plugin-transform-class-properties@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 - transitivePeerDependencies: - - supports-color - dev: true + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - /@babel/plugin-transform-class-properties@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.23.2) - '@babel/helper-plugin-utils': 7.22.5 - transitivePeerDependencies: - - supports-color - dev: true + trough@2.1.0: + resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} - /@babel/plugin-transform-class-static-block@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==} - engines: {node: '>=6.9.0'} + ts-dedent@2.2.0: + resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} + engines: {node: '>=6.10'} + + tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + tslib@2.6.0: + resolution: {integrity: sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==} + + tslib@2.8.0: + resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==} + + tsutils@3.21.0: + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} peerDependencies: - '@babel/core': ^7.12.0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.20.5) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.20.5) - transitivePeerDependencies: - - supports-color - dev: true + 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' + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + type-fest@0.16.0: + resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} + engines: {node: '>=10'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + + type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + + type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} - /@babel/plugin-transform-class-static-block@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.5) - transitivePeerDependencies: - - supports-color - dev: true + type-fest@3.12.0: + resolution: {integrity: sha512-qj9wWsnFvVEMUDbESiilKeXeHL7FwwiFcogfhfyjmvT968RXSvnl23f1JOClTHYItsi7o501C/7qVllscUP3oA==} + engines: {node: '>=14.16'} - /@babel/plugin-transform-class-static-block@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.23.2) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.2) - transitivePeerDependencies: - - supports-color - dev: true + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} - /@babel/plugin-transform-classes@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-2edQhLfibpWpsVBx2n/GKOz6JdGQvLruZQfGr9l1qes2KQaWswjBzhQF7UDUZMNaMMQeYnQzxwOMPsbYF7wqPQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.20.5) - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.5 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true + type@1.2.0: + resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==} - /@babel/plugin-transform-classes@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-2edQhLfibpWpsVBx2n/GKOz6JdGQvLruZQfGr9l1qes2KQaWswjBzhQF7UDUZMNaMMQeYnQzxwOMPsbYF7wqPQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.21.8) - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.5 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true + type@2.7.2: + resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} - /@babel/plugin-transform-classes@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-2edQhLfibpWpsVBx2n/GKOz6JdGQvLruZQfGr9l1qes2KQaWswjBzhQF7UDUZMNaMMQeYnQzxwOMPsbYF7wqPQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.5 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true + typed-array-length@1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} - /@babel/plugin-transform-classes@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-2edQhLfibpWpsVBx2n/GKOz6JdGQvLruZQfGr9l1qes2KQaWswjBzhQF7UDUZMNaMMQeYnQzxwOMPsbYF7wqPQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.23.2) - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.5 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true + typedarray-to-buffer@3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - /@babel/plugin-transform-computed-properties@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/template': 7.22.5 - dev: true + typedarray@0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - /@babel/plugin-transform-computed-properties@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/template': 7.22.5 - dev: true + typescript-compare@0.0.2: + resolution: {integrity: sha512-8ja4j7pMHkfLJQO2/8tut7ub+J3Lw2S3061eJLFQcvs3tsmJKp8KG5NtpLn7KcY2w08edF74BSVN7qJS0U6oHA==} - /@babel/plugin-transform-computed-properties@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/template': 7.22.5 - dev: true + typescript-logic@0.0.0: + resolution: {integrity: sha512-zXFars5LUkI3zP492ls0VskH3TtdeHCqu0i7/duGt60i5IGPIpAHE/DWo5FqJ6EjQ15YKXrt+AETjv60Dat34Q==} - /@babel/plugin-transform-computed-properties@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/template': 7.22.5 - dev: true + typescript-tuple@2.2.1: + resolution: {integrity: sha512-Zcr0lbt8z5ZdEzERHAMAniTiIKerFCMgd7yjq1fPnDJ43et/k9twIFQMUYff9k5oXcsQ0WpvFcgzK2ZKASoW6Q==} - /@babel/plugin-transform-destructuring@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + typescript@4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} + engines: {node: '>=4.2.0'} + hasBin: true - /@babel/plugin-transform-destructuring@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + uc.micro@1.0.6: + resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} - /@babel/plugin-transform-destructuring@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + ufo@1.3.1: + resolution: {integrity: sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==} - /@babel/plugin-transform-destructuring@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} - /@babel/plugin-transform-dotall-regex@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.20.5) - '@babel/helper-plugin-utils': 7.22.5 - dev: true + unc-path-regex@0.1.2: + resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==} + engines: {node: '>=0.10.0'} - /@babel/plugin-transform-dotall-regex@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.21.8) - '@babel/helper-plugin-utils': 7.22.5 - dev: true + underscore.string@3.3.6: + resolution: {integrity: sha512-VoC83HWXmCrF6rgkyxS9GHv8W9Q5nhMKho+OadDJGzL2oDYbYEppBaCMH6pFlwLeqj2QS+hhkw2kpXkSdD1JxQ==} - /@babel/plugin-transform-dotall-regex@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 - dev: true + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - /@babel/plugin-transform-dotall-regex@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.23.2) - '@babel/helper-plugin-utils': 7.22.5 - dev: true + unicode-canonical-property-names-ecmascript@2.0.0: + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + engines: {node: '>=4'} - /@babel/plugin-transform-duplicate-keys@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} - /@babel/plugin-transform-duplicate-keys@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + unicode-match-property-value-ecmascript@2.1.0: + resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + engines: {node: '>=4'} - /@babel/plugin-transform-duplicate-keys@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} - /@babel/plugin-transform-duplicate-keys@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} - /@babel/plugin-transform-dynamic-import@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.20.5) - dev: true + unified@10.1.2: + resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} - /@babel/plugin-transform-dynamic-import@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.5) - dev: true + unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} - /@babel/plugin-transform-dynamic-import@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.2) - dev: true + unique-stream@2.3.1: + resolution: {integrity: sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==} - /@babel/plugin-transform-exponentiation-operator@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + unique-string@2.0.0: + resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} + engines: {node: '>=8'} - /@babel/plugin-transform-exponentiation-operator@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + unique-string@3.0.0: + resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} + engines: {node: '>=12'} - /@babel/plugin-transform-exponentiation-operator@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + unist-util-generated@2.0.1: + resolution: {integrity: sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==} - /@babel/plugin-transform-exponentiation-operator@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + unist-util-is@5.2.1: + resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} - /@babel/plugin-transform-export-namespace-from@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.20.5) - dev: true + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} - /@babel/plugin-transform-export-namespace-from@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.5) - dev: true + unist-util-position-from-estree@1.1.2: + resolution: {integrity: sha512-poZa0eXpS+/XpoQwGwl79UUdea4ol2ZuCYguVaJS4qzIOMDzbqz8a3erUCOmubSZkaOuGamb3tX790iwOIROww==} - /@babel/plugin-transform-export-namespace-from@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.2) - dev: true + unist-util-position@4.0.4: + resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==} - /@babel/plugin-transform-flow-strip-types@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.5) - dev: true + unist-util-remove-position@4.0.2: + resolution: {integrity: sha512-TkBb0HABNmxzAcfLf4qsIbFbaPDvMO6wa3b3j4VcEzFVaw1LBKwnW4/sRJ/atSLSzoIg41JWEdnE7N6DIhGDGQ==} - /@babel/plugin-transform-for-of@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + unist-util-stringify-position@3.0.3: + resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} - /@babel/plugin-transform-for-of@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} - /@babel/plugin-transform-for-of@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + unist-util-visit-parents@5.1.3: + resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} - /@babel/plugin-transform-for-of@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} - /@babel/plugin-transform-function-name@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.20.5) - '@babel/helper-function-name': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + unist-util-visit@4.1.2: + resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} - /@babel/plugin-transform-function-name@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.21.8) - '@babel/helper-function-name': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} - /@babel/plugin-transform-function-name@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) - '@babel/helper-function-name': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} - /@babel/plugin-transform-function-name@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.23.2) - '@babel/helper-function-name': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + universalify@2.0.0: + resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} + engines: {node: '>= 10.0.0'} - /@babel/plugin-transform-json-strings@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.20.5) - dev: true + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} - /@babel/plugin-transform-json-strings@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==} - engines: {node: '>=6.9.0'} + unplugin@1.14.1: + resolution: {integrity: sha512-lBlHbfSFPToDYp9pjXlUEFVxYLaue9f9T1HC+4OHlmj+HnMDdz9oZY+erXfoCe/5V/7gKUSY2jpXPb9S7f0f/w==} + engines: {node: '>=14.0.0'} peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.5) - dev: true + webpack-sources: ^3 + peerDependenciesMeta: + webpack-sources: + optional: true - /@babel/plugin-transform-json-strings@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.2) - dev: true + upath@1.2.0: + resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} + engines: {node: '>=4'} - /@babel/plugin-transform-literals@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==} - engines: {node: '>=6.9.0'} + update-browserslist-db@1.0.11: + resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} + hasBin: true peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + browserslist: '>= 4.21.0' - /@babel/plugin-transform-literals@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==} - engines: {node: '>=6.9.0'} + update-browserslist-db@1.1.1: + resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} + hasBin: true peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + browserslist: '>= 4.21.0' - /@babel/plugin-transform-literals@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - /@babel/plugin-transform-literals@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==} - engines: {node: '>=6.9.0'} + use-isomorphic-layout-effect@1.1.2: + resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true - /@babel/plugin-transform-logical-assignment-operators@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.20.5) - dev: true + utf7@1.0.2: + resolution: {integrity: sha512-qQrPtYLLLl12NF4DrM9CvfkxkYI97xOb5dsnGZHE3teFr0tWiEZ9UdgMPczv24vl708cYMpe6mGXGHrotIp3Bw==} - /@babel/plugin-transform-logical-assignment-operators@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.5) - dev: true + utf8@2.1.2: + resolution: {integrity: sha512-QXo+O/QkLP/x1nyi54uQiG0XrODxdysuQvE5dtVqv7F5K2Qb6FsN+qbr6KhF5wQ20tfcV3VQp0/2x1e1MRSPWg==} - /@babel/plugin-transform-logical-assignment-operators@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.2) - dev: true + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - /@babel/plugin-transform-member-expression-literals@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} - /@babel/plugin-transform-member-expression-literals@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} - /@babel/plugin-transform-member-expression-literals@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + utrie@1.0.2: + resolution: {integrity: sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==} - /@babel/plugin-transform-member-expression-literals@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + uuencode@0.0.4: + resolution: {integrity: sha512-yEEhCuCi5wRV7Z5ZVf9iV2gWMvUZqKJhAs1ecFdKJ0qzbyaVelmsE3QjYAamehfp9FKLiZbKldd+jklG3O0LfA==} - /@babel/plugin-transform-modules-amd@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-module-transforms': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - transitivePeerDependencies: - - supports-color - dev: true + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true - /@babel/plugin-transform-modules-amd@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-module-transforms': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - transitivePeerDependencies: - - supports-color - dev: true + uuid@9.0.0: + resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} + hasBin: true - /@babel/plugin-transform-modules-amd@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-module-transforms': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - transitivePeerDependencies: - - supports-color - dev: true + uvu@0.5.6: + resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} + engines: {node: '>=8'} + hasBin: true - /@babel/plugin-transform-modules-amd@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-module-transforms': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - transitivePeerDependencies: - - supports-color - dev: true + v8-to-istanbul@9.1.0: + resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} + engines: {node: '>=10.12.0'} - /@babel/plugin-transform-modules-commonjs@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-module-transforms': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-simple-access': 7.22.5 - transitivePeerDependencies: - - supports-color - dev: true + value-equal@1.0.1: + resolution: {integrity: sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==} - /@babel/plugin-transform-modules-commonjs@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-module-transforms': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-simple-access': 7.22.5 - transitivePeerDependencies: - - supports-color - dev: true + value-or-function@3.0.0: + resolution: {integrity: sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==} + engines: {node: '>= 0.10'} - /@babel/plugin-transform-modules-commonjs@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-module-transforms': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-simple-access': 7.22.5 - transitivePeerDependencies: - - supports-color - dev: true + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} - /@babel/plugin-transform-modules-commonjs@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-module-transforms': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-simple-access': 7.22.5 - transitivePeerDependencies: - - supports-color - dev: true + vfile-message@3.1.4: + resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} - /@babel/plugin-transform-modules-systemjs@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-identifier': 7.22.20 - transitivePeerDependencies: - - supports-color - dev: true + vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} - /@babel/plugin-transform-modules-systemjs@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-identifier': 7.22.20 - transitivePeerDependencies: - - supports-color - dev: true + vfile@5.3.7: + resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} - /@babel/plugin-transform-modules-systemjs@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-identifier': 7.22.20 - transitivePeerDependencies: - - supports-color - dev: true + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - /@babel/plugin-transform-modules-systemjs@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-identifier': 7.22.20 - transitivePeerDependencies: - - supports-color - dev: true + vinyl-fs@3.0.3: + resolution: {integrity: sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==} + engines: {node: '>= 0.10'} - /@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-module-transforms': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - transitivePeerDependencies: - - supports-color - dev: true + vinyl-sourcemap@1.1.0: + resolution: {integrity: sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==} + engines: {node: '>= 0.10'} - /@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-module-transforms': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - transitivePeerDependencies: - - supports-color - dev: true + vinyl@2.2.1: + resolution: {integrity: sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==} + engines: {node: '>= 0.10'} - /@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-module-transforms': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - transitivePeerDependencies: - - supports-color - dev: true + vite-node@0.34.5: + resolution: {integrity: sha512-RNZ+DwbCvDoI5CbCSQSyRyzDTfFvFauvMs6Yq4ObJROKlIKuat1KgSX/Ako5rlDMfVCyMcpMRMTkJBxd6z8YRA==} + engines: {node: '>=v14.18.0'} + hasBin: true - /@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==} - engines: {node: '>=6.9.0'} + vite-plugin-istanbul@4.0.0: + resolution: {integrity: sha512-r5TUlEprFyp+L+by/waG1RsIMiqfy7LBAZvheFlXjxzm69146rHGW6bh9TDzXg7wJB6DsyjqKFtvAX50d/I/IQ==} peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-module-transforms': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - transitivePeerDependencies: - - supports-color - dev: true + vite: '>=2.9.1 <= 5' - /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} - engines: {node: '>=6.9.0'} + vite-plugin-pwa@0.14.3: + resolution: {integrity: sha512-o/CEzdHXamdSV4WJ6hp1EQNe+yVvoFf9b5q1nMhOSqKxaW7BaDqAHAwnq8jt21wakDmcaipnuF3/j78AzZJ6wg==} peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.20.5) - '@babel/helper-plugin-utils': 7.22.5 - dev: true + vite: ^3.1.0 || ^4.0.0 + workbox-build: ^6.5.4 + workbox-window: ^6.5.4 - /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} - engines: {node: '>=6.9.0'} + vite-plugin-svgr@2.4.0: + resolution: {integrity: sha512-q+mJJol6ThvqkkJvvVFEndI4EaKIjSI0I3jNFgSoC9fXAz1M7kYTVUin8fhUsFojFDKZ9VHKtX6NXNaOLpbsHA==} peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.21.8) - '@babel/helper-plugin-utils': 7.22.5 - dev: true + vite: ^2.6.0 || 3 || 4 - /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} - engines: {node: '>=6.9.0'} + vite@4.5.5: + resolution: {integrity: sha512-ifW3Lb2sMdX+WU91s3R0FyQlAyLxOzCSCP37ujw0+r5POeHPwe6udWVIElKQq8gk3t7b8rkmvqC6IHBpCff4GQ==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@types/node': '>= 14' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true - /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} - engines: {node: '>=6.9.0'} + vitest@0.34.5: + resolution: {integrity: sha512-CPI68mmnr2DThSB3frSuE5RLm9wo5wU4fbDrDwWQQB1CWgq9jQVoQwnQSzYAjdoBOPoH2UtXpOgHVge/uScfZg==} + engines: {node: '>=v14.18.0'} + hasBin: true peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.23.2) - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@edge-runtime/vm': '*' + '@vitest/browser': '*' + '@vitest/ui': '*' + happy-dom: '*' + jsdom: '*' + playwright: '*' + safaridriver: '*' + webdriverio: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + playwright: + optional: true + safaridriver: + optional: true + webdriverio: + optional: true - /@babel/plugin-transform-new-target@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + void-elements@3.1.0: + resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} + engines: {node: '>=0.10.0'} - /@babel/plugin-transform-new-target@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + vscode-json-languageservice@4.2.1: + resolution: {integrity: sha512-xGmv9QIWs2H8obGbWg+sIPI/3/pFgj/5OWBhNzs00BkYQ9UaB2F6JJaGB/2/YOZJ3BvLXQTC4Q7muqU25QgAhA==} - /@babel/plugin-transform-new-target@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + vscode-languageserver-textdocument@1.0.11: + resolution: {integrity: sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==} - /@babel/plugin-transform-new-target@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + vscode-languageserver-types@3.17.5: + resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} - /@babel/plugin-transform-nullish-coalescing-operator@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.20.5) - dev: true + vscode-nls@5.2.0: + resolution: {integrity: sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==} - /@babel/plugin-transform-nullish-coalescing-operator@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.5) - dev: true + vscode-uri@3.0.8: + resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} - /@babel/plugin-transform-nullish-coalescing-operator@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.2) - dev: true + vue-template-compiler@2.7.14: + resolution: {integrity: sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==} - /@babel/plugin-transform-numeric-separator@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.20.5) - dev: true + wait-on@7.2.0: + resolution: {integrity: sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ==} + engines: {node: '>=12.0.0'} + hasBin: true - /@babel/plugin-transform-numeric-separator@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.5) - dev: true + wait-port@0.2.14: + resolution: {integrity: sha512-kIzjWcr6ykl7WFbZd0TMae8xovwqcqbx6FM9l+7agOgUByhzdjfzZBPK2CPufldTOMxbUivss//Sh9MFawmPRQ==} + engines: {node: '>=8'} + hasBin: true - /@babel/plugin-transform-numeric-separator@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.2) - dev: true + walk-sync@2.2.0: + resolution: {integrity: sha512-IC8sL7aB4/ZgFcGI2T1LczZeFWZ06b3zoHH7jBPyHxOtIIz1jppWHjjEXkOFvFojBVAK9pV7g47xOZ4LW3QLfg==} + engines: {node: 8.* || >= 10.*} - /@babel/plugin-transform-object-rest-spread@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.22.5 - '@babel/core': 7.20.5 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.20.5) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.20.5) - '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.20.5) - dev: true + walk-up-path@3.0.1: + resolution: {integrity: sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==} - /@babel/plugin-transform-object-rest-spread@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.22.5 - '@babel/core': 7.22.5 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.22.5) - dev: true + walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + + warning@4.0.3: + resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} + + watchpack@2.4.0: + resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + engines: {node: '>=10.13.0'} + + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - /@babel/plugin-transform-object-rest-spread@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.22.5 - '@babel/core': 7.23.2 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.23.2) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.2) - '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.23.2) - dev: true + webidl-conversions@4.0.2: + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} - /@babel/plugin-transform-object-super@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.5 - transitivePeerDependencies: - - supports-color - dev: true + webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} - /@babel/plugin-transform-object-super@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.5 - transitivePeerDependencies: - - supports-color - dev: true + webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} - /@babel/plugin-transform-object-super@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.5 - transitivePeerDependencies: - - supports-color - dev: true + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - /@babel/plugin-transform-object-super@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==} - engines: {node: '>=6.9.0'} + webpack@5.88.0: + resolution: {integrity: sha512-O3jDhG5e44qIBSi/P6KpcCcH7HD+nYIHVBhdWFxcLOcIGN8zGo5nqF3BjyNCxIh4p1vFdNnreZv2h2KkoAw3lw==} + engines: {node: '>=10.13.0'} + hasBin: true peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.5 - transitivePeerDependencies: - - supports-color - dev: true + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true - /@babel/plugin-transform-optional-catch-binding@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.20.5) - dev: true + whatwg-mimetype@3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} - /@babel/plugin-transform-optional-catch-binding@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.5) - dev: true + whatwg-url@7.1.0: + resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} - /@babel/plugin-transform-optional-catch-binding@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.2) - dev: true + which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - /@babel/plugin-transform-optional-chaining@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-AconbMKOMkyG+xCng2JogMCDcqW8wedQAqpVIL4cOSescZ7+iW8utC6YDZLMCSUIReEA733gzRSaOSXMAt/4WQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.20.5) - dev: true + which-collection@1.0.1: + resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} - /@babel/plugin-transform-optional-chaining@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-AconbMKOMkyG+xCng2JogMCDcqW8wedQAqpVIL4cOSescZ7+iW8utC6YDZLMCSUIReEA733gzRSaOSXMAt/4WQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.8) - dev: true + which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - /@babel/plugin-transform-optional-chaining@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-AconbMKOMkyG+xCng2JogMCDcqW8wedQAqpVIL4cOSescZ7+iW8utC6YDZLMCSUIReEA733gzRSaOSXMAt/4WQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.5) - dev: true + which-typed-array@1.1.13: + resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} + engines: {node: '>= 0.4'} - /@babel/plugin-transform-optional-chaining@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-AconbMKOMkyG+xCng2JogMCDcqW8wedQAqpVIL4cOSescZ7+iW8utC6YDZLMCSUIReEA733gzRSaOSXMAt/4WQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.2) - dev: true + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true - /@babel/plugin-transform-parameters@7.22.5(@babel/core@7.12.9): - resolution: {integrity: sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true - /@babel/plugin-transform-parameters@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + why-is-node-running@2.2.2: + resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + engines: {node: '>=8'} + hasBin: true - /@babel/plugin-transform-parameters@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + word-wrap@1.2.4: + resolution: {integrity: sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==} + engines: {node: '>=0.10.0'} - /@babel/plugin-transform-parameters@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + workbox-background-sync@6.6.0: + resolution: {integrity: sha512-jkf4ZdgOJxC9u2vztxLuPT/UjlH7m/nWRQ/MgGL0v8BJHoZdVGJd18Kck+a0e55wGXdqyHO+4IQTk0685g4MUw==} - /@babel/plugin-transform-parameters@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + workbox-broadcast-update@6.6.0: + resolution: {integrity: sha512-nm+v6QmrIFaB/yokJmQ/93qIJ7n72NICxIwQwe5xsZiV2aI93MGGyEyzOzDPVz5THEr5rC3FJSsO3346cId64Q==} - /@babel/plugin-transform-private-methods@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.20.5) - '@babel/helper-plugin-utils': 7.22.5 - transitivePeerDependencies: - - supports-color - dev: true + workbox-build@6.6.0: + resolution: {integrity: sha512-Tjf+gBwOTuGyZwMz2Nk/B13Fuyeo0Q84W++bebbVsfr9iLkDSo6j6PST8tET9HYA58mlRXwlMGpyWO8ETJiXdQ==} + engines: {node: '>=10.0.0'} - /@babel/plugin-transform-private-methods@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 - transitivePeerDependencies: - - supports-color - dev: true + workbox-cacheable-response@6.6.0: + resolution: {integrity: sha512-JfhJUSQDwsF1Xv3EV1vWzSsCOZn4mQ38bWEBR3LdvOxSPgB65gAM6cS2CX8rkkKHRgiLrN7Wxoyu+TuH67kHrw==} + deprecated: workbox-background-sync@6.6.0 - /@babel/plugin-transform-private-methods@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.23.2) - '@babel/helper-plugin-utils': 7.22.5 - transitivePeerDependencies: - - supports-color - dev: true + workbox-core@6.6.0: + resolution: {integrity: sha512-GDtFRF7Yg3DD859PMbPAYPeJyg5gJYXuBQAC+wyrWuuXgpfoOrIQIvFRZnQ7+czTIQjIr1DhLEGFzZanAT/3bQ==} - /@babel/plugin-transform-private-property-in-object@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.20.5) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.20.5) - transitivePeerDependencies: - - supports-color - dev: true + workbox-expiration@6.6.0: + resolution: {integrity: sha512-baplYXcDHbe8vAo7GYvyAmlS4f6998Jff513L4XvlzAOxcl8F620O91guoJ5EOf5qeXG4cGdNZHkkVAPouFCpw==} - /@babel/plugin-transform-private-property-in-object@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.5) - transitivePeerDependencies: - - supports-color - dev: true + workbox-google-analytics@6.6.0: + resolution: {integrity: sha512-p4DJa6OldXWd6M9zRl0H6vB9lkrmqYFkRQ2xEiNdBFp9U0LhsGO7hsBscVEyH9H2/3eZZt8c97NB2FD9U2NJ+Q==} + deprecated: It is not compatible with newer versions of GA starting with v4, as long as you are using GAv3 it should be ok, but the package is not longer being maintained - /@babel/plugin-transform-private-property-in-object@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.23.2) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.2) - transitivePeerDependencies: - - supports-color - dev: true + workbox-navigation-preload@6.6.0: + resolution: {integrity: sha512-utNEWG+uOfXdaZmvhshrh7KzhDu/1iMHyQOV6Aqup8Mm78D286ugu5k9MFD9SzBT5TcwgwSORVvInaXWbvKz9Q==} - /@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + workbox-precaching@6.6.0: + resolution: {integrity: sha512-eYu/7MqtRZN1IDttl/UQcSZFkHP7dnvr/X3Vn6Iw6OsPMruQHiVjjomDFCNtd8k2RdjLs0xiz9nq+t3YVBcWPw==} - /@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + workbox-range-requests@6.6.0: + resolution: {integrity: sha512-V3aICz5fLGq5DpSYEU8LxeXvsT//mRWzKrfBOIxzIdQnV/Wj7R+LyJVTczi4CQ4NwKhAaBVaSujI1cEjXW+hTw==} - /@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + workbox-recipes@6.6.0: + resolution: {integrity: sha512-TFi3kTgYw73t5tg73yPVqQC8QQjxJSeqjXRO4ouE/CeypmP2O/xqmB/ZFBBQazLTPxILUQ0b8aeh0IuxVn9a6A==} - /@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + workbox-routing@6.6.0: + resolution: {integrity: sha512-x8gdN7VDBiLC03izAZRfU+WKUXJnbqt6PG9Uh0XuPRzJPpZGLKce/FkOX95dWHRpOHWLEq8RXzjW0O+POSkKvw==} - /@babel/plugin-transform-react-display-name@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + workbox-strategies@6.6.0: + resolution: {integrity: sha512-eC07XGuINAKUWDnZeIPdRdVja4JQtTuc35TZ8SwMb1ztjp7Ddq2CJ4yqLvWzFWGlYI7CG/YGqaETntTxBGdKgQ==} - /@babel/plugin-transform-react-display-name@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + workbox-streams@6.6.0: + resolution: {integrity: sha512-rfMJLVvwuED09CnH1RnIep7L9+mj4ufkTyDPVaXPKlhi9+0czCu+SJggWCIFbPpJaAZmp2iyVGLqS3RUmY3fxg==} - /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.20.5) - dev: true + workbox-sw@6.6.0: + resolution: {integrity: sha512-R2IkwDokbtHUE4Kus8pKO5+VkPHD2oqTgl+XJwh4zbF1HyjAbgNmK/FneZHVU7p03XUt9ICfuGDYISWG9qV/CQ==} - /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.22.5) - dev: true + workbox-window@6.6.0: + resolution: {integrity: sha512-L4N9+vka17d16geaJXXRjENLFldvkWy7JyGxElRD0JvBxvFEd8LOhr+uXCcar/NzAmIBRv9EZ+M+Qr4mOoBITw==} - /@babel/plugin-transform-react-jsx-self@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} - /@babel/plugin-transform-react-jsx-self@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} - /@babel/plugin-transform-react-jsx-source@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - /@babel/plugin-transform-react-jsx-source@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + write-file-atomic@2.4.3: + resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} - /@babel/plugin-transform-react-jsx@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-module-imports': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.20.5) - '@babel/types': 7.22.5 - dev: true + write-file-atomic@3.0.3: + resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} - /@babel/plugin-transform-react-jsx@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-module-imports': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.5) - '@babel/types': 7.22.5 - dev: true + write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - /@babel/plugin-transform-react-pure-annotations@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==} - engines: {node: '>=6.9.0'} + ws@8.13.0: + resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + engines: {node: '>=10.0.0'} peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true - /@babel/plugin-transform-react-pure-annotations@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + xml@1.0.1: + resolution: {integrity: sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==} - /@babel/plugin-transform-regenerator@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - regenerator-transform: 0.15.1 - dev: true + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} - /@babel/plugin-transform-regenerator@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - regenerator-transform: 0.15.1 - dev: true + y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - /@babel/plugin-transform-regenerator@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - regenerator-transform: 0.15.1 - dev: true + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} - /@babel/plugin-transform-regenerator@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - regenerator-transform: 0.15.1 - dev: true + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - /@babel/plugin-transform-reserved-words@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - /@babel/plugin-transform-reserved-words@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} - /@babel/plugin-transform-reserved-words@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} - /@babel/plugin-transform-reserved-words@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} - /@babel/plugin-transform-shorthand-properties@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} - /@babel/plugin-transform-shorthand-properties@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} - /@babel/plugin-transform-shorthand-properties@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} - /@babel/plugin-transform-shorthand-properties@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} - /@babel/plugin-transform-spread@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - dev: true + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - /@babel/plugin-transform-spread@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - dev: true +snapshots: - /@babel/plugin-transform-spread@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - dev: true + '@adobe/css-tools@4.3.2': {} - /@babel/plugin-transform-spread@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@ampproject/remapping@2.2.1': dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - dev: true + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 - /@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@apideck/better-ajv-errors@0.3.6(ajv@8.12.0)': dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + ajv: 8.12.0 + json-schema: 0.4.0 + jsonpointer: 5.0.1 + leven: 3.1.0 - /@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/code-frame@7.22.13': dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/highlight': 7.25.9 + chalk: 2.4.2 - /@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/code-frame@7.22.5': dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/highlight': 7.22.5 - /@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/code-frame@7.25.9': dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/highlight': 7.25.9 + picocolors: 1.1.1 - /@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/compat-data@7.22.5': {} - /@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/compat-data@7.25.9': {} - /@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core@7.20.5': dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.22.5 + '@babel/generator': 7.22.5 + '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.20.5) + '@babel/helper-module-transforms': 7.22.5 + '@babel/helpers': 7.22.5 + '@babel/parser': 7.22.5 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.5 + '@babel/types': 7.22.5 + convert-source-map: 1.9.0 + debug: 4.3.4(supports-color@9.3.1) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 7.5.3 + transitivePeerDependencies: + - supports-color - /@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core@7.23.2': + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.23.0 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) + '@babel/helpers': 7.23.2 + '@babel/parser': 7.23.0 + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.2 + '@babel/types': 7.23.0 + convert-source-map: 2.0.0 + debug: 4.3.4(supports-color@9.3.1) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 7.5.3 + transitivePeerDependencies: + - supports-color + + '@babel/core@7.25.9': dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.25.9 + '@babel/generator': 7.25.9 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-module-transforms': 7.25.9(@babel/core@7.25.9) + '@babel/helpers': 7.25.9 + '@babel/parser': 7.25.9 + '@babel/template': 7.25.9 + '@babel/traverse': 7.25.9 + '@babel/types': 7.25.9 + convert-source-map: 2.0.0 + debug: 4.3.4(supports-color@9.3.1) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 7.5.3 + transitivePeerDependencies: + - supports-color - /@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/generator@7.22.5': dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/types': 7.22.5 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 + jsesc: 2.5.2 - /@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/generator@7.23.0': dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/types': 7.25.9 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 - /@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/generator@7.25.9': dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/types': 7.25.9 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.0.2 - /@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/helper-annotate-as-pure@7.22.5': dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/types': 7.25.9 - /@babel/plugin-transform-typescript@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-SMubA9S7Cb5sGSFFUlqxyClTA9zWJ8qGQrppNUm05LtFuN1ELRFNndkix4zUJrC9F+YivWwa1dHMSyo0e0N9dA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/helper-annotate-as-pure@7.25.9': dependencies: - '@babel/core': 7.20.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.20.5) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.20.5) - transitivePeerDependencies: - - supports-color - dev: true + '@babel/types': 7.25.9 - /@babel/plugin-transform-typescript@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-SMubA9S7Cb5sGSFFUlqxyClTA9zWJ8qGQrppNUm05LtFuN1ELRFNndkix4zUJrC9F+YivWwa1dHMSyo0e0N9dA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/helper-builder-binary-assignment-operator-visitor@7.25.9': dependencies: - '@babel/core': 7.22.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.5) + '@babel/traverse': 7.25.9 + '@babel/types': 7.25.9 transitivePeerDependencies: - supports-color - dev: true - /@babel/plugin-transform-unicode-escapes@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/helper-compilation-targets@7.22.15': dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/compat-data': 7.25.9 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.2 + lru-cache: 5.1.1 + semver: 7.5.3 - /@babel/plugin-transform-unicode-escapes@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/helper-compilation-targets@7.22.5(@babel/core@7.20.5)': dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/compat-data': 7.22.5 + '@babel/core': 7.20.5 + '@babel/helper-validator-option': 7.22.5 + browserslist: 4.21.9 + lru-cache: 5.1.1 + semver: 7.5.3 - /@babel/plugin-transform-unicode-escapes@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/helper-compilation-targets@7.25.9': dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/compat-data': 7.25.9 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.2 + lru-cache: 5.1.1 + semver: 7.5.3 - /@babel/plugin-transform-unicode-escapes@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/helper-create-class-features-plugin@7.22.5(@babel/core@7.25.9)': dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/core': 7.25.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.22.5 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 7.5.3 + transitivePeerDependencies: + - supports-color - /@babel/plugin-transform-unicode-property-regex@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/helper-create-class-features-plugin@7.25.9(@babel/core@7.20.5)': dependencies: '@babel/core': 7.20.5 - '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.20.5) - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@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/core@7.20.5) + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/traverse': 7.25.9 + semver: 7.5.3 + transitivePeerDependencies: + - supports-color - /@babel/plugin-transform-unicode-property-regex@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/helper-create-class-features-plugin@7.25.9(@babel/core@7.25.9)': dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/core': 7.25.9 + '@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/core@7.25.9) + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/traverse': 7.25.9 + semver: 7.5.3 + transitivePeerDependencies: + - supports-color - /@babel/plugin-transform-unicode-property-regex@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/helper-create-regexp-features-plugin@7.22.5(@babel/core@7.20.5)': dependencies: - '@babel/core': 7.23.2 - '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.23.2) - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/core': 7.20.5 + '@babel/helper-annotate-as-pure': 7.25.9 + regexpu-core: 5.3.2 + semver: 7.5.3 - /@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/helper-create-regexp-features-plugin@7.25.9(@babel/core@7.20.5)': dependencies: '@babel/core': 7.20.5 - '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.20.5) - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/helper-annotate-as-pure': 7.25.9 + regexpu-core: 6.1.1 + semver: 7.5.3 - /@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.21.8): - resolution: {integrity: sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.20.5)': dependencies: - '@babel/core': 7.21.8 - '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.21.8) - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/core': 7.20.5 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + debug: 4.3.4(supports-color@9.3.1) + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color - /@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/helper-environment-visitor@7.22.20': {} - /@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/helper-environment-visitor@7.22.5': {} + + '@babel/helper-function-name@7.22.5': dependencies: - '@babel/core': 7.23.2 - '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.23.2) - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/template': 7.25.9 + '@babel/types': 7.25.9 - /@babel/plugin-transform-unicode-sets-regex@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/helper-function-name@7.23.0': dependencies: - '@babel/core': 7.20.5 - '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.20.5) - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/template': 7.25.9 + '@babel/types': 7.25.9 - /@babel/plugin-transform-unicode-sets-regex@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/helper-hoist-variables@7.22.5': dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/types': 7.25.9 - /@babel/plugin-transform-unicode-sets-regex@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/helper-member-expression-to-functions@7.22.5': dependencies: - '@babel/core': 7.23.2 - '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.23.2) - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/types': 7.25.9 - /@babel/preset-env@7.21.5(@babel/core@7.21.8): - resolution: {integrity: sha512-wH00QnTTldTbf/IefEVyChtRdw5RJvODT/Vb4Vcxq1AZvtXj6T0YeX0cAcXhI6/BdGuiP3GcNIL4OQbI2DVNxg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/helper-member-expression-to-functions@7.25.9': dependencies: - '@babel/compat-data': 7.22.5 - '@babel/core': 7.21.8 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.21.8) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.22.5 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.22.5(@babel/core@7.21.8) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.5(@babel/core@7.21.8) - '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.21.8) - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.21.8) - '@babel/plugin-proposal-class-static-block': 7.21.0(@babel/core@7.21.8) - '@babel/plugin-proposal-dynamic-import': 7.18.6(@babel/core@7.21.8) - '@babel/plugin-proposal-export-namespace-from': 7.18.9(@babel/core@7.21.8) - '@babel/plugin-proposal-json-strings': 7.18.6(@babel/core@7.21.8) - '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@7.21.8) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.21.8) - '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.21.8) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.21.8) - '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.21.8) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.21.8) - '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.21.8) - '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.21.8) - '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.21.8) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.8) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.21.8) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.21.8) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.21.8) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.21.8) - '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.21.8) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.21.8) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.21.8) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.21.8) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.8) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.21.8) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.8) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.21.8) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.8) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.21.8) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.21.8) - '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.21.8) - '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.21.8) - '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.21.8) - '@babel/plugin-transform-block-scoping': 7.22.5(@babel/core@7.21.8) - '@babel/plugin-transform-classes': 7.22.5(@babel/core@7.21.8) - '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.21.8) - '@babel/plugin-transform-destructuring': 7.22.5(@babel/core@7.21.8) - '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.21.8) - '@babel/plugin-transform-duplicate-keys': 7.22.5(@babel/core@7.21.8) - '@babel/plugin-transform-exponentiation-operator': 7.22.5(@babel/core@7.21.8) - '@babel/plugin-transform-for-of': 7.22.5(@babel/core@7.21.8) - '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.21.8) - '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.21.8) - '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.21.8) - '@babel/plugin-transform-modules-amd': 7.22.5(@babel/core@7.21.8) - '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.21.8) - '@babel/plugin-transform-modules-systemjs': 7.22.5(@babel/core@7.21.8) - '@babel/plugin-transform-modules-umd': 7.22.5(@babel/core@7.21.8) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.21.8) - '@babel/plugin-transform-new-target': 7.22.5(@babel/core@7.21.8) - '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.21.8) - '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.21.8) - '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.21.8) - '@babel/plugin-transform-regenerator': 7.22.5(@babel/core@7.21.8) - '@babel/plugin-transform-reserved-words': 7.22.5(@babel/core@7.21.8) - '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.21.8) - '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.21.8) - '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.21.8) - '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.21.8) - '@babel/plugin-transform-typeof-symbol': 7.22.5(@babel/core@7.21.8) - '@babel/plugin-transform-unicode-escapes': 7.22.5(@babel/core@7.21.8) - '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.21.8) - '@babel/preset-modules': 0.1.5(@babel/core@7.21.8) - '@babel/types': 7.23.0 - babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@7.21.8) - babel-plugin-polyfill-corejs3: 0.6.0(@babel/core@7.21.8) - babel-plugin-polyfill-regenerator: 0.4.1(@babel/core@7.21.8) - core-js-compat: 3.31.0 - semver: 7.5.3 + '@babel/traverse': 7.25.9 + '@babel/types': 7.25.9 transitivePeerDependencies: - supports-color - dev: true - /@babel/preset-env@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-fj06hw89dpiZzGZtxn+QybifF07nNiZjZ7sazs2aVDcysAZVGjW7+7iFYxg6GLNM47R/thYfLdrXc+2f11Vi9A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/helper-module-imports@7.22.5': dependencies: - '@babel/compat-data': 7.22.5 - '@babel/core': 7.20.5 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.20.5) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.22.5 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.20.5) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.20.5) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.20.5) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.20.5) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.20.5) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.20.5) - '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-syntax-import-attributes': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.20.5) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.20.5) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.20.5) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.20.5) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.20.5) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.20.5) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.20.5) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.20.5) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.20.5) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.20.5) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.20.5) - '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-async-generator-functions': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-block-scoping': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-class-properties': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-class-static-block': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-classes': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-destructuring': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-duplicate-keys': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-dynamic-import': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-exponentiation-operator': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-export-namespace-from': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-for-of': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-json-strings': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-logical-assignment-operators': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-modules-amd': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-modules-systemjs': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-modules-umd': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-new-target': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-nullish-coalescing-operator': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-numeric-separator': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-object-rest-spread': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-optional-catch-binding': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-optional-chaining': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-private-methods': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-private-property-in-object': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-regenerator': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-reserved-words': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-typeof-symbol': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-unicode-escapes': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-unicode-property-regex': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-unicode-sets-regex': 7.22.5(@babel/core@7.20.5) - '@babel/preset-modules': 0.1.5(@babel/core@7.20.5) '@babel/types': 7.22.5 - babel-plugin-polyfill-corejs2: 0.4.3(@babel/core@7.20.5) - babel-plugin-polyfill-corejs3: 0.8.1(@babel/core@7.20.5) - babel-plugin-polyfill-regenerator: 0.5.0(@babel/core@7.20.5) - core-js-compat: 3.31.0 - semver: 7.5.3 + + '@babel/helper-module-imports@7.25.9': + dependencies: + '@babel/traverse': 7.25.9 + '@babel/types': 7.25.9 transitivePeerDependencies: - supports-color - dev: true - /@babel/preset-env@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-fj06hw89dpiZzGZtxn+QybifF07nNiZjZ7sazs2aVDcysAZVGjW7+7iFYxg6GLNM47R/thYfLdrXc+2f11Vi9A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/helper-module-transforms@7.22.5': dependencies: - '@babel/compat-data': 7.22.5 - '@babel/core': 7.22.5 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.22.5 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.5) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.5) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.5) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.5) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-syntax-import-attributes': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.5) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.5) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.5) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.5) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.5) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-async-generator-functions': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-block-scoping': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-class-properties': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-class-static-block': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-classes': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-destructuring': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-duplicate-keys': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-dynamic-import': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-exponentiation-operator': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-export-namespace-from': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-for-of': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-json-strings': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-logical-assignment-operators': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-modules-amd': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-modules-systemjs': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-modules-umd': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-new-target': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-nullish-coalescing-operator': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-numeric-separator': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-object-rest-spread': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-optional-catch-binding': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-optional-chaining': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-private-methods': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-private-property-in-object': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-regenerator': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-reserved-words': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-typeof-symbol': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-unicode-escapes': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-unicode-property-regex': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-unicode-sets-regex': 7.22.5(@babel/core@7.22.5) - '@babel/preset-modules': 0.1.5(@babel/core@7.22.5) + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-module-imports': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.5 + '@babel/helper-validator-identifier': 7.22.5 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.5 '@babel/types': 7.22.5 - babel-plugin-polyfill-corejs2: 0.4.3(@babel/core@7.22.5) - babel-plugin-polyfill-corejs3: 0.8.1(@babel/core@7.22.5) - babel-plugin-polyfill-regenerator: 0.5.0(@babel/core@7.22.5) - core-js-compat: 3.31.0 - semver: 7.5.3 transitivePeerDependencies: - supports-color - dev: true - /@babel/preset-env@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-fj06hw89dpiZzGZtxn+QybifF07nNiZjZ7sazs2aVDcysAZVGjW7+7iFYxg6GLNM47R/thYfLdrXc+2f11Vi9A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/helper-module-transforms@7.23.0(@babel/core@7.23.2)': dependencies: - '@babel/compat-data': 7.22.5 '@babel/core': 7.23.2 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.23.2) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.22.5 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.2) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.2) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.2) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.2) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.2) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.2) - '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-syntax-import-attributes': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.2) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.2) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.2) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.2) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.2) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.2) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.2) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.2) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.2) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.2) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.2) - '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-async-generator-functions': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-block-scoping': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-class-properties': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-class-static-block': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-classes': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-destructuring': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-duplicate-keys': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-dynamic-import': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-exponentiation-operator': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-export-namespace-from': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-for-of': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-json-strings': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-logical-assignment-operators': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-modules-amd': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-modules-systemjs': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-modules-umd': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-new-target': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-nullish-coalescing-operator': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-numeric-separator': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-object-rest-spread': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-optional-catch-binding': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-optional-chaining': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-private-methods': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-private-property-in-object': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-regenerator': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-reserved-words': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-typeof-symbol': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-unicode-escapes': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-unicode-property-regex': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-unicode-sets-regex': 7.22.5(@babel/core@7.23.2) - '@babel/preset-modules': 0.1.5(@babel/core@7.23.2) - '@babel/types': 7.22.5 - babel-plugin-polyfill-corejs2: 0.4.3(@babel/core@7.23.2) - babel-plugin-polyfill-corejs3: 0.8.1(@babel/core@7.23.2) - babel-plugin-polyfill-regenerator: 0.5.0(@babel/core@7.23.2) - core-js-compat: 3.31.0 - semver: 7.5.3 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-simple-access': 7.25.9 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.25.9 transitivePeerDependencies: - supports-color - dev: true - - /@babel/preset-flow@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-ta2qZ+LSiGCrP5pgcGt8xMnnkXQrq8Sa4Ulhy06BOlF5QbLw9q5hIx7bn5MrsvyTGAfh6kTOo07Q+Pfld/8Y5Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.22.5 - '@babel/plugin-transform-flow-strip-types': 7.22.5(@babel/core@7.22.5) - dev: true - /@babel/preset-modules@0.1.5(@babel/core@7.20.5): - resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/helper-module-transforms@7.25.9(@babel/core@7.20.5)': dependencies: '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.20.5) - '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.20.5) - '@babel/types': 7.23.0 - esutils: 2.0.3 - dev: true + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-simple-access': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color - /@babel/preset-modules@0.1.5(@babel/core@7.21.8): - resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/helper-module-transforms@7.25.9(@babel/core@7.25.9)': dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.21.8) - '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.21.8) - '@babel/types': 7.23.0 - esutils: 2.0.3 - dev: true + '@babel/core': 7.25.9 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-simple-access': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color - /@babel/preset-modules@0.1.5(@babel/core@7.22.5): - resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/helper-optimise-call-expression@7.22.5': dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.22.5) - '@babel/types': 7.23.0 - esutils: 2.0.3 - dev: true + '@babel/types': 7.25.9 - /@babel/preset-modules@0.1.5(@babel/core@7.23.2): - resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/helper-optimise-call-expression@7.25.9': dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.23.2) - '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.23.2) - '@babel/types': 7.23.0 - esutils: 2.0.3 - dev: true + '@babel/types': 7.25.9 - /@babel/preset-react@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-M+Is3WikOpEJHgR385HbuCITPTaPRaNkibTEa9oiofmJvIsrceb4yp9RL9Kb+TE8LznmeyZqpP+Lopwcx59xPQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/helper-plugin-utils@7.22.5': {} + + '@babel/helper-plugin-utils@7.25.9': {} + + '@babel/helper-remap-async-to-generator@7.25.9(@babel/core@7.20.5)': dependencies: '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.22.5 - '@babel/plugin-transform-react-display-name': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-react-pure-annotations': 7.22.5(@babel/core@7.20.5) - dev: true - - /@babel/preset-react@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-M+Is3WikOpEJHgR385HbuCITPTaPRaNkibTEa9oiofmJvIsrceb4yp9RL9Kb+TE8LznmeyZqpP+Lopwcx59xPQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-wrap-function': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-replace-supers@7.22.5': dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.22.5 - '@babel/plugin-transform-react-display-name': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-react-pure-annotations': 7.22.5(@babel/core@7.22.5) - dev: true - - /@babel/preset-typescript@7.22.5(@babel/core@7.20.5): - resolution: {integrity: sha512-YbPaal9LxztSGhmndR46FmAbkJ/1fAsw293tSU+I5E5h+cnJ3d4GTwyUgGYmOXJYdGA+uNePle4qbaRzj2NISQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/template': 7.25.9 + '@babel/traverse': 7.25.9 + '@babel/types': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-replace-supers@7.25.9(@babel/core@7.20.5)': dependencies: '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.22.5 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.20.5) - '@babel/plugin-transform-typescript': 7.22.5(@babel/core@7.20.5) + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/traverse': 7.25.9 transitivePeerDependencies: - supports-color - dev: true - /@babel/preset-typescript@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-YbPaal9LxztSGhmndR46FmAbkJ/1fAsw293tSU+I5E5h+cnJ3d4GTwyUgGYmOXJYdGA+uNePle4qbaRzj2NISQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/helper-replace-supers@7.25.9(@babel/core@7.25.9)': dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.22.5 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-typescript': 7.22.5(@babel/core@7.22.5) + '@babel/core': 7.25.9 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/traverse': 7.25.9 transitivePeerDependencies: - supports-color - dev: true - /@babel/register@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-vV6pm/4CijSQ8Y47RH5SopXzursN35RQINfGJkmOlcpAtGuf94miFvIPhCKGQN7WGIcsgG1BHEX2KVdTYwTwUQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/helper-simple-access@7.22.5': dependencies: - '@babel/core': 7.22.5 - clone-deep: 4.0.1 - find-cache-dir: 2.1.0 - make-dir: 2.1.0 - pirates: 4.0.6 - source-map-support: 0.5.21 - dev: true + '@babel/types': 7.25.9 - /@babel/regjsgen@0.8.0: - resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} - dev: true - - /@babel/runtime@7.22.5: - resolution: {integrity: sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==} - engines: {node: '>=6.9.0'} + '@babel/helper-simple-access@7.25.9': dependencies: - regenerator-runtime: 0.13.11 + '@babel/traverse': 7.25.9 + '@babel/types': 7.25.9 + transitivePeerDependencies: + - supports-color - /@babel/runtime@7.23.5: - resolution: {integrity: sha512-NdUTHcPe4C99WxPub+K9l9tK5/lV4UXIoaHSYgzco9BCyjKAAwzdBI+wWtYqHt7LJdbo74ZjRPJgzVweq1sz0w==} - engines: {node: '>=6.9.0'} + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': dependencies: - regenerator-runtime: 0.14.0 + '@babel/traverse': 7.25.9 + '@babel/types': 7.25.9 + transitivePeerDependencies: + - supports-color - /@babel/template@7.22.15: - resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} - engines: {node: '>=6.9.0'} + '@babel/helper-split-export-declaration@7.22.5': dependencies: - '@babel/code-frame': 7.22.13 - '@babel/parser': 7.23.0 - '@babel/types': 7.23.0 - dev: true + '@babel/types': 7.25.9 - /@babel/template@7.22.5: - resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} - engines: {node: '>=6.9.0'} + '@babel/helper-split-export-declaration@7.22.6': dependencies: - '@babel/code-frame': 7.22.5 - '@babel/parser': 7.22.5 - '@babel/types': 7.22.5 + '@babel/types': 7.25.9 - /@babel/traverse@7.21.5: - resolution: {integrity: sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==} - engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.22.5': {} + + '@babel/helper-string-parser@7.25.9': {} + + '@babel/helper-validator-identifier@7.22.20': {} + + '@babel/helper-validator-identifier@7.22.5': {} + + '@babel/helper-validator-identifier@7.25.9': {} + + '@babel/helper-validator-option@7.22.5': {} + + '@babel/helper-validator-option@7.25.9': {} + + '@babel/helper-wrap-function@7.25.9': dependencies: - '@babel/code-frame': 7.22.5 - '@babel/generator': 7.22.5 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.5 - '@babel/parser': 7.23.0 - '@babel/types': 7.23.0 - debug: 4.3.4(supports-color@9.3.1) - globals: 11.12.0 + '@babel/template': 7.25.9 + '@babel/traverse': 7.25.9 + '@babel/types': 7.25.9 transitivePeerDependencies: - supports-color - dev: true - /@babel/traverse@7.22.5: - resolution: {integrity: sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==} - engines: {node: '>=6.9.0'} + '@babel/helpers@7.22.5': dependencies: - '@babel/code-frame': 7.22.5 - '@babel/generator': 7.22.5 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.5 - '@babel/parser': 7.22.5 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.5 '@babel/types': 7.22.5 - debug: 4.3.4(supports-color@9.3.1) - globals: 11.12.0 transitivePeerDependencies: - supports-color - /@babel/traverse@7.23.2: - resolution: {integrity: sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==} - engines: {node: '>=6.9.0'} + '@babel/helpers@7.23.2': dependencies: - '@babel/code-frame': 7.22.13 - '@babel/generator': 7.23.0 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.23.0 - '@babel/types': 7.23.0 - debug: 4.3.4(supports-color@9.3.1) - globals: 11.12.0 + '@babel/template': 7.25.9 + '@babel/traverse': 7.25.9 + '@babel/types': 7.25.9 transitivePeerDependencies: - supports-color - dev: true - /@babel/types@7.21.5: - resolution: {integrity: sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==} - engines: {node: '>=6.9.0'} + '@babel/helpers@7.25.9': + dependencies: + '@babel/template': 7.25.9 + '@babel/types': 7.25.9 + + '@babel/highlight@7.22.5': dependencies: - '@babel/helper-string-parser': 7.22.5 '@babel/helper-validator-identifier': 7.22.20 - to-fast-properties: 2.0.0 - dev: true + chalk: 2.4.2 + js-tokens: 4.0.0 - /@babel/types@7.22.5: - resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} - engines: {node: '>=6.9.0'} + '@babel/highlight@7.25.9': dependencies: - '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.5 - to-fast-properties: 2.0.0 + '@babel/helper-validator-identifier': 7.25.9 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.1.1 - /@babel/types@7.23.0: - resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==} - engines: {node: '>=6.9.0'} + '@babel/parser@7.22.5': dependencies: - '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.20 - to-fast-properties: 2.0.0 + '@babel/types': 7.22.5 - /@base2/pretty-print-object@1.0.1: - resolution: {integrity: sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==} - dev: true + '@babel/parser@7.23.0': + dependencies: + '@babel/types': 7.25.9 - /@bcoe/v8-coverage@0.2.3: - resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - dev: true + '@babel/parser@7.25.9': + dependencies: + '@babel/types': 7.25.9 - /@colors/colors@1.5.0: - resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} - engines: {node: '>=0.1.90'} - requiresBuild: true - dev: true - optional: true + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color - /@discoveryjs/json-ext@0.5.7: - resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} - engines: {node: '>=10.0.0'} - dev: true + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.25.9 - /@emotion/babel-plugin@11.10.5(@babel/core@7.20.5): - resolution: {integrity: sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA==} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.20.5)': dependencies: '@babel/core': 7.20.5 - '@babel/helper-module-imports': 7.22.5 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.20.5) - '@babel/runtime': 7.22.5 - '@emotion/hash': 0.9.1 - '@emotion/memoize': 0.8.1 - '@emotion/serialize': 1.1.2 - babel-plugin-macros: 3.1.0 - convert-source-map: 1.9.0 - escape-string-regexp: 4.0.0 - find-root: 1.1.0 - source-map: 0.5.7 - stylis: 4.1.3 + '@babel/helper-plugin-utils': 7.25.9 - /@emotion/babel-plugin@11.11.0: - resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==} + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.20.5)': dependencies: - '@babel/helper-module-imports': 7.22.5 - '@babel/runtime': 7.23.5 - '@emotion/hash': 0.9.1 - '@emotion/memoize': 0.8.1 - '@emotion/serialize': 1.1.2 - babel-plugin-macros: 3.1.0 - convert-source-map: 1.9.0 - escape-string-regexp: 4.0.0 - find-root: 1.1.0 - source-map: 0.5.7 - stylis: 4.2.0 - dev: false + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.20.5) + transitivePeerDependencies: + - supports-color - /@emotion/cache@11.11.0: - resolution: {integrity: sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==} + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9(@babel/core@7.20.5)': dependencies: - '@emotion/memoize': 0.8.1 - '@emotion/sheet': 1.2.2 - '@emotion/utils': 1.2.1 - '@emotion/weak-memoize': 0.3.1 - stylis: 4.2.0 - dev: false + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color - /@emotion/hash@0.9.1: - resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==} + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 - /@emotion/is-prop-valid@0.8.8: - resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==} - requiresBuild: true + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.25.9)': dependencies: - '@emotion/memoize': 0.7.4 - dev: false - optional: true + '@babel/core': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 - /@emotion/is-prop-valid@1.2.1: - resolution: {integrity: sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==} + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.25.9)': dependencies: - '@emotion/memoize': 0.8.1 - dev: false + '@babel/core': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 - /@emotion/memoize@0.7.4: - resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} - requiresBuild: true - dev: false - optional: true + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.9)': + dependencies: + '@babel/core': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 - /@emotion/memoize@0.8.1: - resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} + '@babel/plugin-syntax-flow@7.25.9(@babel/core@7.25.9)': + dependencies: + '@babel/core': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 - /@emotion/react@11.10.5(@babel/core@7.20.5)(@types/react@18.0.25)(react@18.2.0): - resolution: {integrity: sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A==} - peerDependencies: - '@babel/core': ^7.0.0 - '@types/react': '*' - react: '>=16.8.0' - peerDependenciesMeta: - '@babel/core': - optional: true - '@types/react': - optional: true + '@babel/plugin-syntax-import-assertions@7.25.9(@babel/core@7.20.5)': dependencies: '@babel/core': 7.20.5 - '@babel/runtime': 7.22.5 - '@emotion/babel-plugin': 11.10.5(@babel/core@7.20.5) - '@emotion/cache': 11.11.0 - '@emotion/serialize': 1.1.2 - '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) - '@emotion/utils': 1.2.1 - '@emotion/weak-memoize': 0.3.1 - '@types/react': 18.0.25 - hoist-non-react-statics: 3.3.2 - react: 18.2.0 - dev: false + '@babel/helper-plugin-utils': 7.25.9 - /@emotion/serialize@1.1.2: - resolution: {integrity: sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==} + '@babel/plugin-syntax-import-attributes@7.25.9(@babel/core@7.20.5)': dependencies: - '@emotion/hash': 0.9.1 - '@emotion/memoize': 0.8.1 - '@emotion/unitless': 0.8.1 - '@emotion/utils': 1.2.1 - csstype: 3.1.2 + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.25.9 - /@emotion/sheet@1.2.2: - resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==} - dev: false + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.9)': + dependencies: + '@babel/core': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 - /@emotion/styled@11.11.0(@emotion/react@11.10.5)(@types/react@18.0.25)(react@18.2.0): - resolution: {integrity: sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==} - peerDependencies: - '@emotion/react': ^11.0.0-rc.0 - '@types/react': '*' - react: '>=16.8.0' - peerDependenciesMeta: - '@types/react': - optional: true + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.25.9)': dependencies: - '@babel/runtime': 7.22.5 - '@emotion/babel-plugin': 11.11.0 - '@emotion/is-prop-valid': 1.2.1 - '@emotion/react': 11.10.5(@babel/core@7.20.5)(@types/react@18.0.25)(react@18.2.0) - '@emotion/serialize': 1.1.2 - '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) - '@emotion/utils': 1.2.1 - '@types/react': 18.0.25 - react: 18.2.0 - dev: false + '@babel/core': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 - /@emotion/unitless@0.8.1: - resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==} + '@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.22.5 - /@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@18.2.0): - resolution: {integrity: sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==} - peerDependencies: - react: '>=16.8.0' + '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.25.9)': dependencies: - react: 18.2.0 + '@babel/core': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 - /@emotion/utils@1.2.1: - resolution: {integrity: sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==} + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.9)': + dependencies: + '@babel/core': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 - /@emotion/weak-memoize@0.3.1: - resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==} - dev: false + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.25.9)': + dependencies: + '@babel/core': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 - /@esbuild/android-arm64@0.16.17: - resolution: {integrity: sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.9)': + dependencies: + '@babel/core': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 - /@esbuild/android-arm64@0.17.19: - resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.9)': + dependencies: + '@babel/core': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 - /@esbuild/android-arm@0.16.17: - resolution: {integrity: sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.9)': + dependencies: + '@babel/core': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 - /@esbuild/android-arm@0.17.19: - resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.9)': + dependencies: + '@babel/core': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 - /@esbuild/android-x64@0.16.17: - resolution: {integrity: sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.25.9)': + dependencies: + '@babel/core': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 - /@esbuild/android-x64@0.17.19: - resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.25.9)': + dependencies: + '@babel/core': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.25.9)': + dependencies: + '@babel/core': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.20.5) + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.25.9 - /@esbuild/darwin-arm64@0.16.17: - resolution: {integrity: sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-async-generator-functions@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.20.5) + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color - /@esbuild/darwin-arm64@0.17.19: - resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-async-to-generator@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.20.5) + transitivePeerDependencies: + - supports-color - /@esbuild/darwin-x64@0.16.17: - resolution: {integrity: sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-block-scoped-functions@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.25.9 - /@esbuild/darwin-x64@0.17.19: - resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-block-scoping@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.25.9 - /@esbuild/freebsd-arm64@0.16.17: - resolution: {integrity: sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-class-properties@7.22.5(@babel/core@7.25.9)': + dependencies: + '@babel/core': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.25.9) + '@babel/helper-plugin-utils': 7.22.5 + transitivePeerDependencies: + - supports-color - /@esbuild/freebsd-arm64@0.17.19: - resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-class-properties@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.20.5) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color - /@esbuild/freebsd-x64@0.16.17: - resolution: {integrity: sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-class-static-block@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.20.5) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color - /@esbuild/freebsd-x64@0.17.19: - resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-classes@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@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/core@7.20.5) + '@babel/traverse': 7.25.9 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color - /@esbuild/linux-arm64@0.16.17: - resolution: {integrity: sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-computed-properties@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/template': 7.25.9 - /@esbuild/linux-arm64@0.17.19: - resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-destructuring@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.25.9 - /@esbuild/linux-arm@0.16.17: - resolution: {integrity: sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-dotall-regex@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.20.5) + '@babel/helper-plugin-utils': 7.25.9 - /@esbuild/linux-arm@0.17.19: - resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-duplicate-keys@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.25.9 - /@esbuild/linux-ia32@0.16.17: - resolution: {integrity: sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.20.5) + '@babel/helper-plugin-utils': 7.25.9 - /@esbuild/linux-ia32@0.17.19: - resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-dynamic-import@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.25.9 - /@esbuild/linux-loong64@0.16.17: - resolution: {integrity: sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-exponentiation-operator@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color - /@esbuild/linux-loong64@0.17.19: - resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.25.9 - /@esbuild/linux-mips64el@0.16.17: - resolution: {integrity: sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-flow-strip-types@7.25.9(@babel/core@7.25.9)': + dependencies: + '@babel/core': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-flow': 7.25.9(@babel/core@7.25.9) - /@esbuild/linux-mips64el@0.17.19: - resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-for-of@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color - /@esbuild/linux-ppc64@0.16.17: - resolution: {integrity: sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-function-name@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color - /@esbuild/linux-ppc64@0.17.19: - resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-json-strings@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.25.9 - /@esbuild/linux-riscv64@0.16.17: - resolution: {integrity: sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-literals@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.25.9 - /@esbuild/linux-riscv64@0.17.19: - resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-logical-assignment-operators@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.25.9 - /@esbuild/linux-s390x@0.16.17: - resolution: {integrity: sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-member-expression-literals@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.25.9 - /@esbuild/linux-s390x@0.17.19: - resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-modules-amd@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-module-transforms': 7.25.9(@babel/core@7.20.5) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color - /@esbuild/linux-x64@0.16.17: - resolution: {integrity: sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-modules-commonjs@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-module-transforms': 7.25.9(@babel/core@7.20.5) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-simple-access': 7.25.9 + transitivePeerDependencies: + - supports-color - /@esbuild/linux-x64@0.17.19: - resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-modules-commonjs@7.25.9(@babel/core@7.25.9)': + dependencies: + '@babel/core': 7.25.9 + '@babel/helper-module-transforms': 7.25.9(@babel/core@7.25.9) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-simple-access': 7.25.9 + transitivePeerDependencies: + - supports-color - /@esbuild/netbsd-x64@0.16.17: - resolution: {integrity: sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-modules-systemjs@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-module-transforms': 7.25.9(@babel/core@7.20.5) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color - /@esbuild/netbsd-x64@0.17.19: - resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-modules-umd@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-module-transforms': 7.25.9(@babel/core@7.20.5) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color - /@esbuild/openbsd-x64@0.16.17: - resolution: {integrity: sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-named-capturing-groups-regex@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.20.5) + '@babel/helper-plugin-utils': 7.25.9 - /@esbuild/openbsd-x64@0.17.19: - resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-new-target@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.25.9 - /@esbuild/sunos-x64@0.16.17: - resolution: {integrity: sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-nullish-coalescing-operator@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.25.9 - /@esbuild/sunos-x64@0.17.19: - resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-nullish-coalescing-operator@7.25.9(@babel/core@7.25.9)': + dependencies: + '@babel/core': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 - /@esbuild/win32-arm64@0.16.17: - resolution: {integrity: sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-numeric-separator@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.25.9 - /@esbuild/win32-arm64@0.17.19: - resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.20.5) - /@esbuild/win32-ia32@0.16.17: - resolution: {integrity: sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-object-super@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.20.5) + transitivePeerDependencies: + - supports-color - /@esbuild/win32-ia32@0.17.19: - resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-optional-catch-binding@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.25.9 - /@esbuild/win32-x64@0.16.17: - resolution: {integrity: sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-optional-chaining@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-optional-chaining@7.25.9(@babel/core@7.25.9)': + dependencies: + '@babel/core': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color - /@esbuild/win32-x64@0.17.19: - resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true + '@babel/plugin-transform-parameters@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.25.9 - /@eslint-community/eslint-utils@4.4.0(eslint@8.28.0): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@babel/plugin-transform-private-methods@7.22.5(@babel/core@7.25.9)': dependencies: - eslint: 8.28.0 - eslint-visitor-keys: 3.4.1 - dev: true + '@babel/core': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.25.9) + '@babel/helper-plugin-utils': 7.22.5 + transitivePeerDependencies: + - supports-color - /@eslint/eslintrc@1.4.1: - resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@babel/plugin-transform-private-methods@7.25.9(@babel/core@7.20.5)': dependencies: - ajv: 6.12.6 - debug: 4.3.4(supports-color@9.3.1) - espree: 9.5.2 - globals: 13.20.0 - ignore: 5.2.4 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 + '@babel/core': 7.20.5 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.20.5) + '@babel/helper-plugin-utils': 7.25.9 transitivePeerDependencies: - supports-color - dev: true - /@fal-works/esbuild-plugin-global-externals@2.1.2: - resolution: {integrity: sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==} - dev: true + '@babel/plugin-transform-private-property-in-object@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.20.5) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color - /@floating-ui/core@1.3.1: - resolution: {integrity: sha512-Bu+AMaXNjrpjh41znzHqaz3r2Nr8hHuHZT6V2LBKMhyMl0FgKA62PNYbqnfgmzOhoWZj70Zecisbo4H1rotP5g==} - dev: false + '@babel/plugin-transform-property-literals@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.25.9 - /@floating-ui/core@1.5.2: - resolution: {integrity: sha512-Ii3MrfY/GAIN3OhXNzpCKaLxHQfJF9qvwq/kEJYdqDxeIHa01K8sldugal6TmeeXl+WMvhv9cnVzUTaFFJF09A==} + '@babel/plugin-transform-react-jsx-self@7.22.5(@babel/core@7.23.2)': dependencies: - '@floating-ui/utils': 0.1.6 - dev: false + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 - /@floating-ui/dom@1.4.2: - resolution: {integrity: sha512-VKmvHVatWnewmGGy+7Mdy4cTJX71Pli6v/Wjb5RQBuq5wjUYx+Ef+kRThi8qggZqDgD8CogCpqhRoVp3+yQk+g==} + '@babel/plugin-transform-react-jsx-source@7.22.5(@babel/core@7.23.2)': dependencies: - '@floating-ui/core': 1.3.1 - dev: false + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 - /@floating-ui/dom@1.5.3: - resolution: {integrity: sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==} + '@babel/plugin-transform-regenerator@7.25.9(@babel/core@7.20.5)': dependencies: - '@floating-ui/core': 1.5.2 - '@floating-ui/utils': 0.1.6 - dev: false + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.25.9 + regenerator-transform: 0.15.2 - /@floating-ui/react-dom@2.0.4(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-CF8k2rgKeh/49UrnIBs4BdxPUV6vize/Db1d/YbCLyp9GiVZ0BEwf5AiDSxJRCr6yOkGqTFHtmrULxkEfYZ7dQ==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' + '@babel/plugin-transform-reserved-words@7.25.9(@babel/core@7.20.5)': dependencies: - '@floating-ui/dom': 1.5.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.25.9 - /@floating-ui/utils@0.1.6: - resolution: {integrity: sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==} - dev: false + '@babel/plugin-transform-shorthand-properties@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.25.9 - /@formatjs/ecma402-abstract@2.2.0: - resolution: {integrity: sha512-IpM+ev1E4QLtstniOE29W1rqH9eTdx5hQdNL8pzrflMj/gogfaoONZqL83LUeQScHAvyMbpqP5C9MzNf+fFwhQ==} + '@babel/plugin-transform-spread@7.25.9(@babel/core@7.20.5)': dependencies: - '@formatjs/fast-memoize': 2.2.1 - '@formatjs/intl-localematcher': 0.5.5 - tslib: 2.8.0 - dev: false + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color - /@formatjs/fast-memoize@2.2.1: - resolution: {integrity: sha512-XS2RcOSyWxmUB7BUjj3mlPH0exsUzlf6QfhhijgI941WaJhVxXQ6mEWkdUFIdnKi3TuTYxRdelsgv3mjieIGIA==} + '@babel/plugin-transform-sticky-regex@7.25.9(@babel/core@7.20.5)': dependencies: - tslib: 2.8.0 - dev: false + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.25.9 - /@formatjs/intl-datetimeformat@6.15.0: - resolution: {integrity: sha512-rlCAGenAXqqi0og6vRW+2zOpCEy+YslSwhHFckv1JcfRSaIWjLsj0qtByTXJQQCyaefzPtcwhjXKXmfQFq02JQ==} + '@babel/plugin-transform-template-literals@7.25.9(@babel/core@7.20.5)': dependencies: - '@formatjs/ecma402-abstract': 2.2.0 - '@formatjs/intl-localematcher': 0.5.5 - tslib: 2.8.0 - dev: false + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.25.9 - /@formatjs/intl-localematcher@0.5.5: - resolution: {integrity: sha512-t5tOGMgZ/i5+ALl2/offNqAQq/lfUnKLEw0mXQI4N4bqpedhrSE+fyKLpwnd22sK0dif6AV+ufQcTsKShB9J1g==} + '@babel/plugin-transform-typeof-symbol@7.25.9(@babel/core@7.20.5)': dependencies: - tslib: 2.8.0 - dev: false + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.25.9 - /@googlemaps/js-api-loader@1.16.2: - resolution: {integrity: sha512-psGw5u0QM6humao48Hn4lrChOM2/rA43ZCm3tKK9qQsEj1/VzqkCqnvGfEOshDbBQflydfaRovbKwZMF4AyqbA==} + '@babel/plugin-transform-typescript@7.25.9(@babel/core@7.25.9)': dependencies: - fast-deep-equal: 3.1.3 - dev: false + '@babel/core': 7.25.9 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@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(@babel/core@7.25.9) + transitivePeerDependencies: + - supports-color - /@googlemaps/markerclusterer@2.0.14: - resolution: {integrity: sha512-/AKSz4kqMKOGc1ByPK4FWygOi0SHE2MjZdueelx4oShagcR5d9eIz77YMxcyxOUIc/dI0x5/Y0VoUTn+aWEUtQ==} + '@babel/plugin-transform-unicode-escapes@7.25.9(@babel/core@7.20.5)': dependencies: - fast-deep-equal: 3.1.3 - supercluster: 7.1.5 - dev: false + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.25.9 - /@hapi/hoek@9.3.0: - resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} - dev: true + '@babel/plugin-transform-unicode-property-regex@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.20.5) + '@babel/helper-plugin-utils': 7.25.9 - /@hapi/topo@5.1.0: - resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + '@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.20.5)': dependencies: - '@hapi/hoek': 9.3.0 - dev: true + '@babel/core': 7.20.5 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.20.5) + '@babel/helper-plugin-utils': 7.25.9 - /@humanwhocodes/config-array@0.11.10: - resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} - engines: {node: '>=10.10.0'} + '@babel/plugin-transform-unicode-sets-regex@7.25.9(@babel/core@7.20.5)': dependencies: - '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4(supports-color@9.3.1) - minimatch: 3.1.2 + '@babel/core': 7.20.5 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.20.5) + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/preset-env@7.25.9(@babel/core@7.20.5)': + dependencies: + '@babel/compat-data': 7.25.9 + '@babel/core': 7.20.5 + '@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/core@7.20.5) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.20.5) + '@babel/plugin-syntax-import-assertions': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-syntax-import-attributes': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.20.5) + '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-async-generator-functions': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-block-scoped-functions': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-class-static-block': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-dotall-regex': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-duplicate-keys': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-dynamic-import': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-exponentiation-operator': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-for-of': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-json-strings': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-logical-assignment-operators': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-member-expression-literals': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-modules-amd': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-modules-systemjs': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-modules-umd': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-new-target': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-nullish-coalescing-operator': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-numeric-separator': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-object-super': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-optional-catch-binding': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-property-literals': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-regenerator': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-reserved-words': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-template-literals': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-typeof-symbol': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-unicode-escapes': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-unicode-property-regex': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-unicode-sets-regex': 7.25.9(@babel/core@7.20.5) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.20.5) + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.20.5) + babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.20.5) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.20.5) + core-js-compat: 3.38.1 + semver: 7.5.3 transitivePeerDependencies: - supports-color - dev: true - /@humanwhocodes/module-importer@1.0.1: - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - dev: true + '@babel/preset-env@7.25.9(@babel/core@7.25.9)': + dependencies: + '@babel/compat-data': 7.25.9 + '@babel/core': 7.25.9 + '@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/core@7.20.5) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.20.5) + '@babel/plugin-syntax-import-assertions': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-syntax-import-attributes': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.20.5) + '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-async-generator-functions': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-block-scoped-functions': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-class-static-block': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-dotall-regex': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-duplicate-keys': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-dynamic-import': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-exponentiation-operator': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-for-of': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-json-strings': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-logical-assignment-operators': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-member-expression-literals': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-modules-amd': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-modules-systemjs': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-modules-umd': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-new-target': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-nullish-coalescing-operator': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-numeric-separator': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-object-super': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-optional-catch-binding': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-property-literals': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-regenerator': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-reserved-words': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-template-literals': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-typeof-symbol': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-unicode-escapes': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-unicode-property-regex': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.20.5) + '@babel/plugin-transform-unicode-sets-regex': 7.25.9(@babel/core@7.20.5) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.20.5) + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.20.5) + babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.20.5) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.20.5) + core-js-compat: 3.38.1 + semver: 7.5.3 + transitivePeerDependencies: + - supports-color - /@humanwhocodes/object-schema@1.2.1: - resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} - dev: true + '@babel/preset-flow@7.25.9(@babel/core@7.25.9)': + dependencies: + '@babel/core': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-transform-flow-strip-types': 7.25.9(@babel/core@7.25.9) - /@istanbuljs/load-nyc-config@1.1.0: - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.20.5)': dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.14.1 - resolve-from: 5.0.0 - dev: true + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/types': 7.25.9 + esutils: 2.0.3 - /@istanbuljs/schema@0.1.3: - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - dev: true + '@babel/preset-typescript@7.25.9(@babel/core@7.25.9)': + dependencies: + '@babel/core': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.25.9) + '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.25.9) + '@babel/plugin-transform-typescript': 7.25.9(@babel/core@7.25.9) + transitivePeerDependencies: + - supports-color - /@jest/console@28.1.3: - resolution: {integrity: sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + '@babel/register@7.25.9(@babel/core@7.25.9)': dependencies: - '@jest/types': 28.1.3 - '@types/node': 20.3.2 - chalk: 4.1.2 - jest-message-util: 28.1.3 - jest-util: 28.1.3 - slash: 3.0.0 - dev: true + '@babel/core': 7.25.9 + clone-deep: 4.0.1 + find-cache-dir: 2.1.0 + make-dir: 2.1.0 + pirates: 4.0.6 + source-map-support: 0.5.21 - /@jest/console@29.5.0: - resolution: {integrity: sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@babel/regjsgen@0.8.0': {} + + '@babel/runtime@7.22.5': dependencies: - '@jest/types': 29.5.0 - '@types/node': 20.3.2 - chalk: 4.1.2 - jest-message-util: 29.5.0 - jest-util: 29.5.0 - slash: 3.0.0 - dev: true + regenerator-runtime: 0.13.11 - /@jest/core@28.1.3: - resolution: {integrity: sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + '@babel/runtime@7.23.5': dependencies: - '@jest/console': 28.1.3 - '@jest/reporters': 28.1.3 - '@jest/test-result': 28.1.3 - '@jest/transform': 28.1.3 - '@jest/types': 28.1.3 - '@types/node': 20.3.2 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.8.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 28.1.3 - jest-config: 28.1.3(@types/node@20.3.2) - jest-haste-map: 28.1.3 - jest-message-util: 28.1.3 - jest-regex-util: 28.0.2 - jest-resolve: 28.1.3 - jest-resolve-dependencies: 28.1.3 - jest-runner: 28.1.3 - jest-runtime: 28.1.3 - jest-snapshot: 28.1.3 - jest-util: 28.1.3 - jest-validate: 28.1.3 - jest-watcher: 28.1.3 - micromatch: 4.0.5 - pretty-format: 28.1.3 - rimraf: 3.0.2 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - supports-color - - ts-node - dev: true + regenerator-runtime: 0.14.0 - /@jest/environment@28.1.3: - resolution: {integrity: sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + '@babel/template@7.22.15': dependencies: - '@jest/fake-timers': 28.1.3 - '@jest/types': 28.1.3 - '@types/node': 20.3.2 - jest-mock: 28.1.3 - dev: true + '@babel/code-frame': 7.25.9 + '@babel/parser': 7.25.9 + '@babel/types': 7.25.9 + + '@babel/template@7.22.5': + dependencies: + '@babel/code-frame': 7.22.5 + '@babel/parser': 7.22.5 + '@babel/types': 7.22.5 - /@jest/expect-utils@28.1.3: - resolution: {integrity: sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + '@babel/template@7.25.9': dependencies: - jest-get-type: 28.0.2 - dev: true + '@babel/code-frame': 7.25.9 + '@babel/parser': 7.25.9 + '@babel/types': 7.25.9 - /@jest/expect@28.1.3: - resolution: {integrity: sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + '@babel/traverse@7.22.5': dependencies: - expect: 28.1.3 - jest-snapshot: 28.1.3 + '@babel/code-frame': 7.22.5 + '@babel/generator': 7.22.5 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.5 + '@babel/parser': 7.22.5 + '@babel/types': 7.22.5 + debug: 4.3.4(supports-color@9.3.1) + globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: true - /@jest/fake-timers@28.1.3: - resolution: {integrity: sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + '@babel/traverse@7.23.2': dependencies: - '@jest/types': 28.1.3 - '@sinonjs/fake-timers': 9.1.2 - '@types/node': 20.3.2 - jest-message-util: 28.1.3 - jest-mock: 28.1.3 - jest-util: 28.1.3 - dev: true - - /@jest/globals@28.1.3: - resolution: {integrity: sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dependencies: - '@jest/environment': 28.1.3 - '@jest/expect': 28.1.3 - '@jest/types': 28.1.3 + '@babel/code-frame': 7.25.9 + '@babel/generator': 7.25.9 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.25.9 + '@babel/types': 7.25.9 + debug: 4.3.4(supports-color@9.3.1) + globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: true - /@jest/reporters@28.1.3: - resolution: {integrity: sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + '@babel/traverse@7.25.9': dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 28.1.3 - '@jest/test-result': 28.1.3 - '@jest/transform': 28.1.3 - '@jest/types': 28.1.3 - '@jridgewell/trace-mapping': 0.3.18 - '@types/node': 20.3.2 - chalk: 4.1.2 - collect-v8-coverage: 1.0.1 - exit: 0.1.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - istanbul-lib-coverage: 3.2.0 - istanbul-lib-instrument: 5.2.1 - istanbul-lib-report: 3.0.0 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.5 - jest-message-util: 28.1.3 - jest-util: 28.1.3 - jest-worker: 28.1.3 - slash: 3.0.0 - string-length: 4.0.2 - strip-ansi: 6.0.1 - terminal-link: 2.1.1 - v8-to-istanbul: 9.1.0 + '@babel/code-frame': 7.25.9 + '@babel/generator': 7.25.9 + '@babel/parser': 7.25.9 + '@babel/template': 7.25.9 + '@babel/types': 7.25.9 + debug: 4.3.4(supports-color@9.3.1) + globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: true - /@jest/schemas@28.1.3: - resolution: {integrity: sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + '@babel/types@7.22.5': + dependencies: + '@babel/helper-string-parser': 7.22.5 + '@babel/helper-validator-identifier': 7.22.5 + to-fast-properties: 2.0.0 + + '@babel/types@7.23.0': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + to-fast-properties: 2.0.0 + + '@babel/types@7.25.9': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + + '@base2/pretty-print-object@1.0.1': {} + + '@bcoe/v8-coverage@0.2.3': {} + + '@discoveryjs/json-ext@0.5.7': {} + + '@emotion/babel-plugin@11.10.5(@babel/core@7.20.5)': + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-module-imports': 7.22.5 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.20.5) + '@babel/runtime': 7.22.5 + '@emotion/hash': 0.9.1 + '@emotion/memoize': 0.8.1 + '@emotion/serialize': 1.1.2 + babel-plugin-macros: 3.1.0 + convert-source-map: 1.9.0 + escape-string-regexp: 4.0.0 + find-root: 1.1.0 + source-map: 0.5.7 + stylis: 4.1.3 + + '@emotion/babel-plugin@11.11.0': + dependencies: + '@babel/helper-module-imports': 7.22.5 + '@babel/runtime': 7.23.5 + '@emotion/hash': 0.9.1 + '@emotion/memoize': 0.8.1 + '@emotion/serialize': 1.1.2 + babel-plugin-macros: 3.1.0 + convert-source-map: 1.9.0 + escape-string-regexp: 4.0.0 + find-root: 1.1.0 + source-map: 0.5.7 + stylis: 4.2.0 + + '@emotion/cache@11.11.0': + dependencies: + '@emotion/memoize': 0.8.1 + '@emotion/sheet': 1.2.2 + '@emotion/utils': 1.2.1 + '@emotion/weak-memoize': 0.3.1 + stylis: 4.2.0 + + '@emotion/hash@0.9.1': {} + + '@emotion/is-prop-valid@0.8.8': + dependencies: + '@emotion/memoize': 0.7.4 + optional: true + + '@emotion/is-prop-valid@1.2.1': dependencies: - '@sinclair/typebox': 0.24.51 - dev: true + '@emotion/memoize': 0.8.1 - /@jest/schemas@29.4.3: - resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@sinclair/typebox': 0.25.24 - dev: true + '@emotion/memoize@0.7.4': + optional: true - /@jest/source-map@28.1.2: - resolution: {integrity: sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dependencies: - '@jridgewell/trace-mapping': 0.3.18 - callsites: 3.1.0 - graceful-fs: 4.2.11 - dev: true + '@emotion/memoize@0.8.1': {} - /@jest/test-result@28.1.3: - resolution: {integrity: sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + '@emotion/react@11.10.5(@babel/core@7.20.5)(@types/react@18.0.25)(react@18.2.0)': dependencies: - '@jest/console': 28.1.3 - '@jest/types': 28.1.3 - '@types/istanbul-lib-coverage': 2.0.4 - collect-v8-coverage: 1.0.1 - dev: true + '@babel/runtime': 7.22.5 + '@emotion/babel-plugin': 11.10.5(@babel/core@7.20.5) + '@emotion/cache': 11.11.0 + '@emotion/serialize': 1.1.2 + '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) + '@emotion/utils': 1.2.1 + '@emotion/weak-memoize': 0.3.1 + hoist-non-react-statics: 3.3.2 + react: 18.2.0 + optionalDependencies: + '@babel/core': 7.20.5 + '@types/react': 18.0.25 - /@jest/test-result@29.5.0: - resolution: {integrity: sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@emotion/serialize@1.1.2': dependencies: - '@jest/console': 29.5.0 - '@jest/types': 29.5.0 - '@types/istanbul-lib-coverage': 2.0.4 - collect-v8-coverage: 1.0.1 - dev: true + '@emotion/hash': 0.9.1 + '@emotion/memoize': 0.8.1 + '@emotion/unitless': 0.8.1 + '@emotion/utils': 1.2.1 + csstype: 3.1.2 - /@jest/test-sequencer@28.1.3: - resolution: {integrity: sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dependencies: - '@jest/test-result': 28.1.3 - graceful-fs: 4.2.11 - jest-haste-map: 28.1.3 - slash: 3.0.0 - dev: true + '@emotion/sheet@1.2.2': {} - /@jest/transform@28.1.3: - resolution: {integrity: sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + '@emotion/styled@11.11.0(@emotion/react@11.10.5(@babel/core@7.20.5)(@types/react@18.0.25)(react@18.2.0))(@types/react@18.0.25)(react@18.2.0)': dependencies: - '@babel/core': 7.22.5 - '@jest/types': 28.1.3 - '@jridgewell/trace-mapping': 0.3.18 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 1.9.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.11 - jest-haste-map: 28.1.3 - jest-regex-util: 28.0.2 - jest-util: 28.1.3 - micromatch: 4.0.5 - pirates: 4.0.6 - slash: 3.0.0 - write-file-atomic: 4.0.2 - transitivePeerDependencies: - - supports-color - dev: true + '@babel/runtime': 7.22.5 + '@emotion/babel-plugin': 11.11.0 + '@emotion/is-prop-valid': 1.2.1 + '@emotion/react': 11.10.5(@babel/core@7.20.5)(@types/react@18.0.25)(react@18.2.0) + '@emotion/serialize': 1.1.2 + '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) + '@emotion/utils': 1.2.1 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.0.25 - /@jest/transform@29.5.0: - resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@babel/core': 7.22.5 - '@jest/types': 29.5.0 - '@jridgewell/trace-mapping': 0.3.18 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 2.0.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.5.0 - jest-regex-util: 29.4.3 - jest-util: 29.5.0 - micromatch: 4.0.5 - pirates: 4.0.6 - slash: 3.0.0 - write-file-atomic: 4.0.2 - transitivePeerDependencies: - - supports-color - dev: true + '@emotion/unitless@0.8.1': {} - /@jest/types@27.5.1: - resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + '@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@18.2.0)': dependencies: - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 - '@types/node': 20.3.2 - '@types/yargs': 16.0.5 - chalk: 4.1.2 - dev: true + react: 18.2.0 - /@jest/types@28.1.3: - resolution: {integrity: sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dependencies: - '@jest/schemas': 28.1.3 - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 - '@types/node': 20.3.2 - '@types/yargs': 17.0.24 - chalk: 4.1.2 - dev: true + '@emotion/utils@1.2.1': {} - /@jest/types@29.5.0: - resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/schemas': 29.4.3 - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 - '@types/node': 20.3.2 - '@types/yargs': 17.0.24 - chalk: 4.1.2 - dev: true + '@emotion/weak-memoize@0.3.1': {} - /@joshwooding/vite-plugin-react-docgen-typescript@0.2.1(typescript@4.9.5)(vite@4.1.5): - resolution: {integrity: sha512-ou4ZJSXMMWHqGS4g8uNRbC5TiTWxAgQZiVucoUrOCWuPrTbkpJbmVyIi9jU72SBry7gQtuMEDp4YR8EEXAg7VQ==} - peerDependencies: - typescript: '>= 4.3.x' - vite: ^3.0.0 || ^4.0.0 - peerDependenciesMeta: - typescript: - optional: true - dependencies: - glob: 7.2.3 - glob-promise: 4.2.2(glob@7.2.3) - magic-string: 0.27.0 - react-docgen-typescript: 2.2.2(typescript@4.9.5) - typescript: 4.9.5 - vite: 4.1.5(@types/node@20.3.2)(sass@1.56.1) - dev: true + '@esbuild/android-arm64@0.18.20': + optional: true - /@jridgewell/gen-mapping@0.3.3: - resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.18 + '@esbuild/android-arm@0.18.20': + optional: true - /@jridgewell/resolve-uri@3.1.0: - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} - engines: {node: '>=6.0.0'} + '@esbuild/android-x64@0.18.20': + optional: true - /@jridgewell/set-array@1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} + '@esbuild/darwin-arm64@0.18.20': + optional: true - /@jridgewell/source-map@0.3.3: - resolution: {integrity: sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==} - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 - dev: true + '@esbuild/darwin-x64@0.18.20': + optional: true - /@jridgewell/sourcemap-codec@1.4.14: - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + '@esbuild/freebsd-arm64@0.18.20': + optional: true - /@jridgewell/sourcemap-codec@1.4.15: - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + '@esbuild/freebsd-x64@0.18.20': + optional: true - /@jridgewell/trace-mapping@0.3.18: - resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} - dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 + '@esbuild/linux-arm64@0.18.20': + optional: true - /@juggle/resize-observer@3.4.0: - resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} - dev: true + '@esbuild/linux-arm@0.18.20': + optional: true - /@kurkle/color@0.3.2: - resolution: {integrity: sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==} - dev: false + '@esbuild/linux-ia32@0.18.20': + optional: true - /@mapbox/point-geometry@0.1.0: - resolution: {integrity: sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==} - dev: false - - /@mdx-js/mdx@1.6.22: - resolution: {integrity: sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==} - dependencies: - '@babel/core': 7.12.9 - '@babel/plugin-syntax-jsx': 7.12.1(@babel/core@7.12.9) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.12.9) - '@mdx-js/util': 1.6.22 - babel-plugin-apply-mdx-type-prop: 1.6.22(@babel/core@7.12.9) - babel-plugin-extract-import-names: 1.6.22 - camelcase-css: 2.0.1 - detab: 2.0.4 - hast-util-raw: 6.0.1 - lodash.uniq: 4.5.0 - mdast-util-to-hast: 10.0.1 - remark-footnotes: 2.0.0 - remark-mdx: 1.6.22 - remark-parse: 8.0.3 - remark-squeeze-paragraphs: 4.0.0 - style-to-object: 0.3.0 - unified: 9.2.0 - unist-builder: 2.0.3 - unist-util-visit: 2.0.3 - transitivePeerDependencies: - - supports-color - dev: true + '@esbuild/linux-loong64@0.18.20': + optional: true - /@mdx-js/mdx@2.3.0: - resolution: {integrity: sha512-jLuwRlz8DQfQNiUCJR50Y09CGPq3fLtmtUQfVrj79E0JWu3dvsVcxVIcfhR5h0iXu+/z++zDrYeiJqifRynJkA==} - dependencies: - '@types/estree-jsx': 1.0.0 - '@types/mdx': 2.0.5 - estree-util-build-jsx: 2.2.2 - estree-util-is-identifier-name: 2.1.0 - estree-util-to-js: 1.2.0 - estree-walker: 3.0.3 - hast-util-to-estree: 2.3.3 - markdown-extensions: 1.1.1 - periscopic: 3.1.0 - remark-mdx: 2.3.0 - remark-parse: 10.0.2 - remark-rehype: 10.1.0 - unified: 10.1.2 - unist-util-position-from-estree: 1.1.2 - unist-util-stringify-position: 3.0.3 - unist-util-visit: 4.1.2 - vfile: 5.3.7 - transitivePeerDependencies: - - supports-color - dev: true + '@esbuild/linux-mips64el@0.18.20': + optional: true - /@mdx-js/react@1.6.22(react@18.2.0): - resolution: {integrity: sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==} - peerDependencies: - react: ^16.13.1 || ^17.0.0 - dependencies: - react: 18.2.0 - dev: true + '@esbuild/linux-ppc64@0.18.20': + optional: true - /@mdx-js/react@2.3.0(react@18.2.0): - resolution: {integrity: sha512-zQH//gdOmuu7nt2oJR29vFhDv88oGPmVw6BggmrHeMI+xgEkp1B2dX9/bMBSYtK0dyLX/aOmesKS09g222K1/g==} - peerDependencies: - react: '>=16' - dependencies: - '@types/mdx': 2.0.5 - '@types/react': 18.0.25 - react: 18.2.0 - dev: true + '@esbuild/linux-riscv64@0.18.20': + optional: true - /@mdx-js/rollup@2.3.0(rollup@3.25.3): - resolution: {integrity: sha512-wLvRfJS/M4UmdqTd+WoaySEE7q4BIejYf1xAHXYvtT1du/1Tl/z2450Gg2+Hu7fh05KwRRiehiTP9Yc/Dtn0fA==} - peerDependencies: - rollup: '>=2' - dependencies: - '@mdx-js/mdx': 2.3.0 - '@rollup/pluginutils': 5.0.2(rollup@3.25.3) - rollup: 3.25.3 - source-map: 0.7.4 - vfile: 5.3.7 - transitivePeerDependencies: - - supports-color - dev: true + '@esbuild/linux-s390x@0.18.20': + optional: true - /@mdx-js/util@1.6.22: - resolution: {integrity: sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==} - dev: true + '@esbuild/linux-x64@0.18.20': + optional: true - /@motionone/animation@10.15.1: - resolution: {integrity: sha512-mZcJxLjHor+bhcPuIFErMDNyrdb2vJur8lSfMCsuCB4UyV8ILZLvK+t+pg56erv8ud9xQGK/1OGPt10agPrCyQ==} - dependencies: - '@motionone/easing': 10.15.1 - '@motionone/types': 10.15.1 - '@motionone/utils': 10.15.1 - tslib: 2.6.0 - dev: false + '@esbuild/netbsd-x64@0.18.20': + optional: true - /@motionone/dom@10.12.0: - resolution: {integrity: sha512-UdPTtLMAktHiqV0atOczNYyDd/d8Cf5fFsd1tua03PqTwwCe/6lwhLSQ8a7TbnQ5SN0gm44N1slBfj+ORIhrqw==} + '@esbuild/openbsd-x64@0.18.20': + optional: true + + '@esbuild/sunos-x64@0.18.20': + optional: true + + '@esbuild/win32-arm64@0.18.20': + optional: true + + '@esbuild/win32-ia32@0.18.20': + optional: true + + '@esbuild/win32-x64@0.18.20': + optional: true + + '@eslint-community/eslint-utils@4.4.0(eslint@8.28.0)': dependencies: - '@motionone/animation': 10.15.1 - '@motionone/generators': 10.15.1 - '@motionone/types': 10.15.1 - '@motionone/utils': 10.15.1 - hey-listen: 1.0.8 - tslib: 2.6.0 - dev: false + eslint: 8.28.0 + eslint-visitor-keys: 3.4.1 - /@motionone/easing@10.15.1: - resolution: {integrity: sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw==} + '@eslint/eslintrc@1.4.1': dependencies: - '@motionone/utils': 10.15.1 - tslib: 2.6.0 - dev: false + ajv: 6.12.6 + debug: 4.3.4(supports-color@9.3.1) + espree: 9.5.2 + globals: 13.20.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color - /@motionone/generators@10.15.1: - resolution: {integrity: sha512-67HLsvHJbw6cIbLA/o+gsm7h+6D4Sn7AUrB/GPxvujse1cGZ38F5H7DzoH7PhX+sjvtDnt2IhFYF2Zp1QTMKWQ==} + '@floating-ui/core@1.3.1': {} + + '@floating-ui/core@1.5.2': dependencies: - '@motionone/types': 10.15.1 - '@motionone/utils': 10.15.1 - tslib: 2.6.0 - dev: false + '@floating-ui/utils': 0.1.6 - /@motionone/types@10.15.1: - resolution: {integrity: sha512-iIUd/EgUsRZGrvW0jqdst8st7zKTzS9EsKkP+6c6n4MPZoQHwiHuVtTQLD6Kp0bsBLhNzKIBlHXponn/SDT4hA==} - dev: false + '@floating-ui/dom@1.4.2': + dependencies: + '@floating-ui/core': 1.3.1 - /@motionone/utils@10.15.1: - resolution: {integrity: sha512-p0YncgU+iklvYr/Dq4NobTRdAPv9PveRDUXabPEeOjBLSO/1FNB2phNTZxOxpi1/GZwYpAoECEa0Wam+nsmhSw==} + '@floating-ui/dom@1.5.3': dependencies: - '@motionone/types': 10.15.1 - hey-listen: 1.0.8 - tslib: 2.6.0 - dev: false + '@floating-ui/core': 1.5.2 + '@floating-ui/utils': 0.1.6 - /@mui/base@5.0.0-beta.26(@types/react@18.0.25)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-gPMRKC84VRw+tjqYoyBzyrBUqHQucMXdlBpYazHa5rCXrb91fYEQk5SqQ2U5kjxx9QxZxTBvWAmZ6DblIgaGhQ==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + '@floating-ui/react-dom@2.0.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@babel/runtime': 7.23.5 - '@floating-ui/react-dom': 2.0.4(react-dom@18.2.0)(react@18.2.0) - '@mui/types': 7.2.10(@types/react@18.0.25) - '@mui/utils': 5.14.20(@types/react@18.0.25)(react@18.2.0) - '@popperjs/core': 2.11.8 - '@types/react': 18.0.25 - clsx: 2.0.0 - prop-types: 15.8.1 + '@floating-ui/dom': 1.5.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: false - /@mui/base@5.0.0-beta.4(@types/react@18.0.25)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-ejhtqYJpjDgHGEljjMBQWZ22yEK0OzIXNa7toJmmXsP4TT3W7xVy8bTJ0TniPDf+JNjrsgfgiFTDGdlEhV1E+g==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + '@floating-ui/utils@0.1.6': {} + + '@formatjs/ecma402-abstract@2.2.0': dependencies: - '@babel/runtime': 7.23.5 - '@emotion/is-prop-valid': 1.2.1 - '@mui/types': 7.2.10(@types/react@18.0.25) - '@mui/utils': 5.14.20(@types/react@18.0.25)(react@18.2.0) - '@popperjs/core': 2.11.8 - '@types/react': 18.0.25 - clsx: 1.2.1 - prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-is: 18.2.0 - dev: false + '@formatjs/fast-memoize': 2.2.1 + '@formatjs/intl-localematcher': 0.5.5 + tslib: 2.8.0 - /@mui/core-downloads-tracker@5.13.4: - resolution: {integrity: sha512-yFrMWcrlI0TqRN5jpb6Ma9iI7sGTHpytdzzL33oskFHNQ8UgrtPas33Y1K7sWAMwCrr1qbWDrOHLAQG4tAzuSw==} - dev: false + '@formatjs/fast-memoize@2.2.1': + dependencies: + tslib: 2.8.0 - /@mui/icons-material@5.11.16(@mui/material@5.13.5)(@types/react@18.0.25)(react@18.2.0): - resolution: {integrity: sha512-oKkx9z9Kwg40NtcIajF9uOXhxiyTZrrm9nmIJ4UjkU2IdHpd4QVLbCc/5hZN/y0C6qzi2Zlxyr9TGddQx2vx2A==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@mui/material': ^5.0.0 - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + '@formatjs/intl-datetimeformat@6.15.0': dependencies: - '@babel/runtime': 7.22.5 - '@mui/material': 5.13.5(@emotion/react@11.10.5)(@emotion/styled@11.11.0)(@types/react@18.0.25)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.0.25 - react: 18.2.0 - dev: false + '@formatjs/ecma402-abstract': 2.2.0 + '@formatjs/intl-localematcher': 0.5.5 + tslib: 2.8.0 - /@mui/material@5.13.5(@emotion/react@11.10.5)(@emotion/styled@11.11.0)(@types/react@18.0.25)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-eMay+Ue1OYXOFMQA5Aau7qbAa/kWHLAyi0McsbPTWssCbGehqkF6CIdPsfVGw6tlO+xPee1hUitphHJNL3xpOQ==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@emotion/react': ^11.5.0 - '@emotion/styled': ^11.3.0 - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@emotion/react': - optional: true - '@emotion/styled': - optional: true - '@types/react': - optional: true + '@formatjs/intl-localematcher@0.5.5': dependencies: - '@babel/runtime': 7.22.5 - '@emotion/react': 11.10.5(@babel/core@7.20.5)(@types/react@18.0.25)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.10.5)(@types/react@18.0.25)(react@18.2.0) - '@mui/base': 5.0.0-beta.4(@types/react@18.0.25)(react-dom@18.2.0)(react@18.2.0) - '@mui/core-downloads-tracker': 5.13.4 - '@mui/system': 5.13.6(@emotion/react@11.10.5)(@emotion/styled@11.11.0)(@types/react@18.0.25)(react@18.2.0) - '@mui/types': 7.2.4(@types/react@18.0.25) - '@mui/utils': 5.13.6(react@18.2.0) - '@types/react': 18.0.25 - '@types/react-transition-group': 4.4.6 - clsx: 1.2.1 - csstype: 3.1.2 - prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-is: 18.2.0 - react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) - dev: false + tslib: 2.8.0 - /@mui/private-theming@5.13.1(@types/react@18.0.25)(react@18.2.0): - resolution: {integrity: sha512-HW4npLUD9BAkVppOUZHeO1FOKUJWAwbpy0VQoGe3McUYTlck1HezGHQCfBQ5S/Nszi7EViqiimECVl9xi+/WjQ==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + '@googlemaps/js-api-loader@1.16.2': dependencies: - '@babel/runtime': 7.23.5 - '@mui/utils': 5.14.20(@types/react@18.0.25)(react@18.2.0) - '@types/react': 18.0.25 - prop-types: 15.8.1 - react: 18.2.0 - dev: false + fast-deep-equal: 3.1.3 - /@mui/styled-engine@5.13.2(@emotion/react@11.10.5)(@emotion/styled@11.11.0)(react@18.2.0): - resolution: {integrity: sha512-VCYCU6xVtXOrIN8lcbuPmoG+u7FYuOERG++fpY74hPpEWkyFQG97F+/XfTQVYzlR2m7nPjnwVUgATcTCMEaMvw==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@emotion/react': ^11.4.1 - '@emotion/styled': ^11.3.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@emotion/react': - optional: true - '@emotion/styled': - optional: true + '@googlemaps/markerclusterer@2.0.14': dependencies: - '@babel/runtime': 7.23.5 - '@emotion/cache': 11.11.0 - '@emotion/react': 11.10.5(@babel/core@7.20.5)(@types/react@18.0.25)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.10.5)(@types/react@18.0.25)(react@18.2.0) - csstype: 3.1.2 - prop-types: 15.8.1 - react: 18.2.0 - dev: false + fast-deep-equal: 3.1.3 + supercluster: 7.1.5 - /@mui/styles@5.13.2(@types/react@18.0.25)(react@18.2.0): - resolution: {integrity: sha512-gKNkVyk6azQ8wfCamh3yU/wLv1JscYrsQX9huQBwfwtE7kUTq2rgggdfJjRADjbcmT6IPX+oCHYjGfqqFgDIQQ==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + '@hapi/hoek@9.3.0': {} + + '@hapi/topo@5.1.0': dependencies: - '@babel/runtime': 7.22.5 - '@emotion/hash': 0.9.1 - '@mui/private-theming': 5.13.1(@types/react@18.0.25)(react@18.2.0) - '@mui/types': 7.2.4(@types/react@18.0.25) - '@mui/utils': 5.13.6(react@18.2.0) - '@types/react': 18.0.25 - clsx: 1.2.1 - csstype: 3.1.2 - hoist-non-react-statics: 3.3.2 - jss: 10.10.0 - jss-plugin-camel-case: 10.10.0 - jss-plugin-default-unit: 10.10.0 - jss-plugin-global: 10.10.0 - jss-plugin-nested: 10.10.0 - jss-plugin-props-sort: 10.10.0 - jss-plugin-rule-value-function: 10.10.0 - jss-plugin-vendor-prefixer: 10.10.0 - prop-types: 15.8.1 - react: 18.2.0 - dev: false + '@hapi/hoek': 9.3.0 - /@mui/system@5.13.6(@emotion/react@11.10.5)(@emotion/styled@11.11.0)(@types/react@18.0.25)(react@18.2.0): - resolution: {integrity: sha512-G3Xr28uLqU3DyF6r2LQkHGw/ku4P0AHzlKVe7FGXOPl7X1u+hoe2xxj8Vdiq/69II/mh9OP21i38yBWgWb7WgQ==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@emotion/react': ^11.5.0 - '@emotion/styled': ^11.3.0 - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@emotion/react': - optional: true - '@emotion/styled': - optional: true - '@types/react': - optional: true + '@humanwhocodes/config-array@0.11.10': dependencies: - '@babel/runtime': 7.23.5 - '@emotion/react': 11.10.5(@babel/core@7.20.5)(@types/react@18.0.25)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.10.5)(@types/react@18.0.25)(react@18.2.0) - '@mui/private-theming': 5.13.1(@types/react@18.0.25)(react@18.2.0) - '@mui/styled-engine': 5.13.2(@emotion/react@11.10.5)(@emotion/styled@11.11.0)(react@18.2.0) - '@mui/types': 7.2.10(@types/react@18.0.25) - '@mui/utils': 5.14.20(@types/react@18.0.25)(react@18.2.0) - '@types/react': 18.0.25 - clsx: 1.2.1 - csstype: 3.1.2 - prop-types: 15.8.1 - react: 18.2.0 - dev: false + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4(supports-color@9.3.1) + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color - /@mui/types@7.2.10(@types/react@18.0.25): - resolution: {integrity: sha512-wX1vbDC+lzF7FlhT6A3ffRZgEoKWPF8VqRoTu4lZwouFX2t90KyCMsgepMw5DxLak1BSp/KP86CmtZttikb/gQ==} - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/object-schema@1.2.1': {} + + '@istanbuljs/load-nyc-config@1.1.0': dependencies: - '@types/react': 18.0.25 - dev: false + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 - /@mui/types@7.2.4(@types/react@18.0.25): - resolution: {integrity: sha512-LBcwa8rN84bKF+f5sDyku42w1NTxaPgPyYKODsh01U1fVstTClbUoSA96oyRBnSNyEiAVjKm6Gwx9vjR+xyqHA==} - peerDependencies: - '@types/react': '*' - peerDependenciesMeta: - '@types/react': - optional: true + '@istanbuljs/schema@0.1.3': {} + + '@jest/console@29.7.0': dependencies: - '@types/react': 18.0.25 - dev: false + '@jest/types': 29.6.3 + '@types/node': 20.3.2 + chalk: 4.1.2 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 - /@mui/utils@5.13.6(react@18.2.0): - resolution: {integrity: sha512-ggNlxl5NPSbp+kNcQLmSig6WVB0Id+4gOxhx644987v4fsji+CSXc+MFYLocFB/x4oHtzCUlSzbVHlJfP/fXoQ==} - engines: {node: '>=12.0.0'} - peerDependencies: - react: ^17.0.0 || ^18.0.0 + '@jest/core@29.7.0(babel-plugin-macros@3.1.0)': dependencies: - '@babel/runtime': 7.23.5 - '@types/prop-types': 15.7.5 - '@types/react-is': 18.2.1 - prop-types: 15.8.1 - react: 18.2.0 - react-is: 18.2.0 - dev: false + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.3.2 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.8.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@20.3.2)(babel-plugin-macros@3.1.0) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.5 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node - /@mui/utils@5.14.20(@types/react@18.0.25)(react@18.2.0): - resolution: {integrity: sha512-Y6yL5MoFmtQml20DZnaaK1znrCEwG6/vRSzW8PKOTrzhyqKIql0FazZRUR7sA5EPASgiyKZfq0FPwISRXm5NdA==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + '@jest/create-cache-key-function@29.7.0': dependencies: - '@babel/runtime': 7.23.5 - '@types/prop-types': 15.7.11 - '@types/react': 18.0.25 - prop-types: 15.8.1 - react: 18.2.0 - react-is: 18.2.0 - dev: false + '@jest/types': 29.6.3 - /@ndelangen/get-tarball@3.0.9: - resolution: {integrity: sha512-9JKTEik4vq+yGosHYhZ1tiH/3WpUS0Nh0kej4Agndhox8pAdWhEx5knFVRcb/ya9knCRCs1rPxNrSXTDdfVqpA==} + '@jest/environment@29.7.0': dependencies: - gunzip-maybe: 1.4.2 - pump: 3.0.0 - tar-fs: 2.1.1 - dev: true + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.3.2 + jest-mock: 29.7.0 - /@nodelib/fs.scandir@2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} + '@jest/expect-utils@29.7.0': dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - dev: true + jest-get-type: 29.6.3 + + '@jest/expect@29.7.0': + dependencies: + expect: 29.7.0 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + + '@jest/fake-timers@29.7.0': + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 20.3.2 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + '@jest/globals@29.7.0': + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/types': 29.6.3 + jest-mock: 29.7.0 + transitivePeerDependencies: + - supports-color + + '@jest/reporters@29.7.0': + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.25 + '@types/node': 20.3.2 + chalk: 4.1.2 + collect-v8-coverage: 1.0.1 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.0 + istanbul-lib-instrument: 6.0.3 + istanbul-lib-report: 3.0.0 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.5 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + jest-worker: 29.7.0 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.1.0 + transitivePeerDependencies: + - supports-color - /@nodelib/fs.stat@2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - dev: true + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.8 - /@nodelib/fs.walk@1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} + '@jest/source-map@29.6.3': dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 - dev: true + '@jridgewell/trace-mapping': 0.3.25 + callsites: 3.1.0 + graceful-fs: 4.2.11 - /@popperjs/core@2.11.8: - resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} - dev: false + '@jest/test-result@29.7.0': + dependencies: + '@jest/console': 29.7.0 + '@jest/types': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.4 + collect-v8-coverage: 1.0.1 - /@react-oauth/google@0.7.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-KLLYlLYYpXf1zmcrsJPAxImvoq2b0Rs0Pi/6GYfdwjmTh66Pf6jkZ4fpO10tuJuUPWvEeqloPEC/i4BySgbYVQ==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' + '@jest/test-sequencer@29.7.0': dependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false + '@jest/test-result': 29.7.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + slash: 3.0.0 - /@reactour/mask@1.1.0(react@18.2.0): - resolution: {integrity: sha512-GkJMLuTs3vTsm4Ryq2uXcE4sMzRP1p4xSd6juSOMqbHa7IVD/UiLCLqJWHR9xGSQPbYhpZAZAORUG5cS0U5tBA==} - peerDependencies: - react: 16.x || 17.x || 18.x + '@jest/transform@29.7.0': dependencies: - '@reactour/utils': 0.5.0(react@18.2.0) - react: 18.2.0 - dev: false + '@babel/core': 7.25.9 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.25 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + micromatch: 4.0.5 + pirates: 4.0.6 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color - /@reactour/popover@1.1.1(react@18.2.0): - resolution: {integrity: sha512-BouulO0sXfmuHSPX8FwCYI0fMeT+VsWqk7UTao3NQcUC5H903ZeKOV2GYpwSJtRUQhsyNEu1Q8cEruGRf1SOXQ==} - peerDependencies: - react: 16.x || 17.x || 18.x + '@jest/types@29.6.3': dependencies: - '@reactour/utils': 0.5.0(react@18.2.0) - react: 18.2.0 - dev: false + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 20.3.2 + '@types/yargs': 17.0.24 + chalk: 4.1.2 - /@reactour/tour@3.1.6(react@18.2.0): - resolution: {integrity: sha512-TqKDax1pEqKfzlFyQjRAO8iwzPTK8G6UQtB5MrT0uxJeKNduBcZshcT8lA5GYYJqemCL1gRuhrbjJQZdHft5qg==} - peerDependencies: - react: 16.x || 17.x || 18.x + '@joshwooding/vite-plugin-react-docgen-typescript@0.3.1(typescript@4.9.5)(vite@4.5.5(@types/node@20.3.2)(sass@1.56.1)(terser@5.18.2))': dependencies: - '@reactour/mask': 1.1.0(react@18.2.0) - '@reactour/popover': 1.1.1(react@18.2.0) - '@reactour/utils': 0.5.0(react@18.2.0) - react: 18.2.0 - dev: false + glob: 7.2.3 + glob-promise: 4.2.2(glob@7.2.3) + magic-string: 0.27.0 + react-docgen-typescript: 2.2.2(typescript@4.9.5) + vite: 4.5.5(@types/node@20.3.2)(sass@1.56.1)(terser@5.18.2) + optionalDependencies: + typescript: 4.9.5 - /@reactour/utils@0.5.0(react@18.2.0): - resolution: {integrity: sha512-yQs5Nm/Dg1xRM7d/S/UILBV5OInrTgrjGzgc81/RP5khqdO5KnpOaC46yF83kDtCalte8X3RCwp+F2YA509k1w==} - peerDependencies: - react: 16.x || 17.x || 18.x + '@jridgewell/gen-mapping@0.3.3': dependencies: - '@rooks/use-mutation-observer': 4.11.2(react@18.2.0) - react: 18.2.0 - resize-observer-polyfill: 1.5.1 - dev: false + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.25 - /@redux-saga/core@1.2.3: - resolution: {integrity: sha512-U1JO6ncFBAklFTwoQ3mjAeQZ6QGutsJzwNBjgVLSWDpZTRhobUzuVDS1qH3SKGJD8fvqoaYOjp6XJ3gCmeZWgA==} + '@jridgewell/gen-mapping@0.3.5': dependencies: - '@babel/runtime': 7.23.5 - '@redux-saga/deferred': 1.2.1 - '@redux-saga/delay-p': 1.2.1 - '@redux-saga/is': 1.1.3 - '@redux-saga/symbols': 1.1.3 - '@redux-saga/types': 1.2.1 - redux: 4.2.0 - typescript-tuple: 2.2.1 - dev: false + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.25 - /@redux-saga/deferred@1.2.1: - resolution: {integrity: sha512-cmin3IuuzMdfQjA0lG4B+jX+9HdTgHZZ+6u3jRAOwGUxy77GSlTi4Qp2d6PM1PUoTmQUR5aijlA39scWWPF31g==} - dev: false + '@jridgewell/resolve-uri@3.1.0': {} - /@redux-saga/delay-p@1.2.1: - resolution: {integrity: sha512-MdiDxZdvb1m+Y0s4/hgdcAXntpUytr9g0hpcOO1XFVyyzkrDu3SKPgBFOtHn7lhu7n24ZKIAT1qtKyQjHqRd+w==} - dependencies: - '@redux-saga/symbols': 1.1.3 - dev: false + '@jridgewell/set-array@1.1.2': {} - /@redux-saga/is@1.1.3: - resolution: {integrity: sha512-naXrkETG1jLRfVfhOx/ZdLj0EyAzHYbgJWkXbB3qFliPcHKiWbv/ULQryOAEKyjrhiclmr6AMdgsXFyx7/yE6Q==} + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/source-map@0.3.3': dependencies: - '@redux-saga/symbols': 1.1.3 - '@redux-saga/types': 1.2.1 - dev: false + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 - /@redux-saga/symbols@1.1.3: - resolution: {integrity: sha512-hCx6ZvU4QAEUojETnX8EVg4ubNLBFl1Lps4j2tX7o45x/2qg37m3c6v+kSp8xjDJY+2tJw4QB3j8o8dsl1FDXg==} - dev: false + '@jridgewell/sourcemap-codec@1.4.14': {} - /@redux-saga/types@1.2.1: - resolution: {integrity: sha512-1dgmkh+3so0+LlBWRhGA33ua4MYr7tUOj+a9Si28vUi0IUFNbff1T3sgpeDJI/LaC75bBYnQ0A3wXjn0OrRNBA==} - dev: false + '@jridgewell/sourcemap-codec@1.4.15': {} - /@reduxjs/toolkit@1.9.1(react-redux@7.2.9)(react@18.2.0): - resolution: {integrity: sha512-HikrdY+IDgRfRYlCTGUQaiCxxDDgM1mQrRbZ6S1HFZX5ZYuJ4o8EstNmhTwHdPl2rTmLxzwSu0b3AyeyTlR+RA==} - peerDependencies: - react: ^16.9.0 || ^17.0.0 || ^18 - react-redux: ^7.2.1 || ^8.0.2 - peerDependenciesMeta: - react: - optional: true - react-redux: - optional: true + '@jridgewell/trace-mapping@0.3.18': dependencies: - immer: 9.0.16 - react: 18.2.0 - react-redux: 7.2.9(react-dom@18.2.0)(react@18.2.0) - redux: 4.2.0 - redux-thunk: 2.4.2(redux@4.2.0) - reselect: 4.1.7 - dev: false + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 - /@rollup/plugin-babel@5.3.1(@babel/core@7.23.2)(rollup@2.79.1): - resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} - engines: {node: '>= 10.0.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@types/babel__core': ^7.1.9 - rollup: ^1.20.0||^2.0.0 - peerDependenciesMeta: - '@types/babel__core': - optional: true + '@jridgewell/trace-mapping@0.3.25': dependencies: - '@babel/core': 7.23.2 - '@babel/helper-module-imports': 7.22.15 - '@rollup/pluginutils': 3.1.0(rollup@2.79.1) - rollup: 2.79.1 - dev: true + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.15 - /@rollup/plugin-node-resolve@11.2.1(rollup@2.79.1): - resolution: {integrity: sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==} - engines: {node: '>= 10.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0 + '@kurkle/color@0.3.2': {} + + '@mapbox/point-geometry@0.1.0': {} + + '@mdx-js/mdx@2.3.0': dependencies: - '@rollup/pluginutils': 3.1.0(rollup@2.79.1) - '@types/resolve': 1.17.1 - builtin-modules: 3.3.0 - deepmerge: 4.3.1 - is-module: 1.0.0 - resolve: 1.22.2 - rollup: 2.79.1 - dev: true + '@types/estree-jsx': 1.0.0 + '@types/mdx': 2.0.5 + estree-util-build-jsx: 2.2.2 + estree-util-is-identifier-name: 2.1.0 + estree-util-to-js: 1.2.0 + estree-walker: 3.0.3 + hast-util-to-estree: 2.3.3 + markdown-extensions: 1.1.1 + periscopic: 3.1.0 + remark-mdx: 2.3.0 + remark-parse: 10.0.2 + remark-rehype: 10.1.0 + unified: 10.1.2 + unist-util-position-from-estree: 1.1.2 + unist-util-stringify-position: 3.0.3 + unist-util-visit: 4.1.2 + vfile: 5.3.7 + transitivePeerDependencies: + - supports-color - /@rollup/plugin-replace@2.4.2(rollup@2.79.1): - resolution: {integrity: sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==} - peerDependencies: - rollup: ^1.20.0 || ^2.0.0 + '@mdx-js/react@1.6.22(react@18.2.0)': dependencies: - '@rollup/pluginutils': 3.1.0(rollup@2.79.1) - magic-string: 0.25.9 - rollup: 2.79.1 - dev: true + react: 18.2.0 - /@rollup/plugin-replace@5.0.2(rollup@3.25.3): - resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 - peerDependenciesMeta: - rollup: - optional: true + '@mdx-js/react@3.1.0(@types/react@18.0.25)(react@18.2.0)': + dependencies: + '@types/mdx': 2.0.5 + '@types/react': 18.0.25 + react: 18.2.0 + + '@mdx-js/rollup@2.3.0(rollup@3.25.3)': dependencies: + '@mdx-js/mdx': 2.3.0 '@rollup/pluginutils': 5.0.2(rollup@3.25.3) - magic-string: 0.27.0 rollup: 3.25.3 - dev: true + source-map: 0.7.4 + vfile: 5.3.7 + transitivePeerDependencies: + - supports-color - /@rollup/pluginutils@3.1.0(rollup@2.79.1): - resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} - engines: {node: '>= 8.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0 + '@motionone/animation@10.15.1': dependencies: - '@types/estree': 0.0.39 - estree-walker: 1.0.1 - picomatch: 2.3.1 - rollup: 2.79.1 - dev: true + '@motionone/easing': 10.15.1 + '@motionone/types': 10.15.1 + '@motionone/utils': 10.15.1 + tslib: 2.8.0 - /@rollup/pluginutils@4.2.1: - resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} - engines: {node: '>= 8.0.0'} + '@motionone/dom@10.12.0': dependencies: - estree-walker: 2.0.2 - picomatch: 2.3.1 - dev: true + '@motionone/animation': 10.15.1 + '@motionone/generators': 10.15.1 + '@motionone/types': 10.15.1 + '@motionone/utils': 10.15.1 + hey-listen: 1.0.8 + tslib: 2.6.0 - /@rollup/pluginutils@5.0.2(rollup@3.25.3): - resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 - peerDependenciesMeta: - rollup: - optional: true + '@motionone/easing@10.15.1': dependencies: - '@types/estree': 1.0.1 - estree-walker: 2.0.2 - picomatch: 2.3.1 - rollup: 3.25.3 - dev: true + '@motionone/utils': 10.15.1 + tslib: 2.8.0 - /@rooks/use-mutation-observer@4.11.2(react@18.2.0): - resolution: {integrity: sha512-vpsdrZdr6TkB1zZJcHx+fR1YC/pHs2BaqcuYiEGjBVbwY5xcC49+h0hAUtQKHth3oJqXfIX/Ng8S7s5HFHdM/A==} - peerDependencies: - react: '>=16.8.0' + '@motionone/generators@10.15.1': dependencies: - react: 18.2.0 - dev: false + '@motionone/types': 10.15.1 + '@motionone/utils': 10.15.1 + tslib: 2.8.0 - /@selderee/plugin-htmlparser2@0.6.0: - resolution: {integrity: sha512-J3jpy002TyBjd4N/p6s+s90eX42H2eRhK3SbsZuvTDv977/E8p2U3zikdiehyJja66do7FlxLomZLPlvl2/xaA==} + '@motionone/types@10.15.1': {} + + '@motionone/utils@10.15.1': dependencies: - domhandler: 4.3.1 - selderee: 0.6.0 - dev: true + '@motionone/types': 10.15.1 + hey-listen: 1.0.8 + tslib: 2.8.0 - /@sentry/browser@6.19.7: - resolution: {integrity: sha512-oDbklp4O3MtAM4mtuwyZLrgO1qDVYIujzNJQzXmi9YzymJCuzMLSRDvhY83NNDCRxf0pds4DShgYeZdbSyKraA==} - engines: {node: '>=6'} + '@mui/base@5.0.0-beta.26(@types/react@18.0.25)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@sentry/core': 6.19.7 - '@sentry/types': 6.19.7 - '@sentry/utils': 6.19.7 - tslib: 1.14.1 - dev: false + '@babel/runtime': 7.23.5 + '@floating-ui/react-dom': 2.0.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@mui/types': 7.2.10(@types/react@18.0.25) + '@mui/utils': 5.14.20(@types/react@18.0.25)(react@18.2.0) + '@popperjs/core': 2.11.8 + clsx: 2.0.0 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.0.25 + + '@mui/base@5.0.0-beta.4(@types/react@18.0.25)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.5 + '@emotion/is-prop-valid': 1.2.1 + '@mui/types': 7.2.10(@types/react@18.0.25) + '@mui/utils': 5.14.20(@types/react@18.0.25)(react@18.2.0) + '@popperjs/core': 2.11.8 + clsx: 1.2.1 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-is: 18.2.0 + optionalDependencies: + '@types/react': 18.0.25 - /@sentry/core@6.19.7: - resolution: {integrity: sha512-tOfZ/umqB2AcHPGbIrsFLcvApdTm9ggpi/kQZFkej7kMphjT+SGBiQfYtjyg9jcRW+ilAR4JXC9BGKsdEQ+8Vw==} - engines: {node: '>=6'} - dependencies: - '@sentry/hub': 6.19.7 - '@sentry/minimal': 6.19.7 - '@sentry/types': 6.19.7 - '@sentry/utils': 6.19.7 - tslib: 1.14.1 - dev: false + '@mui/core-downloads-tracker@5.13.4': {} - /@sentry/hub@6.19.7: - resolution: {integrity: sha512-y3OtbYFAqKHCWezF0EGGr5lcyI2KbaXW2Ik7Xp8Mu9TxbSTuwTe4rTntwg8ngPjUQU3SUHzgjqVB8qjiGqFXCA==} - engines: {node: '>=6'} + '@mui/icons-material@5.11.16(@mui/material@5.13.5(@emotion/react@11.10.5(@babel/core@7.20.5)(@types/react@18.0.25)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.10.5(@babel/core@7.20.5)(@types/react@18.0.25)(react@18.2.0))(@types/react@18.0.25)(react@18.2.0))(@types/react@18.0.25)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@types/react@18.0.25)(react@18.2.0)': dependencies: - '@sentry/types': 6.19.7 - '@sentry/utils': 6.19.7 - tslib: 1.14.1 - dev: false + '@babel/runtime': 7.22.5 + '@mui/material': 5.13.5(@emotion/react@11.10.5(@babel/core@7.20.5)(@types/react@18.0.25)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.10.5(@babel/core@7.20.5)(@types/react@18.0.25)(react@18.2.0))(@types/react@18.0.25)(react@18.2.0))(@types/react@18.0.25)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + optionalDependencies: + '@types/react': 18.0.25 - /@sentry/minimal@6.19.7: - resolution: {integrity: sha512-wcYmSJOdvk6VAPx8IcmZgN08XTXRwRtB1aOLZm+MVHjIZIhHoBGZJYTVQS/BWjldsamj2cX3YGbGXNunaCfYJQ==} - engines: {node: '>=6'} + '@mui/material@5.13.5(@emotion/react@11.10.5(@babel/core@7.20.5)(@types/react@18.0.25)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.10.5(@babel/core@7.20.5)(@types/react@18.0.25)(react@18.2.0))(@types/react@18.0.25)(react@18.2.0))(@types/react@18.0.25)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@sentry/hub': 6.19.7 - '@sentry/types': 6.19.7 - tslib: 1.14.1 - dev: false + '@babel/runtime': 7.22.5 + '@mui/base': 5.0.0-beta.4(@types/react@18.0.25)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@mui/core-downloads-tracker': 5.13.4 + '@mui/system': 5.13.6(@emotion/react@11.10.5(@babel/core@7.20.5)(@types/react@18.0.25)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.10.5(@babel/core@7.20.5)(@types/react@18.0.25)(react@18.2.0))(@types/react@18.0.25)(react@18.2.0))(@types/react@18.0.25)(react@18.2.0) + '@mui/types': 7.2.4(@types/react@18.0.25) + '@mui/utils': 5.13.6(react@18.2.0) + '@types/react-transition-group': 4.4.6 + clsx: 1.2.1 + csstype: 3.1.2 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-is: 18.2.0 + react-transition-group: 4.4.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + optionalDependencies: + '@emotion/react': 11.10.5(@babel/core@7.20.5)(@types/react@18.0.25)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.10.5(@babel/core@7.20.5)(@types/react@18.0.25)(react@18.2.0))(@types/react@18.0.25)(react@18.2.0) + '@types/react': 18.0.25 - /@sentry/react@6.19.7(react@18.2.0): - resolution: {integrity: sha512-VzJeBg/v41jfxUYPkH2WYrKjWc4YiMLzDX0f4Zf6WkJ4v3IlDDSkX6DfmWekjTKBho6wiMkSNy2hJ1dHfGZ9jA==} - engines: {node: '>=6'} - peerDependencies: - react: 15.x || 16.x || 17.x || 18.x + '@mui/private-theming@5.13.1(@types/react@18.0.25)(react@18.2.0)': dependencies: - '@sentry/browser': 6.19.7 - '@sentry/minimal': 6.19.7 - '@sentry/types': 6.19.7 - '@sentry/utils': 6.19.7 - hoist-non-react-statics: 3.3.2 + '@babel/runtime': 7.23.5 + '@mui/utils': 5.14.20(@types/react@18.0.25)(react@18.2.0) + prop-types: 15.8.1 react: 18.2.0 - tslib: 1.14.1 - dev: false + optionalDependencies: + '@types/react': 18.0.25 - /@sentry/tracing@6.19.7: - resolution: {integrity: sha512-ol4TupNnv9Zd+bZei7B6Ygnr9N3Gp1PUrNI761QSlHtPC25xXC5ssSD3GMhBgyQrcvpuRcCFHVNNM97tN5cZiA==} - engines: {node: '>=6'} + '@mui/styled-engine@5.13.2(@emotion/react@11.10.5(@babel/core@7.20.5)(@types/react@18.0.25)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.10.5(@babel/core@7.20.5)(@types/react@18.0.25)(react@18.2.0))(@types/react@18.0.25)(react@18.2.0))(react@18.2.0)': dependencies: - '@sentry/hub': 6.19.7 - '@sentry/minimal': 6.19.7 - '@sentry/types': 6.19.7 - '@sentry/utils': 6.19.7 - tslib: 1.14.1 - dev: false - - /@sentry/types@6.19.7: - resolution: {integrity: sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg==} - engines: {node: '>=6'} - dev: false + '@babel/runtime': 7.23.5 + '@emotion/cache': 11.11.0 + csstype: 3.1.2 + prop-types: 15.8.1 + react: 18.2.0 + optionalDependencies: + '@emotion/react': 11.10.5(@babel/core@7.20.5)(@types/react@18.0.25)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.10.5(@babel/core@7.20.5)(@types/react@18.0.25)(react@18.2.0))(@types/react@18.0.25)(react@18.2.0) - /@sentry/utils@6.19.7: - resolution: {integrity: sha512-z95ECmE3i9pbWoXQrD/7PgkBAzJYR+iXtPuTkpBjDKs86O3mT+PXOT3BAn79w2wkn7/i3vOGD2xVr1uiMl26dA==} - engines: {node: '>=6'} + '@mui/styles@5.13.2(@types/react@18.0.25)(react@18.2.0)': dependencies: - '@sentry/types': 6.19.7 - tslib: 1.14.1 - dev: false + '@babel/runtime': 7.22.5 + '@emotion/hash': 0.9.1 + '@mui/private-theming': 5.13.1(@types/react@18.0.25)(react@18.2.0) + '@mui/types': 7.2.4(@types/react@18.0.25) + '@mui/utils': 5.13.6(react@18.2.0) + clsx: 1.2.1 + csstype: 3.1.2 + hoist-non-react-statics: 3.3.2 + jss: 10.10.0 + jss-plugin-camel-case: 10.10.0 + jss-plugin-default-unit: 10.10.0 + jss-plugin-global: 10.10.0 + jss-plugin-nested: 10.10.0 + jss-plugin-props-sort: 10.10.0 + jss-plugin-rule-value-function: 10.10.0 + jss-plugin-vendor-prefixer: 10.10.0 + prop-types: 15.8.1 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.0.25 - /@sideway/address@4.1.4: - resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==} + '@mui/system@5.13.6(@emotion/react@11.10.5(@babel/core@7.20.5)(@types/react@18.0.25)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.10.5(@babel/core@7.20.5)(@types/react@18.0.25)(react@18.2.0))(@types/react@18.0.25)(react@18.2.0))(@types/react@18.0.25)(react@18.2.0)': dependencies: - '@hapi/hoek': 9.3.0 - dev: true - - /@sideway/formula@3.0.1: - resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} - dev: true + '@babel/runtime': 7.23.5 + '@mui/private-theming': 5.13.1(@types/react@18.0.25)(react@18.2.0) + '@mui/styled-engine': 5.13.2(@emotion/react@11.10.5(@babel/core@7.20.5)(@types/react@18.0.25)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.10.5(@babel/core@7.20.5)(@types/react@18.0.25)(react@18.2.0))(@types/react@18.0.25)(react@18.2.0))(react@18.2.0) + '@mui/types': 7.2.10(@types/react@18.0.25) + '@mui/utils': 5.14.20(@types/react@18.0.25)(react@18.2.0) + clsx: 1.2.1 + csstype: 3.1.2 + prop-types: 15.8.1 + react: 18.2.0 + optionalDependencies: + '@emotion/react': 11.10.5(@babel/core@7.20.5)(@types/react@18.0.25)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.10.5(@babel/core@7.20.5)(@types/react@18.0.25)(react@18.2.0))(@types/react@18.0.25)(react@18.2.0) + '@types/react': 18.0.25 - /@sideway/pinpoint@2.0.0: - resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} - dev: true + '@mui/types@7.2.10(@types/react@18.0.25)': + optionalDependencies: + '@types/react': 18.0.25 - /@sinclair/typebox@0.24.51: - resolution: {integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==} - dev: true + '@mui/types@7.2.4(@types/react@18.0.25)': + optionalDependencies: + '@types/react': 18.0.25 - /@sinclair/typebox@0.25.24: - resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} - dev: true + '@mui/utils@5.13.6(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.5 + '@types/prop-types': 15.7.5 + '@types/react-is': 18.2.1 + prop-types: 15.8.1 + react: 18.2.0 + react-is: 18.2.0 - /@sindresorhus/is@4.6.0: - resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} - engines: {node: '>=10'} - dev: true + '@mui/utils@5.14.20(@types/react@18.0.25)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.5 + '@types/prop-types': 15.7.11 + prop-types: 15.8.1 + react: 18.2.0 + react-is: 18.2.0 + optionalDependencies: + '@types/react': 18.0.25 - /@sinonjs/commons@1.8.6: - resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==} + '@nodelib/fs.scandir@2.1.5': dependencies: - type-detect: 4.0.8 - dev: true + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} - /@sinonjs/fake-timers@9.1.2: - resolution: {integrity: sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==} + '@nodelib/fs.walk@1.2.8': dependencies: - '@sinonjs/commons': 1.8.6 - dev: true + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 - /@storybook/addon-a11y@7.0.27(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-S26bgFMhKa6AxyPqVyO51SOfO5MStzInHebOcqUtHYs1Npz1MMM80A4YuF8KVvcu4WAFdvdIA4gI/47djrN+sA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true + '@popperjs/core@2.11.8': {} + + '@react-oauth/google@0.7.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@storybook/addon-highlight': 7.0.27 - '@storybook/channels': 7.0.27 - '@storybook/client-logger': 7.0.27 - '@storybook/components': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 7.0.27 - '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.0.27 - '@storybook/theming': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.0.27 - axe-core: 4.7.2 - lodash: 4.17.21 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-resize-detector: 7.1.2(react-dom@18.2.0)(react@18.2.0) - dev: true - /@storybook/addon-actions@7.0.27(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-bDN7rxdEBfcgV+LJWpmd26RdblODIPFaR+UMLVIITLP2ZxSjJ5yCcDenKDvSZJCPLhDnDcyiUmNcyvRtdmWf0w==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true + '@reactour/mask@1.1.0(react@18.2.0)': dependencies: - '@storybook/client-logger': 7.0.27 - '@storybook/components': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 7.0.27 - '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.0.27 - '@storybook/theming': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.0.27 - dequal: 2.0.3 - lodash: 4.17.21 - polished: 4.2.2 - prop-types: 15.8.1 + '@reactour/utils': 0.5.0(react@18.2.0) react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-inspector: 6.0.2(react@18.2.0) - telejson: 7.1.0 - ts-dedent: 2.2.0 - uuid: 9.0.0 - dev: true - /@storybook/addon-backgrounds@7.0.27(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-ujhlekvYirsEmRgLhKM8MtRHnG3ZBwkHKV7bj+BNl6YP39MB3SWlDqS9igRaoZhXvL1yIIbvtLkebaYBAL01dw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true + '@reactour/popover@1.1.1(react@18.2.0)': dependencies: - '@storybook/client-logger': 7.0.27 - '@storybook/components': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 7.0.27 - '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.0.27 - '@storybook/theming': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.0.27 - memoizerific: 1.11.3 + '@reactour/utils': 0.5.0(react@18.2.0) react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - ts-dedent: 2.2.0 - dev: true - /@storybook/addon-controls@7.0.27(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-wONLfJ4x6gbuSGxkK54QDGFI2/pd3K32ukpp2rXV6DyyRzrjal3RQdLZYzSppEfDqxrmPTFuGiw7J7w0BLJ5TQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true + '@reactour/tour@3.1.6(react@18.2.0)': dependencies: - '@storybook/blocks': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/client-logger': 7.0.27 - '@storybook/components': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-common': 7.0.27 - '@storybook/manager-api': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/node-logger': 7.0.27 - '@storybook/preview-api': 7.0.27 - '@storybook/theming': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.0.27 - lodash: 4.17.21 + '@reactour/mask': 1.1.0(react@18.2.0) + '@reactour/popover': 1.1.1(react@18.2.0) + '@reactour/utils': 0.5.0(react@18.2.0) react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - ts-dedent: 2.2.0 - transitivePeerDependencies: - - encoding - - supports-color - dev: true - /@storybook/addon-docs@7.0.27(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Q7JbvpejyDVHl/ZS7uHBmgdX+GFznZ042ohPL6a8+vInET2L0u6iXKRz8ZUkvaGPs8NniN9fNkf62Xmw7x2EMQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@reactour/utils@0.5.0(react@18.2.0)': dependencies: - '@babel/core': 7.22.5 - '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.22.5) - '@jest/transform': 29.5.0 - '@mdx-js/react': 2.3.0(react@18.2.0) - '@storybook/blocks': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/client-logger': 7.0.27 - '@storybook/components': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/csf-plugin': 7.0.27 - '@storybook/csf-tools': 7.0.27 - '@storybook/global': 5.0.0 - '@storybook/mdx2-csf': 1.1.0 - '@storybook/node-logger': 7.0.27 - '@storybook/postinstall': 7.0.27 - '@storybook/preview-api': 7.0.27 - '@storybook/react-dom-shim': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/theming': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.0.27 - fs-extra: 11.1.1 + '@rooks/use-mutation-observer': 4.11.2(react@18.2.0) react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - remark-external-links: 8.0.0 - remark-slug: 6.1.0 - ts-dedent: 2.2.0 - transitivePeerDependencies: - - encoding - - supports-color - dev: true + resize-observer-polyfill: 1.5.1 - /@storybook/addon-essentials@7.0.27(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-3A5XHrxO+B7oNb/vZCV784Sb1a89OjQZGT5+LdW3vvwcuHMoQy0hXie7g0CVZEbG0qqfUMVmGuDlRCLuexsWog==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@redux-saga/core@1.2.3': dependencies: - '@storybook/addon-actions': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-backgrounds': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-controls': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-docs': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-highlight': 7.0.27 - '@storybook/addon-measure': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-outline': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-toolbars': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-viewport': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-common': 7.0.27 - '@storybook/manager-api': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/node-logger': 7.0.27 - '@storybook/preview-api': 7.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - ts-dedent: 2.2.0 - transitivePeerDependencies: - - encoding - - supports-color - dev: true + '@babel/runtime': 7.23.5 + '@redux-saga/deferred': 1.2.1 + '@redux-saga/delay-p': 1.2.1 + '@redux-saga/is': 1.1.3 + '@redux-saga/symbols': 1.1.3 + '@redux-saga/types': 1.2.1 + redux: 4.2.0 + typescript-tuple: 2.2.1 + + '@redux-saga/deferred@1.2.1': {} - /@storybook/addon-highlight@7.0.27: - resolution: {integrity: sha512-Lfiv0yeETF0pPyyN9lg4YXwLbEZXOOEzSkrXtBPgtrfhK/pfEBE5SUK4hmKy1droq1dEZhO52dxNUhg6y8GdWg==} + '@redux-saga/delay-p@1.2.1': dependencies: - '@storybook/core-events': 7.0.27 - '@storybook/global': 5.0.0 - '@storybook/preview-api': 7.0.27 - dev: true + '@redux-saga/symbols': 1.1.3 - /@storybook/addon-interactions@7.0.27(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-0pt9tWqAqMQpHDS7hglcz0kpyu5KsP/51squflZkY5GhItXEY9IFxoBZ4Ttounp//2z/pj2iQW0dPE5WJpwTrw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true + '@redux-saga/is@1.1.3': dependencies: - '@storybook/client-logger': 7.0.27 - '@storybook/components': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-common': 7.0.27 - '@storybook/core-events': 7.0.27 - '@storybook/global': 5.0.0 - '@storybook/instrumenter': 7.0.27 - '@storybook/manager-api': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.0.27 - '@storybook/theming': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.0.27 - jest-mock: 27.5.1 - polished: 4.2.2 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - ts-dedent: 2.2.0 - transitivePeerDependencies: - - encoding - - supports-color - dev: true + '@redux-saga/symbols': 1.1.3 + '@redux-saga/types': 1.2.1 - /@storybook/addon-links@7.0.27(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-htnnP4VMvtuDAebd+fDDTrsZ6C6q8etag9+5rGhd/8I9NNHn6OZpAZONCk2uwqOOIS2PKQd/qmUwDz/yT2kcmQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true + '@redux-saga/symbols@1.1.3': {} + + '@redux-saga/types@1.2.1': {} + + '@reduxjs/toolkit@1.9.1(react-redux@7.2.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0)': dependencies: - '@storybook/client-logger': 7.0.27 - '@storybook/core-events': 7.0.27 - '@storybook/csf': 0.1.1 - '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.0.27 - '@storybook/router': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.0.27 - prop-types: 15.8.1 + immer: 9.0.16 + redux: 4.2.0 + redux-thunk: 2.4.2(redux@4.2.0) + reselect: 4.1.7 + optionalDependencies: react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - ts-dedent: 2.2.0 - dev: true + react-redux: 7.2.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - /@storybook/addon-mdx-gfm@7.0.27: - resolution: {integrity: sha512-qcEvsL+THqbmz8vprIsZLJkXVFGJrJOljLuIo8648H1zmfstnle3j+ee4v7b9wBstFJUxYcV0u5Uky0DBR15dg==} + '@rollup/plugin-babel@5.3.1(@babel/core@7.25.9)(@types/babel__core@7.20.3)(rollup@2.79.1)': dependencies: - '@storybook/node-logger': 7.0.27 - remark-gfm: 3.0.1 - ts-dedent: 2.2.0 + '@babel/core': 7.25.9 + '@babel/helper-module-imports': 7.25.9 + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) + rollup: 2.79.1 + optionalDependencies: + '@types/babel__core': 7.20.3 transitivePeerDependencies: - supports-color - dev: true - /@storybook/addon-measure@7.0.27(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-ffwVgENUwoiG4vLniTxNV6Uw2dfLz7TkbIivAb+Z+OpkSfwu+2EXCt0shhoVAGfdrGSoaIij2TWabegd0jpUeQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true + '@rollup/plugin-node-resolve@11.2.1(rollup@2.79.1)': dependencies: - '@storybook/client-logger': 7.0.27 - '@storybook/components': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 7.0.27 - '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.0.27 - '@storybook/types': 7.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: true + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) + '@types/resolve': 1.17.1 + builtin-modules: 3.3.0 + deepmerge: 4.3.1 + is-module: 1.0.0 + resolve: 1.22.8 + rollup: 2.79.1 - /@storybook/addon-outline@7.0.27(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-t4uSaeUN8M4LIx7pevub8MZBPzpTfXyjzpdkEhTNqFRccGPqhtL56i++lbRviRbNWAHmBP3pswudxSl97/1dBA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true + '@rollup/plugin-replace@2.4.2(rollup@2.79.1)': dependencies: - '@storybook/client-logger': 7.0.27 - '@storybook/components': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 7.0.27 - '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.0.27 - '@storybook/types': 7.0.27 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - ts-dedent: 2.2.0 - dev: true + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) + magic-string: 0.25.9 + rollup: 2.79.1 - /@storybook/addon-toolbars@7.0.27(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Zz7B/T9l+Eyvh7jYO+t4Fwdq2N8mVHkklztCSWz5gk/VE3cFttku3+PjPithdOXVbpqbux8HC8lDDS5KnQuurA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true + '@rollup/plugin-replace@5.0.2(rollup@3.25.3)': dependencies: - '@storybook/client-logger': 7.0.27 - '@storybook/components': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/manager-api': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.0.27 - '@storybook/theming': 7.0.27(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: true + '@rollup/pluginutils': 5.0.2(rollup@3.25.3) + magic-string: 0.27.0 + optionalDependencies: + rollup: 3.25.3 - /@storybook/addon-viewport@7.0.27(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-evU1b7DT8yUR47ZhfLC255NPlxgupEVOcAtwL+8aQEp3uhff+nYXOEN8u/fd3ZTKs0i37FRyNdk5FOMk18RykQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true + '@rollup/pluginutils@3.1.0(rollup@2.79.1)': dependencies: - '@storybook/client-logger': 7.0.27 - '@storybook/components': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 7.0.27 - '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.0.27 - '@storybook/theming': 7.0.27(react-dom@18.2.0)(react@18.2.0) - memoizerific: 1.11.3 - prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: true + '@types/estree': 0.0.39 + estree-walker: 1.0.1 + picomatch: 2.3.1 + rollup: 2.79.1 - /@storybook/addons@6.5.16(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-p3DqQi+8QRL5k7jXhXmJZLsE/GqHqyY6PcoA1oNTJr0try48uhTGUOYkgzmqtDaa/qPFO5LP+xCPzZXckGtquQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@rollup/pluginutils@5.0.2(rollup@3.25.3)': dependencies: - '@storybook/api': 6.5.16(react-dom@18.2.0)(react@18.2.0) - '@storybook/channels': 6.5.16 - '@storybook/client-logger': 6.5.16 - '@storybook/core-events': 6.5.16 - '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/router': 6.5.16(react-dom@18.2.0)(react@18.2.0) - '@storybook/theming': 6.5.16(react-dom@18.2.0)(react@18.2.0) - '@types/webpack-env': 1.18.1 - core-js: 3.31.0 - global: 4.4.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - regenerator-runtime: 0.13.11 - dev: true + '@types/estree': 1.0.1 + estree-walker: 2.0.2 + picomatch: 2.3.1 + optionalDependencies: + rollup: 3.25.3 - /@storybook/api@6.5.16(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-HOsuT8iomqeTMQJrRx5U8nsC7lJTwRr1DhdD0SzlqL4c80S/7uuCy4IZvOt4sYQjOzW5fOo/kamcoBXyLproTA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@rooks/use-mutation-observer@4.11.2(react@18.2.0)': dependencies: - '@storybook/channels': 6.5.16 - '@storybook/client-logger': 6.5.16 - '@storybook/core-events': 6.5.16 - '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/router': 6.5.16(react-dom@18.2.0)(react@18.2.0) - '@storybook/semver': 7.3.2 - '@storybook/theming': 6.5.16(react-dom@18.2.0)(react@18.2.0) - core-js: 3.31.0 - fast-deep-equal: 3.1.3 - global: 4.4.0 - lodash: 4.17.21 - memoizerific: 1.11.3 react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - regenerator-runtime: 0.13.11 - store2: 2.14.2 - telejson: 6.0.8 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - dev: true - /@storybook/blocks@7.0.27(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-6EXUWS1DjI68HXHFilaav9/sAqLKZKNBaVdhIHoRfB3lJ29MzxQe1k5BN+JRnUQE9cKC/F5XuP9y2pg7P1Y6CQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@selderee/plugin-htmlparser2@0.6.0': dependencies: - '@storybook/channels': 7.0.27 - '@storybook/client-logger': 7.0.27 - '@storybook/components': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 7.0.27 - '@storybook/csf': 0.1.1 - '@storybook/docs-tools': 7.0.27 - '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.0.27 - '@storybook/theming': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.0.27 - '@types/lodash': 4.14.195 - color-convert: 2.0.1 - dequal: 2.0.3 - lodash: 4.17.21 - markdown-to-jsx: 7.2.1(react@18.2.0) - memoizerific: 1.11.3 - polished: 4.2.2 - react: 18.2.0 - react-colorful: 5.6.1(react-dom@18.2.0)(react@18.2.0) - react-dom: 18.2.0(react@18.2.0) - telejson: 7.1.0 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - transitivePeerDependencies: - - encoding - - supports-color - dev: true + domhandler: 4.3.1 + selderee: 0.6.0 - /@storybook/builder-manager@7.0.27: - resolution: {integrity: sha512-KDhBAx8Ib1nnAoB3Lm9kGo2QwBbxwFbonbB0otfT0hGhLSTKllHRYx3WL24bqibI9a87Jt1RT913PZusQ5up4w==} + '@sentry/browser@6.19.7': dependencies: - '@fal-works/esbuild-plugin-global-externals': 2.1.2 - '@storybook/core-common': 7.0.27 - '@storybook/manager': 7.0.27 - '@storybook/node-logger': 7.0.27 - '@types/ejs': 3.1.2 - '@types/find-cache-dir': 3.2.1 - '@yarnpkg/esbuild-plugin-pnp': 3.0.0-rc.15(esbuild@0.17.19) - browser-assert: 1.2.1 - ejs: 3.1.9 - esbuild: 0.17.19 - esbuild-plugin-alias: 0.2.1 - express: 4.18.2 - find-cache-dir: 3.3.2 - fs-extra: 11.1.1 - process: 0.11.10 - util: 0.12.5 - transitivePeerDependencies: - - encoding - - supports-color - dev: true + '@sentry/core': 6.19.7 + '@sentry/types': 6.19.7 + '@sentry/utils': 6.19.7 + tslib: 1.14.1 - /@storybook/builder-vite@7.0.27(typescript@4.9.5)(vite@4.1.5): - resolution: {integrity: sha512-kIoEkkIJSKbJRq81R1jKZJ32NWbdJBcCh88J7y/C6tJFL6itKPucIiQEsptWlDZNOJHlxY2dkw3bVz1zaFWpOw==} - peerDependencies: - '@preact/preset-vite': '*' - typescript: '>= 4.3.x' - vite: ^3.0.0 || ^4.0.0 - vite-plugin-glimmerx: '*' - peerDependenciesMeta: - '@preact/preset-vite': - optional: true - typescript: - optional: true - vite-plugin-glimmerx: - optional: true + '@sentry/core@6.19.7': dependencies: - '@storybook/channel-postmessage': 7.0.27 - '@storybook/channel-websocket': 7.0.27 - '@storybook/client-logger': 7.0.27 - '@storybook/core-common': 7.0.27 - '@storybook/csf-plugin': 7.0.27 - '@storybook/mdx2-csf': 1.1.0 - '@storybook/node-logger': 7.0.27 - '@storybook/preview': 7.0.27 - '@storybook/preview-api': 7.0.27 - '@storybook/types': 7.0.27 - browser-assert: 1.2.1 - es-module-lexer: 0.9.3 - express: 4.18.2 - fs-extra: 11.1.1 - glob: 8.1.0 - glob-promise: 6.0.3(glob@8.1.0) - magic-string: 0.27.0 - remark-external-links: 8.0.0 - remark-slug: 6.1.0 - rollup: 3.25.3 - typescript: 4.9.5 - vite: 4.1.5(@types/node@20.3.2)(sass@1.56.1) - transitivePeerDependencies: - - encoding - - supports-color - dev: true + '@sentry/hub': 6.19.7 + '@sentry/minimal': 6.19.7 + '@sentry/types': 6.19.7 + '@sentry/utils': 6.19.7 + tslib: 1.14.1 - /@storybook/channel-postmessage@7.0.27: - resolution: {integrity: sha512-ScpiStUHvtgy9RrCFNyzzH9l+zHF80lSwW/BZ1MRETJ9ZaOVPrm03U0Ju01wJC57DYPROwPU/wKMetNqKKEhdA==} + '@sentry/hub@6.19.7': dependencies: - '@storybook/channels': 7.0.27 - '@storybook/client-logger': 7.0.27 - '@storybook/core-events': 7.0.27 - '@storybook/global': 5.0.0 - qs: 6.11.2 - telejson: 7.2.0 - dev: true + '@sentry/types': 6.19.7 + '@sentry/utils': 6.19.7 + tslib: 1.14.1 - /@storybook/channel-websocket@7.0.27: - resolution: {integrity: sha512-5WZmd5cd54HYa1WMWN694o266HpvWvGj9XC17DD+DwVARnWRxBmFnZs+X2FE68rGzccjD2cAJXyDTFHrcS+U1g==} + '@sentry/minimal@6.19.7': dependencies: - '@storybook/channels': 7.0.27 - '@storybook/client-logger': 7.0.27 - '@storybook/global': 5.0.0 - telejson: 7.2.0 - dev: true + '@sentry/hub': 6.19.7 + '@sentry/types': 6.19.7 + tslib: 1.14.1 - /@storybook/channels@6.5.16: - resolution: {integrity: sha512-VylzaWQZaMozEwZPJdyJoz+0jpDa8GRyaqu9TGG6QGv+KU5POoZaGLDkRE7TzWkyyP0KQLo80K99MssZCpgSeg==} + '@sentry/react@6.19.7(react@18.2.0)': dependencies: - core-js: 3.31.0 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - dev: true + '@sentry/browser': 6.19.7 + '@sentry/minimal': 6.19.7 + '@sentry/types': 6.19.7 + '@sentry/utils': 6.19.7 + hoist-non-react-statics: 3.3.2 + react: 18.2.0 + tslib: 1.14.1 + + '@sentry/tracing@6.19.7': + dependencies: + '@sentry/hub': 6.19.7 + '@sentry/minimal': 6.19.7 + '@sentry/types': 6.19.7 + '@sentry/utils': 6.19.7 + tslib: 1.14.1 - /@storybook/channels@7.0.27: - resolution: {integrity: sha512-YppvPa1qMyC+oCQJ3tf7Quzpf2NnBlvIRLPJiGAMssUwX5qE0iKe9lTtkNwMaNxEvzz6rDxewSlz+f/MWr4gPw==} - dev: true + '@sentry/types@6.19.7': {} - /@storybook/cli@7.0.27: - resolution: {integrity: sha512-iHugKuE3Rw/QdFSJBCJQYaZJsnEAQtFLf9vYNRjEqmkif5AR0leZj4yQ5kV1OfQ8MRuh+FGQ/u1cz6fRsFiWEA==} - hasBin: true + '@sentry/utils@6.19.7': dependencies: - '@babel/core': 7.22.5 - '@babel/preset-env': 7.22.5(@babel/core@7.20.5) - '@ndelangen/get-tarball': 3.0.9 - '@storybook/codemod': 7.0.27 - '@storybook/core-common': 7.0.27 - '@storybook/core-server': 7.0.27 - '@storybook/csf-tools': 7.0.27 - '@storybook/node-logger': 7.0.27 - '@storybook/telemetry': 7.0.27 - '@storybook/types': 7.0.27 - '@types/semver': 7.5.0 - chalk: 4.1.2 - commander: 6.2.1 - cross-spawn: 7.0.3 - detect-indent: 6.1.0 - envinfo: 7.10.0 - execa: 5.1.1 - express: 4.18.2 - find-up: 5.0.0 - fs-extra: 11.1.1 - get-npm-tarball-url: 2.0.3 - get-port: 5.1.1 - giget: 1.1.2 - globby: 11.1.0 - jscodeshift: 0.14.0(@babel/preset-env@7.22.5) - leven: 3.1.0 - ora: 5.4.1 - prettier: 2.8.8 - prompts: 2.4.2 - puppeteer-core: 2.1.1 - read-pkg-up: 7.0.1 - semver: 7.5.3 - shelljs: 0.8.5 - simple-update-notifier: 1.1.0 - strip-json-comments: 3.1.1 - tempy: 1.0.1 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: true + '@sentry/types': 6.19.7 + tslib: 1.14.1 - /@storybook/client-logger@6.5.16: - resolution: {integrity: sha512-pxcNaCj3ItDdicPTXTtmYJE3YC1SjxFrBmHcyrN+nffeNyiMuViJdOOZzzzucTUG0wcOOX8jaSyak+nnHg5H1Q==} + '@sideway/address@4.1.5': dependencies: - core-js: 3.31.0 - global: 4.4.0 - dev: true + '@hapi/hoek': 9.3.0 + + '@sideway/formula@3.0.1': {} + + '@sideway/pinpoint@2.0.0': {} - /@storybook/client-logger@7.0.27: - resolution: {integrity: sha512-t4F0ByHP4MNiyVI5sgqtxSccr4RmPAqTr/h6CeGLJKWzUYobBV5hwKUd/qlfwdjev2u9C7AdLFPBKVcHX5PteA==} + '@sinclair/typebox@0.27.8': {} + + '@sindresorhus/is@4.6.0': {} + + '@sindresorhus/merge-streams@2.3.0': {} + + '@sinonjs/commons@3.0.1': dependencies: - '@storybook/global': 5.0.0 - dev: true + type-detect: 4.0.8 - /@storybook/client-logger@8.4.0-alpha.8(storybook@7.0.27): - resolution: {integrity: sha512-oUoz0Cs6gM1Ye5EkwuR/Bq4uxhKu0NIrfepe0NbvDHg0Hy9tFYp9XQvtGxmzouAEhfmii7IaSHyoMX7QmrzA6g==} - peerDependencies: - storybook: ^8.4.0-alpha.8 + '@sinonjs/fake-timers@10.3.0': dependencies: - storybook: 7.0.27 - dev: true + '@sinonjs/commons': 3.0.1 - /@storybook/codemod@7.0.27: - resolution: {integrity: sha512-kJyJkxEkbm4tnKKcDgVOqN9PG+Pf3ibsl6Skrm1m3wrbOql3DAVfZzLec/QeFOXrGmmSuvl7JdBQrkJj22Bu1Q==} + '@storybook/addon-a11y@8.2.8(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))': dependencies: - '@babel/core': 7.21.8 - '@babel/preset-env': 7.21.5(@babel/core@7.21.8) - '@babel/types': 7.21.5 - '@storybook/csf': 0.1.2 - '@storybook/csf-tools': 7.0.27 - '@storybook/node-logger': 7.0.27 - '@storybook/types': 7.0.27 - cross-spawn: 7.0.3 - globby: 11.1.0 - jscodeshift: 0.14.0(@babel/preset-env@7.21.5) - lodash: 4.17.21 - prettier: 2.8.8 - recast: 0.23.2 - transitivePeerDependencies: - - supports-color - dev: true + '@storybook/addon-highlight': 8.2.8(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9))) + axe-core: 4.7.2 + storybook: 8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)) - /@storybook/components@7.0.27(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-utt4fA1td7QHpvuD/9dWm9UEoO5xTU3EsXk/U2fPUQzN9NEsbWKV/QubUYIpVy5iwwgUyMvqzWHM0veAriJW5A==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@storybook/addon-actions@8.2.8(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))': + dependencies: + '@storybook/global': 5.0.0 + '@types/uuid': 9.0.8 + dequal: 2.0.3 + polished: 4.2.2 + storybook: 8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)) + uuid: 9.0.0 + + '@storybook/addon-backgrounds@8.2.8(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))': dependencies: - '@storybook/client-logger': 7.0.27 - '@storybook/csf': 0.1.1 '@storybook/global': 5.0.0 - '@storybook/theming': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.0.27 memoizerific: 1.11.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - use-resize-observer: 9.1.0(react-dom@18.2.0)(react@18.2.0) - util-deprecate: 1.0.2 - dev: true + storybook: 8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)) + ts-dedent: 2.2.0 - /@storybook/core-client@7.0.27: - resolution: {integrity: sha512-5cyAdOLqMUJfGW2c31U4/Q5TF+8DQnuQ6jKeX3W8ZQVhDn/Kox4qYNxRR0aRUUHTzxRVojQfmDHXy8IxZqYBNA==} + '@storybook/addon-controls@8.2.8(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))': dependencies: - '@storybook/client-logger': 7.0.27 - '@storybook/preview-api': 7.0.27 - dev: true + dequal: 2.0.3 + lodash: 4.17.21 + storybook: 8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)) + ts-dedent: 2.2.0 - /@storybook/core-common@6.5.16(eslint@8.28.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): - resolution: {integrity: sha512-2qtnKP3TTOzt2cp6LXKRTh7XrI9z5VanMnMTgeoFcA5ebnndD4V6BExQUdYPClE/QooLx6blUWNgS9dFEpjSqQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@storybook/addon-docs@8.2.8(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))(webpack-sources@3.2.3)': dependencies: - '@babel/core': 7.22.5 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-proposal-decorators': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-proposal-export-default-from': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.22.5) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.22.5) - '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.22.5) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-block-scoping': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-classes': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-destructuring': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-for-of': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.22.5) - '@babel/preset-env': 7.22.5(@babel/core@7.22.5) - '@babel/preset-react': 7.22.5(@babel/core@7.22.5) - '@babel/preset-typescript': 7.22.5(@babel/core@7.22.5) - '@babel/register': 7.22.5(@babel/core@7.22.5) - '@storybook/node-logger': 6.5.16 - '@storybook/semver': 7.3.2 - '@types/node': 16.18.37 - '@types/pretty-hrtime': 1.0.1 - babel-loader: 8.3.0(@babel/core@7.22.5)(webpack@4.46.0) - babel-plugin-macros: 3.1.0 - babel-plugin-polyfill-corejs3: 0.1.7(@babel/core@7.22.5) - chalk: 4.1.2 - core-js: 3.31.0 - express: 4.18.2 - file-system-cache: 1.1.0 - find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.28.0)(typescript@4.9.5)(webpack@4.46.0) - fs-extra: 9.1.0 - glob: 7.2.3 - handlebars: 4.7.7 - interpret: 2.2.0 - json5: 2.2.3 - lazy-universal-dotenv: 3.0.1 - picomatch: 2.3.1 - pkg-dir: 5.0.0 - pretty-hrtime: 1.0.3 + '@babel/core': 7.25.9 + '@mdx-js/react': 3.1.0(@types/react@18.0.25)(react@18.2.0) + '@storybook/blocks': 8.2.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9))) + '@storybook/csf-plugin': 8.2.8(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))(webpack-sources@3.2.3) + '@storybook/global': 5.0.0 + '@storybook/react-dom-shim': 8.2.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9))) + '@types/react': 18.0.25 + fs-extra: 11.1.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - resolve-from: 5.0.0 - slash: 3.0.0 - telejson: 6.0.8 + rehype-external-links: 3.0.0 + rehype-slug: 6.0.0 + storybook: 8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)) ts-dedent: 2.2.0 - typescript: 4.9.5 - util-deprecate: 1.0.2 - webpack: 4.46.0 - transitivePeerDependencies: - - eslint - - supports-color - - vue-template-compiler - - webpack-cli - - webpack-command - dev: true - - /@storybook/core-common@7.0.27: - resolution: {integrity: sha512-nlHXpn3CghCwkeIffZ7/PzcraCDXNZz+cnR4L8vtgJn1n6W7y92mxfF8gkRHuiYHWHbPWRVP9M5vAmVoiNMxjw==} - dependencies: - '@storybook/node-logger': 7.0.27 - '@storybook/types': 7.0.27 - '@types/node': 16.18.37 - '@types/node-fetch': 2.6.4 - '@types/pretty-hrtime': 1.0.1 - chalk: 4.1.2 - esbuild: 0.17.19 - esbuild-register: 3.4.2(esbuild@0.17.19) - file-system-cache: 2.3.0 - find-up: 5.0.0 - fs-extra: 11.1.1 - glob: 8.1.0 - glob-promise: 6.0.3(glob@8.1.0) - handlebars: 4.7.7 - lazy-universal-dotenv: 4.0.0 - node-fetch: 2.6.11 - picomatch: 2.3.1 - pkg-dir: 5.0.0 - pretty-hrtime: 1.0.3 - resolve-from: 5.0.0 + transitivePeerDependencies: + - supports-color + - webpack-sources + + '@storybook/addon-essentials@8.2.8(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))(webpack-sources@3.2.3)': + dependencies: + '@storybook/addon-actions': 8.2.8(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9))) + '@storybook/addon-backgrounds': 8.2.8(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9))) + '@storybook/addon-controls': 8.2.8(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9))) + '@storybook/addon-docs': 8.2.8(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))(webpack-sources@3.2.3) + '@storybook/addon-highlight': 8.2.8(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9))) + '@storybook/addon-measure': 8.2.8(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9))) + '@storybook/addon-outline': 8.2.8(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9))) + '@storybook/addon-toolbars': 8.2.8(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9))) + '@storybook/addon-viewport': 8.2.8(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9))) + storybook: 8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)) ts-dedent: 2.2.0 transitivePeerDependencies: - - encoding - supports-color - dev: true + - webpack-sources - /@storybook/core-events@6.5.16: - resolution: {integrity: sha512-qMZQwmvzpH5F2uwNUllTPg6eZXr2OaYZQRRN8VZJiuorZzDNdAFmiVWMWdkThwmyLEJuQKXxqCL8lMj/7PPM+g==} + '@storybook/addon-highlight@8.2.8(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))': dependencies: - core-js: 3.31.0 - dev: true - - /@storybook/core-events@7.0.27: - resolution: {integrity: sha512-sNnqgO5i5DUIqeQfNbr987KWvAciMN9FmMBuYdKjVFMqWFyr44HTgnhfKwZZKl+VMDYkHA9Do7UGSYZIKy0P4g==} - dev: true + '@storybook/global': 5.0.0 + storybook: 8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)) - /@storybook/core-server@7.0.27: - resolution: {integrity: sha512-9OBDtJ57qJYAgj5UNK8ip4XVSQEVAZxAXWv3QKkQi/QHGixOpxNG4piOF5TdQHv4kc/OX6I0j25ZIrO8jl+VnA==} + '@storybook/addon-interactions@8.2.8(@jest/globals@29.7.0)(jest@29.7.0(@types/node@20.3.2)(babel-plugin-macros@3.1.0))(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))(vitest@0.34.5(happy-dom@15.10.2)(playwright@1.35.1)(sass@1.56.1)(terser@5.18.2))': dependencies: - '@aw-web-design/x-default-browser': 1.4.88 - '@discoveryjs/json-ext': 0.5.7 - '@storybook/builder-manager': 7.0.27 - '@storybook/core-common': 7.0.27 - '@storybook/core-events': 7.0.27 - '@storybook/csf': 0.1.2 - '@storybook/csf-tools': 7.0.27 - '@storybook/docs-mdx': 0.1.0 '@storybook/global': 5.0.0 - '@storybook/manager': 7.0.27 - '@storybook/node-logger': 7.0.27 - '@storybook/preview-api': 7.0.27 - '@storybook/telemetry': 7.0.27 - '@storybook/types': 7.0.27 - '@types/detect-port': 1.3.3 - '@types/node': 16.18.37 - '@types/node-fetch': 2.6.4 - '@types/pretty-hrtime': 1.0.1 - '@types/semver': 7.5.0 - better-opn: 2.1.1 - chalk: 4.1.2 - cli-table3: 0.6.3 - compression: 1.7.4 - detect-port: 1.5.1 - express: 4.18.2 - fs-extra: 11.1.1 - globby: 11.1.0 - ip: 2.0.0 - lodash: 4.17.21 - node-fetch: 2.6.11 - open: 8.4.2 - pretty-hrtime: 1.0.3 - prompts: 2.4.2 - read-pkg-up: 7.0.1 - semver: 7.5.3 - serve-favicon: 2.5.0 - telejson: 7.2.0 + '@storybook/instrumenter': 8.2.8(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9))) + '@storybook/test': 8.2.8(@jest/globals@29.7.0)(jest@29.7.0(@types/node@20.3.2)(babel-plugin-macros@3.1.0))(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))(vitest@0.34.5(happy-dom@15.10.2)(playwright@1.35.1)(sass@1.56.1)(terser@5.18.2)) + polished: 4.2.2 + storybook: 8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)) ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - watchpack: 2.4.0 - ws: 8.13.0 transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: true + - '@jest/globals' + - '@types/bun' + - '@types/jest' + - jest + - vitest - /@storybook/csf-plugin@7.0.27: - resolution: {integrity: sha512-9GqsRNrLMH9+P/57TfGZMZOYgnai1klI0hnBAHwPUaBvCwXx/pjOBy4VW30OslT1JLHzu2ZIvZxZiy+yNZM03w==} + '@storybook/addon-links@8.2.8(react@18.2.0)(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))': dependencies: - '@storybook/csf-tools': 7.0.27 - unplugin: 0.10.2 - transitivePeerDependencies: - - supports-color - dev: true + '@storybook/csf': 0.1.11 + '@storybook/global': 5.0.0 + storybook: 8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)) + ts-dedent: 2.2.0 + optionalDependencies: + react: 18.2.0 - /@storybook/csf-tools@6.5.16: - resolution: {integrity: sha512-+WD4sH/OwAfXZX3IN6/LOZ9D9iGEFcN+Vvgv9wOsLRgsAZ10DG/NK6c1unXKDM/ogJtJYccNI8Hd+qNE/GFV6A==} - peerDependencies: - '@storybook/mdx2-csf': ^0.0.3 - peerDependenciesMeta: - '@storybook/mdx2-csf': - optional: true + '@storybook/addon-mdx-gfm@8.2.8(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))': dependencies: - '@babel/core': 7.22.5 - '@babel/generator': 7.22.5 - '@babel/parser': 7.22.5 - '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.22.5) - '@babel/preset-env': 7.22.5(@babel/core@7.22.5) - '@babel/traverse': 7.22.5 - '@babel/types': 7.22.5 - '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/mdx1-csf': 0.0.1(@babel/core@7.22.5) - core-js: 3.31.0 - fs-extra: 9.1.0 - global: 4.4.0 - regenerator-runtime: 0.13.11 + remark-gfm: 4.0.0 + storybook: 8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)) ts-dedent: 2.2.0 transitivePeerDependencies: - supports-color - dev: true - /@storybook/csf-tools@7.0.27: - resolution: {integrity: sha512-JrSP628b1VVQa2lLefEX1u3DRng4Czrl+NBFy5Mgy9JjXFs1dGJM9m0k1/r2qNO4Km9HeTcR4NAcTMfatqzw2Q==} + '@storybook/addon-measure@8.2.8(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))': dependencies: - '@babel/generator': 7.21.9 - '@babel/parser': 7.21.9 - '@babel/traverse': 7.21.5 - '@babel/types': 7.21.5 - '@storybook/csf': 0.1.1 - '@storybook/types': 7.0.27 - fs-extra: 11.1.1 - recast: 0.23.2 - ts-dedent: 2.2.0 - transitivePeerDependencies: - - supports-color - dev: true + '@storybook/global': 5.0.0 + storybook: 8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)) + tiny-invariant: 1.3.1 - /@storybook/csf@0.0.1: - resolution: {integrity: sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw==} + '@storybook/addon-outline@8.2.8(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))': dependencies: - lodash: 4.17.21 - dev: true + '@storybook/global': 5.0.0 + storybook: 8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)) + ts-dedent: 2.2.0 - /@storybook/csf@0.0.2--canary.4566f4d.1: - resolution: {integrity: sha512-9OVvMVh3t9znYZwb0Svf/YQoxX2gVOeQTGe2bses2yj+a3+OJnCrUF3/hGv6Em7KujtOdL2LL+JnG49oMVGFgQ==} + '@storybook/addon-toolbars@8.2.8(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))': dependencies: - lodash: 4.17.21 - dev: true + storybook: 8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)) - /@storybook/csf@0.1.1: - resolution: {integrity: sha512-4hE3AlNVxR60Wc5KSC68ASYzUobjPqtSKyhV6G+ge0FIXU55N5nTY7dXGRZHQGDBPq+XqchMkIdlkHPRs8nTHg==} + '@storybook/addon-viewport@8.2.8(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))': dependencies: - type-fest: 2.19.0 - dev: true + memoizerific: 1.11.3 + storybook: 8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)) - /@storybook/csf@0.1.2: - resolution: {integrity: sha512-ePrvE/pS1vsKR9Xr+o+YwdqNgHUyXvg+1Xjx0h9LrVx7Zq4zNe06pd63F5EvzTbCbJsHj7GHr9tkiaqm7U8WRA==} + '@storybook/blocks@8.2.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))': dependencies: - type-fest: 2.19.0 - dev: true + '@storybook/csf': 0.1.11 + '@storybook/global': 5.0.0 + '@storybook/icons': 1.2.12(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@types/lodash': 4.14.195 + color-convert: 2.0.1 + dequal: 2.0.3 + lodash: 4.17.21 + markdown-to-jsx: 7.5.0(react@18.2.0) + memoizerific: 1.11.3 + polished: 4.2.2 + react-colorful: 5.6.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + storybook: 8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)) + telejson: 7.2.0 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + optionalDependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) - /@storybook/docs-mdx@0.1.0: - resolution: {integrity: sha512-JDaBR9lwVY4eSH5W8EGHrhODjygPd6QImRbwjAuJNEnY0Vw4ie3bPkeGfnacB3OBW6u/agqPv2aRlR46JcAQLg==} - dev: true + '@storybook/builder-vite@8.2.8(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))(typescript@4.9.5)(vite@4.5.5(@types/node@20.3.2)(sass@1.56.1)(terser@5.18.2))(webpack-sources@3.2.3)': + dependencies: + '@storybook/csf-plugin': 8.2.8(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))(webpack-sources@3.2.3) + '@types/find-cache-dir': 3.2.1 + browser-assert: 1.2.1 + es-module-lexer: 1.5.4 + express: 4.21.1 + find-cache-dir: 3.3.2 + fs-extra: 11.1.1 + magic-string: 0.30.5 + storybook: 8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)) + ts-dedent: 2.2.0 + vite: 4.5.5(@types/node@20.3.2)(sass@1.56.1)(terser@5.18.2) + optionalDependencies: + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + - webpack-sources - /@storybook/docs-tools@7.0.27: - resolution: {integrity: sha512-vXlFbwnlJV1ihYbwoP7uJ8JhYXkhaH3WL1yzIJx0kL1Fl1KLQc+x4flBM3pWO2MkrRa2hFLy5GrDwD6GxbMfEQ==} + '@storybook/codemod@8.2.8': dependencies: - '@babel/core': 7.22.5 - '@storybook/core-common': 7.0.27 - '@storybook/preview-api': 7.0.27 - '@storybook/types': 7.0.27 - '@types/doctrine': 0.0.3 - doctrine: 3.0.0 + '@babel/core': 7.25.9 + '@babel/preset-env': 7.25.9(@babel/core@7.20.5) + '@babel/types': 7.25.9 + '@storybook/core': 8.2.8 + '@storybook/csf': 0.1.11 + '@types/cross-spawn': 6.0.6 + cross-spawn: 7.0.3 + globby: 14.0.2 + jscodeshift: 0.15.2(@babel/preset-env@7.25.9(@babel/core@7.25.9)) lodash: 4.17.21 + prettier: 3.3.3 + recast: 0.23.9 + tiny-invariant: 1.3.1 transitivePeerDependencies: - - encoding + - bufferutil - supports-color - dev: true + - utf-8-validate - /@storybook/expect@28.1.3-5: - resolution: {integrity: sha512-lS1oJnY1qTAxnH87C765NdfvGhksA6hBcbUVI5CHiSbNsEtr456wtg/z+dT9XlPriq1D5t2SgfNL9dBAoIGyIA==} - deprecated: In Storybook 8, this package functionality has been integrated to a new package called @storybook/test, which uses Vitest APIs for an improved experience. When upgrading to Storybook 8 with 'npx storybook@latest upgrade', you will get prompted and will get an automigration for the new package. Please migrate when you can. + '@storybook/components@8.3.6(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))': dependencies: - '@types/jest': 28.1.3 - dev: true - - /@storybook/global@5.0.0: - resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} - dev: true + storybook: 8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)) - /@storybook/instrumenter@7.0.27: - resolution: {integrity: sha512-LR1Dm90lC5nurZQ5ZIbNa/8b+0AsBOQkEgnK/BQkheGMdlmrsh/i3dDqscOPZBPTLxZoYhhYWh27fDKHnT8bhw==} + '@storybook/core-common@8.3.6(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))': dependencies: - '@storybook/channels': 7.0.27 - '@storybook/client-logger': 7.0.27 - '@storybook/core-events': 7.0.27 - '@storybook/global': 5.0.0 - '@storybook/preview-api': 7.0.27 - dev: true + storybook: 8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)) - /@storybook/instrumenter@8.4.0-alpha.8(storybook@7.0.27): - resolution: {integrity: sha512-mbGy+Z0KBdmeIYfX4gemhomZMuI3Tdb8kUAjV1tBZU5RYBM/HWUGOHGBXdc+yvYdyqoXWN+RqaP7PU7R7p8Fgg==} - peerDependencies: - storybook: ^8.4.0-alpha.8 + '@storybook/core@8.2.8': dependencies: - '@storybook/global': 5.0.0 - '@vitest/utils': 2.1.1 - storybook: 7.0.27 - dev: true + '@storybook/csf': 0.1.11 + '@types/express': 4.17.21 + '@types/node': 18.19.59 + browser-assert: 1.2.1 + esbuild: 0.18.20 + esbuild-register: 3.6.0(esbuild@0.18.20) + express: 4.21.1 + process: 0.11.10 + recast: 0.23.9 + util: 0.12.5 + ws: 8.13.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate - /@storybook/jest@0.2.3(jest@28.1.3)(vitest@0.34.5): - resolution: {integrity: sha512-ov5izrmbAFObzKeh9AOC5MlmFxAcf0o5i6YFGae9sDx6DGh6alXsRM+chIbucVkUwVHVlSzdfbLDEFGY/ShaYw==} + '@storybook/csf-plugin@8.2.8(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))(webpack-sources@3.2.3)': dependencies: - '@storybook/expect': 28.1.3-5 - '@testing-library/jest-dom': 6.1.4(@types/jest@28.1.3)(jest@28.1.3)(vitest@0.34.5) - '@types/jest': 28.1.3 - jest-mock: 27.5.1 + storybook: 8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)) + unplugin: 1.14.1(webpack-sources@3.2.3) transitivePeerDependencies: - - '@jest/globals' - - jest - - vitest - dev: true + - webpack-sources - /@storybook/manager-api@7.0.27(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-CVgy4ti8h0Xc4nxiPujTzhMANl9wmfLGvSA9ZX6YUBbKFV4UOL4oj105iHPW7Ngse6Qoqj0rnhkOSmLczXT03w==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@storybook/csf-tools@8.3.6(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))': dependencies: - '@storybook/channels': 7.0.27 - '@storybook/client-logger': 7.0.27 - '@storybook/core-events': 7.0.27 - '@storybook/csf': 0.1.1 - '@storybook/global': 5.0.0 - '@storybook/router': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/theming': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.0.27 - dequal: 2.0.3 - lodash: 4.17.21 - memoizerific: 1.11.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - semver: 7.5.3 - store2: 2.14.2 - telejson: 7.1.0 - ts-dedent: 2.2.0 - dev: true + storybook: 8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)) - /@storybook/manager@7.0.27: - resolution: {integrity: sha512-Kxryp9Bp3EEr1axZdq7iOU5epmUvd65j/uT9FxFFHp5ffag6ULfRYVmrXsSIfR6UkwAbx2XYX/W+ScWRel4pDA==} - dev: true - - /@storybook/mdx1-csf@0.0.1(@babel/core@7.22.5): - resolution: {integrity: sha512-4biZIWWzoWlCarMZmTpqcJNgo/RBesYZwGFbQeXiGYsswuvfWARZnW9RE9aUEMZ4XPn7B1N3EKkWcdcWe/K2tg==} + '@storybook/csf@0.0.1': dependencies: - '@babel/generator': 7.22.5 - '@babel/parser': 7.23.0 - '@babel/preset-env': 7.22.5(@babel/core@7.22.5) - '@babel/types': 7.23.0 - '@mdx-js/mdx': 1.6.22 - '@types/lodash': 4.14.195 - js-string-escape: 1.0.1 - loader-utils: 2.0.4 lodash: 4.17.21 - prettier: 2.3.0 - ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@babel/core' - - supports-color - dev: true - /@storybook/mdx2-csf@1.1.0: - resolution: {integrity: sha512-TXJJd5RAKakWx4BtpwvSNdgTDkKM6RkXU8GK34S/LhidQ5Pjz3wcnqb0TxEkfhK/ztbP8nKHqXFwLfa2CYkvQw==} - dev: true + '@storybook/csf@0.1.11': + dependencies: + type-fest: 2.19.0 + + '@storybook/global@5.0.0': {} - /@storybook/node-logger@6.5.16: - resolution: {integrity: sha512-YjhBKrclQtjhqFNSO+BZK+RXOx6EQypAELJKoLFaawg331e8VUfvUuRCNB3fcEWp8G9oH13PQQte0OTjLyyOYg==} + '@storybook/icons@1.2.12(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@types/npmlog': 4.1.4 - chalk: 4.1.2 - core-js: 3.31.0 - npmlog: 5.0.1 - pretty-hrtime: 1.0.3 - dev: true + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) - /@storybook/node-logger@7.0.27: - resolution: {integrity: sha512-idoK+sDaTTPuxHcKhxn+l27Omhxvr1TQ0ALw1h8ehyMbW8TZBdWvYLYfmiWeI3+NQtmeudzxhKSVYTmAY4qDJw==} + '@storybook/instrumenter@8.2.8(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))': dependencies: - '@types/npmlog': 4.1.4 - chalk: 4.1.2 - npmlog: 5.0.1 - pretty-hrtime: 1.0.3 - dev: true - - /@storybook/postinstall@7.0.27: - resolution: {integrity: sha512-VehWuUQxTlqSfTEl3rnufA9+aBbFIv802c8HMJ6SsnwRSb93vlc2ZDGxx3hzryQhbBuI8oNDQx0VdFVwn+MkEg==} - dev: true - - /@storybook/preview-api@7.0.27: - resolution: {integrity: sha512-FhauTuLzRsaIaEORQP5lxYrzwRgZPMnfYEPnzduyGgPiY6VZkS6wIiO6pKzat83V1L4J7m5aZhTB3HtvTwPhvg==} - dependencies: - '@storybook/channel-postmessage': 7.0.27 - '@storybook/channels': 7.0.27 - '@storybook/client-logger': 7.0.27 - '@storybook/core-events': 7.0.27 - '@storybook/csf': 0.1.1 '@storybook/global': 5.0.0 - '@storybook/types': 7.0.27 - '@types/qs': 6.9.7 - dequal: 2.0.3 - lodash: 4.17.21 - memoizerific: 1.11.3 - qs: 6.11.2 - synchronous-promise: 2.0.17 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - dev: true + '@vitest/utils': 1.6.0 + storybook: 8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)) + util: 0.12.5 - /@storybook/preview@7.0.27: - resolution: {integrity: sha512-yHUlMX6wUlIlOYIzfUtqkuXOgRPJJLqGfeniMxLWjNpcePgZ6iSx0fF91ubKfPF1uUbA5vGSVX6KI+AF/RLM1Q==} - dev: true + '@storybook/manager-api@8.3.6(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))': + dependencies: + storybook: 8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)) - /@storybook/react-dom-shim@7.0.27(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-KnyBrs9S8BIWIhNdT6cIpqmSE9CAxL8uGH/ev60OutKeM+rf3SC3AylIBSvMdjy4cykMasg16QiShK+MMbKl9g==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@storybook/preview-api@8.3.6(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))': + dependencies: + storybook: 8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)) + + '@storybook/react-dom-shim@8.2.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))': dependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: true + storybook: 8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)) - /@storybook/react-vite@7.0.27(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(vite@4.1.5): - resolution: {integrity: sha512-dqvN3jGqICYmBcDGtkEVVDWVbVVUj5OdLVaExdU8gfB9f/qYPMTtq95KN3p75uwiDe7KMOCNf5tY/ttRJRkQXA==} - engines: {node: '>=16'} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - vite: ^3.0.0 || ^4.0.0 - dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.2.1(typescript@4.9.5)(vite@4.1.5) - '@rollup/pluginutils': 4.2.1 - '@storybook/builder-vite': 7.0.27(typescript@4.9.5)(vite@4.1.5) - '@storybook/react': 7.0.27(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@vitejs/plugin-react': 3.1.0(vite@4.1.5) - ast-types: 0.14.2 - magic-string: 0.27.0 + '@storybook/react-vite@8.2.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@3.25.3)(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))(typescript@4.9.5)(vite@4.5.5(@types/node@20.3.2)(sass@1.56.1)(terser@5.18.2))(webpack-sources@3.2.3)': + dependencies: + '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.1(typescript@4.9.5)(vite@4.5.5(@types/node@20.3.2)(sass@1.56.1)(terser@5.18.2)) + '@rollup/pluginutils': 5.0.2(rollup@3.25.3) + '@storybook/builder-vite': 8.2.8(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))(typescript@4.9.5)(vite@4.5.5(@types/node@20.3.2)(sass@1.56.1)(terser@5.18.2))(webpack-sources@3.2.3) + '@storybook/react': 8.2.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))(typescript@4.9.5) + find-up: 5.0.0 + magic-string: 0.30.5 react: 18.2.0 - react-docgen: 6.0.0-alpha.3 + react-docgen: 7.1.0 react-dom: 18.2.0(react@18.2.0) - vite: 4.1.5(@types/node@20.3.2)(sass@1.56.1) + resolve: 1.22.8 + storybook: 8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)) + tsconfig-paths: 4.2.0 + vite: 4.5.5(@types/node@20.3.2)(sass@1.56.1)(terser@5.18.2) transitivePeerDependencies: - '@preact/preset-vite' - - encoding + - rollup - supports-color - typescript - vite-plugin-glimmerx - dev: true + - webpack-sources - /@storybook/react@7.0.27(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): - resolution: {integrity: sha512-NPD6J5okkxiBx8k8TWvn03qG6ThD2rp1+2nFGgo3cInCEmvDgoa3wjq/Gl/2QV4W8XrQ8GiItj0Lzca+CBrkOw==} - engines: {node: '>=16.0.0'} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@storybook/react@8.2.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))(typescript@4.9.5)': dependencies: - '@storybook/client-logger': 7.0.27 - '@storybook/core-client': 7.0.27 - '@storybook/docs-tools': 7.0.27 + '@storybook/components': 8.3.6(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9))) '@storybook/global': 5.0.0 - '@storybook/preview-api': 7.0.27 - '@storybook/react-dom-shim': 7.0.27(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.0.27 + '@storybook/manager-api': 8.3.6(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9))) + '@storybook/preview-api': 8.3.6(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9))) + '@storybook/react-dom-shim': 8.2.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9))) + '@storybook/theming': 8.3.6(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9))) '@types/escodegen': 0.0.6 '@types/estree': 0.0.51 - '@types/node': 16.18.37 + '@types/node': 18.19.59 acorn: 7.4.1 acorn-jsx: 5.3.2(acorn@7.4.1) acorn-walk: 7.2.0 - escodegen: 2.0.0 + escodegen: 2.1.0 html-tags: 3.3.1 lodash: 4.17.21 prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-element-to-jsx-string: 15.0.0(react-dom@18.2.0)(react@18.2.0) + react-element-to-jsx-string: 15.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + semver: 7.5.3 + storybook: 8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)) ts-dedent: 2.2.0 type-fest: 2.19.0 - typescript: 4.9.5 - util-deprecate: 1.0.2 - transitivePeerDependencies: - - encoding - - supports-color - dev: true - - /@storybook/router@6.5.16(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-ZgeP8a5YV/iuKbv31V8DjPxlV4AzorRiR8OuSt/KqaiYXNXlOoQDz/qMmiNcrshrfLpmkzoq7fSo4T8lWo2UwQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@storybook/client-logger': 6.5.16 - core-js: 3.31.0 - memoizerific: 1.11.3 - qs: 6.11.2 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - regenerator-runtime: 0.13.11 - dev: true - - /@storybook/router@7.0.27(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Onflm2mERipuYB3SR+0CFAZKPbDiLsJdgX09BP8bGrg7dVYwiGkL5dc9H/CP0KPxtC7kXT8x1Zc+yx0Y0kWiJw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@storybook/client-logger': 7.0.27 - memoizerific: 1.11.3 - qs: 6.11.2 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: true - - /@storybook/semver@7.3.2: - resolution: {integrity: sha512-SWeszlsiPsMI0Ps0jVNtH64cI5c0UF3f7KgjVKJoNP30crQ6wUSddY2hsdeczZXEKVJGEn50Q60flcGsQGIcrg==} - engines: {node: '>=10'} - hasBin: true - dependencies: - core-js: 3.31.0 - find-up: 4.1.0 - dev: true - - /@storybook/store@6.5.16(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-g+bVL5hmMq/9cM51K04e37OviUPHT0rHHrRm5wj/hrf18Kd9120b3sxdQ5Dc+HZ292yuME0n+cyrQPTYx9Epmw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@storybook/addons': 6.5.16(react-dom@18.2.0)(react@18.2.0) - '@storybook/client-logger': 6.5.16 - '@storybook/core-events': 6.5.16 - '@storybook/csf': 0.0.2--canary.4566f4d.1 - core-js: 3.31.0 - fast-deep-equal: 3.1.3 - global: 4.4.0 - lodash: 4.17.21 - memoizerific: 1.11.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - regenerator-runtime: 0.13.11 - slash: 3.0.0 - stable: 0.1.8 - synchronous-promise: 2.0.17 - ts-dedent: 2.2.0 util-deprecate: 1.0.2 - dev: true - - /@storybook/telemetry@7.0.27: - resolution: {integrity: sha512-dKPxR7BpIZU/6WmKXnPRHR1b7mlpLcEPoBxOXZKfEmTV6Qb+OIwr2N7pEQA1Jzlktkfw2CoM2O9s1JOMWrVnvQ==} - dependencies: - '@storybook/client-logger': 7.0.27 - '@storybook/core-common': 7.0.27 - chalk: 4.1.2 - detect-package-manager: 2.0.1 - fetch-retry: 5.0.6 - fs-extra: 11.1.1 - isomorphic-unfetch: 3.1.0 - nanoid: 3.3.6 - read-pkg-up: 7.0.1 - transitivePeerDependencies: - - encoding - - supports-color - dev: true + optionalDependencies: + typescript: 4.9.5 - /@storybook/test-runner@0.9.4(eslint@8.28.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): - resolution: {integrity: sha512-cYtv3nM1vcjA39HahPxqQtqSNKSFyjUcnAkEdNgLAwG23PPCy6+7kaB01GGxWnxfmds/vwUa1W3PLaVby+vtgw==} - hasBin: true + '@storybook/test-runner@0.19.1(@types/node@20.3.2)(babel-plugin-macros@3.1.0)(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))': dependencies: - '@babel/core': 7.20.5 - '@babel/generator': 7.22.5 - '@babel/preset-env': 7.22.5(@babel/core@7.20.5) - '@babel/preset-react': 7.22.5(@babel/core@7.20.5) - '@babel/preset-typescript': 7.22.5(@babel/core@7.20.5) - '@babel/template': 7.22.5 - '@babel/types': 7.22.5 - '@storybook/core-common': 6.5.16(eslint@8.28.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/csf-tools': 6.5.16 - '@storybook/store': 6.5.16(react-dom@18.2.0)(react@18.2.0) - can-bind-to-host: 1.1.2 - commander: 9.5.0 + '@babel/core': 7.25.9 + '@babel/generator': 7.23.0 + '@babel/template': 7.22.15 + '@babel/types': 7.23.0 + '@jest/types': 29.6.3 + '@storybook/core-common': 8.3.6(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9))) + '@storybook/csf': 0.1.11 + '@storybook/csf-tools': 8.3.6(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9))) + '@storybook/preview-api': 8.3.6(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9))) + '@swc/core': 1.7.39 + '@swc/jest': 0.2.36(@swc/core@1.7.39) expect-playwright: 0.8.0 - glob: 8.1.0 - jest: 28.1.3 - jest-circus: 28.1.3 - jest-environment-node: 28.1.3 - jest-junit: 14.0.1 - jest-playwright-preset: 2.0.0(jest-circus@28.1.3)(jest-environment-node@28.1.3)(jest-runner@28.1.3)(jest@28.1.3) - jest-runner: 28.1.3 + jest: 29.7.0(@types/node@20.3.2)(babel-plugin-macros@3.1.0) + jest-circus: 29.7.0(babel-plugin-macros@3.1.0) + jest-environment-node: 29.7.0 + jest-junit: 16.0.0 + jest-playwright-preset: 4.0.0(jest-circus@29.7.0(babel-plugin-macros@3.1.0))(jest-environment-node@29.7.0)(jest-runner@29.7.0)(jest@29.7.0(@types/node@20.3.2)(babel-plugin-macros@3.1.0)) + jest-runner: 29.7.0 jest-serializer-html: 7.1.0 - jest-watch-typeahead: 2.2.2(jest@28.1.3) - node-fetch: 2.6.11 + jest-watch-typeahead: 2.2.2(jest@29.7.0(@types/node@20.3.2)(babel-plugin-macros@3.1.0)) + nyc: 15.1.0 playwright: 1.35.1 - read-pkg-up: 7.0.1 - regenerator-runtime: 0.13.11 - semver: 7.5.3 - tempy: 1.0.1 - ts-dedent: 2.2.0 transitivePeerDependencies: - - '@storybook/mdx2-csf' + - '@swc/helpers' - '@types/node' + - babel-plugin-macros - debug - - encoding - - eslint - node-notifier - - react - - react-dom + - storybook - supports-color - ts-node - - typescript - - vue-template-compiler - - webpack-cli - - webpack-command - dev: true - - /@storybook/testing-library@0.0.14-next.1(storybook@7.0.27): - resolution: {integrity: sha512-1CAl40IKIhcPaCC4pYCG0b9IiYNymktfV/jTrX7ctquRY3akaN7f4A1SippVHosksft0M+rQTFE0ccfWW581fw==} - dependencies: - '@storybook/client-logger': 8.4.0-alpha.8(storybook@7.0.27) - '@storybook/instrumenter': 8.4.0-alpha.8(storybook@7.0.27) - '@testing-library/dom': 8.20.1 - '@testing-library/user-event': 13.5.0(@testing-library/dom@8.20.1) - ts-dedent: 2.2.0 - transitivePeerDependencies: - - storybook - dev: true - - /@storybook/theming@6.5.16(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-hNLctkjaYLRdk1+xYTkC1mg4dYz2wSv6SqbLpcKMbkPHTE0ElhddGPHQqB362md/w9emYXNkt1LSMD8Xk9JzVQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@storybook/client-logger': 6.5.16 - core-js: 3.31.0 - memoizerific: 1.11.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - regenerator-runtime: 0.13.11 - dev: true - /@storybook/theming@7.0.27(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-l2Lc8xX8QXQO8c9gpzdUUJ+0YqLoh8w74I7lzxiife0TzEQrhWD9aRJAVimm8Vzfq5x3CNeJNFHc5PcG8ypQig==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@storybook/test@8.2.8(@jest/globals@29.7.0)(jest@29.7.0(@types/node@20.3.2)(babel-plugin-macros@3.1.0))(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))(vitest@0.34.5(happy-dom@15.10.2)(playwright@1.35.1)(sass@1.56.1)(terser@5.18.2))': dependencies: - '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) - '@storybook/client-logger': 7.0.27 - '@storybook/global': 5.0.0 - memoizerific: 1.11.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: true + '@storybook/csf': 0.1.11 + '@storybook/instrumenter': 8.2.8(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9))) + '@testing-library/dom': 10.1.0 + '@testing-library/jest-dom': 6.4.5(@jest/globals@29.7.0)(jest@29.7.0(@types/node@20.3.2)(babel-plugin-macros@3.1.0))(vitest@0.34.5(happy-dom@15.10.2)(playwright@1.35.1)(sass@1.56.1)(terser@5.18.2)) + '@testing-library/user-event': 14.5.2(@testing-library/dom@10.1.0) + '@vitest/expect': 1.6.0 + '@vitest/spy': 1.6.0 + storybook: 8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)) + util: 0.12.5 + transitivePeerDependencies: + - '@jest/globals' + - '@types/bun' + - '@types/jest' + - jest + - vitest - /@storybook/types@7.0.27: - resolution: {integrity: sha512-pmJuIm+kGaZiDMyl2i5KFS9iGWrpW1jVcp9OMtHeK20LBzY5Hxq/JMc3E+fbVNkAX2hVlVGbbVUNPTvd9AjbrA==} + '@storybook/theming@8.3.6(storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)))': dependencies: - '@storybook/channels': 7.0.27 - '@types/babel__core': 7.20.1 - '@types/express': 4.17.17 - file-system-cache: 2.3.0 - dev: true + storybook: 8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)) - /@surma/rollup-plugin-off-main-thread@2.2.3: - resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==} + '@surma/rollup-plugin-off-main-thread@2.2.3': dependencies: ejs: 3.1.9 json5: 2.2.3 magic-string: 0.25.9 string.prototype.matchall: 4.0.8 - dev: true - /@svgr/babel-plugin-add-jsx-attribute@6.5.1(@babel/core@7.22.5): - resolution: {integrity: sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==} - engines: {node: '>=10'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@svgr/babel-plugin-add-jsx-attribute@6.5.1(@babel/core@7.25.9)': dependencies: - '@babel/core': 7.22.5 - dev: true + '@babel/core': 7.25.9 - /@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.22.5): - resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.25.9)': dependencies: - '@babel/core': 7.22.5 - dev: true + '@babel/core': 7.25.9 - /@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.22.5): - resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.25.9)': dependencies: - '@babel/core': 7.22.5 - dev: true + '@babel/core': 7.25.9 - /@svgr/babel-plugin-replace-jsx-attribute-value@6.5.1(@babel/core@7.22.5): - resolution: {integrity: sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==} - engines: {node: '>=10'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@svgr/babel-plugin-replace-jsx-attribute-value@6.5.1(@babel/core@7.25.9)': dependencies: - '@babel/core': 7.22.5 - dev: true + '@babel/core': 7.25.9 - /@svgr/babel-plugin-svg-dynamic-title@6.5.1(@babel/core@7.22.5): - resolution: {integrity: sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==} - engines: {node: '>=10'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@svgr/babel-plugin-svg-dynamic-title@6.5.1(@babel/core@7.25.9)': dependencies: - '@babel/core': 7.22.5 - dev: true + '@babel/core': 7.25.9 - /@svgr/babel-plugin-svg-em-dimensions@6.5.1(@babel/core@7.22.5): - resolution: {integrity: sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==} - engines: {node: '>=10'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@svgr/babel-plugin-svg-em-dimensions@6.5.1(@babel/core@7.25.9)': dependencies: - '@babel/core': 7.22.5 - dev: true + '@babel/core': 7.25.9 - /@svgr/babel-plugin-transform-react-native-svg@6.5.1(@babel/core@7.22.5): - resolution: {integrity: sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==} - engines: {node: '>=10'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@svgr/babel-plugin-transform-react-native-svg@6.5.1(@babel/core@7.25.9)': dependencies: - '@babel/core': 7.22.5 - dev: true + '@babel/core': 7.25.9 - /@svgr/babel-plugin-transform-svg-component@6.5.1(@babel/core@7.22.5): - resolution: {integrity: sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==} - engines: {node: '>=12'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@svgr/babel-plugin-transform-svg-component@6.5.1(@babel/core@7.25.9)': dependencies: - '@babel/core': 7.22.5 - dev: true + '@babel/core': 7.25.9 - /@svgr/babel-preset@6.5.1(@babel/core@7.22.5): - resolution: {integrity: sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==} - engines: {node: '>=10'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@svgr/babel-preset@6.5.1(@babel/core@7.25.9)': dependencies: - '@babel/core': 7.22.5 - '@svgr/babel-plugin-add-jsx-attribute': 6.5.1(@babel/core@7.22.5) - '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.22.5) - '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.22.5) - '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1(@babel/core@7.22.5) - '@svgr/babel-plugin-svg-dynamic-title': 6.5.1(@babel/core@7.22.5) - '@svgr/babel-plugin-svg-em-dimensions': 6.5.1(@babel/core@7.22.5) - '@svgr/babel-plugin-transform-react-native-svg': 6.5.1(@babel/core@7.22.5) - '@svgr/babel-plugin-transform-svg-component': 6.5.1(@babel/core@7.22.5) - dev: true - - /@svgr/core@6.5.1: - resolution: {integrity: sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==} - engines: {node: '>=10'} + '@babel/core': 7.25.9 + '@svgr/babel-plugin-add-jsx-attribute': 6.5.1(@babel/core@7.25.9) + '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.25.9) + '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.25.9) + '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1(@babel/core@7.25.9) + '@svgr/babel-plugin-svg-dynamic-title': 6.5.1(@babel/core@7.25.9) + '@svgr/babel-plugin-svg-em-dimensions': 6.5.1(@babel/core@7.25.9) + '@svgr/babel-plugin-transform-react-native-svg': 6.5.1(@babel/core@7.25.9) + '@svgr/babel-plugin-transform-svg-component': 6.5.1(@babel/core@7.25.9) + + '@svgr/core@6.5.1': dependencies: - '@babel/core': 7.22.5 - '@svgr/babel-preset': 6.5.1(@babel/core@7.22.5) + '@babel/core': 7.25.9 + '@svgr/babel-preset': 6.5.1(@babel/core@7.25.9) '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) camelcase: 6.3.0 cosmiconfig: 7.1.0 transitivePeerDependencies: - supports-color - dev: true - /@svgr/hast-util-to-babel-ast@6.5.1: - resolution: {integrity: sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==} - engines: {node: '>=10'} + '@svgr/hast-util-to-babel-ast@6.5.1': dependencies: - '@babel/types': 7.23.0 + '@babel/types': 7.25.9 entities: 4.5.0 - dev: true - /@svgr/plugin-jsx@6.5.1(@svgr/core@6.5.1): - resolution: {integrity: sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==} - engines: {node: '>=10'} - peerDependencies: - '@svgr/core': ^6.0.0 + '@svgr/plugin-jsx@6.5.1(@svgr/core@6.5.1)': dependencies: - '@babel/core': 7.22.5 - '@svgr/babel-preset': 6.5.1(@babel/core@7.22.5) + '@babel/core': 7.25.9 + '@svgr/babel-preset': 6.5.1(@babel/core@7.25.9) '@svgr/core': 6.5.1 '@svgr/hast-util-to-babel-ast': 6.5.1 svg-parser: 2.0.4 transitivePeerDependencies: - supports-color - dev: true - /@szmarczak/http-timer@4.0.6: - resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} - engines: {node: '>=10'} + '@swc/core-darwin-arm64@1.7.39': + optional: true + + '@swc/core-darwin-x64@1.7.39': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.7.39': + optional: true + + '@swc/core-linux-arm64-gnu@1.7.39': + optional: true + + '@swc/core-linux-arm64-musl@1.7.39': + optional: true + + '@swc/core-linux-x64-gnu@1.7.39': + optional: true + + '@swc/core-linux-x64-musl@1.7.39': + optional: true + + '@swc/core-win32-arm64-msvc@1.7.39': + optional: true + + '@swc/core-win32-ia32-msvc@1.7.39': + optional: true + + '@swc/core-win32-x64-msvc@1.7.39': + optional: true + + '@swc/core@1.7.39': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.13 + optionalDependencies: + '@swc/core-darwin-arm64': 1.7.39 + '@swc/core-darwin-x64': 1.7.39 + '@swc/core-linux-arm-gnueabihf': 1.7.39 + '@swc/core-linux-arm64-gnu': 1.7.39 + '@swc/core-linux-arm64-musl': 1.7.39 + '@swc/core-linux-x64-gnu': 1.7.39 + '@swc/core-linux-x64-musl': 1.7.39 + '@swc/core-win32-arm64-msvc': 1.7.39 + '@swc/core-win32-ia32-msvc': 1.7.39 + '@swc/core-win32-x64-msvc': 1.7.39 + + '@swc/counter@0.1.3': {} + + '@swc/jest@0.2.36(@swc/core@1.7.39)': + dependencies: + '@jest/create-cache-key-function': 29.7.0 + '@swc/core': 1.7.39 + '@swc/counter': 0.1.3 + jsonc-parser: 3.2.0 + + '@swc/types@0.1.13': + dependencies: + '@swc/counter': 0.1.3 + + '@szmarczak/http-timer@4.0.6': dependencies: defer-to-connect: 2.0.1 - dev: true - /@testing-library/dom@8.20.1: - resolution: {integrity: sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==} - engines: {node: '>=12'} + '@testing-library/dom@10.1.0': dependencies: - '@babel/code-frame': 7.22.5 + '@babel/code-frame': 7.25.9 '@babel/runtime': 7.23.5 '@types/aria-query': 5.0.1 - aria-query: 5.1.3 + aria-query: 5.3.0 chalk: 4.1.2 dom-accessibility-api: 0.5.16 lz-string: 1.5.0 pretty-format: 27.5.1 - dev: true - /@testing-library/dom@9.3.1: - resolution: {integrity: sha512-0DGPd9AR3+iDTjGoMpxIkAsUihHZ3Ai6CneU6bRRrffXMgzCdlNk43jTrD2/5LT6CBb3MWTP8v510JzYtahD2w==} - engines: {node: '>=14'} + '@testing-library/dom@9.3.1': dependencies: '@babel/code-frame': 7.22.5 '@babel/runtime': 7.23.5 @@ -8416,306 +10550,182 @@ packages: dom-accessibility-api: 0.5.16 lz-string: 1.5.0 pretty-format: 27.5.1 - dev: true - /@testing-library/jest-dom@6.1.4(@types/jest@28.1.3)(jest@28.1.3)(vitest@0.34.5): - resolution: {integrity: sha512-wpoYrCYwSZ5/AxcrjLxJmCU6I5QAJXslEeSiMQqaWmP2Kzpd1LvF/qxmAIW2qposULGWq2gw30GgVNFLSc2Jnw==} - engines: {node: '>=14', npm: '>=6', yarn: '>=1'} - peerDependencies: - '@jest/globals': '>= 28' - '@types/jest': '>= 28' - jest: '>= 28' - vitest: '>= 0.32' - peerDependenciesMeta: - '@jest/globals': - optional: true - '@types/jest': - optional: true - jest: - optional: true - vitest: - optional: true + '@testing-library/jest-dom@6.4.5(@jest/globals@29.7.0)(jest@29.7.0(@types/node@20.3.2)(babel-plugin-macros@3.1.0))(vitest@0.34.5(happy-dom@15.10.2)(playwright@1.35.1)(sass@1.56.1)(terser@5.18.2))': dependencies: '@adobe/css-tools': 4.3.2 '@babel/runtime': 7.23.5 - '@types/jest': 28.1.3 aria-query: 5.3.0 chalk: 3.0.0 css.escape: 1.5.1 - dom-accessibility-api: 0.5.16 - jest: 28.1.3 + dom-accessibility-api: 0.6.3 lodash: 4.17.21 redent: 3.0.0 - vitest: 0.34.5(happy-dom@12.9.1)(sass@1.56.1) - dev: true + optionalDependencies: + '@jest/globals': 29.7.0 + jest: 29.7.0(@types/node@20.3.2)(babel-plugin-macros@3.1.0) + vitest: 0.34.5(happy-dom@15.10.2)(playwright@1.35.1)(sass@1.56.1)(terser@5.18.2) - /@testing-library/user-event@13.5.0(@testing-library/dom@8.20.1): - resolution: {integrity: sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==} - engines: {node: '>=10', npm: '>=6'} - peerDependencies: - '@testing-library/dom': '>=7.21.4' + '@testing-library/user-event@14.5.2(@testing-library/dom@10.1.0)': dependencies: - '@babel/runtime': 7.23.5 - '@testing-library/dom': 8.20.1 - dev: true + '@testing-library/dom': 10.1.0 - /@types/acorn@4.0.6: - resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} + '@types/acorn@4.0.6': dependencies: '@types/estree': 1.0.1 - dev: true - - /@types/aria-query@5.0.1: - resolution: {integrity: sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==} - dev: true - /@types/babel__core@7.20.1: - resolution: {integrity: sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==} - dependencies: - '@babel/parser': 7.23.0 - '@babel/types': 7.23.0 - '@types/babel__generator': 7.6.4 - '@types/babel__template': 7.4.1 - '@types/babel__traverse': 7.20.1 - dev: true + '@types/aria-query@5.0.1': {} - /@types/babel__core@7.20.3: - resolution: {integrity: sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA==} + '@types/babel__core@7.20.3': dependencies: '@babel/parser': 7.23.0 '@babel/types': 7.23.0 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.20.1 - dev: true - /@types/babel__generator@7.6.4: - resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} + '@types/babel__generator@7.6.4': dependencies: - '@babel/types': 7.23.0 - dev: true + '@babel/types': 7.25.9 - /@types/babel__template@7.4.1: - resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} + '@types/babel__template@7.4.1': dependencies: - '@babel/parser': 7.23.0 - '@babel/types': 7.23.0 - dev: true + '@babel/parser': 7.25.9 + '@babel/types': 7.25.9 - /@types/babel__traverse@7.20.1: - resolution: {integrity: sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==} + '@types/babel__traverse@7.20.1': dependencies: - '@babel/types': 7.23.0 - dev: true + '@babel/types': 7.25.9 - /@types/body-parser@1.19.2: - resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} + '@types/body-parser@1.19.2': dependencies: '@types/connect': 3.4.35 '@types/node': 20.3.2 - dev: true - /@types/cacheable-request@6.0.3: - resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} + '@types/cacheable-request@6.0.3': dependencies: '@types/http-cache-semantics': 4.0.1 '@types/keyv': 3.1.4 '@types/node': 20.3.2 '@types/responselike': 1.0.0 - dev: true - /@types/chai-subset@1.3.3: - resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} + '@types/chai-subset@1.3.3': dependencies: '@types/chai': 4.3.8 - dev: true - /@types/chai@4.3.8: - resolution: {integrity: sha512-yW/qTM4mRBBcsA9Xw9FbcImYtFPY7sgr+G/O5RDYVmxiy9a+pE5FyoFUi8JYCZY5nicj8atrr1pcfPiYpeNGOA==} - dev: true + '@types/chai@4.3.8': {} - /@types/connect@3.4.35: - resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} + '@types/connect@3.4.35': dependencies: '@types/node': 20.3.2 - dev: true - /@types/d3-array@3.0.5: - resolution: {integrity: sha512-Qk7fpJ6qFp+26VeQ47WY0mkwXaiq8+76RJcncDEfMc2ocRzXLO67bLFRNI4OX1aGBoPzsM5Y2T+/m1pldOgD+A==} - dev: true + '@types/cross-spawn@6.0.6': + dependencies: + '@types/node': 20.3.2 - /@types/d3-axis@3.0.2: - resolution: {integrity: sha512-uGC7DBh0TZrU/LY43Fd8Qr+2ja1FKmH07q2FoZFHo1eYl8aj87GhfVoY1saJVJiq24rp1+wpI6BvQJMKgQm8oA==} + '@types/d3-array@3.0.5': {} + + '@types/d3-axis@3.0.2': dependencies: '@types/d3-selection': 3.0.5 - dev: true - /@types/d3-brush@3.0.2: - resolution: {integrity: sha512-2TEm8KzUG3N7z0TrSKPmbxByBx54M+S9lHoP2J55QuLU0VSQ9mE96EJSAOVNEqd1bbynMjeTS9VHmz8/bSw8rA==} + '@types/d3-brush@3.0.2': dependencies: '@types/d3-selection': 3.0.5 - dev: true - /@types/d3-chord@3.0.2: - resolution: {integrity: sha512-abT/iLHD3sGZwqMTX1TYCMEulr+wBd0SzyOQnjYNLp7sngdOHYtNkMRI5v3w5thoN+BWtlHVDx2Osvq6fxhZWw==} - dev: true + '@types/d3-chord@3.0.2': {} - /@types/d3-color@2.0.3: - resolution: {integrity: sha512-+0EtEjBfKEDtH9Rk3u3kLOUXM5F+iZK+WvASPb0MhIZl8J8NUvGeZRwKCXl+P3HkYx5TdU4YtcibpqHkSR9n7w==} - dev: false + '@types/d3-color@2.0.3': {} - /@types/d3-color@3.1.0: - resolution: {integrity: sha512-HKuicPHJuvPgCD+np6Se9MQvS6OCbJmOjGvylzMJRlDwUXjKTTXs6Pwgk79O09Vj/ho3u1ofXnhFOaEWWPrlwA==} - dev: true + '@types/d3-color@3.1.0': {} - /@types/d3-contour@3.0.2: - resolution: {integrity: sha512-k6/bGDoAGJZnZWaKzeB+9glgXCYGvh6YlluxzBREiVo8f/X2vpTEdgPy9DN7Z2i42PZOZ4JDhVdlTSTSkLDPlQ==} + '@types/d3-contour@3.0.2': dependencies: '@types/d3-array': 3.0.5 '@types/geojson': 7946.0.10 - dev: true - /@types/d3-delaunay@6.0.1: - resolution: {integrity: sha512-tLxQ2sfT0p6sxdG75c6f/ekqxjyYR0+LwPrsO1mbC9YDBzPJhs2HbJJRrn8Ez1DBoHRo2yx7YEATI+8V1nGMnQ==} - dev: true + '@types/d3-delaunay@6.0.1': {} - /@types/d3-dispatch@3.0.2: - resolution: {integrity: sha512-rxN6sHUXEZYCKV05MEh4z4WpPSqIw+aP7n9ZN6WYAAvZoEAghEK1WeVZMZcHRBwyaKflU43PCUAJNjFxCzPDjg==} - dev: true + '@types/d3-dispatch@3.0.2': {} - /@types/d3-drag@3.0.2: - resolution: {integrity: sha512-qmODKEDvyKWVHcWWCOVcuVcOwikLVsyc4q4EBJMREsoQnR2Qoc2cZQUyFUPgO9q4S3qdSqJKBsuefv+h0Qy+tw==} + '@types/d3-drag@3.0.2': dependencies: '@types/d3-selection': 3.0.5 - dev: true - /@types/d3-dsv@3.0.1: - resolution: {integrity: sha512-76pBHCMTvPLt44wFOieouXcGXWOF0AJCceUvaFkxSZEu4VDUdv93JfpMa6VGNFs01FHfuP4a5Ou68eRG1KBfTw==} - dev: true + '@types/d3-dsv@3.0.1': {} - /@types/d3-ease@3.0.0: - resolution: {integrity: sha512-aMo4eaAOijJjA6uU+GIeW018dvy9+oH5Y2VPPzjjfxevvGQ/oRDs+tfYC9b50Q4BygRR8yE2QCLsrT0WtAVseA==} - dev: true + '@types/d3-ease@3.0.0': {} - /@types/d3-fetch@3.0.2: - resolution: {integrity: sha512-gllwYWozWfbep16N9fByNBDTkJW/SyhH6SGRlXloR7WdtAaBui4plTP+gbUgiEot7vGw/ZZop1yDZlgXXSuzjA==} + '@types/d3-fetch@3.0.2': dependencies: '@types/d3-dsv': 3.0.1 - dev: true - /@types/d3-force@3.0.4: - resolution: {integrity: sha512-q7xbVLrWcXvSBBEoadowIUJ7sRpS1yvgMWnzHJggFy5cUZBq2HZL5k/pBSm0GdYWS1vs5/EDwMjSKF55PDY4Aw==} - dev: true + '@types/d3-force@3.0.4': {} - /@types/d3-format@3.0.1: - resolution: {integrity: sha512-5KY70ifCCzorkLuIkDe0Z9YTf9RR2CjBX1iaJG+rgM/cPP+sO+q9YdQ9WdhQcgPj1EQiJ2/0+yUkkziTG6Lubg==} - dev: true + '@types/d3-format@3.0.1': {} - /@types/d3-geo@3.0.3: - resolution: {integrity: sha512-bK9uZJS3vuDCNeeXQ4z3u0E7OeJZXjUgzFdSOtNtMCJCLvDtWDwfpRVWlyt3y8EvRzI0ccOu9xlMVirawolSCw==} + '@types/d3-geo@3.0.3': dependencies: '@types/geojson': 7946.0.10 - dev: true - /@types/d3-hierarchy@3.1.2: - resolution: {integrity: sha512-9hjRTVoZjRFR6xo8igAJyNXQyPX6Aq++Nhb5ebrUF414dv4jr2MitM2fWiOY475wa3Za7TOS2Gh9fmqEhLTt0A==} - dev: true + '@types/d3-hierarchy@3.1.2': {} - /@types/d3-interpolate@2.0.2: - resolution: {integrity: sha512-lElyqlUfIPyWG/cD475vl6msPL4aMU7eJvx1//Q177L8mdXoVPFl1djIESF2FKnc0NyaHvQlJpWwKJYwAhUoCw==} + '@types/d3-interpolate@2.0.2': dependencies: '@types/d3-color': 2.0.3 - dev: false - /@types/d3-interpolate@3.0.1: - resolution: {integrity: sha512-jx5leotSeac3jr0RePOH1KdR9rISG91QIE4Q2PYTu4OymLTZfA3SrnURSLzKH48HmXVUru50b8nje4E79oQSQw==} + '@types/d3-interpolate@3.0.1': dependencies: '@types/d3-color': 3.1.0 - dev: true - /@types/d3-path@2.0.2: - resolution: {integrity: sha512-3YHpvDw9LzONaJzejXLOwZ3LqwwkoXb9LI2YN7Hbd6pkGo5nIlJ09ul4bQhBN4hQZJKmUpX8HkVqbzgUKY48cg==} - dev: false + '@types/d3-path@2.0.2': {} - /@types/d3-path@3.0.0: - resolution: {integrity: sha512-0g/A+mZXgFkQxN3HniRDbXMN79K3CdTpLsevj+PXiTcb2hVyvkZUBg37StmgCQkaD84cUJ4uaDAWq7UJOQy2Tg==} - dev: true + '@types/d3-path@3.0.0': {} - /@types/d3-polygon@3.0.0: - resolution: {integrity: sha512-D49z4DyzTKXM0sGKVqiTDTYr+DHg/uxsiWDAkNrwXYuiZVd9o9wXZIo+YsHkifOiyBkmSWlEngHCQme54/hnHw==} - dev: true + '@types/d3-polygon@3.0.0': {} - /@types/d3-quadtree@3.0.2: - resolution: {integrity: sha512-QNcK8Jguvc8lU+4OfeNx+qnVy7c0VrDJ+CCVFS9srBo2GL9Y18CnIxBdTF3v38flrGy5s1YggcoAiu6s4fLQIw==} - dev: true + '@types/d3-quadtree@3.0.2': {} - /@types/d3-random@3.0.1: - resolution: {integrity: sha512-IIE6YTekGczpLYo/HehAy3JGF1ty7+usI97LqraNa8IiDur+L44d0VOjAvFQWJVdZOJHukUJw+ZdZBlgeUsHOQ==} - dev: true + '@types/d3-random@3.0.1': {} - /@types/d3-scale-chromatic@3.0.0: - resolution: {integrity: sha512-dsoJGEIShosKVRBZB0Vo3C8nqSDqVGujJU6tPznsBJxNJNwMF8utmS83nvCBKQYPpjCzaaHcrf66iTRpZosLPw==} - dev: true + '@types/d3-scale-chromatic@3.0.0': {} - /@types/d3-scale@3.3.2: - resolution: {integrity: sha512-gGqr7x1ost9px3FvIfUMi5XA/F/yAf4UkUDtdQhpH92XCT0Oa7zkkRzY61gPVJq+DxpHn/btouw5ohWkbBsCzQ==} + '@types/d3-scale@3.3.2': dependencies: '@types/d3-time': 2.1.1 - dev: false - /@types/d3-scale@4.0.3: - resolution: {integrity: sha512-PATBiMCpvHJSMtZAMEhc2WyL+hnzarKzI6wAHYjhsonjWJYGq5BXTzQjv4l8m2jO183/4wZ90rKvSeT7o72xNQ==} + '@types/d3-scale@4.0.3': dependencies: '@types/d3-time': 3.0.0 - dev: true - /@types/d3-selection@3.0.5: - resolution: {integrity: sha512-xCB0z3Hi8eFIqyja3vW8iV01+OHGYR2di/+e+AiOcXIOrY82lcvWW8Ke1DYE/EUVMsBl4Db9RppSBS3X1U6J0w==} - dev: true + '@types/d3-selection@3.0.5': {} - /@types/d3-shape@2.1.3: - resolution: {integrity: sha512-HAhCel3wP93kh4/rq+7atLdybcESZ5bRHDEZUojClyZWsRuEMo3A52NGYJSh48SxfxEU6RZIVbZL2YFZ2OAlzQ==} + '@types/d3-shape@2.1.3': dependencies: '@types/d3-path': 2.0.2 - dev: false - /@types/d3-shape@3.1.1: - resolution: {integrity: sha512-6Uh86YFF7LGg4PQkuO2oG6EMBRLuW9cbavUW46zkIO5kuS2PfTqo2o9SkgtQzguBHbLgNnU90UNsITpsX1My+A==} + '@types/d3-shape@3.1.1': dependencies: '@types/d3-path': 3.0.0 - dev: true - /@types/d3-time-format@4.0.0: - resolution: {integrity: sha512-yjfBUe6DJBsDin2BMIulhSHmr5qNR5Pxs17+oW4DoVPyVIXZ+m6bs7j1UVKP08Emv6jRmYrYqxYzO63mQxy1rw==} - dev: true + '@types/d3-time-format@4.0.0': {} - /@types/d3-time@2.1.1: - resolution: {integrity: sha512-9MVYlmIgmRR31C5b4FVSWtuMmBHh2mOWQYfl7XAYOa8dsnb7iEmUmRSWSFgXFtkjxO65d7hTUHQC+RhR/9IWFg==} - dev: false + '@types/d3-time@2.1.1': {} - /@types/d3-time@3.0.0: - resolution: {integrity: sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg==} - dev: true + '@types/d3-time@3.0.0': {} - /@types/d3-timer@3.0.0: - resolution: {integrity: sha512-HNB/9GHqu7Fo8AQiugyJbv6ZxYz58wef0esl4Mv828w1ZKpAshw/uFWVDUcIB9KKFeFKoxS3cHY07FFgtTRZ1g==} - dev: true + '@types/d3-timer@3.0.0': {} - /@types/d3-transition@3.0.3: - resolution: {integrity: sha512-/S90Od8Id1wgQNvIA8iFv9jRhCiZcGhPd2qX0bKF/PS+y0W5CrXKgIiELd2CvG1mlQrWK/qlYh3VxicqG1ZvgA==} + '@types/d3-transition@3.0.3': dependencies: '@types/d3-selection': 3.0.5 - dev: true - /@types/d3-zoom@3.0.3: - resolution: {integrity: sha512-OWk1yYIIWcZ07+igN6BeoG6rqhnJ/pYe+R1qWFM2DtW49zsoSjgb9G5xB0ZXA8hh2jAzey1XuRmMSoXdKw8MDA==} + '@types/d3-zoom@3.0.3': dependencies: '@types/d3-interpolate': 3.0.1 '@types/d3-selection': 3.0.5 - dev: true - /@types/d3@7.4.0: - resolution: {integrity: sha512-jIfNVK0ZlxcuRDKtRS/SypEyOQ6UHaFQBKv032X45VvxSJ6Yi5G9behy9h6tNTHTDGh5Vq+KbmBjUWLgY4meCA==} + '@types/d3@7.4.0': dependencies: '@types/d3-array': 3.0.5 '@types/d3-axis': 3.0.2 @@ -8747,425 +10757,267 @@ packages: '@types/d3-timer': 3.0.0 '@types/d3-transition': 3.0.3 '@types/d3-zoom': 3.0.3 - dev: true - /@types/debug@4.1.8: - resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==} + '@types/debug@4.1.8': dependencies: '@types/ms': 0.7.31 - dev: true - /@types/detect-port@1.3.3: - resolution: {integrity: sha512-bV/jQlAJ/nPY3XqSatkGpu+nGzou+uSwrH1cROhn+jBFg47yaNH+blW4C7p9KhopC7QxCv/6M86s37k8dMk0Yg==} - dev: true + '@types/doctrine@0.0.9': {} - /@types/doctrine@0.0.3: - resolution: {integrity: sha512-w5jZ0ee+HaPOaX25X2/2oGR/7rgAQSYII7X7pp0m9KgBfMP7uKfMfTvcpl5Dj+eDBbpxKGiqE+flqDr6XTd2RA==} - dev: true + '@types/emscripten@1.39.13': {} - /@types/ejs@3.1.2: - resolution: {integrity: sha512-ZmiaE3wglXVWBM9fyVC17aGPkLo/UgaOjEiI2FXQfyczrCefORPxIe+2dVmnmk3zkVIbizjrlQzmPGhSYGXG5g==} - dev: true + '@types/escodegen@0.0.6': {} - /@types/escodegen@0.0.6: - resolution: {integrity: sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig==} - dev: true - - /@types/eslint-scope@3.7.4: - resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==} + '@types/eslint-scope@3.7.4': dependencies: '@types/eslint': 8.40.2 '@types/estree': 1.0.1 - dev: true - /@types/eslint@8.40.2: - resolution: {integrity: sha512-PRVjQ4Eh9z9pmmtaq8nTjZjQwKFk7YIHIud3lRoKRBgUQjgjRmoGxxGEPXQkF+lH7QkHJRNr5F4aBgYCW0lqpQ==} + '@types/eslint@8.40.2': dependencies: '@types/estree': 1.0.1 '@types/json-schema': 7.0.12 - dev: true - /@types/estree-jsx@1.0.0: - resolution: {integrity: sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==} + '@types/estree-jsx@1.0.0': dependencies: '@types/estree': 1.0.1 - dev: true - /@types/estree@0.0.39: - resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} - dev: true + '@types/estree@0.0.39': {} - /@types/estree@0.0.51: - resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} - dev: true + '@types/estree@0.0.51': {} - /@types/estree@1.0.1: - resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} - dev: true + '@types/estree@1.0.1': {} - /@types/express-serve-static-core@4.17.35: - resolution: {integrity: sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==} + '@types/express-serve-static-core@4.17.35': dependencies: '@types/node': 20.3.2 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 '@types/send': 0.17.1 - dev: true - /@types/express@4.17.17: - resolution: {integrity: sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==} + '@types/express@4.17.21': dependencies: '@types/body-parser': 1.19.2 '@types/express-serve-static-core': 4.17.35 '@types/qs': 6.9.7 '@types/serve-static': 1.15.2 - dev: true - /@types/find-cache-dir@3.2.1: - resolution: {integrity: sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw==} - dev: true + '@types/find-cache-dir@3.2.1': {} - /@types/geojson@7946.0.10: - resolution: {integrity: sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA==} - dev: true + '@types/geojson@7946.0.10': {} - /@types/glob@7.2.0: - resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 '@types/node': 20.3.2 - dev: true - /@types/glob@8.1.0: - resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==} + '@types/graceful-fs@4.1.6': dependencies: - '@types/minimatch': 5.1.2 '@types/node': 20.3.2 - dev: true - /@types/graceful-fs@4.1.6: - resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} + '@types/hast@2.3.4': dependencies: - '@types/node': 20.3.2 - dev: true + '@types/unist': 3.0.3 - /@types/hast@2.3.4: - resolution: {integrity: sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==} + '@types/hast@3.0.4': dependencies: - '@types/unist': 2.0.6 - dev: true + '@types/unist': 3.0.3 - /@types/hoist-non-react-statics@3.3.1: - resolution: {integrity: sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==} + '@types/history@4.7.11': {} + + '@types/history@5.0.0': + dependencies: + history: 5.3.0 + + '@types/hoist-non-react-statics@3.3.1': dependencies: '@types/react': 18.0.25 hoist-non-react-statics: 3.3.2 - /@types/http-cache-semantics@4.0.1: - resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==} - dev: true - - /@types/http-errors@2.0.1: - resolution: {integrity: sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==} - dev: true + '@types/http-cache-semantics@4.0.1': {} - /@types/is-function@1.0.1: - resolution: {integrity: sha512-A79HEEiwXTFtfY+Bcbo58M2GRYzCr9itHWzbzHVFNEYCcoU/MMGwYYf721gBrnhpj1s6RGVVha/IgNFnR0Iw/Q==} - dev: true + '@types/http-errors@2.0.1': {} - /@types/istanbul-lib-coverage@2.0.4: - resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} - dev: true + '@types/istanbul-lib-coverage@2.0.4': {} - /@types/istanbul-lib-report@3.0.0: - resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} + '@types/istanbul-lib-report@3.0.0': dependencies: '@types/istanbul-lib-coverage': 2.0.4 - dev: true - /@types/istanbul-reports@3.0.1: - resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} + '@types/istanbul-reports@3.0.1': dependencies: '@types/istanbul-lib-report': 3.0.0 - dev: true - - /@types/jest@28.1.3: - resolution: {integrity: sha512-Tsbjk8Y2hkBaY/gJsataeb4q9Mubw9EOz7+4RjPkzD5KjTvHHs7cpws22InaoXxAVAhF5HfFbzJjo6oKWqSZLw==} - dependencies: - jest-matcher-utils: 28.1.3 - pretty-format: 28.1.3 - dev: true - /@types/json-schema@7.0.12: - resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} - dev: true + '@types/json-schema@7.0.12': {} - /@types/keyv@3.1.4: - resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + '@types/keyv@3.1.4': dependencies: '@types/node': 20.3.2 - dev: true - - /@types/lodash@4.14.195: - resolution: {integrity: sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg==} - dev: true - /@types/mdast@3.0.11: - resolution: {integrity: sha512-Y/uImid8aAwrEA24/1tcRZwpxX3pIFTSilcNDKSPn+Y2iDywSEachzRuvgAYYLR3wpGXAsMbv5lvKLDZLeYPAw==} + '@types/lodash-es@4.17.12': dependencies: - '@types/unist': 2.0.6 - dev: true - - /@types/mdx@2.0.5: - resolution: {integrity: sha512-76CqzuD6Q7LC+AtbPqrvD9AqsN0k8bsYo2bM2J8pmNldP1aIPAbzUQ7QbobyXL4eLr1wK5x8FZFe8eF/ubRuBg==} - dev: true - - /@types/mime-types@2.1.1: - resolution: {integrity: sha512-vXOTGVSLR2jMw440moWTC7H19iUyLtP3Z1YTj7cSsubOICinjMxFeb/V57v9QdyyPGbbWolUFSSmSiRSn94tFw==} - dev: true - - /@types/mime@1.3.2: - resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==} - dev: true - - /@types/mime@3.0.1: - resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} - dev: true - - /@types/minimatch@3.0.5: - resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} - dev: true + '@types/lodash': 4.14.195 - /@types/minimatch@5.1.2: - resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - dev: true + '@types/lodash@4.14.195': {} - /@types/ms@0.7.31: - resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} - dev: true + '@types/mdast@3.0.11': + dependencies: + '@types/unist': 3.0.3 - /@types/node-fetch@2.6.4: - resolution: {integrity: sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg==} + '@types/mdast@4.0.4': dependencies: - '@types/node': 20.3.2 - form-data: 3.0.1 - dev: true + '@types/unist': 2.0.6 - /@types/node@16.18.37: - resolution: {integrity: sha512-ql+4dw4PlPFBP495k8JzUX/oMNRI2Ei4PrMHgj8oT4VhGlYUzF4EYr0qk2fW+XBVGIrq8Zzk13m4cvyXZuv4pA==} - dev: true + '@types/mdx@2.0.5': {} - /@types/node@20.3.2: - resolution: {integrity: sha512-vOBLVQeCQfIcF/2Y7eKFTqrMnizK5lRNQ7ykML/5RuwVXVWxYkgwS7xbt4B6fKCUPgbSL5FSsjHQpaGQP/dQmw==} - dev: true + '@types/mime@1.3.2': {} - /@types/normalize-package-data@2.4.1: - resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} - dev: true + '@types/mime@3.0.1': {} - /@types/npmlog@4.1.4: - resolution: {integrity: sha512-WKG4gTr8przEZBiJ5r3s8ZIAoMXNbOgQ+j/d5O4X3x6kZJRLNvyUJuUK/KoG3+8BaOHPhp2m7WC6JKKeovDSzQ==} - dev: true + '@types/minimatch@3.0.5': {} - /@types/parse-json@4.0.0: - resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} + '@types/minimatch@5.1.2': {} - /@types/parse5@5.0.3: - resolution: {integrity: sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==} - dev: true + '@types/ms@0.7.31': {} - /@types/prettier@2.7.3: - resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} - dev: true + '@types/node@18.19.59': + dependencies: + undici-types: 5.26.5 - /@types/pretty-hrtime@1.0.1: - resolution: {integrity: sha512-VjID5MJb1eGKthz2qUerWT8+R4b9N+CHvGCzg9fn4kWZgaF9AhdYikQio3R7wV8YY1NsQKPaCwKz1Yff+aHNUQ==} - dev: true + '@types/node@20.3.2': {} - /@types/prop-types@15.7.11: - resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} - dev: false + '@types/parse-json@4.0.0': {} - /@types/prop-types@15.7.5: - resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} + '@types/prop-types@15.7.11': {} - /@types/qs@6.9.7: - resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} - dev: true + '@types/prop-types@15.7.5': {} - /@types/range-parser@1.2.4: - resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} - dev: true + '@types/qs@6.9.7': {} - /@types/react-dom@18.0.9: - resolution: {integrity: sha512-qnVvHxASt/H7i+XG1U1xMiY5t+IHcPGUK7TDMDzom08xa7e86eCeKOiLZezwCKVxJn6NEiiy2ekgX8aQssjIKg==} + '@types/range-parser@1.2.4': {} + + '@types/react-dom@18.0.9': dependencies: '@types/react': 18.0.25 - dev: true - /@types/react-is@18.2.1: - resolution: {integrity: sha512-wyUkmaaSZEzFZivD8F2ftSyAfk6L+DfFliVj/mYdOXbVjRcS87fQJLTnhk6dRZPuJjI+9g6RZJO4PNCngUrmyw==} + '@types/react-is@18.2.1': dependencies: '@types/react': 18.0.25 - dev: false - /@types/react-redux@7.1.25: - resolution: {integrity: sha512-bAGh4e+w5D8dajd6InASVIyCo4pZLJ66oLb80F9OBLO1gKESbZcRCJpTT6uLXX+HAB57zw1WTdwJdAsewuTweg==} + '@types/react-redux@7.1.25': dependencies: '@types/hoist-non-react-statics': 3.3.1 '@types/react': 18.0.25 hoist-non-react-statics: 3.3.2 redux: 4.2.0 - /@types/react-table@6.8.10: - resolution: {integrity: sha512-tM+yAmJtMn9dMMeo8kxgwpqnxTaoGQgZmJf3KIHFDV1tUK01YVC8Pq2xC9kvHENrQ89KXSomv8gvIkcUKQPJnw==} + '@types/react-router-dom@4.3.1': dependencies: + '@types/history': 5.0.0 '@types/react': 18.0.25 - dev: false + '@types/react-router': 5.1.20 - /@types/react-transition-group@4.4.6: - resolution: {integrity: sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==} + '@types/react-router@5.1.20': dependencies: + '@types/history': 4.7.11 '@types/react': 18.0.25 - dev: false - /@types/react@18.0.25: - resolution: {integrity: sha512-xD6c0KDT4m7n9uD4ZHi02lzskaiqcBxf4zi+tXZY98a04wvc0hi/TcCPC2FOESZi51Nd7tlUeOJY8RofL799/g==} + '@types/react-table@6.8.10': + dependencies: + '@types/react': 18.0.25 + + '@types/react-table@7.7.19': + dependencies: + '@types/react': 18.0.25 + + '@types/react-transition-group@4.4.6': + dependencies: + '@types/react': 18.0.25 + + '@types/react@18.0.25': dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 csstype: 3.1.2 - /@types/resolve@1.17.1: - resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} + '@types/resolve@1.17.1': dependencies: '@types/node': 20.3.2 - dev: true - /@types/responselike@1.0.0: - resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} + '@types/resolve@1.20.6': {} + + '@types/responselike@1.0.0': dependencies: '@types/node': 20.3.2 - dev: true - /@types/scheduler@0.16.3: - resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} + '@types/scheduler@0.16.3': {} - /@types/semver@7.5.0: - resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} - dev: true + '@types/semver@7.5.0': {} - /@types/send@0.17.1: - resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} + '@types/send@0.17.1': dependencies: '@types/mime': 1.3.2 '@types/node': 20.3.2 - dev: true - /@types/serve-static@1.15.2: - resolution: {integrity: sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==} + '@types/serve-static@1.15.2': dependencies: '@types/http-errors': 2.0.1 '@types/mime': 3.0.1 '@types/node': 20.3.2 - dev: true - /@types/stack-utils@2.0.1: - resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} - dev: true - - /@types/symlink-or-copy@1.2.0: - resolution: {integrity: sha512-Lja2xYuuf2B3knEsga8ShbOdsfNOtzT73GyJmZyY7eGl2+ajOqrs8yM5ze0fsSoYwvA6bw7/Qr7OZ7PEEmYwWg==} - dev: true + '@types/stack-utils@2.0.1': {} - /@types/trusted-types@2.0.3: - resolution: {integrity: sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==} - dev: true + '@types/symlink-or-copy@1.2.0': {} - /@types/unist@2.0.6: - resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} - dev: true + '@types/trusted-types@2.0.3': {} - /@types/wait-on@5.3.1: - resolution: {integrity: sha512-2FFOKCF/YydrMUaqg+fkk49qf0e5rDgwt6aQsMzFQzbS419h2gNOXyiwp/o2yYy27bi/C1z+HgfncryjGzlvgQ==} - dependencies: - '@types/node': 20.3.2 - dev: true + '@types/unist@2.0.6': {} - /@types/webpack-env@1.18.1: - resolution: {integrity: sha512-D0HJET2/UY6k9L6y3f5BL+IDxZmPkYmPT4+qBrRdmRLYRuV0qNKizMgTvYxXZYn+36zjPeoDZAEYBCM6XB+gww==} - dev: true + '@types/unist@3.0.3': {} - /@types/yargs-parser@21.0.0: - resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} - dev: true + '@types/uuid@10.0.0': {} - /@types/yargs@16.0.5: - resolution: {integrity: sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==} - dependencies: - '@types/yargs-parser': 21.0.0 - dev: true + '@types/uuid@9.0.8': {} - /@types/yargs@17.0.24: - resolution: {integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==} + '@types/wait-on@5.3.1': dependencies: - '@types/yargs-parser': 21.0.0 - dev: true - - /@typescript-eslint/parser@5.45.0(eslint@8.28.0)(typescript@4.9.5): - resolution: {integrity: sha512-brvs/WSM4fKUmF5Ot/gEve6qYiCMjm6w4HkHPfS6ZNmxTS0m0iNN4yOChImaCkqc1hRwFGqUyanMXuGal6oyyQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@types/node': 20.3.2 + + '@types/webpack-env@1.18.1': {} + + '@types/yargs-parser@21.0.0': {} + + '@types/yargs@17.0.24': + dependencies: + '@types/yargs-parser': 21.0.0 + + '@typescript-eslint/parser@5.45.0(eslint@8.28.0)(typescript@4.9.5)': dependencies: '@typescript-eslint/scope-manager': 5.45.0 '@typescript-eslint/types': 5.45.0 '@typescript-eslint/typescript-estree': 5.45.0(typescript@4.9.5) debug: 4.3.4(supports-color@9.3.1) eslint: 8.28.0 + optionalDependencies: typescript: 4.9.5 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/scope-manager@5.45.0: - resolution: {integrity: sha512-noDMjr87Arp/PuVrtvN3dXiJstQR1+XlQ4R1EvzG+NMgXi8CuMCXpb8JqNtFHKceVSQ985BZhfRdowJzbv4yKw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/scope-manager@5.45.0': dependencies: '@typescript-eslint/types': 5.45.0 '@typescript-eslint/visitor-keys': 5.45.0 - dev: true - /@typescript-eslint/scope-manager@5.60.1: - resolution: {integrity: sha512-Dn/LnN7fEoRD+KspEOV0xDMynEmR3iSHdgNsarlXNLGGtcUok8L4N71dxUgt3YvlO8si7E+BJ5Fe3wb5yUw7DQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/scope-manager@5.62.0': dependencies: - '@typescript-eslint/types': 5.60.1 - '@typescript-eslint/visitor-keys': 5.60.1 - dev: true + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 - /@typescript-eslint/types@5.45.0: - resolution: {integrity: sha512-QQij+u/vgskA66azc9dCmx+rev79PzX8uDHpsqSjEFtfF2gBUTRCpvYMh2gw2ghkJabNkPlSUCimsyBEQZd1DA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true + '@typescript-eslint/types@5.45.0': {} - /@typescript-eslint/types@5.60.1: - resolution: {integrity: sha512-zDcDx5fccU8BA0IDZc71bAtYIcG9PowaOwaD8rjYbqwK7dpe/UMQl3inJ4UtUK42nOCT41jTSCwg76E62JpMcg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true + '@typescript-eslint/types@5.62.0': {} - /@typescript-eslint/typescript-estree@5.45.0(typescript@4.9.5): - resolution: {integrity: sha512-maRhLGSzqUpFcZgXxg1qc/+H0bT36lHK4APhp0AEUVrpSwXiRAomm/JGjSG+kNUio5kAa3uekCYu/47cnGn5EQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/typescript-estree@5.45.0(typescript@4.9.5)': dependencies: '@typescript-eslint/types': 5.45.0 '@typescript-eslint/visitor-keys': 5.45.0 @@ -9174,275 +11026,145 @@ packages: is-glob: 4.0.3 semver: 7.5.3 tsutils: 3.21.0(typescript@4.9.5) + optionalDependencies: typescript: 4.9.5 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/typescript-estree@5.60.1(typescript@4.9.5): - resolution: {integrity: sha512-hkX70J9+2M2ZT6fhti5Q2FoU9zb+GeZK2SLP1WZlvUDqdMbEKhexZODD1WodNRyO8eS+4nScvT0dts8IdaBzfw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/typescript-estree@5.62.0(typescript@4.9.5)': dependencies: - '@typescript-eslint/types': 5.60.1 - '@typescript-eslint/visitor-keys': 5.60.1 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 debug: 4.3.4(supports-color@9.3.1) globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.3 tsutils: 3.21.0(typescript@4.9.5) + optionalDependencies: typescript: 4.9.5 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/utils@5.60.1(eslint@8.28.0)(typescript@4.9.5): - resolution: {integrity: sha512-tiJ7FFdFQOWssFa3gqb94Ilexyw0JVxj6vBzaSpfN/8IhoKkDuSAenUKvsSHw2A/TMpJb26izIszTXaqygkvpQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + '@typescript-eslint/utils@5.62.0(eslint@8.28.0)(typescript@4.9.5)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.28.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 5.60.1 - '@typescript-eslint/types': 5.60.1 - '@typescript-eslint/typescript-estree': 5.60.1(typescript@4.9.5) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) eslint: 8.28.0 eslint-scope: 5.1.1 semver: 7.5.3 transitivePeerDependencies: - supports-color - typescript - dev: true - /@typescript-eslint/visitor-keys@5.45.0: - resolution: {integrity: sha512-jc6Eccbn2RtQPr1s7th6jJWQHBHI6GBVQkCHoJFQ5UreaKm59Vxw+ynQUPPY2u2Amquc+7tmEoC2G52ApsGNNg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/visitor-keys@5.45.0': dependencies: '@typescript-eslint/types': 5.45.0 eslint-visitor-keys: 3.4.1 - dev: true - /@typescript-eslint/visitor-keys@5.60.1: - resolution: {integrity: sha512-xEYIxKcultP6E/RMKqube11pGjXH1DCo60mQoWhVYyKfLkwbIVVjYxmOenNMxILx0TjCujPTjjnTIVzm09TXIw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/visitor-keys@5.62.0': dependencies: - '@typescript-eslint/types': 5.60.1 + '@typescript-eslint/types': 5.62.0 eslint-visitor-keys: 3.4.1 - dev: true - /@vitejs/plugin-react@3.1.0(vite@4.1.5): - resolution: {integrity: sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - vite: ^4.1.0-beta.0 - dependencies: - '@babel/core': 7.22.5 - '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.5) - magic-string: 0.27.0 - react-refresh: 0.14.0 - vite: 4.1.5(@types/node@20.3.2)(sass@1.56.1) - transitivePeerDependencies: - - supports-color - dev: true + '@ungap/structured-clone@1.2.0': {} - /@vitejs/plugin-react@4.1.0(vite@4.1.5): - resolution: {integrity: sha512-rM0SqazU9iqPUraQ2JlIvReeaxOoRj6n+PzB1C0cBzIbd8qP336nC39/R9yPi3wVcah7E7j/kdU1uCUqMEU4OQ==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - vite: ^4.2.0 + '@vitejs/plugin-react@4.1.0(vite@4.5.5(@types/node@20.3.2)(sass@1.56.1)(terser@5.18.2))': dependencies: '@babel/core': 7.23.2 '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.23.2) '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.23.2) '@types/babel__core': 7.20.3 react-refresh: 0.14.0 - vite: 4.1.5(@types/node@20.3.2)(sass@1.56.1) + vite: 4.5.5(@types/node@20.3.2)(sass@1.56.1)(terser@5.18.2) transitivePeerDependencies: - supports-color - dev: true - /@vitest/expect@0.34.5: - resolution: {integrity: sha512-/3RBIV9XEH+nRpRMqDJBufKIOQaYUH2X6bt0rKSCW0MfKhXFLYsR5ivHifeajRSTsln0FwJbitxLKHSQz/Xwkw==} + '@vitest/expect@0.34.5': dependencies: '@vitest/spy': 0.34.5 '@vitest/utils': 0.34.5 chai: 4.3.10 - dev: true - /@vitest/pretty-format@2.1.1: - resolution: {integrity: sha512-SjxPFOtuINDUW8/UkElJYQSFtnWX7tMksSGW0vfjxMneFqxVr8YJ979QpMbDW7g+BIiq88RAGDjf7en6rvLPPQ==} + '@vitest/expect@1.6.0': dependencies: - tinyrainbow: 1.2.0 - dev: true + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 + chai: 4.3.10 - /@vitest/runner@0.34.5: - resolution: {integrity: sha512-RDEE3ViVvl7jFSCbnBRyYuu23XxmvRTSZWW6W4M7eC5dOsK75d5LIf6uhE5Fqf809DQ1+9ICZZNxhIolWHU4og==} + '@vitest/runner@0.34.5': dependencies: '@vitest/utils': 0.34.5 p-limit: 4.0.0 pathe: 1.1.1 - dev: true - /@vitest/snapshot@0.34.5: - resolution: {integrity: sha512-+ikwSbhu6z2yOdtKmk/aeoDZ9QPm2g/ZO5rXT58RR9Vmu/kB2MamyDSx77dctqdZfP3Diqv4mbc/yw2kPT8rmA==} + '@vitest/snapshot@0.34.5': dependencies: magic-string: 0.30.5 pathe: 1.1.1 pretty-format: 29.5.0 - dev: true - /@vitest/spy@0.34.5: - resolution: {integrity: sha512-epsicsfhvBjRjCMOC/3k00mP/TBGQy8/P0DxOFiWyLt55gnZ99dqCfCiAsKO17BWVjn4eZRIjKvcqNmSz8gvmg==} + '@vitest/spy@0.34.5': dependencies: tinyspy: 2.2.0 - dev: true - /@vitest/utils@0.34.5: - resolution: {integrity: sha512-ur6CmmYQoeHMwmGb0v+qwkwN3yopZuZyf4xt1DBBSGBed8Hf9Gmbm/5dEWqgpLPdRx6Av6jcWXrjcKfkTzg/pw==} + '@vitest/spy@1.6.0': + dependencies: + tinyspy: 2.2.0 + + '@vitest/utils@0.34.5': dependencies: diff-sequences: 29.4.3 loupe: 2.3.7 pretty-format: 29.5.0 - dev: true - /@vitest/utils@2.1.1: - resolution: {integrity: sha512-Y6Q9TsI+qJ2CC0ZKj6VBb+T8UPz593N113nnUykqwANqhgf3QkZeHFlusgKLTqrnVHbj/XDKZcDHol+dxVT+rQ==} + '@vitest/utils@1.6.0': dependencies: - '@vitest/pretty-format': 2.1.1 - loupe: 3.1.1 - tinyrainbow: 1.2.0 - dev: true + diff-sequences: 29.6.3 + estree-walker: 3.0.3 + loupe: 2.3.7 + pretty-format: 29.7.0 - /@webassemblyjs/ast@1.11.6: - resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} + '@webassemblyjs/ast@1.11.6': dependencies: '@webassemblyjs/helper-numbers': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - dev: true - - /@webassemblyjs/ast@1.9.0: - resolution: {integrity: sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==} - dependencies: - '@webassemblyjs/helper-module-context': 1.9.0 - '@webassemblyjs/helper-wasm-bytecode': 1.9.0 - '@webassemblyjs/wast-parser': 1.9.0 - dev: true - - /@webassemblyjs/floating-point-hex-parser@1.11.6: - resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} - dev: true - - /@webassemblyjs/floating-point-hex-parser@1.9.0: - resolution: {integrity: sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==} - dev: true - - /@webassemblyjs/helper-api-error@1.11.6: - resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} - dev: true - /@webassemblyjs/helper-api-error@1.9.0: - resolution: {integrity: sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==} - dev: true + '@webassemblyjs/floating-point-hex-parser@1.11.6': {} - /@webassemblyjs/helper-buffer@1.11.6: - resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} - dev: true - - /@webassemblyjs/helper-buffer@1.9.0: - resolution: {integrity: sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==} - dev: true - - /@webassemblyjs/helper-code-frame@1.9.0: - resolution: {integrity: sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==} - dependencies: - '@webassemblyjs/wast-printer': 1.9.0 - dev: true + '@webassemblyjs/helper-api-error@1.11.6': {} - /@webassemblyjs/helper-fsm@1.9.0: - resolution: {integrity: sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==} - dev: true + '@webassemblyjs/helper-buffer@1.11.6': {} - /@webassemblyjs/helper-module-context@1.9.0: - resolution: {integrity: sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==} - dependencies: - '@webassemblyjs/ast': 1.9.0 - dev: true - - /@webassemblyjs/helper-numbers@1.11.6: - resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + '@webassemblyjs/helper-numbers@1.11.6': dependencies: '@webassemblyjs/floating-point-hex-parser': 1.11.6 '@webassemblyjs/helper-api-error': 1.11.6 '@xtuc/long': 4.2.2 - dev: true - - /@webassemblyjs/helper-wasm-bytecode@1.11.6: - resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} - dev: true - /@webassemblyjs/helper-wasm-bytecode@1.9.0: - resolution: {integrity: sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==} - dev: true + '@webassemblyjs/helper-wasm-bytecode@1.11.6': {} - /@webassemblyjs/helper-wasm-section@1.11.6: - resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} + '@webassemblyjs/helper-wasm-section@1.11.6': dependencies: '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/helper-buffer': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 '@webassemblyjs/wasm-gen': 1.11.6 - dev: true - - /@webassemblyjs/helper-wasm-section@1.9.0: - resolution: {integrity: sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==} - dependencies: - '@webassemblyjs/ast': 1.9.0 - '@webassemblyjs/helper-buffer': 1.9.0 - '@webassemblyjs/helper-wasm-bytecode': 1.9.0 - '@webassemblyjs/wasm-gen': 1.9.0 - dev: true - - /@webassemblyjs/ieee754@1.11.6: - resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} - dependencies: - '@xtuc/ieee754': 1.2.0 - dev: true - /@webassemblyjs/ieee754@1.9.0: - resolution: {integrity: sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==} + '@webassemblyjs/ieee754@1.11.6': dependencies: '@xtuc/ieee754': 1.2.0 - dev: true - /@webassemblyjs/leb128@1.11.6: - resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} - dependencies: - '@xtuc/long': 4.2.2 - dev: true - - /@webassemblyjs/leb128@1.9.0: - resolution: {integrity: sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==} + '@webassemblyjs/leb128@1.11.6': dependencies: '@xtuc/long': 4.2.2 - dev: true - /@webassemblyjs/utf8@1.11.6: - resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} - dev: true - - /@webassemblyjs/utf8@1.9.0: - resolution: {integrity: sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==} - dev: true + '@webassemblyjs/utf8@1.11.6': {} - /@webassemblyjs/wasm-edit@1.11.6: - resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} + '@webassemblyjs/wasm-edit@1.11.6': dependencies: '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/helper-buffer': 1.11.6 @@ -9452,61 +11174,23 @@ packages: '@webassemblyjs/wasm-opt': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 '@webassemblyjs/wast-printer': 1.11.6 - dev: true - - /@webassemblyjs/wasm-edit@1.9.0: - resolution: {integrity: sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==} - dependencies: - '@webassemblyjs/ast': 1.9.0 - '@webassemblyjs/helper-buffer': 1.9.0 - '@webassemblyjs/helper-wasm-bytecode': 1.9.0 - '@webassemblyjs/helper-wasm-section': 1.9.0 - '@webassemblyjs/wasm-gen': 1.9.0 - '@webassemblyjs/wasm-opt': 1.9.0 - '@webassemblyjs/wasm-parser': 1.9.0 - '@webassemblyjs/wast-printer': 1.9.0 - dev: true - - /@webassemblyjs/wasm-gen@1.11.6: - resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} + + '@webassemblyjs/wasm-gen@1.11.6': dependencies: '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 - dev: true - - /@webassemblyjs/wasm-gen@1.9.0: - resolution: {integrity: sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==} - dependencies: - '@webassemblyjs/ast': 1.9.0 - '@webassemblyjs/helper-wasm-bytecode': 1.9.0 - '@webassemblyjs/ieee754': 1.9.0 - '@webassemblyjs/leb128': 1.9.0 - '@webassemblyjs/utf8': 1.9.0 - dev: true - /@webassemblyjs/wasm-opt@1.11.6: - resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} + '@webassemblyjs/wasm-opt@1.11.6': dependencies: '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/helper-buffer': 1.11.6 '@webassemblyjs/wasm-gen': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 - dev: true - /@webassemblyjs/wasm-opt@1.9.0: - resolution: {integrity: sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==} - dependencies: - '@webassemblyjs/ast': 1.9.0 - '@webassemblyjs/helper-buffer': 1.9.0 - '@webassemblyjs/wasm-gen': 1.9.0 - '@webassemblyjs/wasm-parser': 1.9.0 - dev: true - - /@webassemblyjs/wasm-parser@1.11.6: - resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} + '@webassemblyjs/wasm-parser@1.11.6': dependencies: '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/helper-api-error': 1.11.6 @@ -9514,894 +11198,319 @@ packages: '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 - dev: true - - /@webassemblyjs/wasm-parser@1.9.0: - resolution: {integrity: sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==} - dependencies: - '@webassemblyjs/ast': 1.9.0 - '@webassemblyjs/helper-api-error': 1.9.0 - '@webassemblyjs/helper-wasm-bytecode': 1.9.0 - '@webassemblyjs/ieee754': 1.9.0 - '@webassemblyjs/leb128': 1.9.0 - '@webassemblyjs/utf8': 1.9.0 - dev: true - - /@webassemblyjs/wast-parser@1.9.0: - resolution: {integrity: sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==} - dependencies: - '@webassemblyjs/ast': 1.9.0 - '@webassemblyjs/floating-point-hex-parser': 1.9.0 - '@webassemblyjs/helper-api-error': 1.9.0 - '@webassemblyjs/helper-code-frame': 1.9.0 - '@webassemblyjs/helper-fsm': 1.9.0 - '@xtuc/long': 4.2.2 - dev: true - /@webassemblyjs/wast-printer@1.11.6: - resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} + '@webassemblyjs/wast-printer@1.11.6': dependencies: '@webassemblyjs/ast': 1.11.6 '@xtuc/long': 4.2.2 - dev: true - /@webassemblyjs/wast-printer@1.9.0: - resolution: {integrity: sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==} - dependencies: - '@webassemblyjs/ast': 1.9.0 - '@webassemblyjs/wast-parser': 1.9.0 - '@xtuc/long': 4.2.2 - dev: true + '@xtuc/ieee754@1.2.0': {} - /@xtuc/ieee754@1.2.0: - resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - dev: true + '@xtuc/long@4.2.2': {} - /@xtuc/long@4.2.2: - resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - dev: true + '@yarnpkg/fslib@2.10.3': + dependencies: + '@yarnpkg/libzip': 2.3.0 + tslib: 1.14.1 - /@yarnpkg/esbuild-plugin-pnp@3.0.0-rc.15(esbuild@0.17.19): - resolution: {integrity: sha512-kYzDJO5CA9sy+on/s2aIW0411AklfCi8Ck/4QDivOqsMKpStZA2SsR+X27VTggGwpStWaLrjJcDcdDMowtG8MA==} - engines: {node: '>=14.15.0'} - peerDependencies: - esbuild: '>=0.10.0' + '@yarnpkg/libzip@2.3.0': dependencies: - esbuild: 0.17.19 - tslib: 2.6.0 - dev: true + '@types/emscripten': 1.39.13 + tslib: 1.14.1 - /accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} + accepts@1.3.8: dependencies: mime-types: 2.1.35 negotiator: 0.6.3 - dev: true - /acorn-import-assertions@1.9.0(acorn@8.10.0): - resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} - peerDependencies: - acorn: ^8 + acorn-import-assertions@1.9.0(acorn@8.13.0): dependencies: - acorn: 8.10.0 - dev: true + acorn: 8.13.0 - /acorn-jsx@5.3.2(acorn@7.4.1): - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn-jsx@5.3.2(acorn@7.4.1): dependencies: acorn: 7.4.1 - dev: true - /acorn-jsx@5.3.2(acorn@8.10.0): - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn-jsx@5.3.2(acorn@8.10.0): dependencies: acorn: 8.10.0 - dev: true - - /acorn-walk@7.2.0: - resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} - engines: {node: '>=0.4.0'} - dev: true - /acorn-walk@8.2.0: - resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} - engines: {node: '>=0.4.0'} - dev: true + acorn-jsx@5.3.2(acorn@8.13.0): + dependencies: + acorn: 8.13.0 - /acorn@6.4.2: - resolution: {integrity: sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true + acorn-walk@7.2.0: {} - /acorn@7.4.1: - resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true + acorn-walk@8.2.0: {} - /acorn@8.10.0: - resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true + acorn@7.4.1: {} - /acorn@8.9.0: - resolution: {integrity: sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true + acorn@8.10.0: {} - /address@1.2.2: - resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} - engines: {node: '>= 10.0.0'} - dev: true + acorn@8.13.0: {} - /agent-base@5.1.1: - resolution: {integrity: sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==} - engines: {node: '>= 6.0.0'} - dev: true + acorn@8.9.0: {} - /agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} + agent-base@6.0.2: dependencies: debug: 4.3.4(supports-color@9.3.1) transitivePeerDependencies: - supports-color - dev: true - /aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} + aggregate-error@3.1.0: dependencies: clean-stack: 2.2.0 indent-string: 4.0.0 - dev: true - - /ajv-errors@1.0.1(ajv@6.12.6): - resolution: {integrity: sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==} - peerDependencies: - ajv: '>=5.0.0' - dependencies: - ajv: 6.12.6 - dev: true - /ajv-keywords@3.5.2(ajv@6.12.6): - resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} - peerDependencies: - ajv: ^6.9.1 + ajv-keywords@3.5.2(ajv@6.12.6): dependencies: ajv: 6.12.6 - dev: true - /ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - dev: true - /ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + ajv@8.12.0: dependencies: fast-deep-equal: 3.1.3 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 uri-js: 4.4.1 - dev: true - /ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} + ansi-escapes@4.3.2: dependencies: type-fest: 0.21.3 - dev: true - /ansi-escapes@6.2.0: - resolution: {integrity: sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==} - engines: {node: '>=14.16'} + ansi-escapes@6.2.0: dependencies: type-fest: 3.12.0 - dev: true - /ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - dev: true + ansi-regex@5.0.1: {} - /ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} - dev: true + ansi-regex@6.0.1: {} - /ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} + ansi-styles@3.2.1: dependencies: color-convert: 1.9.3 - /ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 - dev: true - - /ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - dev: true - /ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - dev: true + ansi-styles@5.2.0: {} - /anymatch@2.0.0: - resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==} - requiresBuild: true - dependencies: - micromatch: 3.1.10 - normalize-path: 2.1.1 - transitivePeerDependencies: - - supports-color - dev: true - optional: true + ansi-styles@6.2.1: {} - /anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - dev: true - /app-root-dir@1.0.2: - resolution: {integrity: sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g==} - dev: true - - /append-buffer@1.0.2: - resolution: {integrity: sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==} - engines: {node: '>=0.10.0'} + append-buffer@1.0.2: dependencies: buffer-equal: 1.0.1 - dev: true - /append-transform@2.0.0: - resolution: {integrity: sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==} - engines: {node: '>=8'} + append-transform@2.0.0: dependencies: default-require-extensions: 3.0.1 - dev: true - - /aproba@1.2.0: - resolution: {integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==} - dev: true - /aproba@2.0.0: - resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - dev: true - - /archy@1.0.0: - resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} - dev: true - - /are-we-there-yet@2.0.0: - resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} - engines: {node: '>=10'} - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.2 - dev: true + archy@1.0.0: {} - /arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - dev: true + arg@4.1.3: {} - /argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + argparse@1.0.10: dependencies: sprintf-js: 1.0.3 - dev: true - /argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: true + argparse@2.0.1: {} - /aria-query@5.1.3: - resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} + aria-query@5.1.3: dependencies: deep-equal: 2.2.1 - dev: true - /aria-query@5.3.0: - resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + aria-query@5.3.0: dependencies: dequal: 2.0.3 - dev: true - - /arr-diff@4.0.0: - resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} - engines: {node: '>=0.10.0'} - dev: true - - /arr-flatten@1.1.0: - resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} - engines: {node: '>=0.10.0'} - dev: true - - /arr-union@3.1.0: - resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} - engines: {node: '>=0.10.0'} - dev: true - /array-buffer-byte-length@1.0.0: - resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + array-buffer-byte-length@1.0.0: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 is-array-buffer: 3.0.2 - dev: true - /array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - dev: true + array-flatten@1.1.1: {} - /array-includes@3.1.6: - resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} - engines: {node: '>= 0.4'} + array-includes@3.1.6: dependencies: call-bind: 1.0.5 define-properties: 1.2.0 es-abstract: 1.21.2 get-intrinsic: 1.2.1 is-string: 1.0.7 - dev: true - - /array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - dev: true - /array-unique@0.3.2: - resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} - engines: {node: '>=0.10.0'} - dev: true + array-union@2.1.0: {} - /array.prototype.flatmap@1.3.1: - resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} - engines: {node: '>= 0.4'} + array.prototype.flatmap@1.3.1: dependencies: call-bind: 1.0.5 define-properties: 1.2.0 es-abstract: 1.21.2 es-shim-unscopables: 1.0.0 - dev: true - /array.prototype.tosorted@1.1.1: - resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} + array.prototype.tosorted@1.1.1: dependencies: call-bind: 1.0.5 define-properties: 1.2.0 es-abstract: 1.21.2 es-shim-unscopables: 1.0.0 get-intrinsic: 1.2.1 - dev: true - - /asn1.js@5.4.1: - resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} - dependencies: - bn.js: 4.12.0 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - safer-buffer: 2.1.2 - dev: true - - /assert@1.5.0: - resolution: {integrity: sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==} - dependencies: - object-assign: 4.1.1 - util: 0.10.3 - dev: true - - /assert@2.0.0: - resolution: {integrity: sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==} - dependencies: - es6-object-assign: 1.1.0 - is-nan: 1.3.2 - object-is: 1.1.5 - util: 0.12.5 - dev: true - - /assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - dev: true - - /assign-symbols@1.0.0: - resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} - engines: {node: '>=0.10.0'} - dev: true - /ast-types@0.14.2: - resolution: {integrity: sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==} - engines: {node: '>=4'} - dependencies: - tslib: 2.6.0 - dev: true - - /ast-types@0.15.2: - resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} - engines: {node: '>=4'} - dependencies: - tslib: 2.6.0 - dev: true + assertion-error@1.1.0: {} - /ast-types@0.16.1: - resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} - engines: {node: '>=4'} + ast-types@0.16.1: dependencies: - tslib: 2.6.0 - dev: true - - /astral-regex@2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} - engines: {node: '>=8'} - dev: true - - /astring@1.8.6: - resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==} - hasBin: true - dev: true - - /async-each@1.0.6: - resolution: {integrity: sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==} - requiresBuild: true - dev: true - optional: true - - /async-limiter@1.0.1: - resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} - dev: true + tslib: 2.8.0 - /async@3.2.4: - resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} - dev: true + astral-regex@2.0.0: {} - /asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - dev: true + astring@1.8.6: {} - /at-least-node@1.0.0: - resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} - engines: {node: '>= 4.0.0'} - dev: true + async@3.2.4: {} - /atob@2.1.2: - resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} - engines: {node: '>= 4.5.0'} - hasBin: true - dev: true + asynckit@0.4.0: {} - /available-typed-arrays@1.0.5: - resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} - engines: {node: '>= 0.4'} - dev: true + at-least-node@1.0.0: {} - /axe-core@4.7.2: - resolution: {integrity: sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==} - engines: {node: '>=4'} - dev: true + available-typed-arrays@1.0.5: {} - /axios@0.21.4: - resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} - dependencies: - follow-redirects: 1.15.2 - transitivePeerDependencies: - - debug - dev: true + axe-core@4.7.2: {} - /axios@0.25.0: - resolution: {integrity: sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==} + axios@1.7.4: dependencies: - follow-redirects: 1.15.2 + follow-redirects: 1.15.9 + form-data: 4.0.1 + proxy-from-env: 1.1.0 transitivePeerDependencies: - debug - dev: false - /babel-core@7.0.0-bridge.0(@babel/core@7.22.5): - resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} - peerDependencies: - '@babel/core': ^7.0.0-0 + babel-core@7.0.0-bridge.0(@babel/core@7.25.9): dependencies: - '@babel/core': 7.22.5 - dev: true + '@babel/core': 7.25.9 - /babel-jest@28.1.3(@babel/core@7.22.5): - resolution: {integrity: sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - peerDependencies: - '@babel/core': ^7.8.0 + babel-jest@29.7.0(@babel/core@7.25.9): dependencies: - '@babel/core': 7.22.5 - '@jest/transform': 28.1.3 + '@babel/core': 7.25.9 + '@jest/transform': 29.7.0 '@types/babel__core': 7.20.3 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 28.1.3(@babel/core@7.22.5) + babel-preset-jest: 29.6.3(@babel/core@7.25.9) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 transitivePeerDependencies: - supports-color - dev: true - /babel-loader@8.3.0(@babel/core@7.20.5)(webpack@5.88.0): - resolution: {integrity: sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==} - engines: {node: '>= 8.9'} - peerDependencies: - '@babel/core': ^7.0.0 - webpack: '>=2' + babel-loader@8.3.0(@babel/core@7.20.5)(webpack@5.88.0(@swc/core@1.7.39)(esbuild@0.18.20)): dependencies: '@babel/core': 7.20.5 find-cache-dir: 3.3.2 loader-utils: 2.0.4 make-dir: 3.1.0 schema-utils: 2.7.1 - webpack: 5.88.0(esbuild@0.17.19) - dev: true - - /babel-loader@8.3.0(@babel/core@7.22.5)(webpack@4.46.0): - resolution: {integrity: sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==} - engines: {node: '>= 8.9'} - peerDependencies: - '@babel/core': ^7.0.0 - webpack: '>=2' - dependencies: - '@babel/core': 7.22.5 - find-cache-dir: 3.3.2 - loader-utils: 2.0.4 - make-dir: 3.1.0 - schema-utils: 2.7.1 - webpack: 4.46.0 - dev: true - - /babel-plugin-apply-mdx-type-prop@1.6.22(@babel/core@7.12.9): - resolution: {integrity: sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ==} - peerDependencies: - '@babel/core': ^7.11.6 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.10.4 - '@mdx-js/util': 1.6.22 - dev: true - - /babel-plugin-extract-import-names@1.6.22: - resolution: {integrity: sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ==} - dependencies: - '@babel/helper-plugin-utils': 7.10.4 - dev: true + webpack: 5.88.0(@swc/core@1.7.39)(esbuild@0.18.20) - /babel-plugin-istanbul@6.1.1: - resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} - engines: {node: '>=8'} + babel-plugin-istanbul@6.1.1: dependencies: - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.25.9 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.2.1 test-exclude: 6.0.0 transitivePeerDependencies: - supports-color - dev: true - /babel-plugin-jest-hoist@28.1.3: - resolution: {integrity: sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + babel-plugin-jest-hoist@29.6.3: dependencies: - '@babel/template': 7.22.5 - '@babel/types': 7.23.0 + '@babel/template': 7.25.9 + '@babel/types': 7.25.9 '@types/babel__core': 7.20.3 '@types/babel__traverse': 7.20.1 - dev: true - /babel-plugin-macros@3.1.0: - resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} - engines: {node: '>=10', npm: '>=6'} + babel-plugin-macros@3.1.0: dependencies: '@babel/runtime': 7.23.5 cosmiconfig: 7.1.0 resolve: 1.22.2 - /babel-plugin-polyfill-corejs2@0.3.3(@babel/core@7.21.8): - resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.22.5 - '@babel/core': 7.21.8 - '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.8) - semver: 7.5.3 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-polyfill-corejs2@0.4.3(@babel/core@7.20.5): - resolution: {integrity: sha512-bM3gHc337Dta490gg+/AseNB9L4YLHxq1nGKZZSHbhXv4aTYU2MD2cjza1Ru4S6975YLTaL1K8uJf6ukJhhmtw==} - peerDependencies: - '@babel/core': ^7.0.0-0 + babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.20.5): dependencies: - '@babel/compat-data': 7.22.5 + '@babel/compat-data': 7.25.9 '@babel/core': 7.20.5 - '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.20.5) - semver: 7.5.3 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-polyfill-corejs2@0.4.3(@babel/core@7.22.5): - resolution: {integrity: sha512-bM3gHc337Dta490gg+/AseNB9L4YLHxq1nGKZZSHbhXv4aTYU2MD2cjza1Ru4S6975YLTaL1K8uJf6ukJhhmtw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.22.5 - '@babel/core': 7.22.5 - '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.22.5) - semver: 7.5.3 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-polyfill-corejs2@0.4.3(@babel/core@7.23.2): - resolution: {integrity: sha512-bM3gHc337Dta490gg+/AseNB9L4YLHxq1nGKZZSHbhXv4aTYU2MD2cjza1Ru4S6975YLTaL1K8uJf6ukJhhmtw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.22.5 - '@babel/core': 7.23.2 - '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.23.2) + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.20.5) semver: 7.5.3 transitivePeerDependencies: - supports-color - dev: true - - /babel-plugin-polyfill-corejs3@0.1.7(@babel/core@7.22.5): - resolution: {integrity: sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-define-polyfill-provider': 0.1.5(@babel/core@7.22.5) - core-js-compat: 3.31.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-polyfill-corejs3@0.6.0(@babel/core@7.21.8): - resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.8) - core-js-compat: 3.31.0 - transitivePeerDependencies: - - supports-color - dev: true - /babel-plugin-polyfill-corejs3@0.8.1(@babel/core@7.20.5): - resolution: {integrity: sha512-ikFrZITKg1xH6pLND8zT14UPgjKHiGLqex7rGEZCH2EvhsneJaJPemmpQaIZV5AL03II+lXylw3UmddDK8RU5Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 + babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.20.5): dependencies: '@babel/core': 7.20.5 - '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.20.5) - core-js-compat: 3.31.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-polyfill-corejs3@0.8.1(@babel/core@7.22.5): - resolution: {integrity: sha512-ikFrZITKg1xH6pLND8zT14UPgjKHiGLqex7rGEZCH2EvhsneJaJPemmpQaIZV5AL03II+lXylw3UmddDK8RU5Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.22.5) - core-js-compat: 3.31.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-polyfill-corejs3@0.8.1(@babel/core@7.23.2): - resolution: {integrity: sha512-ikFrZITKg1xH6pLND8zT14UPgjKHiGLqex7rGEZCH2EvhsneJaJPemmpQaIZV5AL03II+lXylw3UmddDK8RU5Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.23.2) - core-js-compat: 3.31.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-polyfill-regenerator@0.4.1(@babel/core@7.21.8): - resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.8 - '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.8) + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.20.5) + core-js-compat: 3.38.1 transitivePeerDependencies: - supports-color - dev: true - /babel-plugin-polyfill-regenerator@0.5.0(@babel/core@7.20.5): - resolution: {integrity: sha512-hDJtKjMLVa7Z+LwnTCxoDLQj6wdc+B8dun7ayF2fYieI6OzfuvcLMB32ihJZ4UhCBwNYGl5bg/x/P9cMdnkc2g==} - peerDependencies: - '@babel/core': ^7.0.0-0 + babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.20.5): dependencies: '@babel/core': 7.20.5 - '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.20.5) - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-polyfill-regenerator@0.5.0(@babel/core@7.22.5): - resolution: {integrity: sha512-hDJtKjMLVa7Z+LwnTCxoDLQj6wdc+B8dun7ayF2fYieI6OzfuvcLMB32ihJZ4UhCBwNYGl5bg/x/P9cMdnkc2g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.22.5) - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-polyfill-regenerator@0.5.0(@babel/core@7.23.2): - resolution: {integrity: sha512-hDJtKjMLVa7Z+LwnTCxoDLQj6wdc+B8dun7ayF2fYieI6OzfuvcLMB32ihJZ4UhCBwNYGl5bg/x/P9cMdnkc2g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.23.2) + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.20.5) transitivePeerDependencies: - supports-color - dev: true - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.5): - resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.22.5 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.5) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.5) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.5) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.5) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.5) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.5) - dev: true - - /babel-preset-jest@28.1.3(@babel/core@7.22.5): - resolution: {integrity: sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - peerDependencies: - '@babel/core': ^7.0.0 + babel-preset-current-node-syntax@1.0.1(@babel/core@7.25.9): dependencies: - '@babel/core': 7.22.5 - babel-plugin-jest-hoist: 28.1.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.5) - dev: true - - /bail@1.0.5: - resolution: {integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==} - dev: true - - /bail@2.0.2: - resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} - dev: true - - /balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: true - - /base64-arraybuffer@1.0.2: - resolution: {integrity: sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==} - engines: {node: '>= 0.6.0'} - dev: false + '@babel/core': 7.25.9 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.9) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.25.9) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.9) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.9) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.9) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.9) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.9) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.9) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.9) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.9) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.9) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.9) - /base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - dev: true - - /base@0.11.2: - resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} - engines: {node: '>=0.10.0'} + babel-preset-jest@29.6.3(@babel/core@7.25.9): dependencies: - cache-base: 1.0.1 - class-utils: 0.3.6 - component-emitter: 1.3.0 - define-property: 1.0.0 - isobject: 3.0.1 - mixin-deep: 1.3.2 - pascalcase: 0.1.1 - dev: true + '@babel/core': 7.25.9 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.25.9) - /better-opn@2.1.1: - resolution: {integrity: sha512-kIPXZS5qwyKiX/HcRvDYfmBQUa8XP17I0mYZZ0y4UhpYOSvtsLHDYqmomS+Mj20aDvD3knEiQ0ecQy2nhio3yA==} - engines: {node: '>8.0.0'} - dependencies: - open: 7.4.2 - dev: true + bail@2.0.2: {} - /big-integer@1.6.51: - resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} - engines: {node: '>=0.6'} - dev: true + balanced-match@1.0.2: {} - /big.js@5.2.2: - resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - dev: true + base64-arraybuffer@1.0.2: {} - /binary-extensions@1.13.1: - resolution: {integrity: sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==} - engines: {node: '>=0.10.0'} - requiresBuild: true - dev: true - optional: true + base64-js@1.5.1: {} - /binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} - dev: true + big.js@5.2.2: {} - /bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - requiresBuild: true - dependencies: - file-uri-to-path: 1.0.0 - dev: true - optional: true + binary-extensions@2.2.0: {} - /bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + bl@4.1.0: dependencies: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.2 - dev: true - - /bluebird@3.7.2: - resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} - dev: true - - /blueimp-canvas-to-blob@3.29.0: - resolution: {integrity: sha512-0pcSSGxC0QxT+yVkivxIqW0Y4VlO2XSDPofBAqoJ1qJxgH9eiUDLv50Rixij2cDuEfx4M6DpD9UGZpRhT5Q8qg==} - dev: false - - /bn.js@4.12.0: - resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} - dev: true - /bn.js@5.2.1: - resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - dev: true + blueimp-canvas-to-blob@3.29.0: {} - /body-parser@1.20.1: - resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + body-parser@1.20.3: dependencies: bytes: 3.1.2 content-type: 1.0.5 @@ -10411,86 +11520,41 @@ packages: http-errors: 2.0.0 iconv-lite: 0.4.24 on-finished: 2.4.1 - qs: 6.11.0 - raw-body: 2.5.1 + qs: 6.13.0 + raw-body: 2.5.2 type-is: 1.6.18 unpipe: 1.0.0 transitivePeerDependencies: - supports-color - dev: true - - /boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - dev: true - /bplist-parser@0.2.0: - resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} - engines: {node: '>= 5.10.0'} - dependencies: - big-integer: 1.6.51 - dev: true + boolbase@1.0.0: {} - /brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - dev: true - /brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + brace-expansion@2.0.1: dependencies: balanced-match: 1.0.2 - dev: true - - /braces@2.3.2: - resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} - engines: {node: '>=0.10.0'} - dependencies: - arr-flatten: 1.1.0 - array-unique: 0.3.2 - extend-shallow: 2.0.1 - fill-range: 4.0.0 - isobject: 3.0.1 - repeat-element: 1.1.4 - snapdragon: 0.8.2 - snapdragon-node: 2.1.1 - split-string: 3.1.0 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: true - /braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} + braces@3.0.2: dependencies: fill-range: 7.0.1 - dev: true - /broccoli-node-api@1.7.0: - resolution: {integrity: sha512-QIqLSVJWJUVOhclmkmypJJH9u9s/aWH4+FH6Q6Ju5l+Io4dtwqdPUNmDfw40o6sxhbZHhqGujDJuHTML1wG8Yw==} - dev: true + broccoli-node-api@1.7.0: {} - /broccoli-node-info@2.2.0: - resolution: {integrity: sha512-VabSGRpKIzpmC+r+tJueCE5h8k6vON7EIMMWu6d/FyPdtijwLQ7QvzShEw+m3mHoDzUaj/kiZsDYrS8X2adsBg==} - engines: {node: 8.* || >= 10.*} - dev: true + broccoli-node-info@2.2.0: {} - /broccoli-output-wrapper@3.2.5: - resolution: {integrity: sha512-bQAtwjSrF4Nu0CK0JOy5OZqw9t5U0zzv2555EA/cF8/a8SLDTIetk9UgrtMVw7qKLKdSpOZ2liZNeZZDaKgayw==} - engines: {node: 10.* || >= 12.*} + broccoli-output-wrapper@3.2.5: dependencies: fs-extra: 8.1.0 heimdalljs-logger: 0.1.10 symlink-or-copy: 1.3.1 transitivePeerDependencies: - supports-color - dev: true - /broccoli-plugin@4.0.7: - resolution: {integrity: sha512-a4zUsWtA1uns1K7p9rExYVYG99rdKeGRymW0qOCNkvDPHQxVi3yVyJHhQbM3EZwdt2E0mnhr5e0c/bPpJ7p3Wg==} - engines: {node: 10.* || >= 12.*} + broccoli-plugin@4.0.7: dependencies: broccoli-node-api: 1.7.0 broccoli-output-wrapper: 3.2.5 @@ -10501,212 +11565,45 @@ packages: symlink-or-copy: 1.3.1 transitivePeerDependencies: - supports-color - dev: true - - /brorand@1.1.0: - resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} - dev: true - - /browser-assert@1.2.1: - resolution: {integrity: sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==} - dev: true - - /browserify-aes@1.2.0: - resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} - dependencies: - buffer-xor: 1.0.3 - cipher-base: 1.0.4 - create-hash: 1.2.0 - evp_bytestokey: 1.0.3 - inherits: 2.0.4 - safe-buffer: 5.2.1 - dev: true - - /browserify-cipher@1.0.1: - resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} - dependencies: - browserify-aes: 1.2.0 - browserify-des: 1.0.2 - evp_bytestokey: 1.0.3 - dev: true - - /browserify-des@1.0.2: - resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} - dependencies: - cipher-base: 1.0.4 - des.js: 1.1.0 - inherits: 2.0.4 - safe-buffer: 5.2.1 - dev: true - /browserify-rsa@4.1.0: - resolution: {integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==} - dependencies: - bn.js: 5.2.1 - randombytes: 2.1.0 - dev: true - - /browserify-sign@4.2.2: - resolution: {integrity: sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==} - engines: {node: '>= 4'} - dependencies: - bn.js: 5.2.1 - browserify-rsa: 4.1.0 - create-hash: 1.2.0 - create-hmac: 1.1.7 - elliptic: 6.5.4 - inherits: 2.0.4 - parse-asn1: 5.1.6 - readable-stream: 3.6.2 - safe-buffer: 5.2.1 - dev: true + browser-assert@1.2.1: {} - /browserify-zlib@0.1.4: - resolution: {integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==} - dependencies: - pako: 0.2.9 - dev: true - - /browserify-zlib@0.2.0: - resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} - dependencies: - pako: 1.0.11 - dev: true - - /browserslist@4.21.9: - resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true + browserslist@4.21.9: dependencies: caniuse-lite: 1.0.30001508 electron-to-chromium: 1.4.442 node-releases: 2.0.12 update-browserslist-db: 1.0.11(browserslist@4.21.9) - /bser@2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + browserslist@4.24.2: dependencies: - node-int64: 0.4.0 - dev: true - - /buffer-crc32@0.2.13: - resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - dev: true - - /buffer-equal@1.0.1: - resolution: {integrity: sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==} - engines: {node: '>=0.4'} - dev: true + caniuse-lite: 1.0.30001669 + electron-to-chromium: 1.5.45 + node-releases: 2.0.18 + update-browserslist-db: 1.1.1(browserslist@4.24.2) - /buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: true + bser@2.1.1: + dependencies: + node-int64: 0.4.0 - /buffer-xor@1.0.3: - resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} - dev: true + buffer-equal@1.0.1: {} - /buffer@4.9.2: - resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==} - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - isarray: 1.0.0 - dev: true + buffer-from@1.1.2: {} - /buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + buffer@5.7.1: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - dev: true - - /builtin-modules@3.3.0: - resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} - engines: {node: '>=6'} - dev: true - - /builtin-status-codes@3.0.0: - resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} - dev: true - - /bytes@3.0.0: - resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} - engines: {node: '>= 0.8'} - dev: true - - /bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} - dev: true - - /c8@7.14.0: - resolution: {integrity: sha512-i04rtkkcNcCf7zsQcSv/T9EbUn4RXQ6mropeMcjFOsQXQ0iGLAr/xT6TImQg4+U9hmNpN9XdvPkjUL1IzbgxJw==} - engines: {node: '>=10.12.0'} - hasBin: true - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@istanbuljs/schema': 0.1.3 - find-up: 5.0.0 - foreground-child: 2.0.0 - istanbul-lib-coverage: 3.2.0 - istanbul-lib-report: 3.0.0 - istanbul-reports: 3.1.5 - rimraf: 3.0.2 - test-exclude: 6.0.0 - v8-to-istanbul: 9.1.0 - yargs: 16.2.0 - yargs-parser: 20.2.9 - dev: true - /cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - dev: true + builtin-modules@3.3.0: {} - /cacache@12.0.4: - resolution: {integrity: sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==} - dependencies: - bluebird: 3.7.2 - chownr: 1.1.4 - figgy-pudding: 3.5.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - infer-owner: 1.0.4 - lru-cache: 5.1.1 - mississippi: 3.0.0 - mkdirp: 0.5.6 - move-concurrently: 1.0.1 - promise-inflight: 1.0.1(bluebird@3.7.2) - rimraf: 2.7.1 - ssri: 6.0.2 - unique-filename: 1.1.1 - y18n: 4.0.3 - dev: true + bytes@3.1.2: {} - /cache-base@1.0.1: - resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} - engines: {node: '>=0.10.0'} - dependencies: - collection-visit: 1.0.0 - component-emitter: 1.3.0 - get-value: 2.0.6 - has-value: 1.0.0 - isobject: 3.0.1 - set-value: 2.0.1 - to-object-path: 0.3.0 - union-value: 1.0.1 - unset-value: 1.0.0 - dev: true + cac@6.7.14: {} - /cacheable-lookup@5.0.4: - resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} - engines: {node: '>=10.6.0'} - dev: true + cacheable-lookup@5.0.4: {} - /cacheable-request@7.0.4: - resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} - engines: {node: '>=8'} + cacheable-request@7.0.4: dependencies: clone-response: 1.0.3 get-stream: 5.2.0 @@ -10715,64 +11612,41 @@ packages: lowercase-keys: 2.0.0 normalize-url: 6.1.0 responselike: 2.0.1 - dev: true - /caching-transform@4.0.0: - resolution: {integrity: sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==} - engines: {node: '>=8'} + caching-transform@4.0.0: dependencies: hasha: 5.2.2 make-dir: 3.1.0 package-hash: 4.0.0 write-file-atomic: 3.0.3 - dev: true - /call-bind@1.0.5: - resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + call-bind@1.0.5: dependencies: function-bind: 1.1.2 get-intrinsic: 1.2.1 set-function-length: 1.1.1 - dev: true - - /callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - /camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} - dev: true - /camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - dev: true + call-bind@1.0.7: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 - /camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - dev: true + callsites@3.1.0: {} - /can-bind-to-host@1.1.2: - resolution: {integrity: sha512-CqsgmaqiyFRNtP17Ihqa/uHbZxRirntNVNl/kJz31DLKuNRfzvzionkLoUSkElQ6Cz+cpXKA3mhHq4tjbieujA==} - hasBin: true - dev: true + camelcase@5.3.1: {} - /caniuse-lite@1.0.30001508: - resolution: {integrity: sha512-sdQZOJdmt3GJs1UMNpCCCyeuS2IEGLXnHyAo9yIO5JJDjbjoVRij4M1qep6P6gFpptD1PqIYgzM+gwJbOi92mw==} + camelcase@6.3.0: {} - /ccount@1.1.0: - resolution: {integrity: sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==} - dev: true + caniuse-lite@1.0.30001508: {} - /ccount@2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - dev: true + caniuse-lite@1.0.30001669: {} - /chai@4.3.10: - resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==} - engines: {node: '>=4'} + ccount@2.0.1: {} + + chai@4.3.10: dependencies: assertion-error: 1.1.0 check-error: 1.0.3 @@ -10781,85 +11655,42 @@ packages: loupe: 2.3.7 pathval: 1.1.1 type-detect: 4.0.8 - dev: true - /chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} + chalk@2.4.2: dependencies: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 - /chalk@3.0.0: - resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} - engines: {node: '>=8'} + chalk@3.0.0: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - dev: true - /chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - dev: true - - /chalk@5.2.0: - resolution: {integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - dev: true - - /char-regex@1.0.2: - resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} - engines: {node: '>=10'} - dev: true - /char-regex@2.0.1: - resolution: {integrity: sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==} - engines: {node: '>=12.20'} - dev: true - - /character-entities-html4@2.1.0: - resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} - dev: true + chalk@5.2.0: {} - /character-entities-legacy@1.1.4: - resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} - dev: true + char-regex@1.0.2: {} - /character-entities-legacy@3.0.0: - resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - dev: true + char-regex@2.0.1: {} - /character-entities@1.2.4: - resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} - dev: true + character-entities-html4@2.1.0: {} - /character-entities@2.0.2: - resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - dev: true + character-entities-legacy@3.0.0: {} - /character-reference-invalid@1.1.4: - resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} - dev: true + character-entities@2.0.2: {} - /character-reference-invalid@2.0.1: - resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - dev: true + character-reference-invalid@2.0.1: {} - /chart.js@4.4.0: - resolution: {integrity: sha512-vQEj6d+z0dcsKLlQvbKIMYFHd3t8W/7L2vfJIbYcfyPcRx92CsHqECpueN8qVGNlKyDcr5wBrYAYKnfu/9Q1hQ==} - engines: {pnpm: '>=7'} + chart.js@4.4.0: dependencies: '@kurkle/color': 0.3.2 - dev: false - /check-code-coverage@1.10.4: - resolution: {integrity: sha512-0kzwKFzxb0elHixpqeYAXuDq6HKjHKE3uqcb+S5qMcOyt1EZuSbq+PMVA3C94o/vt6pkIKN79iUr7oJfLNtW4A==} - hasBin: true + check-code-coverage@1.10.4: dependencies: arg: 4.1.3 debug: 4.3.4(supports-color@9.3.1) @@ -10867,16 +11698,12 @@ packages: lodash: 4.17.21 transitivePeerDependencies: - supports-color - dev: true - /check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + check-error@1.0.3: dependencies: get-func-name: 2.0.2 - dev: true - /cheerio-select@2.1.0: - resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} + cheerio-select@2.1.0: dependencies: boolbase: 1.0.0 css-select: 5.1.0 @@ -10884,11 +11711,8 @@ packages: domelementtype: 2.3.0 domhandler: 5.0.3 domutils: 3.1.0 - dev: true - /cheerio@1.0.0-rc.12: - resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} - engines: {node: '>= 6'} + cheerio@1.0.0-rc.12: dependencies: cheerio-select: 2.1.0 dom-serializer: 2.0.0 @@ -10897,34 +11721,8 @@ packages: htmlparser2: 8.0.2 parse5: 7.1.2 parse5-htmlparser2-tree-adapter: 7.0.0 - dev: true - - /chokidar@2.1.8: - resolution: {integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==} - deprecated: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies - requiresBuild: true - dependencies: - anymatch: 2.0.0 - async-each: 1.0.6 - braces: 2.3.2 - glob-parent: 6.0.2 - inherits: 2.0.4 - is-binary-path: 1.0.1 - is-glob: 4.0.3 - normalize-path: 3.0.0 - path-is-absolute: 1.0.1 - readdirp: 2.2.1 - upath: 1.2.0 - optionalDependencies: - fsevents: 1.2.13 - transitivePeerDependencies: - - supports-color - dev: true - optional: true - /chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} + chokidar@3.5.3: dependencies: anymatch: 3.1.3 braces: 3.0.2 @@ -10935,435 +11733,161 @@ packages: readdirp: 3.6.0 optionalDependencies: fsevents: 2.3.2 - dev: true - - /chownr@1.1.4: - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - dev: true - /chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - dev: true + chownr@2.0.0: {} - /chromatic@6.11.4: - resolution: {integrity: sha512-f1TcuIXKjGUuOjPuwFF44kzbuEcESFcDxHzrzWPLmHuC90dV8HLxbufqYaTOBYMO/rJ32Zftb7S9pXuF/Rhfog==} - hasBin: true + chromatic@6.11.4: dependencies: '@discoveryjs/json-ext': 0.5.7 '@types/webpack-env': 1.18.1 - dev: true - - /chrome-trace-event@1.0.3: - resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} - engines: {node: '>=6.0'} - dev: true - - /ci-info@3.8.0: - resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} - engines: {node: '>=8'} - dev: true - /cipher-base@1.0.4: - resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - dev: true + chrome-trace-event@1.0.3: {} - /cjs-module-lexer@1.2.3: - resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} - dev: true + ci-info@3.8.0: {} - /class-utils@0.3.6: - resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} - engines: {node: '>=0.10.0'} - dependencies: - arr-union: 3.1.0 - define-property: 0.2.5 - isobject: 3.0.1 - static-extend: 0.1.2 - dev: true + cjs-module-lexer@1.2.3: {} - /classnames@2.3.2: - resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} - dev: false + classnames@2.3.2: {} - /clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - dev: true + clean-stack@2.2.0: {} - /cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} + cli-cursor@3.1.0: dependencies: restore-cursor: 3.1.0 - dev: true - /cli-spinners@2.9.0: - resolution: {integrity: sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==} - engines: {node: '>=6'} - dev: true - - /cli-table3@0.6.3: - resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} - engines: {node: 10.* || >= 12.*} - dependencies: - string-width: 4.2.3 - optionalDependencies: - '@colors/colors': 1.5.0 - dev: true + cli-spinners@2.9.0: {} - /cli-truncate@2.1.0: - resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} - engines: {node: '>=8'} + cli-truncate@2.1.0: dependencies: slice-ansi: 3.0.0 string-width: 4.2.3 - dev: true - /cli-truncate@3.1.0: - resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + cli-truncate@3.1.0: dependencies: slice-ansi: 5.0.0 string-width: 5.1.2 - dev: true - /cliui@6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + cliui@6.0.0: dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 6.2.0 - dev: true - - /cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - dev: true - /cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} + cliui@8.0.1: dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - dev: true - /clone-buffer@1.0.0: - resolution: {integrity: sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==} - engines: {node: '>= 0.10'} - dev: true + clone-buffer@1.0.0: {} - /clone-deep@4.0.1: - resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} - engines: {node: '>=6'} + clone-deep@4.0.1: dependencies: is-plain-object: 2.0.4 kind-of: 6.0.3 shallow-clone: 3.0.1 - dev: true - /clone-response@1.0.3: - resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} + clone-response@1.0.3: dependencies: mimic-response: 1.0.1 - dev: true - /clone-stats@1.0.0: - resolution: {integrity: sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==} - dev: true + clone-stats@1.0.0: {} - /clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - dev: true + clone@1.0.4: {} - /clone@2.1.2: - resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} - engines: {node: '>=0.8'} - dev: true + clone@2.1.2: {} - /cloneable-readable@1.1.3: - resolution: {integrity: sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==} + cloneable-readable@1.1.3: dependencies: inherits: 2.0.4 process-nextick-args: 2.0.1 readable-stream: 2.3.8 - dev: true - - /clsx@1.2.1: - resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} - engines: {node: '>=6'} - dev: false - - /clsx@2.0.0: - resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} - engines: {node: '>=6'} - dev: false - /co@4.6.0: - resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - dev: true + clsx@1.2.1: {} - /collapse-white-space@1.0.6: - resolution: {integrity: sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==} - dev: true + clsx@2.0.0: {} - /collect-v8-coverage@1.0.1: - resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} - dev: true + co@4.6.0: {} - /collection-visit@1.0.0: - resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} - engines: {node: '>=0.10.0'} - dependencies: - map-visit: 1.0.0 - object-visit: 1.0.1 - dev: true + collect-v8-coverage@1.0.1: {} - /color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + color-convert@1.9.3: dependencies: color-name: 1.1.3 - /color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} + color-convert@2.0.1: dependencies: color-name: 1.1.4 - dev: true - /color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - - /color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - dev: true + color-name@1.1.3: {} - /color-support@1.1.3: - resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} - hasBin: true - dev: true + color-name@1.1.4: {} - /colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - dev: true + colorette@2.0.20: {} - /colors@1.4.0: - resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} - engines: {node: '>=0.1.90'} - dev: true + colors@1.4.0: {} - /combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} + combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 - dev: true - - /comma-separated-tokens@1.0.8: - resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==} - dev: true - - /comma-separated-tokens@2.0.3: - resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - dev: true - /commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - dev: true - - /commander@3.0.2: - resolution: {integrity: sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==} - dev: true - - /commander@5.1.0: - resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} - engines: {node: '>= 6'} - dev: true + comma-separated-tokens@2.0.3: {} - /commander@6.2.1: - resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} - engines: {node: '>= 6'} - dev: true + commander@2.20.3: {} - /commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} - dev: false + commander@3.0.2: {} - /commander@8.3.0: - resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} - engines: {node: '>= 12'} - dev: true + commander@5.1.0: {} - /commander@9.5.0: - resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} - engines: {node: ^12.20.0 || >=14} - dev: true + commander@6.2.1: {} - /common-tags@1.8.2: - resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} - engines: {node: '>=4.0.0'} - dev: true + commander@7.2.0: {} - /commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - dev: true + commander@8.3.0: {} - /component-emitter@1.3.0: - resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} - dev: true + commander@9.5.0: {} - /compressible@2.0.18: - resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.52.0 - dev: true + common-tags@1.8.2: {} - /compression@1.7.4: - resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} - engines: {node: '>= 0.8.0'} - dependencies: - accepts: 1.3.8 - bytes: 3.0.0 - compressible: 2.0.18 - debug: 2.6.9 - on-headers: 1.0.2 - safe-buffer: 5.1.2 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - dev: true + commondir@1.0.1: {} - /compressorjs@1.1.1: - resolution: {integrity: sha512-SysRuUPfmUNoq+RviE0iMFVUmoX2q/x+7PkEPUmk6NGkd85hDrmvujx0Qtp8UCGA6KMe5kuodsylPQcNaLf60w==} + compressorjs@1.1.1: dependencies: blueimp-canvas-to-blob: 3.29.0 is-blob: 2.1.0 - dev: false - - /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - dev: true - /concat-stream@1.6.2: - resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} - engines: {'0': node >= 0.8} - dependencies: - buffer-from: 1.1.2 - inherits: 2.0.4 - readable-stream: 2.3.8 - typedarray: 0.0.6 - dev: true + concat-map@0.0.1: {} - /concat-stream@2.0.0: - resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} - engines: {'0': node >= 6.0} + concat-stream@2.0.0: dependencies: buffer-from: 1.1.2 inherits: 2.0.4 readable-stream: 3.6.2 typedarray: 0.0.6 - dev: true - - /console-browserify@1.2.0: - resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==} - dev: true - - /console-control-strings@1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - dev: true - /constants-browserify@1.0.0: - resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} - dev: true - - /content-disposition@0.5.4: - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} - engines: {node: '>= 0.6'} + content-disposition@0.5.4: dependencies: safe-buffer: 5.2.1 - dev: true - - /content-type@1.0.5: - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} - engines: {node: '>= 0.6'} - dev: true - - /convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - /convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - dev: true + content-type@1.0.5: {} - /convert-units@3.0.0-beta.5: - resolution: {integrity: sha512-qCy+1W8CqfK8TDuJTdT2E9hNBpG9kDub6rYsrVXOVfdmuFOLqj8RQnW8o26MFCz2XdD3beyOYZYoh9Nh7jSABA==} - dev: false + convert-source-map@1.9.0: {} - /cookie-signature@1.0.6: - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - dev: true + convert-source-map@2.0.0: {} - /cookie@0.5.0: - resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} - engines: {node: '>= 0.6'} - dev: true + convert-units@3.0.0-beta.5: {} - /copy-concurrently@1.0.5: - resolution: {integrity: sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==} - dependencies: - aproba: 1.2.0 - fs-write-stream-atomic: 1.0.10 - iferr: 0.1.5 - mkdirp: 0.5.6 - rimraf: 2.7.1 - run-queue: 1.0.3 - dev: true + cookie-signature@1.0.6: {} - /copy-descriptor@0.1.1: - resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} - engines: {node: '>=0.10.0'} - dev: true + cookie@0.7.1: {} - /core-js-compat@3.31.0: - resolution: {integrity: sha512-hM7YCu1cU6Opx7MXNu0NuumM0ezNeAeRKadixyiQELWY3vT3De9S4J5ZBMraWV2vZnrE1Cirl0GtFtDtMUXzPw==} + core-js-compat@3.38.1: dependencies: - browserslist: 4.21.9 - dev: true + browserslist: 4.24.2 - /core-js@3.31.0: - resolution: {integrity: sha512-NIp2TQSGfR6ba5aalZD+ZQ1fSxGhDo/s1w0nx3RYzf2pnJxt7YynxFlFScP6eV7+GZsKO95NSjGxyJsU3DZgeQ==} - requiresBuild: true - dev: true - - /core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - - /cosmiconfig@6.0.0: - resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} - engines: {node: '>=8'} - dependencies: - '@types/parse-json': 4.0.0 - import-fresh: 3.3.0 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.2 - dev: true + core-util-is@1.0.3: {} - /cosmiconfig@7.1.0: - resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} - engines: {node: '>=10'} + cosmiconfig@7.1.0: dependencies: '@types/parse-json': 4.0.0 import-fresh: 3.3.0 @@ -11371,359 +11895,200 @@ packages: path-type: 4.0.0 yaml: 1.10.2 - /create-ecdh@4.0.4: - resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} - dependencies: - bn.js: 4.12.0 - elliptic: 6.5.4 - dev: true - - /create-hash@1.2.0: - resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} - dependencies: - cipher-base: 1.0.4 - inherits: 2.0.4 - md5.js: 1.3.5 - ripemd160: 2.0.2 - sha.js: 2.4.11 - dev: true - - /create-hmac@1.1.7: - resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + create-jest@29.7.0(@types/node@20.3.2)(babel-plugin-macros@3.1.0): dependencies: - cipher-base: 1.0.4 - create-hash: 1.2.0 - inherits: 2.0.4 - ripemd160: 2.0.2 - safe-buffer: 5.2.1 - sha.js: 2.4.11 - dev: true + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@20.3.2)(babel-plugin-macros@3.1.0) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node - /cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} + cross-spawn@7.0.3: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - dev: true - /crypto-browserify@3.12.0: - resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==} - dependencies: - browserify-cipher: 1.0.1 - browserify-sign: 4.2.2 - create-ecdh: 4.0.4 - create-hash: 1.2.0 - create-hmac: 1.1.7 - diffie-hellman: 5.0.3 - inherits: 2.0.4 - pbkdf2: 3.1.2 - public-encrypt: 4.0.3 - randombytes: 2.1.0 - randomfill: 1.0.4 - dev: true + crypto-random-string@2.0.0: {} - /crypto-random-string@2.0.0: - resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} - engines: {node: '>=8'} - dev: true + crypto-random-string@4.0.0: + dependencies: + type-fest: 1.4.0 - /css-line-break@2.1.0: - resolution: {integrity: sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==} + css-line-break@2.1.0: dependencies: utrie: 1.0.2 - dev: false - /css-select@5.1.0: - resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + css-select@5.1.0: dependencies: boolbase: 1.0.0 css-what: 6.1.0 domhandler: 5.0.3 domutils: 3.1.0 nth-check: 2.1.1 - dev: true - /css-unit-converter@1.1.2: - resolution: {integrity: sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==} - dev: false + css-unit-converter@1.1.2: {} - /css-vendor@2.0.8: - resolution: {integrity: sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==} + css-vendor@2.0.8: dependencies: '@babel/runtime': 7.23.5 is-in-browser: 1.1.3 - dev: false - /css-what@6.1.0: - resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} - engines: {node: '>= 6'} - dev: true + css-what@6.1.0: {} - /css.escape@1.5.1: - resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} - dev: true + css.escape@1.5.1: {} - /csstype@3.1.2: - resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + csstype@3.1.2: {} - /cwd@0.10.0: - resolution: {integrity: sha512-YGZxdTTL9lmLkCUTpg4j0zQ7IhRB5ZmqNBbGCl3Tg6MP/d5/6sY7L5mmTjzbc6JKgVZYiqTQTNhPFsbXNGlRaA==} - engines: {node: '>=0.8'} + cwd@0.10.0: dependencies: find-pkg: 0.1.2 fs-exists-sync: 0.1.0 - dev: true - - /cyclist@1.0.2: - resolution: {integrity: sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA==} - dev: true - /d3-array@2.12.1: - resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==} + d3-array@2.12.1: dependencies: internmap: 1.0.1 - dev: false - /d3-array@3.2.4: - resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} - engines: {node: '>=12'} + d3-array@3.2.4: dependencies: internmap: 2.0.3 - dev: false - /d3-axis@3.0.0: - resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} - engines: {node: '>=12'} - dev: false + d3-axis@3.0.0: {} - /d3-brush@3.0.0: - resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} - engines: {node: '>=12'} + d3-brush@3.0.0: dependencies: d3-dispatch: 3.0.1 d3-drag: 3.0.0 d3-interpolate: 3.0.1 d3-selection: 3.0.0 d3-transition: 3.0.1(d3-selection@3.0.0) - dev: false - /d3-chord@3.0.1: - resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} - engines: {node: '>=12'} + d3-chord@3.0.1: dependencies: d3-path: 3.1.0 - dev: false - /d3-color@2.0.0: - resolution: {integrity: sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==} - dev: false + d3-color@2.0.0: {} - /d3-color@3.1.0: - resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} - engines: {node: '>=12'} - dev: false + d3-color@3.1.0: {} - /d3-contour@4.0.2: - resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==} - engines: {node: '>=12'} + d3-contour@4.0.2: dependencies: d3-array: 3.2.4 - dev: false - /d3-delaunay@6.0.4: - resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==} - engines: {node: '>=12'} + d3-delaunay@6.0.4: dependencies: delaunator: 5.0.0 - dev: false - /d3-dispatch@3.0.1: - resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} - engines: {node: '>=12'} - dev: false + d3-dispatch@3.0.1: {} - /d3-drag@3.0.0: - resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} - engines: {node: '>=12'} + d3-drag@3.0.0: dependencies: d3-dispatch: 3.0.1 d3-selection: 3.0.0 - dev: false - /d3-dsv@3.0.1: - resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} - engines: {node: '>=12'} - hasBin: true + d3-dsv@3.0.1: dependencies: commander: 7.2.0 iconv-lite: 0.6.3 rw: 1.3.3 - dev: false - - /d3-ease@3.0.1: - resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} - engines: {node: '>=12'} - dev: false - /d3-fetch@3.0.1: - resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} - engines: {node: '>=12'} + d3-ease@3.0.1: {} + + d3-fetch@3.0.1: dependencies: d3-dsv: 3.0.1 - dev: false - /d3-force@3.0.0: - resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} - engines: {node: '>=12'} + d3-force@3.0.0: dependencies: d3-dispatch: 3.0.1 d3-quadtree: 3.0.1 d3-timer: 3.0.1 - dev: false - /d3-format@2.0.0: - resolution: {integrity: sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==} - dev: false + d3-format@2.0.0: {} - /d3-format@3.1.0: - resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} - engines: {node: '>=12'} - dev: false + d3-format@3.1.0: {} - /d3-geo@3.1.0: - resolution: {integrity: sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==} - engines: {node: '>=12'} + d3-geo@3.1.0: dependencies: d3-array: 3.2.4 - dev: false - /d3-hierarchy@3.1.2: - resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} - engines: {node: '>=12'} - dev: false + d3-hierarchy@3.1.2: {} - /d3-interpolate@2.0.1: - resolution: {integrity: sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==} + d3-interpolate@2.0.1: dependencies: d3-color: 2.0.0 - dev: false - /d3-interpolate@3.0.1: - resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} - engines: {node: '>=12'} + d3-interpolate@3.0.1: dependencies: d3-color: 3.1.0 - dev: false - /d3-path@2.0.0: - resolution: {integrity: sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA==} - dev: false + d3-path@2.0.0: {} - /d3-path@3.1.0: - resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} - engines: {node: '>=12'} - dev: false + d3-path@3.1.0: {} - /d3-polygon@3.0.1: - resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} - engines: {node: '>=12'} - dev: false + d3-polygon@3.0.1: {} - /d3-quadtree@3.0.1: - resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} - engines: {node: '>=12'} - dev: false + d3-quadtree@3.0.1: {} - /d3-random@3.0.1: - resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} - engines: {node: '>=12'} - dev: false + d3-random@3.0.1: {} - /d3-scale-chromatic@3.0.0: - resolution: {integrity: sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==} - engines: {node: '>=12'} + d3-scale-chromatic@3.0.0: dependencies: d3-color: 3.1.0 d3-interpolate: 3.0.1 - dev: false - /d3-scale@3.3.0: - resolution: {integrity: sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==} + d3-scale@3.3.0: dependencies: d3-array: 2.12.1 d3-format: 2.0.0 d3-interpolate: 2.0.1 d3-time: 2.1.1 d3-time-format: 3.0.0 - dev: false - /d3-scale@4.0.2: - resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} - engines: {node: '>=12'} + d3-scale@4.0.2: dependencies: d3-array: 3.2.4 d3-format: 3.1.0 d3-interpolate: 3.0.1 d3-time: 3.1.0 d3-time-format: 4.1.0 - dev: false - /d3-selection@3.0.0: - resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} - engines: {node: '>=12'} - dev: false + d3-selection@3.0.0: {} - /d3-shape@2.1.0: - resolution: {integrity: sha512-PnjUqfM2PpskbSLTJvAzp2Wv4CZsnAgTfcVRTwW03QR3MkXF8Uo7B1y/lWkAsmbKwuecto++4NlsYcvYpXpTHA==} + d3-shape@2.1.0: dependencies: d3-path: 2.0.0 - dev: false - /d3-shape@3.2.0: - resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} - engines: {node: '>=12'} + d3-shape@3.2.0: dependencies: d3-path: 3.1.0 - dev: false - /d3-time-format@3.0.0: - resolution: {integrity: sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==} + d3-time-format@3.0.0: dependencies: d3-time: 2.1.1 - dev: false - /d3-time-format@4.1.0: - resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} - engines: {node: '>=12'} + d3-time-format@4.1.0: dependencies: d3-time: 3.1.0 - dev: false - /d3-time@2.1.1: - resolution: {integrity: sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==} + d3-time@2.1.1: dependencies: d3-array: 2.12.1 - dev: false - /d3-time@3.1.0: - resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} - engines: {node: '>=12'} + d3-time@3.1.0: dependencies: d3-array: 3.2.4 - dev: false - /d3-timer@3.0.1: - resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} - engines: {node: '>=12'} - dev: false + d3-timer@3.0.1: {} - /d3-transition@3.0.1(d3-selection@3.0.0): - resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} - engines: {node: '>=12'} - peerDependencies: - d3-selection: 2 - 3 + d3-transition@3.0.1(d3-selection@3.0.0): dependencies: d3-color: 3.1.0 d3-dispatch: 3.0.1 @@ -11731,22 +12096,16 @@ packages: d3-interpolate: 3.0.1 d3-selection: 3.0.0 d3-timer: 3.0.1 - dev: false - /d3-zoom@3.0.0: - resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} - engines: {node: '>=12'} + d3-zoom@3.0.0: dependencies: d3-dispatch: 3.0.1 d3-drag: 3.0.0 d3-interpolate: 3.0.1 d3-selection: 3.0.0 d3-transition: 3.0.1(d3-selection@3.0.0) - dev: false - /d3@7.6.1: - resolution: {integrity: sha512-txMTdIHFbcpLx+8a0IFhZsbp+PfBBPt8yfbmukZTQFroKuFqIwqswF0qE5JXWefylaAVpSXFoKm3yP+jpNLFLw==} - engines: {node: '>=12'} + d3@7.6.1: dependencies: d3-array: 3.2.4 d3-axis: 3.0.0 @@ -11778,87 +12137,50 @@ packages: d3-timer: 3.0.1 d3-transition: 3.0.1(d3-selection@3.0.0) d3-zoom: 3.0.0 - dev: false - /d@1.0.1: - resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} + d@1.0.1: dependencies: es5-ext: 0.10.62 type: 1.2.0 - dev: false - /de-indent@1.0.2: - resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} - dev: true + de-indent@1.0.2: {} - /debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + debug@2.6.9: dependencies: ms: 2.0.0 - dev: true - /debug@4.3.4(supports-color@9.3.1): - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + debug@4.3.4(supports-color@9.3.1): dependencies: ms: 2.1.2 + optionalDependencies: supports-color: 9.3.1 - /decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - dev: true + decamelize@1.2.0: {} - /decimal.js-light@2.5.1: - resolution: {integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==} - dev: false + decimal.js-light@2.5.1: {} - /decode-named-character-reference@1.0.2: - resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + decode-named-character-reference@1.0.2: dependencies: character-entities: 2.0.2 - dev: true - - /decode-uri-component@0.2.2: - resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} - engines: {node: '>=0.10'} - dev: true - /decompress-response@6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} - engines: {node: '>=10'} + decompress-response@6.0.0: dependencies: mimic-response: 3.1.0 - dev: true - /dedent@0.7.0: - resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} - dev: true + dedent@1.5.3(babel-plugin-macros@3.1.0): + optionalDependencies: + babel-plugin-macros: 3.1.0 - /deep-eql@4.1.3: - resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} - engines: {node: '>=6'} + deep-eql@4.1.3: dependencies: type-detect: 4.0.8 - dev: true - /deep-equal@2.2.1: - resolution: {integrity: sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==} + deep-equal@2.2.1: dependencies: array-buffer-byte-length: 1.0.0 - call-bind: 1.0.5 + call-bind: 1.0.7 es-get-iterator: 1.1.3 - get-intrinsic: 1.2.1 + get-intrinsic: 1.2.4 is-arguments: 1.1.1 is-array-buffer: 3.0.2 is-date-object: 1.0.5 @@ -11869,490 +12191,210 @@ packages: object-keys: 1.1.1 object.assign: 4.1.4 regexp.prototype.flags: 1.5.0 - side-channel: 1.0.4 + side-channel: 1.0.6 which-boxed-primitive: 1.0.2 which-collection: 1.0.1 which-typed-array: 1.1.13 - dev: true - - /deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - dev: true - /deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - dev: true + deep-is@0.1.4: {} - /default-browser-id@3.0.0: - resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} - engines: {node: '>=12'} - dependencies: - bplist-parser: 0.2.0 - untildify: 4.0.0 - dev: true + deepmerge@4.3.1: {} - /default-require-extensions@3.0.1: - resolution: {integrity: sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==} - engines: {node: '>=8'} + default-require-extensions@3.0.1: dependencies: strip-bom: 4.0.0 - dev: true - /defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + defaults@1.0.4: dependencies: clone: 1.0.4 - dev: true - /defer-to-connect@2.0.1: - resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} - engines: {node: '>=10'} - dev: true + defer-to-connect@2.0.1: {} - /define-data-property@1.1.1: - resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} - engines: {node: '>= 0.4'} + define-data-property@1.1.1: dependencies: - get-intrinsic: 1.2.1 + get-intrinsic: 1.2.4 gopd: 1.0.1 has-property-descriptors: 1.0.0 - dev: true - /define-lazy-prop@2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} - dev: true + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 - /define-properties@1.2.0: - resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} - engines: {node: '>= 0.4'} + define-properties@1.2.0: dependencies: has-property-descriptors: 1.0.0 object-keys: 1.1.1 - dev: true - - /define-property@0.2.5: - resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} - engines: {node: '>=0.10.0'} - dependencies: - is-descriptor: 0.1.6 - dev: true - - /define-property@1.0.0: - resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} - engines: {node: '>=0.10.0'} - dependencies: - is-descriptor: 1.0.2 - dev: true - - /define-property@2.0.2: - resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} - engines: {node: '>=0.10.0'} - dependencies: - is-descriptor: 1.0.2 - isobject: 3.0.1 - dev: true - - /defu@6.1.2: - resolution: {integrity: sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ==} - dev: true - /del@6.1.1: - resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==} - engines: {node: '>=10'} - dependencies: - globby: 11.1.0 - graceful-fs: 4.2.11 - is-glob: 4.0.3 - is-path-cwd: 2.2.0 - is-path-inside: 3.0.3 - p-map: 4.0.0 - rimraf: 3.0.2 - slash: 3.0.0 - dev: true + defu@6.1.2: {} - /delaunator@5.0.0: - resolution: {integrity: sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==} + delaunator@5.0.0: dependencies: robust-predicates: 3.0.2 - dev: false - - /delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - dev: true - - /delegates@1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - dev: true - - /depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - dev: true - - /dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - dev: true - /des.js@1.1.0: - resolution: {integrity: sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==} - dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - dev: true + delayed-stream@1.0.0: {} - /destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - dev: true + depd@2.0.0: {} - /detab@2.0.4: - resolution: {integrity: sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g==} - dependencies: - repeat-string: 1.6.1 - dev: true + dequal@2.0.3: {} - /detect-indent@6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} - dev: true + destroy@1.2.0: {} - /detect-newline@3.1.0: - resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} - engines: {node: '>=8'} - dev: true + detect-indent@6.1.0: {} - /detect-package-manager@2.0.1: - resolution: {integrity: sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==} - engines: {node: '>=12'} - dependencies: - execa: 5.1.1 - dev: true + detect-newline@3.1.0: {} - /detect-port@1.5.1: - resolution: {integrity: sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==} - hasBin: true + devlop@1.1.0: dependencies: - address: 1.2.2 - debug: 4.3.4(supports-color@9.3.1) - transitivePeerDependencies: - - supports-color - dev: true + dequal: 2.0.3 - /diff-sequences@28.1.1: - resolution: {integrity: sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dev: true + diff-sequences@29.4.3: {} - /diff-sequences@29.4.3: - resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true + diff-sequences@29.6.3: {} - /diff@5.1.0: - resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} - engines: {node: '>=0.3.1'} - dev: true + diff@5.1.0: {} - /diffable-html@4.1.0: - resolution: {integrity: sha512-++kyNek+YBLH8cLXS+iTj/Hiy2s5qkRJEJ8kgu/WHbFrVY2vz9xPFUT+fii2zGF0m1CaojDlQJjkfrCt7YWM1g==} + diffable-html@4.1.0: dependencies: htmlparser2: 3.10.1 - dev: true - - /diffie-hellman@5.0.3: - resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} - dependencies: - bn.js: 4.12.0 - miller-rabin: 4.0.1 - randombytes: 2.1.0 - dev: true - /dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} + dir-glob@3.0.1: dependencies: path-type: 4.0.0 - dev: true - /discontinuous-range@1.0.0: - resolution: {integrity: sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==} - dev: true + discontinuous-range@1.0.0: {} - /doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} + doctrine@2.1.0: dependencies: esutils: 2.0.3 - dev: true - /doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} + doctrine@3.0.0: dependencies: esutils: 2.0.3 - dev: true - /dom-accessibility-api@0.5.16: - resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} - dev: true + dom-accessibility-api@0.5.16: {} - /dom-helpers@3.4.0: - resolution: {integrity: sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==} + dom-accessibility-api@0.6.3: {} + + dom-helpers@3.4.0: dependencies: '@babel/runtime': 7.23.5 - dev: false - /dom-helpers@5.2.1: - resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + dom-helpers@5.2.1: dependencies: '@babel/runtime': 7.23.5 csstype: 3.1.2 - dev: false - /dom-serializer@0.2.2: - resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==} + dom-serializer@0.2.2: dependencies: domelementtype: 2.3.0 entities: 2.2.0 - dev: true - /dom-serializer@1.4.1: - resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + dom-serializer@1.4.1: dependencies: domelementtype: 2.3.0 domhandler: 4.3.1 entities: 2.2.0 - dev: true - /dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + dom-serializer@2.0.0: dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 entities: 4.5.0 - dev: true - /dom-walk@0.1.2: - resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} - dev: true + domelementtype@1.3.1: {} - /domain-browser@1.2.0: - resolution: {integrity: sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==} - engines: {node: '>=0.4', npm: '>=1.2'} - dev: true - - /domelementtype@1.3.1: - resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} - dev: true - - /domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - dev: true + domelementtype@2.3.0: {} - /domhandler@2.4.2: - resolution: {integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==} + domhandler@2.4.2: dependencies: domelementtype: 1.3.1 - dev: true - /domhandler@4.3.1: - resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} - engines: {node: '>= 4'} + domhandler@4.3.1: dependencies: domelementtype: 2.3.0 - dev: true - /domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} + domhandler@5.0.3: dependencies: domelementtype: 2.3.0 - dev: true - /domutils@1.7.0: - resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==} + domutils@1.7.0: dependencies: dom-serializer: 0.2.2 domelementtype: 1.3.1 - dev: true - /domutils@2.8.0: - resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + domutils@2.8.0: dependencies: dom-serializer: 1.4.1 domelementtype: 2.3.0 domhandler: 4.3.1 - dev: true - /domutils@3.1.0: - resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + domutils@3.1.0: dependencies: dom-serializer: 2.0.0 domelementtype: 2.3.0 domhandler: 5.0.3 - dev: true - /dotenv-expand@10.0.0: - resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} - engines: {node: '>=12'} - dev: true - - /dotenv-expand@5.1.0: - resolution: {integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==} - dev: true - - /dotenv@16.3.1: - resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} - engines: {node: '>=12'} - dev: true - - /dotenv@8.6.0: - resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} - engines: {node: '>=10'} - dev: true - - /duplexify@3.7.1: - resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} + duplexify@3.7.1: dependencies: end-of-stream: 1.4.4 inherits: 2.0.4 readable-stream: 2.3.8 stream-shift: 1.0.1 - dev: true - /eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - dev: true + eastasianwidth@0.2.0: {} - /ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - dev: true + ee-first@1.1.1: {} - /ejs@3.1.9: - resolution: {integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==} - engines: {node: '>=0.10.0'} - hasBin: true + ejs@3.1.9: dependencies: jake: 10.8.7 - dev: true - /electron-to-chromium@1.4.442: - resolution: {integrity: sha512-RkrZF//Ya+0aJq2NM3OdisNh5ZodZq1rdXOS96G8DdDgpDKqKE81yTbbQ3F/4CKm1JBPsGu1Lp/akkna2xO06Q==} + electron-to-chromium@1.4.442: {} - /elliptic@6.5.4: - resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} - dependencies: - bn.js: 4.12.0 - brorand: 1.1.0 - hash.js: 1.1.7 - hmac-drbg: 1.0.1 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 - dev: true + electron-to-chromium@1.5.45: {} - /emittery@0.10.2: - resolution: {integrity: sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==} - engines: {node: '>=12'} - dev: true + emittery@0.13.1: {} - /emittery@0.13.1: - resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} - engines: {node: '>=12'} - dev: true + emoji-regex@8.0.0: {} - /emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: true + emoji-regex@9.2.2: {} - /emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - dev: true + emojis-list@3.0.0: {} - /emojis-list@3.0.0: - resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} - engines: {node: '>= 4'} - dev: true + encodeurl@1.0.2: {} - /encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - dev: true + encodeurl@2.0.0: {} - /encoding-japanese@2.0.0: - resolution: {integrity: sha512-++P0RhebUC8MJAwJOsT93dT+5oc5oPImp1HubZpAuCZ5kTLnhuuBhKHj2jJeO/Gj93idPBWmIuQ9QWMe5rX3pQ==} - engines: {node: '>=8.10.0'} - dev: true + encoding-japanese@2.0.0: {} - /end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + end-of-stream@1.4.4: dependencies: once: 1.4.0 - dev: true - - /enhanced-resolve@4.5.0: - resolution: {integrity: sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==} - engines: {node: '>=6.9.0'} - dependencies: - graceful-fs: 4.2.11 - memory-fs: 0.5.0 - tapable: 1.1.3 - dev: true - /enhanced-resolve@5.15.0: - resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} - engines: {node: '>=10.13.0'} + enhanced-resolve@5.15.0: dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 - dev: true - - /ensure-posix-path@1.1.1: - resolution: {integrity: sha512-VWU0/zXzVbeJNXvME/5EmLuEj2TauvoaTz6aFYK1Z92JCBlDlZ3Gu0tuGR42kpW1754ywTs+QB0g5TP0oj9Zaw==} - dev: true - /entities@1.1.2: - resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==} - dev: true + ensure-posix-path@1.1.1: {} - /entities@2.2.0: - resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} - dev: true + entities@1.1.2: {} - /entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - dev: true + entities@2.2.0: {} - /envinfo@7.10.0: - resolution: {integrity: sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==} - engines: {node: '>=4'} - hasBin: true - dev: true + entities@4.5.0: {} - /eol@0.9.1: - resolution: {integrity: sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==} - dev: true + envinfo@7.10.0: {} - /errno@0.1.8: - resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} - hasBin: true - dependencies: - prr: 1.0.1 - dev: true + eol@0.9.1: {} - /error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 - /es-abstract@1.21.2: - resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} - engines: {node: '>= 0.4'} + es-abstract@1.21.2: dependencies: array-buffer-byte-length: 1.0.0 available-typed-arrays: 1.0.5 @@ -12388,13 +12430,17 @@ packages: typed-array-length: 1.0.4 unbox-primitive: 1.0.2 which-typed-array: 1.1.13 - dev: true - /es-get-iterator@1.1.3: - resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} + es-define-property@1.0.0: dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.1 + get-intrinsic: 1.2.4 + + es-errors@1.3.0: {} + + es-get-iterator@1.1.3: + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 is-arguments: 1.1.1 is-map: 2.0.2 @@ -12402,226 +12448,116 @@ packages: is-string: 1.0.7 isarray: 2.0.5 stop-iteration-iterator: 1.0.0 - dev: true - - /es-module-lexer@0.9.3: - resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==} - dev: true - /es-module-lexer@1.3.0: - resolution: {integrity: sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==} - dev: true + es-module-lexer@1.5.4: {} - /es-set-tostringtag@2.0.1: - resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} - engines: {node: '>= 0.4'} + es-set-tostringtag@2.0.1: dependencies: - get-intrinsic: 1.2.1 + get-intrinsic: 1.2.4 has: 1.0.3 has-tostringtag: 1.0.0 - dev: true - /es-shim-unscopables@1.0.0: - resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} + es-shim-unscopables@1.0.0: dependencies: has: 1.0.3 - dev: true - /es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} + es-to-primitive@1.2.1: dependencies: is-callable: 1.2.7 is-date-object: 1.0.5 is-symbol: 1.0.4 - dev: true - /es5-ext@0.10.62: - resolution: {integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==} - engines: {node: '>=0.10'} - requiresBuild: true + es5-ext@0.10.62: dependencies: es6-iterator: 2.0.3 es6-symbol: 3.1.3 next-tick: 1.1.0 - dev: false - /es6-error@4.1.1: - resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} - dev: true + es6-error@4.1.1: {} - /es6-iterator@2.0.3: - resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} + es6-iterator@2.0.3: dependencies: d: 1.0.1 es5-ext: 0.10.62 es6-symbol: 3.1.3 - dev: false - /es6-object-assign@1.1.0: - resolution: {integrity: sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==} - dev: true - - /es6-symbol@3.1.3: - resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==} + es6-symbol@3.1.3: dependencies: d: 1.0.1 ext: 1.7.0 - dev: false - - /esbuild-plugin-alias@0.2.1: - resolution: {integrity: sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==} - dev: true - - /esbuild-register@3.4.2(esbuild@0.17.19): - resolution: {integrity: sha512-kG/XyTDyz6+YDuyfB9ZoSIOOmgyFCH+xPRtsCa8W85HLRV5Csp+o3jWVbOSHgSLfyLc5DmP+KFDNwty4mEjC+Q==} - peerDependencies: - esbuild: '>=0.12 <1' + + esbuild-register@3.6.0(esbuild@0.18.20): dependencies: debug: 4.3.4(supports-color@9.3.1) - esbuild: 0.17.19 + esbuild: 0.18.20 transitivePeerDependencies: - supports-color - dev: true - /esbuild@0.16.17: - resolution: {integrity: sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.16.17 - '@esbuild/android-arm64': 0.16.17 - '@esbuild/android-x64': 0.16.17 - '@esbuild/darwin-arm64': 0.16.17 - '@esbuild/darwin-x64': 0.16.17 - '@esbuild/freebsd-arm64': 0.16.17 - '@esbuild/freebsd-x64': 0.16.17 - '@esbuild/linux-arm': 0.16.17 - '@esbuild/linux-arm64': 0.16.17 - '@esbuild/linux-ia32': 0.16.17 - '@esbuild/linux-loong64': 0.16.17 - '@esbuild/linux-mips64el': 0.16.17 - '@esbuild/linux-ppc64': 0.16.17 - '@esbuild/linux-riscv64': 0.16.17 - '@esbuild/linux-s390x': 0.16.17 - '@esbuild/linux-x64': 0.16.17 - '@esbuild/netbsd-x64': 0.16.17 - '@esbuild/openbsd-x64': 0.16.17 - '@esbuild/sunos-x64': 0.16.17 - '@esbuild/win32-arm64': 0.16.17 - '@esbuild/win32-ia32': 0.16.17 - '@esbuild/win32-x64': 0.16.17 - dev: true - - /esbuild@0.17.19: - resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true + esbuild@0.18.20: optionalDependencies: - '@esbuild/android-arm': 0.17.19 - '@esbuild/android-arm64': 0.17.19 - '@esbuild/android-x64': 0.17.19 - '@esbuild/darwin-arm64': 0.17.19 - '@esbuild/darwin-x64': 0.17.19 - '@esbuild/freebsd-arm64': 0.17.19 - '@esbuild/freebsd-x64': 0.17.19 - '@esbuild/linux-arm': 0.17.19 - '@esbuild/linux-arm64': 0.17.19 - '@esbuild/linux-ia32': 0.17.19 - '@esbuild/linux-loong64': 0.17.19 - '@esbuild/linux-mips64el': 0.17.19 - '@esbuild/linux-ppc64': 0.17.19 - '@esbuild/linux-riscv64': 0.17.19 - '@esbuild/linux-s390x': 0.17.19 - '@esbuild/linux-x64': 0.17.19 - '@esbuild/netbsd-x64': 0.17.19 - '@esbuild/openbsd-x64': 0.17.19 - '@esbuild/sunos-x64': 0.17.19 - '@esbuild/win32-arm64': 0.17.19 - '@esbuild/win32-ia32': 0.17.19 - '@esbuild/win32-x64': 0.17.19 - dev: true - - /escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 - /escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - dev: true + escalade@3.1.1: {} - /escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} + escalade@3.2.0: {} - /escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - dev: true + escape-html@1.0.3: {} - /escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} + escape-string-regexp@1.0.5: {} - /escape-string-regexp@5.0.0: - resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} - engines: {node: '>=12'} - dev: true + escape-string-regexp@2.0.0: {} - /escodegen@2.0.0: - resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} - engines: {node: '>=6.0'} - hasBin: true + escape-string-regexp@4.0.0: {} + + escape-string-regexp@5.0.0: {} + + escodegen@2.1.0: dependencies: esprima: 4.0.1 estraverse: 5.3.0 esutils: 2.0.3 - optionator: 0.8.3 optionalDependencies: source-map: 0.6.1 - dev: true - /eslint-config-prettier@8.5.0(eslint@8.28.0): - resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' + eslint-config-prettier@8.5.0(eslint@8.28.0): dependencies: eslint: 8.28.0 - dev: true - /eslint-plugin-json@3.1.0: - resolution: {integrity: sha512-MrlG2ynFEHe7wDGwbUuFPsaT2b1uhuEFhJ+W1f1u+1C2EkXmTYJp4B1aAdQQ8M+CC3t//N/oRKiIVw14L2HR1g==} - engines: {node: '>=12.0'} + eslint-plugin-json@3.1.0: dependencies: lodash: 4.17.21 vscode-json-languageservice: 4.2.1 - dev: true - /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.5.0)(eslint@8.28.0)(prettier@2.8.8): - resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} - engines: {node: '>=12.0.0'} - peerDependencies: - eslint: '>=7.28.0' - eslint-config-prettier: '*' - prettier: '>=2.0.0' - peerDependenciesMeta: - eslint-config-prettier: - optional: true + eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.5.0(eslint@8.28.0))(eslint@8.28.0)(prettier@3.3.3): dependencies: eslint: 8.28.0 - eslint-config-prettier: 8.5.0(eslint@8.28.0) - prettier: 2.8.8 + prettier: 3.3.3 prettier-linter-helpers: 1.0.0 - dev: true + optionalDependencies: + eslint-config-prettier: 8.5.0(eslint@8.28.0) - /eslint-plugin-react@7.31.11(eslint@8.28.0): - resolution: {integrity: sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + eslint-plugin-react@7.31.11(eslint@8.28.0): dependencies: array-includes: 3.1.6 array.prototype.flatmap: 1.3.1 @@ -12639,72 +12575,38 @@ packages: resolve: 2.0.0-next.4 semver: 7.5.3 string.prototype.matchall: 4.0.8 - dev: true - /eslint-plugin-storybook@0.6.10(eslint@8.28.0)(typescript@4.9.5): - resolution: {integrity: sha512-3DKXRey06EhwnTKaG6fgMqGTy4C3z6Ikyv6VVixO5BvaExWQe3yGWIAufrC2Et0OaAMIaMwx9KWjqb/Wq+JxPg==} - engines: {node: 12.x || 14.x || >= 16} - peerDependencies: - eslint: '>=6' + eslint-plugin-storybook@0.8.0(eslint@8.28.0)(typescript@4.9.5): dependencies: '@storybook/csf': 0.0.1 - '@typescript-eslint/utils': 5.60.1(eslint@8.28.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.62.0(eslint@8.28.0)(typescript@4.9.5) eslint: 8.28.0 requireindex: 1.2.0 ts-dedent: 2.2.0 transitivePeerDependencies: - supports-color - typescript - dev: true - - /eslint-scope@4.0.3: - resolution: {integrity: sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==} - engines: {node: '>=4.0.0'} - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - dev: true - /eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} + eslint-scope@5.1.1: dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 - dev: true - /eslint-scope@7.2.0: - resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-scope@7.2.0: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 - dev: true - /eslint-utils@3.0.0(eslint@8.28.0): - resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} - engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} - peerDependencies: - eslint: '>=5' + eslint-utils@3.0.0(eslint@8.28.0): dependencies: eslint: 8.28.0 eslint-visitor-keys: 2.1.0 - dev: true - /eslint-visitor-keys@2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} - dev: true + eslint-visitor-keys@2.1.0: {} - /eslint-visitor-keys@3.4.1: - resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true + eslint-visitor-keys@3.4.1: {} - /eslint@8.28.0: - resolution: {integrity: sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true + eslint@8.28.0: dependencies: '@eslint/eslintrc': 1.4.1 '@humanwhocodes/config-array': 0.11.10 @@ -12747,134 +12649,67 @@ packages: text-table: 0.2.0 transitivePeerDependencies: - supports-color - dev: true - /espree@9.5.2: - resolution: {integrity: sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + espree@9.5.2: dependencies: acorn: 8.10.0 acorn-jsx: 5.3.2(acorn@8.10.0) eslint-visitor-keys: 3.4.1 - dev: true - /esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - dev: true + esprima@4.0.1: {} - /esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} + esquery@1.5.0: dependencies: estraverse: 5.3.0 - dev: true - /esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} + esrecurse@4.3.0: dependencies: estraverse: 5.3.0 - dev: true - - /estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - dev: true - /estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - dev: true + estraverse@4.3.0: {} - /estree-to-babel@3.2.1: - resolution: {integrity: sha512-YNF+mZ/Wu2FU/gvmzuWtYc8rloubL7wfXCTgouFrnjGVXPA/EeYYA7pupXWrb3Iv1cTBeSSxxJIbK23l4MRNqg==} - engines: {node: '>=8.3.0'} - dependencies: - '@babel/traverse': 7.22.5 - '@babel/types': 7.23.0 - c8: 7.14.0 - transitivePeerDependencies: - - supports-color - dev: true + estraverse@5.3.0: {} - /estree-util-attach-comments@2.1.1: - resolution: {integrity: sha512-+5Ba/xGGS6mnwFbXIuQiDPTbuTxuMCooq3arVv7gPZtYpjp+VXH/NkHAP35OOefPhNG/UGqU3vt/LTABwcHX0w==} + estree-util-attach-comments@2.1.1: dependencies: '@types/estree': 1.0.1 - dev: true - /estree-util-build-jsx@2.2.2: - resolution: {integrity: sha512-m56vOXcOBuaF+Igpb9OPAy7f9w9OIkb5yhjsZuaPm7HoGi4oTOQi0h2+yZ+AtKklYFZ+rPC4n0wYCJCEU1ONqg==} + estree-util-build-jsx@2.2.2: dependencies: '@types/estree-jsx': 1.0.0 estree-util-is-identifier-name: 2.1.0 estree-walker: 3.0.3 - dev: true - /estree-util-is-identifier-name@2.1.0: - resolution: {integrity: sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==} - dev: true + estree-util-is-identifier-name@2.1.0: {} - /estree-util-to-js@1.2.0: - resolution: {integrity: sha512-IzU74r1PK5IMMGZXUVZbmiu4A1uhiPgW5hm1GjcOfr4ZzHaMPpLNJjR7HjXiIOzi25nZDrgFTobHTkV5Q6ITjA==} + estree-util-to-js@1.2.0: dependencies: '@types/estree-jsx': 1.0.0 astring: 1.8.6 source-map: 0.7.4 - dev: true - /estree-util-visit@1.2.1: - resolution: {integrity: sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==} + estree-util-visit@1.2.1: dependencies: '@types/estree-jsx': 1.0.0 '@types/unist': 2.0.6 - dev: true - /estree-walker@1.0.1: - resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} - dev: true + estree-walker@1.0.1: {} - /estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - dev: true + estree-walker@2.0.2: {} - /estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + estree-walker@3.0.3: dependencies: '@types/estree': 1.0.1 - dev: true - /esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - dev: true - - /etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - dev: true + esutils@2.0.3: {} - /eventemitter3@4.0.7: - resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - dev: false + etag@1.8.1: {} - /events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - dev: true + eventemitter3@4.0.7: {} - /evp_bytestokey@1.0.3: - resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} - dependencies: - md5.js: 1.3.5 - safe-buffer: 5.2.1 - dev: true + events@3.3.0: {} - /execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} + execa@5.1.1: dependencies: cross-spawn: 7.0.3 get-stream: 6.0.1 @@ -12885,80 +12720,51 @@ packages: onetime: 5.1.2 signal-exit: 3.0.7 strip-final-newline: 2.0.0 - dev: true - /exit@0.1.2: - resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} - engines: {node: '>= 0.8.0'} - dev: true - - /expand-brackets@2.1.4: - resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} - engines: {node: '>=0.10.0'} - dependencies: - debug: 2.6.9 - define-property: 0.2.5 - extend-shallow: 2.0.1 - posix-character-classes: 0.1.1 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: true + exit@0.1.2: {} - /expand-tilde@1.2.2: - resolution: {integrity: sha512-rtmc+cjLZqnu9dSYosX9EWmSJhTwpACgJQTfj4hgg2JjOD/6SIQalZrt4a3aQeh++oNxkazcaxrhPUj6+g5G/Q==} - engines: {node: '>=0.10.0'} + expand-tilde@1.2.2: dependencies: os-homedir: 1.0.2 - dev: true - /expect-playwright@0.8.0: - resolution: {integrity: sha512-+kn8561vHAY+dt+0gMqqj1oY+g5xWrsuGMk4QGxotT2WS545nVqqjs37z6hrYfIuucwqthzwJfCJUEYqixyljg==} - dev: true + expect-playwright@0.8.0: {} - /expect@28.1.3: - resolution: {integrity: sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + expect@29.7.0: dependencies: - '@jest/expect-utils': 28.1.3 - jest-get-type: 28.0.2 - jest-matcher-utils: 28.1.3 - jest-message-util: 28.1.3 - jest-util: 28.1.3 - dev: true + '@jest/expect-utils': 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 - /express@4.18.2: - resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} - engines: {node: '>= 0.10.0'} + express@4.21.1: dependencies: accepts: 1.3.8 array-flatten: 1.1.1 - body-parser: 1.20.1 + body-parser: 1.20.3 content-disposition: 0.5.4 content-type: 1.0.5 - cookie: 0.5.0 + cookie: 0.7.1 cookie-signature: 1.0.6 debug: 2.6.9 depd: 2.0.0 - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 - finalhandler: 1.2.0 + finalhandler: 1.3.1 fresh: 0.5.2 http-errors: 2.0.0 - merge-descriptors: 1.0.1 + merge-descriptors: 1.0.3 methods: 1.1.2 on-finished: 2.4.1 parseurl: 1.3.3 - path-to-regexp: 0.1.7 + path-to-regexp: 0.1.10 proxy-addr: 2.0.7 - qs: 6.11.0 + qs: 6.13.0 range-parser: 1.2.1 safe-buffer: 5.2.1 - send: 0.18.0 - serve-static: 1.15.0 + send: 0.19.0 + serve-static: 1.16.2 setprototypeof: 1.2.0 statuses: 2.0.1 type-is: 1.6.18 @@ -12966,178 +12772,69 @@ packages: vary: 1.1.2 transitivePeerDependencies: - supports-color - dev: true - /ext@1.7.0: - resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} + ext@1.7.0: dependencies: type: 2.7.2 - dev: false - /extend-shallow@2.0.1: - resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} - engines: {node: '>=0.10.0'} - dependencies: - is-extendable: 0.1.1 - dev: true + extend@3.0.2: {} - /extend-shallow@3.0.2: - resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} - engines: {node: '>=0.10.0'} - dependencies: - assign-symbols: 1.0.0 - is-extendable: 1.0.1 - dev: true + fast-deep-equal@3.1.3: {} - /extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - dev: true + fast-diff@1.3.0: {} - /extglob@2.0.4: - resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} - engines: {node: '>=0.10.0'} - dependencies: - array-unique: 0.3.2 - define-property: 1.0.0 - expand-brackets: 2.1.4 - extend-shallow: 2.0.1 - fragment-cache: 0.2.1 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: true + fast-equals@5.0.1: {} - /extract-zip@1.7.0: - resolution: {integrity: sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==} - hasBin: true + fast-glob@3.2.12: dependencies: - concat-stream: 1.6.2 - debug: 2.6.9 - mkdirp: 0.5.6 - yauzl: 2.10.0 - transitivePeerDependencies: - - supports-color - dev: true - - /fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - /fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - dev: true - - /fast-equals@5.0.1: - resolution: {integrity: sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==} - engines: {node: '>=6.0.0'} - dev: false + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 - /fast-glob@3.2.12: - resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} - engines: {node: '>=8.6.0'} + fast-glob@3.3.2: dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.5 - dev: true - /fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true + fast-json-stable-stringify@2.1.0: {} - /fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - dev: true + fast-levenshtein@2.0.6: {} - /fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + fastq@1.15.0: dependencies: reusify: 1.0.4 - dev: true - /fb-watchman@2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + fb-watchman@2.0.2: dependencies: bser: 2.1.1 - dev: true - /fd-slicer@1.1.0: - resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + fd-package-json@1.2.0: dependencies: - pend: 1.2.0 - dev: true - - /fetch-retry@5.0.6: - resolution: {integrity: sha512-3yurQZ2hD9VISAhJJP9bpYFNQrHHBXE2JxxjY5aLEcDi46RmAzJE2OC9FAde0yis5ElW0jTTzs0zfg/Cca4XqQ==} - dev: true + walk-up-path: 3.0.1 - /figgy-pudding@3.5.2: - resolution: {integrity: sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==} - dev: true - - /file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} + file-entry-cache@6.0.1: dependencies: flat-cache: 3.0.4 - dev: true - - /file-saver@2.0.5: - resolution: {integrity: sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==} - dev: false - - /file-system-cache@1.1.0: - resolution: {integrity: sha512-IzF5MBq+5CR0jXx5RxPe4BICl/oEhBSXKaL9fLhAXrIfIUS77Hr4vzrYyqYMHN6uTt+BOqi3fDCTjjEBCjERKw==} - dependencies: - fs-extra: 10.1.0 - ramda: 0.28.0 - dev: true - - /file-system-cache@2.3.0: - resolution: {integrity: sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ==} - dependencies: - fs-extra: 11.1.1 - ramda: 0.29.0 - dev: true - /file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - requiresBuild: true - dev: true - optional: true + file-saver@2.0.5: {} - /filelist@1.0.4: - resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + filelist@1.0.4: dependencies: minimatch: 5.1.6 - dev: true - - /fill-range@4.0.0: - resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 2.0.1 - is-number: 3.0.0 - repeat-string: 1.6.1 - to-regex-range: 2.1.1 - dev: true - /fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} + fill-range@7.0.1: dependencies: to-regex-range: 5.0.1 - dev: true - /finalhandler@1.2.0: - resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} - engines: {node: '>= 0.8'} + finalhandler@1.3.1: dependencies: debug: 2.6.9 - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 parseurl: 1.3.3 @@ -13145,188 +12842,86 @@ packages: unpipe: 1.0.0 transitivePeerDependencies: - supports-color - dev: true - /find-cache-dir@2.1.0: - resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} - engines: {node: '>=6'} + find-cache-dir@2.1.0: dependencies: commondir: 1.0.1 make-dir: 2.1.0 pkg-dir: 3.0.0 - dev: true - /find-cache-dir@3.3.2: - resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} - engines: {node: '>=8'} + find-cache-dir@3.3.2: dependencies: commondir: 1.0.1 make-dir: 3.1.0 pkg-dir: 4.2.0 - dev: true - /find-file-up@0.1.3: - resolution: {integrity: sha512-mBxmNbVyjg1LQIIpgO8hN+ybWBgDQK8qjht+EbrTCGmmPV/sc7RF1i9stPTD6bpvXZywBdrwRYxhSdJv867L6A==} - engines: {node: '>=0.10.0'} + find-file-up@0.1.3: dependencies: fs-exists-sync: 0.1.0 resolve-dir: 0.1.1 - dev: true - /find-pkg@0.1.2: - resolution: {integrity: sha512-0rnQWcFwZr7eO0513HahrWafsc3CTFioEB7DRiEYCUM/70QXSY8f3mCST17HXLcPvEhzH/Ty/Bxd72ZZsr/yvw==} - engines: {node: '>=0.10.0'} + find-pkg@0.1.2: dependencies: find-file-up: 0.1.3 - dev: true - /find-process@1.4.7: - resolution: {integrity: sha512-/U4CYp1214Xrp3u3Fqr9yNynUrr5Le4y0SsJh2lMDDSbpwYSz3M2SMWQC+wqcx79cN8PQtHQIL8KnuY9M66fdg==} - hasBin: true + find-process@1.4.7: dependencies: chalk: 4.1.2 commander: 5.1.0 debug: 4.3.4(supports-color@9.3.1) transitivePeerDependencies: - supports-color - dev: true - /find-root@1.1.0: - resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + find-root@1.1.0: {} - /find-up@3.0.0: - resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} - engines: {node: '>=6'} + find-up@3.0.0: dependencies: locate-path: 3.0.0 - dev: true - /find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} + find-up@4.1.0: dependencies: locate-path: 5.0.0 path-exists: 4.0.0 - dev: true - /find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} + find-up@5.0.0: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - dev: true - /flat-cache@3.0.4: - resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} - engines: {node: ^10.12.0 || >=12.0.0} + flat-cache@3.0.4: dependencies: flatted: 3.2.7 rimraf: 3.0.2 - dev: true - /flatted@3.2.7: - resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - dev: true + flatted@3.2.7: {} - /flow-parser@0.210.1: - resolution: {integrity: sha512-M0SdOwD0wZHhk6K/AOaPReBnw2vB7p9KUFUFZHJRsU3ZMl/+WVrMpmb8AfEM6GXZ5mEssCx9vHugxxJg1ieoew==} - engines: {node: '>=0.4.0'} - dev: true + flow-parser@0.210.1: {} - /flush-write-stream@1.1.1: - resolution: {integrity: sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==} + flush-write-stream@1.1.1: dependencies: inherits: 2.0.4 readable-stream: 2.3.8 - dev: true - /follow-redirects@1.15.2: - resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true + follow-redirects@1.15.9: {} - /for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + for-each@0.3.3: dependencies: is-callable: 1.2.7 - dev: true - /for-in@1.0.2: - resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} - engines: {node: '>=0.10.0'} - dev: true - - /foreground-child@2.0.0: - resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} - engines: {node: '>=8.0.0'} + foreground-child@2.0.0: dependencies: cross-spawn: 7.0.3 signal-exit: 3.0.7 - dev: true - - /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.28.0)(typescript@4.9.5)(webpack@4.46.0): - resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} - engines: {node: '>=10', yarn: '>=1.0.0'} - peerDependencies: - eslint: '>= 6' - typescript: '>= 2.7' - vue-template-compiler: '*' - webpack: '>= 4' - peerDependenciesMeta: - eslint: - optional: true - vue-template-compiler: - optional: true - dependencies: - '@babel/code-frame': 7.22.5 - '@types/json-schema': 7.0.12 - chalk: 4.1.2 - chokidar: 3.5.3 - cosmiconfig: 6.0.0 - deepmerge: 4.3.1 - eslint: 8.28.0 - fs-extra: 9.1.0 - glob: 7.2.3 - memfs: 3.5.3 - minimatch: 3.1.2 - schema-utils: 2.7.0 - semver: 7.5.3 - tapable: 1.1.3 - typescript: 4.9.5 - webpack: 4.46.0 - dev: true - /form-data@3.0.1: - resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} - engines: {node: '>= 6'} + form-data@4.0.1: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 - dev: true - - /forwarded@0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} - dev: true - /fragment-cache@0.2.1: - resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} - engines: {node: '>=0.10.0'} - dependencies: - map-cache: 0.2.2 - dev: true + forwarded@0.2.0: {} - /framer-motion@6.5.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw==} - peerDependencies: - react: '>=16.8 || ^17.0.0 || ^18.0.0' - react-dom: '>=16.8 || ^17.0.0 || ^18.0.0' + framer-motion@6.5.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@motionone/dom': 10.12.0 framesync: 6.0.1 @@ -13338,78 +12933,43 @@ packages: tslib: 2.6.0 optionalDependencies: '@emotion/is-prop-valid': 0.8.8 - dev: false - /framesync@6.0.1: - resolution: {integrity: sha512-fUY88kXvGiIItgNC7wcTOl0SNRCVXMKSWW2Yzfmn7EKNc+MpCzcz9DhdHcdjbrtN3c6R4H5dTY2jiCpPdysEjA==} + framesync@6.0.1: dependencies: tslib: 2.6.0 - dev: false - - /fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} - dev: true - - /from2@2.3.0: - resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.8 - dev: true - /fromentries@1.3.2: - resolution: {integrity: sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==} - dev: true + fresh@0.5.2: {} - /fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - dev: true + fromentries@1.3.2: {} - /fs-exists-sync@0.1.0: - resolution: {integrity: sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg==} - engines: {node: '>=0.10.0'} - dev: true + fs-exists-sync@0.1.0: {} - /fs-extra@10.1.0: - resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} - engines: {node: '>=12'} + fs-extra@10.1.0: dependencies: graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.0 - dev: true - /fs-extra@11.1.1: - resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} - engines: {node: '>=14.14'} + fs-extra@11.1.1: dependencies: graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.0 - dev: true - /fs-extra@8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} - engines: {node: '>=6 <7 || >=8'} + fs-extra@8.1.0: dependencies: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 - dev: true - /fs-extra@9.1.0: - resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} - engines: {node: '>=10'} + fs-extra@9.1.0: dependencies: at-least-node: 1.0.0 graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.0 - dev: true - /fs-merger@3.2.1: - resolution: {integrity: sha512-AN6sX12liy0JE7C2evclwoo0aCG3PFulLjrTLsJpWh/2mM+DinhpSGqYLbHBBbIW1PLRNcFhJG8Axtz8mQW3ug==} + fs-merger@3.2.1: dependencies: broccoli-node-api: 1.7.0 broccoli-node-info: 2.2.0 @@ -13418,30 +12978,17 @@ packages: walk-sync: 2.2.0 transitivePeerDependencies: - supports-color - dev: true - /fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} + fs-minipass@2.1.0: dependencies: minipass: 3.3.6 - dev: true - /fs-mkdirp-stream@1.0.0: - resolution: {integrity: sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==} - engines: {node: '>= 0.10'} + fs-mkdirp-stream@1.0.0: dependencies: graceful-fs: 4.2.11 through2: 2.0.5 - dev: true - /fs-monkey@1.0.4: - resolution: {integrity: sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==} - dev: true - - /fs-tree-diff@2.0.1: - resolution: {integrity: sha512-x+CfAZ/lJHQqwlD64pYM5QxWjzWhSjroaVsr8PW831zOApL55qPibed0c+xebaLWVr2BnHFoHdrwOv8pzt8R5A==} - engines: {node: 6.* || 8.* || >= 10.*} + fs-tree-diff@2.0.1: dependencies: '@types/symlink-or-copy': 1.2.0 heimdalljs-logger: 0.1.10 @@ -13450,141 +12997,60 @@ packages: symlink-or-copy: 1.3.1 transitivePeerDependencies: - supports-color - dev: true - - /fs-write-stream-atomic@1.0.10: - resolution: {integrity: sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==} - dependencies: - graceful-fs: 4.2.11 - iferr: 0.1.5 - imurmurhash: 0.1.4 - readable-stream: 2.3.8 - dev: true - /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - dev: true - - /fsevents@1.2.13: - resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==} - engines: {node: '>= 4.0'} - os: [darwin] - deprecated: Upgrade to fsevents v2 to mitigate potential security issues - requiresBuild: true - dependencies: - bindings: 1.5.0 - nan: 2.17.0 - dev: true - optional: true + fs.realpath@1.0.0: {} - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true + fsevents@2.3.2: optional: true - /function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + function-bind@1.1.2: {} - /function.prototype.name@1.1.5: - resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} - engines: {node: '>= 0.4'} + function.prototype.name@1.1.5: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.0 es-abstract: 1.21.2 functions-have-names: 1.2.3 - dev: true - /functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - dev: true - - /gauge@3.0.2: - resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} - engines: {node: '>=10'} - dependencies: - aproba: 2.0.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - object-assign: 4.1.1 - signal-exit: 3.0.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 - dev: true + functions-have-names@1.2.3: {} - /gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} + gensync@1.0.0-beta.2: {} - /get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - dev: true + get-caller-file@2.0.5: {} - /get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - dev: true + get-func-name@2.0.2: {} - /get-intrinsic@1.2.1: - resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} + get-intrinsic@1.2.1: dependencies: function-bind: 1.1.2 has: 1.0.3 has-proto: 1.0.1 has-symbols: 1.0.3 - dev: true - /get-npm-tarball-url@2.0.3: - resolution: {integrity: sha512-R/PW6RqyaBQNWYaSyfrh54/qtcnOp22FHCCiRhSSZj0FP3KQWCsxxt0DzIdVTbwTqe9CtQfvl/FPD4UIPt4pqw==} - engines: {node: '>=12.17'} - dev: true - - /get-own-enumerable-property-symbols@3.0.2: - resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} - dev: true + get-intrinsic@1.2.4: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.2 - /get-package-type@0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} - dev: true + get-own-enumerable-property-symbols@3.0.2: {} - /get-port@5.1.1: - resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} - engines: {node: '>=8'} - dev: true + get-package-type@0.1.0: {} - /get-stream@5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} + get-stream@5.2.0: dependencies: pump: 3.0.0 - dev: true - /get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - dev: true + get-stream@6.0.1: {} - /get-symbol-description@1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} - engines: {node: '>= 0.4'} + get-symbol-description@1.0.0: dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.1 - dev: true - - /get-value@2.0.6: - resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} - engines: {node: '>=0.10.0'} - dev: true + call-bind: 1.0.7 + get-intrinsic: 1.2.4 - /giget@1.1.2: - resolution: {integrity: sha512-HsLoS07HiQ5oqvObOI+Qb2tyZH4Gj5nYGfF9qQcZNrPw+uEFhdXtgJr01aO2pWadGHucajYDLxxbtQkm97ON2A==} - hasBin: true + giget@1.1.2: dependencies: colorette: 2.0.20 defu: 6.1.2 @@ -13595,49 +13061,23 @@ packages: tar: 6.1.15 transitivePeerDependencies: - supports-color - dev: true - /github-slugger@1.5.0: - resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} - dev: true + github-slugger@2.0.0: {} - /glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 - dev: true - /glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} + glob-parent@6.0.2: dependencies: is-glob: 4.0.3 - dev: true - /glob-promise@4.2.2(glob@7.2.3): - resolution: {integrity: sha512-xcUzJ8NWN5bktoTIX7eOclO1Npxd/dyVqUJxlLIDasT4C7KZyqlPIwkdJ0Ypiy3p2ZKahTjK4M9uC3sNSfNMzw==} - engines: {node: '>=12'} - peerDependencies: - glob: ^7.1.6 + glob-promise@4.2.2(glob@7.2.3): dependencies: '@types/glob': 7.2.0 glob: 7.2.3 - dev: true - - /glob-promise@6.0.3(glob@8.1.0): - resolution: {integrity: sha512-m+kxywR5j/2Z2V9zvHKfwwL5Gp7gIFEBX+deTB9w2lJB+wSuw9kcS43VfvTAMk8TXL5JCl/cCjsR+tgNVspGyA==} - engines: {node: '>=16'} - peerDependencies: - glob: ^8.0.3 - dependencies: - '@types/glob': 8.1.0 - glob: 8.1.0 - dev: true - /glob-stream@6.1.0: - resolution: {integrity: sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==} - engines: {node: '>= 0.10'} + glob-stream@6.1.0: dependencies: extend: 3.0.2 glob: 7.2.3 @@ -13649,14 +13089,10 @@ packages: remove-trailing-separator: 1.1.0 to-absolute-glob: 2.0.2 unique-stream: 2.3.1 - dev: true - /glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - dev: true + glob-to-regexp@0.4.1: {} - /glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + glob@7.2.3: dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -13664,88 +13100,52 @@ packages: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 - dev: true - - /glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.6 - once: 1.4.0 - dev: true - /global-modules@0.2.3: - resolution: {integrity: sha512-JeXuCbvYzYXcwE6acL9V2bAOeSIGl4dD+iwLY9iUx2VBJJ80R18HCn+JCwHM9Oegdfya3lEkGCdaRkSyc10hDA==} - engines: {node: '>=0.10.0'} + global-modules@0.2.3: dependencies: global-prefix: 0.1.5 is-windows: 0.2.0 - dev: true - /global-prefix@0.1.5: - resolution: {integrity: sha512-gOPiyxcD9dJGCEArAhF4Hd0BAqvAe/JzERP7tYumE4yIkmIedPUVXcJFWbV3/p/ovIIvKjkrTk+f1UVkq7vvbw==} - engines: {node: '>=0.10.0'} + global-prefix@0.1.5: dependencies: homedir-polyfill: 1.0.3 ini: 1.3.8 is-windows: 0.2.0 which: 1.3.1 - dev: true - - /global@4.4.0: - resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} - dependencies: - min-document: 2.19.0 - process: 0.11.10 - dev: true - /globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} + globals@11.12.0: {} - /globals@13.20.0: - resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} - engines: {node: '>=8'} + globals@13.20.0: dependencies: type-fest: 0.20.2 - dev: true - /globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} - engines: {node: '>= 0.4'} + globalthis@1.0.3: dependencies: define-properties: 1.2.0 - dev: true - /globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} + globby@11.1.0: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.2.12 + fast-glob: 3.3.2 ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 - dev: true - /goober@2.1.13(csstype@3.1.2): - resolution: {integrity: sha512-jFj3BQeleOoy7t93E9rZ2de+ScC4lQICLwiAQmKMg9F6roKGaLSHoCDYKkWlSafg138jejvq/mTdvmnwDQgqoQ==} - peerDependencies: - csstype: ^3.0.10 + globby@14.0.2: + dependencies: + '@sindresorhus/merge-streams': 2.3.0 + fast-glob: 3.3.2 + ignore: 5.2.4 + path-type: 5.0.0 + slash: 5.1.0 + unicorn-magic: 0.1.0 + + goober@2.1.13(csstype@3.1.2): dependencies: csstype: 3.1.2 - dev: false - /google-map-react@2.2.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-UPiTwR3qNKJJizURXTuCbnBr8kLtLsiikj/KH1UTLGhadnU6fT+CE3CLw1lzZwk5zZIduQQODyIcEwNInECmUg==} - engines: {node: '>=10'} - peerDependencies: - react: ^16.0.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 + google-map-react@2.2.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@googlemaps/js-api-loader': 1.16.2 '@mapbox/point-geometry': 0.1.0 @@ -13753,17 +13153,12 @@ packages: prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: false - /gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + gopd@1.0.1: dependencies: get-intrinsic: 1.2.1 - dev: true - /got@11.8.5: - resolution: {integrity: sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==} - engines: {node: '>=10.19.0'} + got@11.8.5: dependencies: '@sindresorhus/is': 4.6.0 '@szmarczak/http-timer': 4.0.6 @@ -13776,203 +13171,65 @@ packages: lowercase-keys: 2.0.0 p-cancelable: 2.1.1 responselike: 2.0.1 - dev: true - - /graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - dev: true - /grapheme-splitter@1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - dev: true + graceful-fs@4.2.11: {} - /gulp-sort@2.0.0: - resolution: {integrity: sha512-MyTel3FXOdh1qhw1yKhpimQrAmur9q1X0ZigLmCOxouQD+BD3za9/89O+HfbgBQvvh4igEbp0/PUWO+VqGYG1g==} - dependencies: - through2: 2.0.5 - dev: true + grapheme-splitter@1.0.4: {} - /gunzip-maybe@1.4.2: - resolution: {integrity: sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==} - hasBin: true + gulp-sort@2.0.0: dependencies: - browserify-zlib: 0.1.4 - is-deflate: 1.0.0 - is-gzip: 1.0.0 - peek-stream: 1.1.3 - pumpify: 1.5.1 through2: 2.0.5 - dev: true - - /handlebars@4.7.7: - resolution: {integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==} - engines: {node: '>=0.4.7'} - hasBin: true - dependencies: - minimist: 1.2.8 - neo-async: 2.6.2 - source-map: 0.6.1 - wordwrap: 1.0.0 - optionalDependencies: - uglify-js: 3.17.4 - dev: true - /happy-dom@12.9.1: - resolution: {integrity: sha512-UvQ3IwKn1G3iiNCdTrhijdLGqf8Vj7d3OpmYcPwlKakjFy83oYbW6TmOKDLMTVLO9whmOC1HIpS09wf/14k7cA==} + happy-dom@15.10.2: dependencies: - css.escape: 1.5.1 entities: 4.5.0 - iconv-lite: 0.6.3 webidl-conversions: 7.0.0 - whatwg-encoding: 2.0.0 whatwg-mimetype: 3.0.0 - dev: true - - /has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - dev: true - - /has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - /has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - dev: true - - /has-property-descriptors@1.0.0: - resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} - dependencies: - get-intrinsic: 1.2.1 - dev: true + has-bigints@1.0.2: {} - /has-proto@1.0.1: - resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} - engines: {node: '>= 0.4'} - dev: true + has-flag@3.0.0: {} - /has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - dev: true + has-flag@4.0.0: {} - /has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} - engines: {node: '>= 0.4'} + has-property-descriptors@1.0.0: dependencies: - has-symbols: 1.0.3 - dev: true - - /has-unicode@2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - dev: true + get-intrinsic: 1.2.4 - /has-value@0.3.1: - resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} - engines: {node: '>=0.10.0'} + has-property-descriptors@1.0.2: dependencies: - get-value: 2.0.6 - has-values: 0.1.4 - isobject: 2.1.0 - dev: true + es-define-property: 1.0.0 - /has-value@1.0.0: - resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} - engines: {node: '>=0.10.0'} - dependencies: - get-value: 2.0.6 - has-values: 1.0.0 - isobject: 3.0.1 - dev: true + has-proto@1.0.1: {} - /has-values@0.1.4: - resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} - engines: {node: '>=0.10.0'} - dev: true + has-symbols@1.0.3: {} - /has-values@1.0.0: - resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} - engines: {node: '>=0.10.0'} + has-tostringtag@1.0.0: dependencies: - is-number: 3.0.0 - kind-of: 4.0.0 - dev: true + has-symbols: 1.0.3 - /has@1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} + has@1.0.3: dependencies: function-bind: 1.1.2 - /hash-base@3.1.0: - resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} - engines: {node: '>=4'} + hasha@5.2.2: dependencies: - inherits: 2.0.4 - readable-stream: 3.6.2 - safe-buffer: 5.2.1 - dev: true + is-stream: 2.0.1 + type-fest: 0.8.1 - /hash.js@1.1.7: - resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + hasown@2.0.2: dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - dev: true + function-bind: 1.1.2 - /hasha@5.2.2: - resolution: {integrity: sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==} - engines: {node: '>=8'} + hast-util-heading-rank@3.0.0: dependencies: - is-stream: 2.0.1 - type-fest: 0.8.1 - dev: true + '@types/hast': 3.0.4 - /hast-to-hyperscript@9.0.1: - resolution: {integrity: sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==} - dependencies: - '@types/unist': 2.0.6 - comma-separated-tokens: 1.0.8 - property-information: 5.6.0 - space-separated-tokens: 1.1.5 - style-to-object: 0.3.0 - unist-util-is: 4.1.0 - web-namespaces: 1.1.4 - dev: true - - /hast-util-from-parse5@6.0.1: - resolution: {integrity: sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==} - dependencies: - '@types/parse5': 5.0.3 - hastscript: 6.0.0 - property-information: 5.6.0 - vfile: 4.2.1 - vfile-location: 3.2.0 - web-namespaces: 1.1.4 - dev: true - - /hast-util-parse-selector@2.2.5: - resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==} - dev: true - - /hast-util-raw@6.0.1: - resolution: {integrity: sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig==} + hast-util-is-element@3.0.0: dependencies: - '@types/hast': 2.3.4 - hast-util-from-parse5: 6.0.1 - hast-util-to-parse5: 6.0.0 - html-void-elements: 1.0.5 - parse5: 6.0.1 - unist-util-position: 3.1.0 - vfile: 4.2.1 - web-namespaces: 1.1.4 - xtend: 4.0.2 - zwitch: 1.0.5 - dev: true + '@types/hast': 3.0.4 - /hast-util-to-estree@2.3.3: - resolution: {integrity: sha512-ihhPIUPxN0v0w6M5+IiAZZrn0LH2uZomeWwhn7uP7avZC6TE7lIiEh2yBMPr5+zi1aUCXq6VoYRgs2Bw9xmycQ==} + hast-util-to-estree@2.3.3: dependencies: '@types/estree': 1.0.1 '@types/estree-jsx': 1.0.0 @@ -13991,58 +13248,29 @@ packages: zwitch: 2.0.4 transitivePeerDependencies: - supports-color - dev: true - /hast-util-to-parse5@6.0.0: - resolution: {integrity: sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==} + hast-util-to-string@3.0.1: dependencies: - hast-to-hyperscript: 9.0.1 - property-information: 5.6.0 - web-namespaces: 1.1.4 - xtend: 4.0.2 - zwitch: 1.0.5 - dev: true - - /hast-util-whitespace@2.0.1: - resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==} - dev: true + '@types/hast': 3.0.4 - /hastscript@6.0.0: - resolution: {integrity: sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==} - dependencies: - '@types/hast': 2.3.4 - comma-separated-tokens: 1.0.8 - hast-util-parse-selector: 2.2.5 - property-information: 5.6.0 - space-separated-tokens: 1.1.5 - dev: true + hast-util-whitespace@2.0.1: {} - /he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - dev: true + he@1.2.0: {} - /heimdalljs-logger@0.1.10: - resolution: {integrity: sha512-pO++cJbhIufVI/fmB/u2Yty3KJD0TqNPecehFae0/eps0hkZ3b4Zc/PezUMOpYuHFQbA7FxHZxa305EhmjLj4g==} + heimdalljs-logger@0.1.10: dependencies: debug: 2.6.9 heimdalljs: 0.2.6 transitivePeerDependencies: - supports-color - dev: true - /heimdalljs@0.2.6: - resolution: {integrity: sha512-o9bd30+5vLBvBtzCPwwGqpry2+n0Hi6H1+qwt6y+0kwRHGGF8TFIhJPmnuM0xO97zaKrDZMwO/V56fAnn8m/tA==} + heimdalljs@0.2.6: dependencies: rsvp: 3.2.1 - dev: true - /hey-listen@1.0.8: - resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} - dev: false + hey-listen@1.0.8: {} - /history@4.10.1: - resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} + history@4.10.1: dependencies: '@babel/runtime': 7.23.5 loose-envify: 1.4.0 @@ -14050,61 +13278,30 @@ packages: tiny-invariant: 1.3.1 tiny-warning: 1.0.3 value-equal: 1.0.1 - dev: false - /history@5.3.0: - resolution: {integrity: sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==} + history@5.3.0: dependencies: '@babel/runtime': 7.22.5 - dev: false - /hmac-drbg@1.0.1: - resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} - dependencies: - hash.js: 1.1.7 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 - dev: true - - /hoist-non-react-statics@2.5.5: - resolution: {integrity: sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==} - dev: false + hoist-non-react-statics@2.5.5: {} - /hoist-non-react-statics@3.3.2: - resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + hoist-non-react-statics@3.3.2: dependencies: react-is: 16.13.1 - /homedir-polyfill@1.0.3: - resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} - engines: {node: '>=0.10.0'} + homedir-polyfill@1.0.3: dependencies: parse-passwd: 1.0.0 - dev: true - /hosted-git-info@2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - dev: true - - /html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - dev: true + html-escaper@2.0.2: {} - /html-parse-stringify@3.0.1: - resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==} + html-parse-stringify@3.0.1: dependencies: void-elements: 3.1.0 - dev: false - /html-tags@3.3.1: - resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} - engines: {node: '>=8'} - dev: true + html-tags@3.3.1: {} - /html-to-text@8.2.0: - resolution: {integrity: sha512-CLXExYn1b++Lgri+ZyVvbUEFwzkLZppjjZOwB7X1qv2jIi8MrMEvxWX5KQ7zATAzTvcqgmtO00M2kCRMtEdOKQ==} - engines: {node: '>=10.23.2'} - hasBin: true + html-to-text@8.2.0: dependencies: '@selderee/plugin-htmlparser2': 0.6.0 deepmerge: 4.3.1 @@ -14112,22 +13309,13 @@ packages: htmlparser2: 6.1.0 minimist: 1.2.8 selderee: 0.6.0 - dev: true - /html-void-elements@1.0.5: - resolution: {integrity: sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==} - dev: true - - /html2canvas@1.4.1: - resolution: {integrity: sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==} - engines: {node: '>=8.0.0'} + html2canvas@1.4.1: dependencies: css-line-break: 2.1.0 text-segmentation: 1.0.3 - dev: false - /htmlparser2@3.10.1: - resolution: {integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==} + htmlparser2@3.10.1: dependencies: domelementtype: 1.3.1 domhandler: 2.4.2 @@ -14135,92 +13323,52 @@ packages: entities: 1.1.2 inherits: 2.0.4 readable-stream: 3.6.2 - dev: true - /htmlparser2@6.1.0: - resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} + htmlparser2@6.1.0: dependencies: domelementtype: 2.3.0 domhandler: 4.3.1 domutils: 2.8.0 entities: 2.2.0 - dev: true - /htmlparser2@8.0.2: - resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + htmlparser2@8.0.2: dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 domutils: 3.1.0 entities: 4.5.0 - dev: true - /http-cache-semantics@4.1.1: - resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} - dev: true + http-cache-semantics@4.1.1: {} - /http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} + http-errors@2.0.0: dependencies: depd: 2.0.0 inherits: 2.0.4 setprototypeof: 1.2.0 statuses: 2.0.1 toidentifier: 1.0.1 - dev: true - /http2-wrapper@1.0.3: - resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} - engines: {node: '>=10.19.0'} + http2-wrapper@1.0.3: dependencies: quick-lru: 5.1.1 resolve-alpn: 1.2.1 - dev: true - - /https-browserify@1.0.0: - resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} - dev: true - - /https-proxy-agent@4.0.0: - resolution: {integrity: sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==} - engines: {node: '>= 6.0.0'} - dependencies: - agent-base: 5.1.1 - debug: 4.3.4(supports-color@9.3.1) - transitivePeerDependencies: - - supports-color - dev: true - /https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} + https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 debug: 4.3.4(supports-color@9.3.1) transitivePeerDependencies: - supports-color - dev: true - /human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - dev: true + human-signals@2.1.0: {} - /hyphenate-style-name@1.0.4: - resolution: {integrity: sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==} - dev: false + hyphenate-style-name@1.0.4: {} - /i18next-browser-languagedetector@6.1.8: - resolution: {integrity: sha512-Svm+MduCElO0Meqpj1kJAriTC6OhI41VhlT/A0UPjGoPZBhAHIaGE5EfsHlTpgdH09UVX7rcc72pSDDBeKSQQA==} + i18next-browser-languagedetector@6.1.8: dependencies: '@babel/runtime': 7.22.5 - dev: false - /i18next-parser@5.4.0: - resolution: {integrity: sha512-AkMOy3NW09tnB+4CAVzHVWxhoab8q1L6E3aIugWeTZqbUVYTjb6dtW1AhiiUd4nLMOj29LaaVCkyqOhrTezp7Q==} - engines: {node: '>=12', npm: '>=6', yarn: '>=1'} - hasBin: true + i18next-parser@5.4.0: dependencies: '@babel/runtime': 7.22.5 broccoli-plugin: 4.0.7 @@ -14242,57 +13390,32 @@ packages: vue-template-compiler: 2.7.14 transitivePeerDependencies: - supports-color - dev: true - /i18next-xhr-backend@3.2.2: - resolution: {integrity: sha512-OtRf2Vo3IqAxsttQbpjYnmMML12IMB5e0fc5B7qKJFLScitYaXa1OhMX0n0X/3vrfFlpHL9Ro/H+ps4Ej2j7QQ==} - deprecated: replaced by i18next-http-backend + i18next-xhr-backend@3.2.2: dependencies: '@babel/runtime': 7.22.5 - dev: false - /i18next@21.10.0: - resolution: {integrity: sha512-YeuIBmFsGjUfO3qBmMOc0rQaun4mIpGKET5WDwvu8lU7gvwpcariZLNtL0Fzj+zazcHUrlXHiptcFhBMFaxzfg==} + i18next@21.10.0: dependencies: '@babel/runtime': 7.22.5 - /icepick@1.3.0: - resolution: {integrity: sha512-wtkTJ9cS907NagkBjnHCT8PzaRdu7xM/v/5fXe01K/6zPXnqMsLHw0kn6xGubLvpo2ABZUAEqrQhTRfXKK+OLA==} - dev: false + icepick@1.3.0: {} - /iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} + iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 - dev: true - /iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} + iconv-lite@0.6.3: dependencies: safer-buffer: 2.1.2 - /idb@7.1.1: - resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==} - dev: true - - /ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - dev: true + idb@7.1.1: {} - /iferr@0.1.5: - resolution: {integrity: sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==} - dev: true + ieee754@1.2.1: {} - /ignore@5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} - engines: {node: '>= 4'} - dev: true + ignore@5.2.4: {} - /imap-simple@5.1.0: - resolution: {integrity: sha512-FLZm1v38C5ekN46l/9X5gBRNMQNVc5TSLYQ3Hsq3xBLvKwt1i5fcuShyth8MYMPuvId1R46oaPNrH92hFGHr/g==} - engines: {node: '>=6'} + imap-simple@5.1.0: dependencies: iconv-lite: 0.4.24 imap: 0.8.19 @@ -14300,678 +13423,283 @@ packages: quoted-printable: 1.0.1 utf8: 2.1.2 uuencode: 0.0.4 - dev: true - /imap@0.8.19: - resolution: {integrity: sha512-z5DxEA1uRnZG73UcPA4ES5NSCGnPuuouUx43OPX7KZx1yzq3N8/vx2mtXEShT5inxB3pRgnfG1hijfu7XN2YMw==} - engines: {node: '>=0.8.0'} + imap@0.8.19: dependencies: readable-stream: 1.1.14 utf7: 1.0.2 - dev: true - /immediate@3.0.6: - resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} - dev: false + immediate@3.0.6: {} - /immer@9.0.16: - resolution: {integrity: sha512-qenGE7CstVm1NrHQbMh8YaSzTZTFNP3zPqr3YU0S0UY441j4bJTg4A2Hh5KAhwgaiU6ZZ1Ar6y/2f4TblnMReQ==} - dev: false + immer@9.0.16: {} - /immutable@4.3.0: - resolution: {integrity: sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==} - dev: true + immutable@4.3.0: {} - /import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} + import-fresh@3.3.0: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 - /import-local@3.1.0: - resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} - engines: {node: '>=8'} - hasBin: true + import-local@3.1.0: dependencies: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 - dev: true - - /imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - dev: true - - /indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - dev: true - /infer-owner@1.0.4: - resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} - dev: true + imurmurhash@0.1.4: {} - /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + indent-string@4.0.0: {} + + inflight@1.0.6: dependencies: once: 1.4.0 wrappy: 1.0.2 - dev: true - - /inherits@2.0.1: - resolution: {integrity: sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==} - dev: true - - /inherits@2.0.3: - resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} - dev: true - /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + inherits@2.0.4: {} - /ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - dev: true + ini@1.3.8: {} - /inline-style-parser@0.1.1: - resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} - dev: true + inline-style-parser@0.1.1: {} - /internal-slot@1.0.5: - resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} - engines: {node: '>= 0.4'} + internal-slot@1.0.5: dependencies: get-intrinsic: 1.2.1 has: 1.0.3 side-channel: 1.0.4 - dev: true - - /internmap@1.0.1: - resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==} - dev: false - - /internmap@2.0.3: - resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} - engines: {node: '>=12'} - dev: false - /interpret@1.4.0: - resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} - engines: {node: '>= 0.10'} - dev: true + internmap@1.0.1: {} - /interpret@2.2.0: - resolution: {integrity: sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==} - engines: {node: '>= 0.10'} - dev: true + internmap@2.0.3: {} - /invariant@2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + invariant@2.2.4: dependencies: loose-envify: 1.4.0 - dev: false - - /ip@2.0.0: - resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} - dev: true - /ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} - dev: true + ipaddr.js@1.9.1: {} - /is-absolute-url@3.0.3: - resolution: {integrity: sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==} - engines: {node: '>=8'} - dev: true + is-absolute-url@4.0.1: {} - /is-absolute@1.0.0: - resolution: {integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==} - engines: {node: '>=0.10.0'} + is-absolute@1.0.0: dependencies: is-relative: 1.0.0 is-windows: 1.0.2 - dev: true - - /is-accessor-descriptor@0.1.6: - resolution: {integrity: sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: true - - /is-accessor-descriptor@1.0.0: - resolution: {integrity: sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 6.0.3 - dev: true - - /is-alphabetical@1.0.4: - resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} - dev: true - - /is-alphabetical@2.0.1: - resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} - dev: true - /is-alphanumerical@1.0.4: - resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} - dependencies: - is-alphabetical: 1.0.4 - is-decimal: 1.0.4 - dev: true + is-alphabetical@2.0.1: {} - /is-alphanumerical@2.0.1: - resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + is-alphanumerical@2.0.1: dependencies: is-alphabetical: 2.0.1 is-decimal: 2.0.1 - dev: true - /is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} + is-arguments@1.1.1: dependencies: call-bind: 1.0.5 has-tostringtag: 1.0.0 - dev: true - /is-array-buffer@3.0.2: - resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + is-array-buffer@3.0.2: dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.1 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 is-typed-array: 1.1.12 - dev: true - /is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + is-arrayish@0.2.1: {} - /is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + is-bigint@1.0.4: dependencies: has-bigints: 1.0.2 - dev: true - - /is-binary-path@1.0.1: - resolution: {integrity: sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==} - engines: {node: '>=0.10.0'} - requiresBuild: true - dependencies: - binary-extensions: 1.13.1 - dev: true - optional: true - /is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} + is-binary-path@2.1.0: dependencies: binary-extensions: 2.2.0 - dev: true - /is-blob@2.1.0: - resolution: {integrity: sha512-SZ/fTft5eUhQM6oF/ZaASFDEdbFVe89Imltn9uZr03wdKMcWNVYSMjQPFtg05QuNkt5l5c135ElvXEQG0rk4tw==} - engines: {node: '>=6'} - dev: false + is-blob@2.1.0: {} - /is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} + is-boolean-object@1.1.2: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 has-tostringtag: 1.0.0 - dev: true - /is-buffer@1.1.6: - resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} - dev: true + is-buffer@1.1.6: {} - /is-buffer@2.0.5: - resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} - engines: {node: '>=4'} - dev: true + is-buffer@2.0.5: {} - /is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - dev: true + is-callable@1.2.7: {} - /is-core-module@2.12.1: - resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} + is-core-module@2.12.1: dependencies: has: 1.0.3 - /is-data-descriptor@0.1.4: - resolution: {integrity: sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: true - - /is-data-descriptor@1.0.0: - resolution: {integrity: sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==} - engines: {node: '>=0.10.0'} + is-core-module@2.15.1: dependencies: - kind-of: 6.0.3 - dev: true + hasown: 2.0.2 - /is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} + is-date-object@1.0.5: dependencies: has-tostringtag: 1.0.0 - dev: true - - /is-decimal@1.0.4: - resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} - dev: true - - /is-decimal@2.0.1: - resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} - dev: true - - /is-deflate@1.0.0: - resolution: {integrity: sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==} - dev: true - - /is-descriptor@0.1.6: - resolution: {integrity: sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==} - engines: {node: '>=0.10.0'} - dependencies: - is-accessor-descriptor: 0.1.6 - is-data-descriptor: 0.1.4 - kind-of: 5.1.0 - dev: true - - /is-descriptor@1.0.2: - resolution: {integrity: sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==} - engines: {node: '>=0.10.0'} - dependencies: - is-accessor-descriptor: 1.0.0 - is-data-descriptor: 1.0.0 - kind-of: 6.0.3 - dev: true - - /is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - dev: true - /is-extendable@0.1.1: - resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} - engines: {node: '>=0.10.0'} - dev: true - - /is-extendable@1.0.1: - resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} - engines: {node: '>=0.10.0'} - dependencies: - is-plain-object: 2.0.4 - dev: true - - /is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - dev: true + is-decimal@2.0.1: {} - /is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - dev: true + is-extglob@2.1.1: {} - /is-fullwidth-code-point@4.0.0: - resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} - engines: {node: '>=12'} - dev: true + is-fullwidth-code-point@3.0.0: {} - /is-function@1.0.2: - resolution: {integrity: sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==} - dev: true + is-fullwidth-code-point@4.0.0: {} - /is-generator-fn@2.1.0: - resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} - engines: {node: '>=6'} - dev: true + is-generator-fn@2.1.0: {} - /is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} + is-generator-function@1.0.10: dependencies: has-tostringtag: 1.0.0 - dev: true - /is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} + is-glob@4.0.3: dependencies: is-extglob: 2.1.1 - dev: true - - /is-gzip@1.0.0: - resolution: {integrity: sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==} - engines: {node: '>=0.10.0'} - dev: true - /is-hexadecimal@1.0.4: - resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} - dev: true - - /is-hexadecimal@2.0.1: - resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - dev: true - - /is-in-browser@1.1.3: - resolution: {integrity: sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==} - dev: false + is-hexadecimal@2.0.1: {} - /is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - dev: true + is-in-browser@1.1.3: {} - /is-map@2.0.2: - resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} - dev: true + is-interactive@1.0.0: {} - /is-module@1.0.0: - resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} - dev: true + is-map@2.0.2: {} - /is-nan@1.3.2: - resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.0 - dev: true + is-module@1.0.0: {} - /is-negated-glob@1.0.0: - resolution: {integrity: sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==} - engines: {node: '>=0.10.0'} - dev: true + is-negated-glob@1.0.0: {} - /is-negative-zero@2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} - engines: {node: '>= 0.4'} - dev: true + is-negative-zero@2.0.2: {} - /is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} + is-number-object@1.0.7: dependencies: has-tostringtag: 1.0.0 - dev: true - - /is-number@3.0.0: - resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: true - - /is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - dev: true - /is-obj@1.0.1: - resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} - engines: {node: '>=0.10.0'} - dev: true + is-number@7.0.0: {} - /is-path-cwd@2.2.0: - resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} - engines: {node: '>=6'} - dev: true + is-obj@1.0.1: {} - /is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - dev: true + is-path-inside@3.0.3: {} - /is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - dev: true + is-plain-obj@2.1.0: {} - /is-plain-obj@4.1.0: - resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} - engines: {node: '>=12'} - dev: true + is-plain-obj@4.1.0: {} - /is-plain-object@2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} + is-plain-object@2.0.4: dependencies: isobject: 3.0.1 - dev: true - /is-plain-object@5.0.0: - resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} - engines: {node: '>=0.10.0'} - dev: true + is-plain-object@5.0.0: {} - /is-promise@1.0.1: - resolution: {integrity: sha512-mjWH5XxnhMA8cFnDchr6qRP9S/kLntKuEfIYku+PaN1CnS8v+OG9O/BKpRCVRJvpIkgAZm0Pf5Is3iSSOILlcg==} - dev: true + is-promise@1.0.1: {} - /is-reference@3.0.1: - resolution: {integrity: sha512-baJJdQLiYaJdvFbJqXrcGv3WU3QCzBlUcI5QhbesIm6/xPsvmO+2CDoi/GMOFBQEQm+PXkwOPrp9KK5ozZsp2w==} + is-reference@3.0.1: dependencies: '@types/estree': 1.0.1 - dev: true - /is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} + is-regex@1.1.4: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 has-tostringtag: 1.0.0 - dev: true - /is-regexp@1.0.0: - resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} - engines: {node: '>=0.10.0'} - dev: true + is-regexp@1.0.0: {} - /is-relative@1.0.0: - resolution: {integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==} - engines: {node: '>=0.10.0'} + is-relative@1.0.0: dependencies: is-unc-path: 1.0.0 - dev: true - /is-set@2.0.2: - resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} - dev: true + is-set@2.0.2: {} - /is-shared-array-buffer@1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + is-shared-array-buffer@1.0.2: dependencies: - call-bind: 1.0.5 - dev: true + call-bind: 1.0.7 - /is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - dev: true + is-stream@2.0.1: {} - /is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} + is-stream@3.0.0: {} + + is-string@1.0.7: dependencies: has-tostringtag: 1.0.0 - dev: true - /is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} + is-symbol@1.0.4: dependencies: has-symbols: 1.0.3 - dev: true - /is-typed-array@1.1.12: - resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} - engines: {node: '>= 0.4'} + is-typed-array@1.1.12: dependencies: which-typed-array: 1.1.13 - dev: true - /is-typedarray@1.0.0: - resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - dev: true + is-typedarray@1.0.0: {} - /is-unc-path@1.0.0: - resolution: {integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==} - engines: {node: '>=0.10.0'} + is-unc-path@1.0.0: dependencies: unc-path-regex: 0.1.2 - dev: true - - /is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - dev: true - /is-utf8@0.2.1: - resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} - dev: true + is-unicode-supported@0.1.0: {} - /is-valid-glob@1.0.0: - resolution: {integrity: sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==} - engines: {node: '>=0.10.0'} - dev: true + is-utf8@0.2.1: {} - /is-weakmap@2.0.1: - resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} - dev: true + is-valid-glob@1.0.0: {} - /is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - dependencies: - call-bind: 1.0.5 - dev: true + is-weakmap@2.0.1: {} - /is-weakset@2.0.2: - resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + is-weakref@1.0.2: dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.1 - dev: true - - /is-whitespace-character@1.0.4: - resolution: {integrity: sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==} - dev: true - - /is-windows@0.2.0: - resolution: {integrity: sha512-n67eJYmXbniZB7RF4I/FTjK1s6RPOCTxhYrVYLRaCt3lF0mpWZPKr3T2LSZAqyjQsxR2qMmGYXXzK0YWwcPM1Q==} - engines: {node: '>=0.10.0'} - dev: true - - /is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - dev: true - - /is-word-character@1.0.4: - resolution: {integrity: sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==} - dev: true - - /is-wsl@1.1.0: - resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} - engines: {node: '>=4'} - dev: true + call-bind: 1.0.7 - /is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} + is-weakset@2.0.2: dependencies: - is-docker: 2.2.1 - dev: true - - /isarray@0.0.1: - resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} + call-bind: 1.0.7 + get-intrinsic: 1.2.4 - /isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + is-windows@0.2.0: {} - /isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - dev: true + is-windows@1.0.2: {} - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - dev: true + isarray@0.0.1: {} - /isobject@2.1.0: - resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} - engines: {node: '>=0.10.0'} - dependencies: - isarray: 1.0.0 - dev: true + isarray@1.0.0: {} - /isobject@3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} - dev: true + isarray@2.0.5: {} - /isobject@4.0.0: - resolution: {integrity: sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==} - engines: {node: '>=0.10.0'} - dev: true + isexe@2.0.0: {} - /isomorphic-unfetch@3.1.0: - resolution: {integrity: sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==} - dependencies: - node-fetch: 2.6.11 - unfetch: 4.2.0 - transitivePeerDependencies: - - encoding - dev: true + isobject@3.0.1: {} - /istanbul-lib-coverage@3.2.0: - resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} - engines: {node: '>=8'} - dev: true + istanbul-lib-coverage@3.2.0: {} - /istanbul-lib-hook@3.0.0: - resolution: {integrity: sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==} - engines: {node: '>=8'} + istanbul-lib-hook@3.0.0: dependencies: append-transform: 2.0.0 - dev: true - /istanbul-lib-instrument@4.0.3: - resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==} - engines: {node: '>=8'} + istanbul-lib-instrument@4.0.3: dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.25.9 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 7.5.3 transitivePeerDependencies: - supports-color - dev: true - /istanbul-lib-instrument@5.2.1: - resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} - engines: {node: '>=8'} + istanbul-lib-instrument@5.2.1: dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.25.9 '@babel/parser': 7.23.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 7.5.3 transitivePeerDependencies: - supports-color - dev: true - /istanbul-lib-processinfo@2.0.3: - resolution: {integrity: sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==} - engines: {node: '>=8'} + istanbul-lib-instrument@6.0.3: + dependencies: + '@babel/core': 7.25.9 + '@babel/parser': 7.25.9 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.0 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color + + istanbul-lib-processinfo@2.0.3: dependencies: archy: 1.0.0 cross-spawn: 7.0.3 @@ -14979,320 +13707,205 @@ packages: p-map: 3.0.0 rimraf: 3.0.2 uuid: 8.3.2 - dev: true - /istanbul-lib-report@3.0.0: - resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} - engines: {node: '>=8'} + istanbul-lib-report@3.0.0: dependencies: istanbul-lib-coverage: 3.2.0 make-dir: 3.1.0 supports-color: 7.2.0 - dev: true - /istanbul-lib-source-maps@4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} - engines: {node: '>=10'} + istanbul-lib-source-maps@4.0.1: dependencies: debug: 4.3.4(supports-color@9.3.1) istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: - supports-color - dev: true - /istanbul-reports@3.1.5: - resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} - engines: {node: '>=8'} + istanbul-reports@3.1.5: dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.0 - dev: true - /jake@10.8.7: - resolution: {integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==} - engines: {node: '>=10'} - hasBin: true + jake@10.8.7: dependencies: async: 3.2.4 chalk: 4.1.2 filelist: 1.0.4 minimatch: 3.1.2 - dev: true - /jest-changed-files@28.1.3: - resolution: {integrity: sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + jest-changed-files@29.7.0: dependencies: execa: 5.1.1 + jest-util: 29.7.0 p-limit: 3.1.0 - dev: true - /jest-circus@28.1.3: - resolution: {integrity: sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + jest-circus@29.7.0(babel-plugin-macros@3.1.0): dependencies: - '@jest/environment': 28.1.3 - '@jest/expect': 28.1.3 - '@jest/test-result': 28.1.3 - '@jest/types': 28.1.3 + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 '@types/node': 20.3.2 chalk: 4.1.2 co: 4.6.0 - dedent: 0.7.0 + dedent: 1.5.3(babel-plugin-macros@3.1.0) is-generator-fn: 2.1.0 - jest-each: 28.1.3 - jest-matcher-utils: 28.1.3 - jest-message-util: 28.1.3 - jest-runtime: 28.1.3 - jest-snapshot: 28.1.3 - jest-util: 28.1.3 + jest-each: 29.7.0 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 p-limit: 3.1.0 - pretty-format: 28.1.3 + pretty-format: 29.7.0 + pure-rand: 6.1.0 slash: 3.0.0 stack-utils: 2.0.6 transitivePeerDependencies: + - babel-plugin-macros - supports-color - dev: true - /jest-cli@28.1.3: - resolution: {integrity: sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + jest-cli@29.7.0(@types/node@20.3.2)(babel-plugin-macros@3.1.0): dependencies: - '@jest/core': 28.1.3 - '@jest/test-result': 28.1.3 - '@jest/types': 28.1.3 + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 chalk: 4.1.2 + create-jest: 29.7.0(@types/node@20.3.2)(babel-plugin-macros@3.1.0) exit: 0.1.2 - graceful-fs: 4.2.11 import-local: 3.1.0 - jest-config: 28.1.3(@types/node@20.3.2) - jest-util: 28.1.3 - jest-validate: 28.1.3 - prompts: 2.4.2 + jest-config: 29.7.0(@types/node@20.3.2)(babel-plugin-macros@3.1.0) + jest-util: 29.7.0 + jest-validate: 29.7.0 yargs: 17.7.2 transitivePeerDependencies: - '@types/node' + - babel-plugin-macros - supports-color - ts-node - dev: true - /jest-config@28.1.3(@types/node@20.3.2): - resolution: {integrity: sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true + jest-config@29.7.0(@types/node@20.3.2)(babel-plugin-macros@3.1.0): dependencies: - '@babel/core': 7.22.5 - '@jest/test-sequencer': 28.1.3 - '@jest/types': 28.1.3 - '@types/node': 20.3.2 - babel-jest: 28.1.3(@babel/core@7.22.5) + '@babel/core': 7.25.9 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.25.9) chalk: 4.1.2 ci-info: 3.8.0 deepmerge: 4.3.1 glob: 7.2.3 graceful-fs: 4.2.11 - jest-circus: 28.1.3 - jest-environment-node: 28.1.3 - jest-get-type: 28.0.2 - jest-regex-util: 28.0.2 - jest-resolve: 28.1.3 - jest-runner: 28.1.3 - jest-util: 28.1.3 - jest-validate: 28.1.3 + jest-circus: 29.7.0(babel-plugin-macros@3.1.0) + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 micromatch: 4.0.5 parse-json: 5.2.0 - pretty-format: 28.1.3 + pretty-format: 29.7.0 slash: 3.0.0 strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 20.3.2 transitivePeerDependencies: + - babel-plugin-macros - supports-color - dev: true - /jest-diff@28.1.3: - resolution: {integrity: sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + jest-diff@29.7.0: dependencies: chalk: 4.1.2 - diff-sequences: 28.1.1 - jest-get-type: 28.0.2 - pretty-format: 28.1.3 - dev: true + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 - /jest-docblock@28.1.1: - resolution: {integrity: sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + jest-docblock@29.7.0: dependencies: detect-newline: 3.1.0 - dev: true - /jest-each@28.1.3: - resolution: {integrity: sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + jest-each@29.7.0: dependencies: - '@jest/types': 28.1.3 + '@jest/types': 29.6.3 chalk: 4.1.2 - jest-get-type: 28.0.2 - jest-util: 28.1.3 - pretty-format: 28.1.3 - dev: true - - /jest-environment-node@28.1.3: - resolution: {integrity: sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dependencies: - '@jest/environment': 28.1.3 - '@jest/fake-timers': 28.1.3 - '@jest/types': 28.1.3 - '@types/node': 20.3.2 - jest-mock: 28.1.3 - jest-util: 28.1.3 - dev: true - - /jest-get-type@28.0.2: - resolution: {integrity: sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dev: true + jest-get-type: 29.6.3 + jest-util: 29.7.0 + pretty-format: 29.7.0 - /jest-haste-map@28.1.3: - resolution: {integrity: sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + jest-environment-node@29.7.0: dependencies: - '@jest/types': 28.1.3 - '@types/graceful-fs': 4.1.6 + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 '@types/node': 20.3.2 - anymatch: 3.1.3 - fb-watchman: 2.0.2 - graceful-fs: 4.2.11 - jest-regex-util: 28.0.2 - jest-util: 28.1.3 - jest-worker: 28.1.3 - micromatch: 4.0.5 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.2 - dev: true + jest-mock: 29.7.0 + jest-util: 29.7.0 - /jest-haste-map@29.5.0: - resolution: {integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-get-type@29.6.3: {} + + jest-haste-map@29.7.0: dependencies: - '@jest/types': 29.5.0 + '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.6 '@types/node': 20.3.2 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 - jest-regex-util: 29.4.3 - jest-util: 29.5.0 - jest-worker: 29.5.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + jest-worker: 29.7.0 micromatch: 4.0.5 walker: 1.0.8 optionalDependencies: fsevents: 2.3.2 - dev: true - /jest-junit@14.0.1: - resolution: {integrity: sha512-h7/wwzPbllgpQhhVcRzRC76/cc89GlazThoV1fDxcALkf26IIlRsu/AcTG64f4nR2WPE3Cbd+i/sVf+NCUHrWQ==} - engines: {node: '>=10.12.0'} + jest-junit@16.0.0: dependencies: mkdirp: 1.0.4 strip-ansi: 6.0.1 uuid: 8.3.2 xml: 1.0.1 - dev: true - /jest-leak-detector@28.1.3: - resolution: {integrity: sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + jest-leak-detector@29.7.0: dependencies: - jest-get-type: 28.0.2 - pretty-format: 28.1.3 - dev: true + jest-get-type: 29.6.3 + pretty-format: 29.7.0 - /jest-matcher-utils@28.1.3: - resolution: {integrity: sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + jest-matcher-utils@29.7.0: dependencies: chalk: 4.1.2 - jest-diff: 28.1.3 - jest-get-type: 28.0.2 - pretty-format: 28.1.3 - dev: true + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 - /jest-message-util@28.1.3: - resolution: {integrity: sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + jest-message-util@29.7.0: dependencies: - '@babel/code-frame': 7.22.5 - '@jest/types': 28.1.3 - '@types/stack-utils': 2.0.1 - chalk: 4.1.2 - graceful-fs: 4.2.11 - micromatch: 4.0.5 - pretty-format: 28.1.3 - slash: 3.0.0 - stack-utils: 2.0.6 - dev: true - - /jest-message-util@29.5.0: - resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@babel/code-frame': 7.22.5 - '@jest/types': 29.5.0 + '@babel/code-frame': 7.25.9 + '@jest/types': 29.6.3 '@types/stack-utils': 2.0.1 chalk: 4.1.2 graceful-fs: 4.2.11 micromatch: 4.0.5 - pretty-format: 29.5.0 + pretty-format: 29.7.0 slash: 3.0.0 stack-utils: 2.0.6 - dev: true - - /jest-mock@27.5.1: - resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - '@types/node': 20.3.2 - dev: true - /jest-mock@28.1.3: - resolution: {integrity: sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + jest-mock@29.7.0: dependencies: - '@jest/types': 28.1.3 + '@jest/types': 29.6.3 '@types/node': 20.3.2 - dev: true + jest-util: 29.7.0 - /jest-playwright-preset@2.0.0(jest-circus@28.1.3)(jest-environment-node@28.1.3)(jest-runner@28.1.3)(jest@28.1.3): - resolution: {integrity: sha512-pV5ruTJJMen3lwshUL4dlSqLlP8z4q9MXqWJkmy+sB6HYfzXoqBHzhl+5hslznhnSVTe4Dwu+reiiwcUJpYUbw==} - peerDependencies: - jest: ^28.0.0 - jest-circus: ^28.0.0 - jest-environment-node: ^28.0.0 - jest-runner: ^28.0.0 + jest-playwright-preset@4.0.0(jest-circus@29.7.0(babel-plugin-macros@3.1.0))(jest-environment-node@29.7.0)(jest-runner@29.7.0)(jest@29.7.0(@types/node@20.3.2)(babel-plugin-macros@3.1.0)): dependencies: expect-playwright: 0.8.0 - jest: 28.1.3 - jest-circus: 28.1.3 - jest-environment-node: 28.1.3 - jest-process-manager: 0.3.1 - jest-runner: 28.1.3 + jest: 29.7.0(@types/node@20.3.2)(babel-plugin-macros@3.1.0) + jest-circus: 29.7.0(babel-plugin-macros@3.1.0) + jest-environment-node: 29.7.0 + jest-process-manager: 0.4.0 + jest-runner: 29.7.0 nyc: 15.1.0 playwright-core: 1.35.1 rimraf: 3.0.2 @@ -15300,22 +13913,12 @@ packages: transitivePeerDependencies: - debug - supports-color - dev: true - /jest-pnp-resolver@1.2.3(jest-resolve@28.1.3): - resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} - engines: {node: '>=6'} - peerDependencies: - jest-resolve: '*' - peerDependenciesMeta: - jest-resolve: - optional: true - dependencies: - jest-resolve: 28.1.3 - dev: true + jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): + optionalDependencies: + jest-resolve: 29.7.0 - /jest-process-manager@0.3.1: - resolution: {integrity: sha512-x9W54UgZ7IkzUHgXtnI1x4GKOVjxtwW0CA/7yGbTHtT/YhENO0Lic2yfVyC/gekn7OIEMcQmy0L1r9WLQABfqw==} + jest-process-manager@0.4.0: dependencies: '@types/wait-on': 5.3.1 chalk: 4.1.2 @@ -15326,672 +13929,391 @@ packages: signal-exit: 3.0.7 spawnd: 5.0.0 tree-kill: 1.2.2 - wait-on: 5.3.0 + wait-on: 7.2.0 transitivePeerDependencies: - debug - supports-color - dev: true - /jest-regex-util@28.0.2: - resolution: {integrity: sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dev: true + jest-regex-util@29.4.3: {} - /jest-regex-util@29.4.3: - resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true + jest-regex-util@29.6.3: {} - /jest-resolve-dependencies@28.1.3: - resolution: {integrity: sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + jest-resolve-dependencies@29.7.0: dependencies: - jest-regex-util: 28.0.2 - jest-snapshot: 28.1.3 + jest-regex-util: 29.6.3 + jest-snapshot: 29.7.0 transitivePeerDependencies: - supports-color - dev: true - /jest-resolve@28.1.3: - resolution: {integrity: sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + jest-resolve@29.7.0: dependencies: chalk: 4.1.2 graceful-fs: 4.2.11 - jest-haste-map: 28.1.3 - jest-pnp-resolver: 1.2.3(jest-resolve@28.1.3) - jest-util: 28.1.3 - jest-validate: 28.1.3 - resolve: 1.22.2 - resolve.exports: 1.1.1 + jest-haste-map: 29.7.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) + jest-util: 29.7.0 + jest-validate: 29.7.0 + resolve: 1.22.8 + resolve.exports: 2.0.2 slash: 3.0.0 - dev: true - /jest-runner@28.1.3: - resolution: {integrity: sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + jest-runner@29.7.0: dependencies: - '@jest/console': 28.1.3 - '@jest/environment': 28.1.3 - '@jest/test-result': 28.1.3 - '@jest/transform': 28.1.3 - '@jest/types': 28.1.3 + '@jest/console': 29.7.0 + '@jest/environment': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 '@types/node': 20.3.2 chalk: 4.1.2 - emittery: 0.10.2 + emittery: 0.13.1 graceful-fs: 4.2.11 - jest-docblock: 28.1.1 - jest-environment-node: 28.1.3 - jest-haste-map: 28.1.3 - jest-leak-detector: 28.1.3 - jest-message-util: 28.1.3 - jest-resolve: 28.1.3 - jest-runtime: 28.1.3 - jest-util: 28.1.3 - jest-watcher: 28.1.3 - jest-worker: 28.1.3 + jest-docblock: 29.7.0 + jest-environment-node: 29.7.0 + jest-haste-map: 29.7.0 + jest-leak-detector: 29.7.0 + jest-message-util: 29.7.0 + jest-resolve: 29.7.0 + jest-runtime: 29.7.0 + jest-util: 29.7.0 + jest-watcher: 29.7.0 + jest-worker: 29.7.0 p-limit: 3.1.0 source-map-support: 0.5.13 transitivePeerDependencies: - supports-color - dev: true - - /jest-runtime@28.1.3: - resolution: {integrity: sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dependencies: - '@jest/environment': 28.1.3 - '@jest/fake-timers': 28.1.3 - '@jest/globals': 28.1.3 - '@jest/source-map': 28.1.2 - '@jest/test-result': 28.1.3 - '@jest/transform': 28.1.3 - '@jest/types': 28.1.3 + + jest-runtime@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/globals': 29.7.0 + '@jest/source-map': 29.6.3 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.3.2 chalk: 4.1.2 cjs-module-lexer: 1.2.3 collect-v8-coverage: 1.0.1 - execa: 5.1.1 glob: 7.2.3 graceful-fs: 4.2.11 - jest-haste-map: 28.1.3 - jest-message-util: 28.1.3 - jest-mock: 28.1.3 - jest-regex-util: 28.0.2 - jest-resolve: 28.1.3 - jest-snapshot: 28.1.3 - jest-util: 28.1.3 + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 slash: 3.0.0 strip-bom: 4.0.0 transitivePeerDependencies: - supports-color - dev: true - /jest-serializer-html@7.1.0: - resolution: {integrity: sha512-xYL2qC7kmoYHJo8MYqJkzrl/Fdlx+fat4U1AqYg+kafqwcKPiMkOcjWHPKhueuNEgr+uemhGc+jqXYiwCyRyLA==} + jest-serializer-html@7.1.0: dependencies: diffable-html: 4.1.0 - dev: true - /jest-snapshot@28.1.3: - resolution: {integrity: sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dependencies: - '@babel/core': 7.22.5 - '@babel/generator': 7.22.5 - '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.5) - '@babel/traverse': 7.22.5 - '@babel/types': 7.23.0 - '@jest/expect-utils': 28.1.3 - '@jest/transform': 28.1.3 - '@jest/types': 28.1.3 - '@types/babel__traverse': 7.20.1 - '@types/prettier': 2.7.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.5) + jest-snapshot@29.7.0: + dependencies: + '@babel/core': 7.25.9 + '@babel/generator': 7.25.9 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.25.9) + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.25.9) + '@babel/types': 7.25.9 + '@jest/expect-utils': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.25.9) chalk: 4.1.2 - expect: 28.1.3 + expect: 29.7.0 graceful-fs: 4.2.11 - jest-diff: 28.1.3 - jest-get-type: 28.0.2 - jest-haste-map: 28.1.3 - jest-matcher-utils: 28.1.3 - jest-message-util: 28.1.3 - jest-util: 28.1.3 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 natural-compare: 1.4.0 - pretty-format: 28.1.3 + pretty-format: 29.7.0 semver: 7.5.3 transitivePeerDependencies: - supports-color - dev: true - /jest-util@28.1.3: - resolution: {integrity: sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dependencies: - '@jest/types': 28.1.3 - '@types/node': 20.3.2 - chalk: 4.1.2 - ci-info: 3.8.0 - graceful-fs: 4.2.11 - picomatch: 2.3.1 - dev: true - - /jest-util@29.5.0: - resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-util@29.7.0: dependencies: - '@jest/types': 29.5.0 + '@jest/types': 29.6.3 '@types/node': 20.3.2 chalk: 4.1.2 ci-info: 3.8.0 graceful-fs: 4.2.11 picomatch: 2.3.1 - dev: true - /jest-validate@28.1.3: - resolution: {integrity: sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + jest-validate@29.7.0: dependencies: - '@jest/types': 28.1.3 + '@jest/types': 29.6.3 camelcase: 6.3.0 chalk: 4.1.2 - jest-get-type: 28.0.2 + jest-get-type: 29.6.3 leven: 3.1.0 - pretty-format: 28.1.3 - dev: true + pretty-format: 29.7.0 - /jest-watch-typeahead@2.2.2(jest@28.1.3): - resolution: {integrity: sha512-+QgOFW4o5Xlgd6jGS5X37i08tuuXNW8X0CV9WNFi+3n8ExCIP+E1melYhvYLjv5fE6D0yyzk74vsSO8I6GqtvQ==} - engines: {node: ^14.17.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - jest: ^27.0.0 || ^28.0.0 || ^29.0.0 + jest-watch-typeahead@2.2.2(jest@29.7.0(@types/node@20.3.2)(babel-plugin-macros@3.1.0)): dependencies: ansi-escapes: 6.2.0 chalk: 5.2.0 - jest: 28.1.3 + jest: 29.7.0(@types/node@20.3.2)(babel-plugin-macros@3.1.0) jest-regex-util: 29.4.3 jest-watcher: 29.5.0 slash: 5.1.0 string-length: 5.0.1 strip-ansi: 7.1.0 - dev: true - /jest-watcher@28.1.3: - resolution: {integrity: sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + jest-watcher@29.5.0: dependencies: - '@jest/test-result': 28.1.3 - '@jest/types': 28.1.3 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 '@types/node': 20.3.2 ansi-escapes: 4.3.2 chalk: 4.1.2 - emittery: 0.10.2 - jest-util: 28.1.3 + emittery: 0.13.1 + jest-util: 29.7.0 string-length: 4.0.2 - dev: true - /jest-watcher@29.5.0: - resolution: {integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-watcher@29.7.0: dependencies: - '@jest/test-result': 29.5.0 - '@jest/types': 29.5.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 '@types/node': 20.3.2 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 - jest-util: 29.5.0 + jest-util: 29.7.0 string-length: 4.0.2 - dev: true - /jest-worker@26.6.2: - resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} - engines: {node: '>= 10.13.0'} + jest-worker@26.6.2: dependencies: '@types/node': 20.3.2 merge-stream: 2.0.0 supports-color: 7.2.0 - dev: true - - /jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} - dependencies: - '@types/node': 20.3.2 - merge-stream: 2.0.0 - supports-color: 8.1.1 - dev: true - /jest-worker@28.1.3: - resolution: {integrity: sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + jest-worker@27.5.1: dependencies: '@types/node': 20.3.2 merge-stream: 2.0.0 supports-color: 8.1.1 - dev: true - /jest-worker@29.5.0: - resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-worker@29.7.0: dependencies: '@types/node': 20.3.2 - jest-util: 29.5.0 + jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - dev: true - /jest@28.1.3: - resolution: {integrity: sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + jest@29.7.0(@types/node@20.3.2)(babel-plugin-macros@3.1.0): dependencies: - '@jest/core': 28.1.3 - '@jest/types': 28.1.3 + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0) + '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 28.1.3 + jest-cli: 29.7.0(@types/node@20.3.2)(babel-plugin-macros@3.1.0) transitivePeerDependencies: - '@types/node' + - babel-plugin-macros - supports-color - ts-node - dev: true - /joi@17.9.2: - resolution: {integrity: sha512-Itk/r+V4Dx0V3c7RLFdRh12IOjySm2/WGPMubBT92cQvRfYZhPM2W0hZlctjj72iES8jsRCwp7S/cRmWBnJ4nw==} + joi@17.13.3: dependencies: '@hapi/hoek': 9.3.0 '@hapi/topo': 5.1.0 - '@sideway/address': 4.1.4 + '@sideway/address': 4.1.5 '@sideway/formula': 3.0.1 '@sideway/pinpoint': 2.0.0 - dev: true - - /js-sdsl@4.4.1: - resolution: {integrity: sha512-6Gsx8R0RucyePbWqPssR8DyfuXmLBooYN5cZFZKjHGnQuaf7pEzhtpceagJxVu4LqhYY5EYA7nko3FmeHZ1KbA==} - dev: true - /js-string-escape@1.0.1: - resolution: {integrity: sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==} - engines: {node: '>= 0.8'} - dev: true + js-sdsl@4.4.1: {} - /js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + js-tokens@4.0.0: {} - /js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true + js-yaml@3.14.1: dependencies: argparse: 1.0.10 esprima: 4.0.1 - dev: true - /js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true + js-yaml@4.1.0: dependencies: argparse: 2.0.1 - dev: true - - /js-year-calendar@1.0.2: - resolution: {integrity: sha512-ayHH/vE7xuXgGCprhQ23REbp3Rb2fy1rXO8jA26Wmuw4vYJ/TTIgFxFuNAlNPL8WR4tNXfnG41nlH3p+hjFesg==} - dev: false - - /jscodeshift@0.14.0(@babel/preset-env@7.21.5): - resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==} - hasBin: true - peerDependencies: - '@babel/preset-env': ^7.1.6 - dependencies: - '@babel/core': 7.22.5 - '@babel/parser': 7.23.0 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.22.5) - '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.22.5) - '@babel/preset-env': 7.21.5(@babel/core@7.21.8) - '@babel/preset-flow': 7.22.5(@babel/core@7.22.5) - '@babel/preset-typescript': 7.22.5(@babel/core@7.22.5) - '@babel/register': 7.22.5(@babel/core@7.22.5) - babel-core: 7.0.0-bridge.0(@babel/core@7.22.5) - chalk: 4.1.2 - flow-parser: 0.210.1 - graceful-fs: 4.2.11 - micromatch: 4.0.5 - neo-async: 2.6.2 - node-dir: 0.1.17 - recast: 0.21.5 - temp: 0.8.4 - write-file-atomic: 2.4.3 - transitivePeerDependencies: - - supports-color - dev: true - /jscodeshift@0.14.0(@babel/preset-env@7.22.5): - resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==} - hasBin: true - peerDependencies: - '@babel/preset-env': ^7.1.6 - dependencies: - '@babel/core': 7.22.5 - '@babel/parser': 7.23.0 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.22.5) - '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.22.5) - '@babel/preset-env': 7.22.5(@babel/core@7.20.5) - '@babel/preset-flow': 7.22.5(@babel/core@7.22.5) - '@babel/preset-typescript': 7.22.5(@babel/core@7.22.5) - '@babel/register': 7.22.5(@babel/core@7.22.5) - babel-core: 7.0.0-bridge.0(@babel/core@7.22.5) + js-year-calendar@1.0.2: {} + + jscodeshift@0.15.2(@babel/preset-env@7.25.9(@babel/core@7.25.9)): + dependencies: + '@babel/core': 7.25.9 + '@babel/parser': 7.25.9 + '@babel/plugin-transform-class-properties': 7.22.5(@babel/core@7.25.9) + '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.25.9) + '@babel/plugin-transform-nullish-coalescing-operator': 7.25.9(@babel/core@7.25.9) + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.25.9) + '@babel/plugin-transform-private-methods': 7.22.5(@babel/core@7.25.9) + '@babel/preset-flow': 7.25.9(@babel/core@7.25.9) + '@babel/preset-typescript': 7.25.9(@babel/core@7.25.9) + '@babel/register': 7.25.9(@babel/core@7.25.9) + babel-core: 7.0.0-bridge.0(@babel/core@7.25.9) chalk: 4.1.2 flow-parser: 0.210.1 graceful-fs: 4.2.11 micromatch: 4.0.5 neo-async: 2.6.2 node-dir: 0.1.17 - recast: 0.21.5 + recast: 0.23.9 temp: 0.8.4 write-file-atomic: 2.4.3 + optionalDependencies: + '@babel/preset-env': 7.25.9(@babel/core@7.20.5) transitivePeerDependencies: - supports-color - dev: true - - /jsesc@0.5.0: - resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} - hasBin: true - dev: true - /jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true + jsesc@0.5.0: {} - /json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - dev: true + jsesc@2.5.2: {} - /json-parse-better-errors@1.0.2: - resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - dev: true + jsesc@3.0.2: {} - /json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + json-buffer@3.0.1: {} - /json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true + json-parse-even-better-errors@2.3.1: {} - /json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - dev: true + json-schema-traverse@0.4.1: {} - /json-schema@0.4.0: - resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} - dev: true + json-schema-traverse@1.0.0: {} - /json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - dev: true + json-schema@0.4.0: {} - /json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - dependencies: - minimist: 1.2.8 - dev: true + json-stable-stringify-without-jsonify@1.0.1: {} - /json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true + json5@2.2.3: {} - /jsonc-parser@3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} - dev: true + jsonc-parser@3.2.0: {} - /jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + jsonfile@4.0.0: optionalDependencies: graceful-fs: 4.2.11 - dev: true - /jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + jsonfile@6.1.0: dependencies: universalify: 2.0.0 optionalDependencies: graceful-fs: 4.2.11 - dev: true - /jsonpointer@5.0.1: - resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} - engines: {node: '>=0.10.0'} - dev: true + jsonpointer@5.0.1: {} - /jss-plugin-camel-case@10.10.0: - resolution: {integrity: sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==} + jss-plugin-camel-case@10.10.0: dependencies: '@babel/runtime': 7.23.5 hyphenate-style-name: 1.0.4 jss: 10.10.0 - dev: false - /jss-plugin-default-unit@10.10.0: - resolution: {integrity: sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==} + jss-plugin-default-unit@10.10.0: dependencies: '@babel/runtime': 7.23.5 jss: 10.10.0 - dev: false - /jss-plugin-global@10.10.0: - resolution: {integrity: sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==} + jss-plugin-global@10.10.0: dependencies: '@babel/runtime': 7.23.5 jss: 10.10.0 - dev: false - /jss-plugin-nested@10.10.0: - resolution: {integrity: sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==} + jss-plugin-nested@10.10.0: dependencies: '@babel/runtime': 7.23.5 jss: 10.10.0 tiny-warning: 1.0.3 - dev: false - /jss-plugin-props-sort@10.10.0: - resolution: {integrity: sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==} + jss-plugin-props-sort@10.10.0: dependencies: '@babel/runtime': 7.23.5 jss: 10.10.0 - dev: false - /jss-plugin-rule-value-function@10.10.0: - resolution: {integrity: sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==} + jss-plugin-rule-value-function@10.10.0: dependencies: '@babel/runtime': 7.23.5 jss: 10.10.0 tiny-warning: 1.0.3 - dev: false - /jss-plugin-vendor-prefixer@10.10.0: - resolution: {integrity: sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==} + jss-plugin-vendor-prefixer@10.10.0: dependencies: '@babel/runtime': 7.23.5 css-vendor: 2.0.8 jss: 10.10.0 - dev: false - /jss@10.10.0: - resolution: {integrity: sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==} + jss@10.10.0: dependencies: '@babel/runtime': 7.23.5 csstype: 3.1.2 is-in-browser: 1.1.3 tiny-warning: 1.0.3 - dev: false - /jsx-ast-utils@3.3.3: - resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==} - engines: {node: '>=4.0'} + jsx-ast-utils@3.3.3: dependencies: array-includes: 3.1.6 object.assign: 4.1.4 - dev: true - /jszip@3.10.1: - resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} + jszip@3.10.1: dependencies: lie: 3.3.0 pako: 1.0.11 readable-stream: 2.3.8 setimmediate: 1.0.5 - dev: false - /kdbush@3.0.0: - resolution: {integrity: sha512-hRkd6/XW4HTsA9vjVpY9tuXJYLSlelnkTmVFu4M9/7MIYQtFcHpbugAU7UbOfjOiVSVYl2fqgBuJ32JUmRo5Ew==} - dev: false + kdbush@3.0.0: {} - /keyv@4.5.2: - resolution: {integrity: sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==} + keyv@4.5.2: dependencies: json-buffer: 3.0.1 - dev: true - - /kind-of@3.2.2: - resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} - engines: {node: '>=0.10.0'} - dependencies: - is-buffer: 1.1.6 - dev: true - - /kind-of@4.0.0: - resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} - engines: {node: '>=0.10.0'} - dependencies: - is-buffer: 1.1.6 - dev: true - - /kind-of@5.1.0: - resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==} - engines: {node: '>=0.10.0'} - dev: true - - /kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - dev: true - /kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - dev: true + kind-of@6.0.3: {} - /kleur@4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} - dev: true + kleur@3.0.3: {} - /lazy-universal-dotenv@3.0.1: - resolution: {integrity: sha512-prXSYk799h3GY3iOWnC6ZigYzMPjxN2svgjJ9shk7oMadSNX3wXy0B6F32PMJv7qtMnrIbUxoEHzbutvxR2LBQ==} - engines: {node: '>=6.0.0', npm: '>=6.0.0', yarn: '>=1.0.0'} - dependencies: - '@babel/runtime': 7.23.5 - app-root-dir: 1.0.2 - core-js: 3.31.0 - dotenv: 8.6.0 - dotenv-expand: 5.1.0 - dev: true - - /lazy-universal-dotenv@4.0.0: - resolution: {integrity: sha512-aXpZJRnTkpK6gQ/z4nk+ZBLd/Qdp118cvPruLSIQzQNRhKwEcdXCOzXuF55VDqIiuAaY3UGZ10DJtvZzDcvsxg==} - engines: {node: '>=14.0.0'} - dependencies: - app-root-dir: 1.0.2 - dotenv: 16.3.1 - dotenv-expand: 10.0.0 - dev: true + kleur@4.1.5: {} - /lazystream@1.0.1: - resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} - engines: {node: '>= 0.6.3'} + lazystream@1.0.1: dependencies: readable-stream: 2.3.8 - dev: true - /lead@1.0.0: - resolution: {integrity: sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==} - engines: {node: '>= 0.10'} + lead@1.0.0: dependencies: flush-write-stream: 1.1.1 - dev: true - /leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} - dev: true - - /levn@0.3.0: - resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.1.2 - type-check: 0.3.2 - dev: true + leven@3.1.0: {} - /levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} + levn@0.4.1: dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 - dev: true - /libbase64@1.2.1: - resolution: {integrity: sha512-l+nePcPbIG1fNlqMzrh68MLkX/gTxk/+vdvAb388Ssi7UuUN31MI44w4Yf33mM3Cm4xDfw48mdf3rkdHszLNew==} - dev: true + libbase64@1.2.1: {} - /libmime@5.1.0: - resolution: {integrity: sha512-xOqorG21Va+3CjpFOfFTU7SWohHH2uIX9ZY4Byz6J+lvpfvc486tOAT/G9GfbrKtJ9O7NCX9o0aC2lxqbnZ9EA==} + libmime@5.1.0: dependencies: encoding-japanese: 2.0.0 iconv-lite: 0.6.3 libbase64: 1.2.1 libqp: 1.1.0 - dev: true - /libqp@1.1.0: - resolution: {integrity: sha512-4Rgfa0hZpG++t1Vi2IiqXG9Ad1ig4QTmtuZF946QJP4bPqOYC78ixUXgz5TW/wE7lNaNKlplSYTxQ+fR2KZ0EA==} - dev: true + libqp@1.1.0: {} - /lie@3.3.0: - resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} + lie@3.3.0: dependencies: immediate: 3.0.6 - dev: false - /lilconfig@2.0.5: - resolution: {integrity: sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==} - engines: {node: '>=10'} - dev: true + lilconfig@2.0.5: {} - /lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + lines-and-columns@1.2.4: {} - /linkify-it@4.0.0: - resolution: {integrity: sha512-QAxkXyzT/TXgwGyY4rTgC95Ex6/lZ5/lYTV9nug6eJt93BCBQGOE47D/g2+/m5J1MrVLr2ot97OXkBZ9bBpR4A==} + linkify-it@4.0.0: dependencies: uc.micro: 1.0.6 - dev: true - /lint-staged@12.5.0: - resolution: {integrity: sha512-BKLUjWDsKquV/JuIcoQW4MSAI3ggwEImF1+sB4zaKvyVx1wBk3FsG7UK9bpnmBTN1pm7EH2BBcMwINJzCRv12g==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - hasBin: true + lint-staged@12.5.0: dependencies: cli-truncate: 3.1.0 colorette: 2.0.20 @@ -16009,16 +14331,8 @@ packages: yaml: 1.10.2 transitivePeerDependencies: - enquirer - dev: true - /listr2@4.0.5: - resolution: {integrity: sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==} - engines: {node: '>=12'} - peerDependencies: - enquirer: '>= 2.3.0 < 3' - peerDependenciesMeta: - enquirer: - optional: true + listr2@4.0.5: dependencies: cli-truncate: 2.1.0 colorette: 2.0.20 @@ -16028,181 +14342,93 @@ packages: rxjs: 7.8.1 through: 2.3.8 wrap-ansi: 7.0.0 - dev: true - - /loader-runner@2.4.0: - resolution: {integrity: sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==} - engines: {node: '>=4.3.0 <5.0.0 || >=5.10'} - dev: true - - /loader-runner@4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} - engines: {node: '>=6.11.5'} - dev: true - /loader-utils@1.4.2: - resolution: {integrity: sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==} - engines: {node: '>=4.0.0'} - dependencies: - big.js: 5.2.2 - emojis-list: 3.0.0 - json5: 1.0.2 - dev: true + loader-runner@4.3.0: {} - /loader-utils@2.0.4: - resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} - engines: {node: '>=8.9.0'} + loader-utils@2.0.4: dependencies: big.js: 5.2.2 emojis-list: 3.0.0 json5: 2.2.3 - dev: true - /local-pkg@0.4.3: - resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} - engines: {node: '>=14'} - dev: true + local-pkg@0.4.3: {} - /locate-path@3.0.0: - resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} - engines: {node: '>=6'} + locate-path@3.0.0: dependencies: p-locate: 3.0.0 path-exists: 3.0.0 - dev: true - /locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} + locate-path@5.0.0: dependencies: p-locate: 4.1.0 - dev: true - /locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} + locate-path@6.0.0: dependencies: p-locate: 5.0.0 - dev: true - - /lodash-es@4.17.21: - resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} - dev: false - /lodash.debounce@4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - dev: true + lodash-es@4.17.21: {} - /lodash.flattendeep@4.4.0: - resolution: {integrity: sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==} - dev: true + lodash.debounce@4.0.8: {} - /lodash.get@4.4.2: - resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} - dev: false + lodash.flattendeep@4.4.0: {} - /lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - dev: true + lodash.get@4.4.2: {} - /lodash.sortby@4.7.0: - resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} - dev: true + lodash.merge@4.6.2: {} - /lodash.topath@4.5.2: - resolution: {integrity: sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg==} - dev: false + lodash.sortby@4.7.0: {} - /lodash.uniq@4.5.0: - resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} - dev: true + lodash.topath@4.5.2: {} - /lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + lodash@4.17.21: {} - /log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} + log-symbols@4.1.0: dependencies: chalk: 4.1.2 is-unicode-supported: 0.1.0 - dev: true - /log-update@4.0.0: - resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} - engines: {node: '>=10'} + log-update@4.0.0: dependencies: ansi-escapes: 4.3.2 cli-cursor: 3.1.0 slice-ansi: 4.0.0 wrap-ansi: 6.2.0 - dev: true - /longest-streak@3.1.0: - resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - dev: true + longest-streak@3.1.0: {} - /loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true + loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 - /loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - dependencies: - get-func-name: 2.0.2 - dev: true - - /loupe@3.1.1: - resolution: {integrity: sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==} + loupe@2.3.7: dependencies: get-func-name: 2.0.2 - dev: true - /lowercase-keys@2.0.0: - resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} - engines: {node: '>=8'} - dev: true + lowercase-keys@2.0.0: {} - /lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 - /lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} + lru-cache@6.0.0: dependencies: yallist: 4.0.0 - /lz-string@1.5.0: - resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} - hasBin: true - dev: true + lz-string@1.5.0: {} - /magic-string@0.25.9: - resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} + magic-string@0.25.9: dependencies: sourcemap-codec: 1.4.8 - dev: true - /magic-string@0.27.0: - resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} - engines: {node: '>=12'} + magic-string@0.27.0: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - /magic-string@0.30.5: - resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} - engines: {node: '>=12'} + magic-string@0.30.5: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - /mailparser@3.5.0: - resolution: {integrity: sha512-mdr2DFgz8LKC0/Q6io6znA0HVnzaPFT0a4TTnLeZ7mWHlkfnm227Wxlq7mHh7AgeP32h7gOUpXvyhSfJJIEeyg==} + mailparser@3.5.0: dependencies: encoding-japanese: 2.0.0 he: 1.2.0 @@ -16213,122 +14439,55 @@ packages: mailsplit: 5.3.2 nodemailer: 6.7.3 tlds: 1.231.0 - dev: true - /mailsplit@5.3.2: - resolution: {integrity: sha512-coES12hhKqagkuBTJoqERX+y9bXNpxbxw3Esd07auuwKYmcagouVlgucyIVRp48fnswMKxcUtLoFn/L1a75ynQ==} + mailsplit@5.3.2: dependencies: libbase64: 1.2.1 libmime: 5.1.0 libqp: 1.1.0 - dev: true - - /make-dir@2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} - engines: {node: '>=6'} - dependencies: - pify: 4.0.1 - semver: 7.5.3 - dev: true - - /make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - dependencies: - semver: 7.5.3 - dev: true - /makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + make-dir@2.1.0: dependencies: - tmpl: 1.0.5 - dev: true - - /map-cache@0.2.2: - resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} - engines: {node: '>=0.10.0'} - dev: true + pify: 4.0.1 + semver: 7.5.3 - /map-or-similar@1.5.0: - resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==} - dev: true + make-dir@3.1.0: + dependencies: + semver: 7.5.3 - /map-visit@1.0.0: - resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} - engines: {node: '>=0.10.0'} + makeerror@1.0.12: dependencies: - object-visit: 1.0.1 - dev: true + tmpl: 1.0.5 - /markdown-escapes@1.0.4: - resolution: {integrity: sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==} - dev: true + map-or-similar@1.5.0: {} - /markdown-extensions@1.1.1: - resolution: {integrity: sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==} - engines: {node: '>=0.10.0'} - dev: true + markdown-extensions@1.1.1: {} - /markdown-table@3.0.3: - resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} - dev: true + markdown-table@3.0.3: {} - /markdown-to-jsx@7.2.1(react@18.2.0): - resolution: {integrity: sha512-9HrdzBAo0+sFz9ZYAGT5fB8ilzTW+q6lPocRxrIesMO+aB40V9MgFfbfMXxlGjf22OpRy+IXlvVaQenicdpgbg==} - engines: {node: '>= 10'} - peerDependencies: - react: '>= 0.14.0' + markdown-to-jsx@7.5.0(react@18.2.0): dependencies: react: 18.2.0 - dev: true - /matcher-collection@2.0.1: - resolution: {integrity: sha512-daE62nS2ZQsDg9raM0IlZzLmI2u+7ZapXBwdoeBUKAYERPDDIc0qNqA8E0Rp2D+gspKR7BgIFP52GeujaGXWeQ==} - engines: {node: 6.* || 8.* || >= 10.*} + matcher-collection@2.0.1: dependencies: '@types/minimatch': 3.0.5 minimatch: 3.1.2 - dev: true - - /md5.js@1.3.5: - resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} - dependencies: - hash-base: 3.1.0 - inherits: 2.0.4 - safe-buffer: 5.2.1 - dev: true - - /mdast-squeeze-paragraphs@4.0.0: - resolution: {integrity: sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==} - dependencies: - unist-util-remove: 2.1.0 - dev: true - - /mdast-util-definitions@4.0.0: - resolution: {integrity: sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==} - dependencies: - unist-util-visit: 2.0.3 - dev: true - /mdast-util-definitions@5.1.2: - resolution: {integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==} + mdast-util-definitions@5.1.2: dependencies: '@types/mdast': 3.0.11 '@types/unist': 2.0.6 unist-util-visit: 4.1.2 - dev: true - /mdast-util-find-and-replace@2.2.2: - resolution: {integrity: sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==} + mdast-util-find-and-replace@3.0.1: dependencies: - '@types/mdast': 3.0.11 + '@types/mdast': 4.0.4 escape-string-regexp: 5.0.0 - unist-util-is: 5.2.1 - unist-util-visit-parents: 5.1.3 - dev: true + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 - /mdast-util-from-markdown@1.3.1: - resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==} + mdast-util-from-markdown@1.3.1: dependencies: '@types/mdast': 3.0.11 '@types/unist': 2.0.6 @@ -16344,66 +14503,82 @@ packages: uvu: 0.5.6 transitivePeerDependencies: - supports-color - dev: true - /mdast-util-gfm-autolink-literal@1.0.3: - resolution: {integrity: sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==} + mdast-util-from-markdown@2.0.1: dependencies: - '@types/mdast': 3.0.11 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-decode-string: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-autolink-literal@2.0.1: + dependencies: + '@types/mdast': 4.0.4 ccount: 2.0.1 - mdast-util-find-and-replace: 2.2.2 - micromark-util-character: 1.2.0 - dev: true + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.1 + micromark-util-character: 2.1.0 - /mdast-util-gfm-footnote@1.0.2: - resolution: {integrity: sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==} + mdast-util-gfm-footnote@2.0.0: dependencies: - '@types/mdast': 3.0.11 - mdast-util-to-markdown: 1.5.0 - micromark-util-normalize-identifier: 1.1.0 - dev: true + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + micromark-util-normalize-identifier: 2.0.0 + transitivePeerDependencies: + - supports-color - /mdast-util-gfm-strikethrough@1.0.3: - resolution: {integrity: sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==} + mdast-util-gfm-strikethrough@2.0.0: dependencies: - '@types/mdast': 3.0.11 - mdast-util-to-markdown: 1.5.0 - dev: true + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color - /mdast-util-gfm-table@1.0.7: - resolution: {integrity: sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==} + mdast-util-gfm-table@2.0.0: dependencies: - '@types/mdast': 3.0.11 + '@types/mdast': 4.0.4 + devlop: 1.1.0 markdown-table: 3.0.3 - mdast-util-from-markdown: 1.3.1 - mdast-util-to-markdown: 1.5.0 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - dev: true - /mdast-util-gfm-task-list-item@1.0.2: - resolution: {integrity: sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==} + mdast-util-gfm-task-list-item@2.0.0: dependencies: - '@types/mdast': 3.0.11 - mdast-util-to-markdown: 1.5.0 - dev: true + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color - /mdast-util-gfm@2.0.2: - resolution: {integrity: sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==} + mdast-util-gfm@3.0.0: dependencies: - mdast-util-from-markdown: 1.3.1 - mdast-util-gfm-autolink-literal: 1.0.3 - mdast-util-gfm-footnote: 1.0.2 - mdast-util-gfm-strikethrough: 1.0.3 - mdast-util-gfm-table: 1.0.7 - mdast-util-gfm-task-list-item: 1.0.2 - mdast-util-to-markdown: 1.5.0 + mdast-util-from-markdown: 2.0.1 + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.0.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - dev: true - /mdast-util-mdx-expression@1.3.2: - resolution: {integrity: sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==} + mdast-util-mdx-expression@1.3.2: dependencies: '@types/estree-jsx': 1.0.0 '@types/hast': 2.3.4 @@ -16412,10 +14587,8 @@ packages: mdast-util-to-markdown: 1.5.0 transitivePeerDependencies: - supports-color - dev: true - /mdast-util-mdx-jsx@2.1.4: - resolution: {integrity: sha512-DtMn9CmVhVzZx3f+optVDF8yFgQVt7FghCRNdlIaS3X5Bnym3hZwPbg/XW86vdpKjlc1PVj26SpnLGeJBXD3JA==} + mdast-util-mdx-jsx@2.1.4: dependencies: '@types/estree-jsx': 1.0.0 '@types/hast': 2.3.4 @@ -16431,10 +14604,8 @@ packages: vfile-message: 3.1.4 transitivePeerDependencies: - supports-color - dev: true - /mdast-util-mdx@2.0.1: - resolution: {integrity: sha512-38w5y+r8nyKlGvNjSEqWrhG0w5PmnRA+wnBvm+ulYCct7nsGYhFVb0lljS9bQav4psDAS1eGkP2LMVcZBi/aqw==} + mdast-util-mdx@2.0.1: dependencies: mdast-util-from-markdown: 1.3.1 mdast-util-mdx-expression: 1.3.2 @@ -16443,10 +14614,8 @@ packages: mdast-util-to-markdown: 1.5.0 transitivePeerDependencies: - supports-color - dev: true - /mdast-util-mdxjs-esm@1.3.1: - resolution: {integrity: sha512-SXqglS0HrEvSdUEfoXFtcg7DRl7S2cwOXc7jkuusG472Mmjag34DUDeOJUZtl+BVnyeO1frIgVpHlNRWc2gk/w==} + mdast-util-mdxjs-esm@1.3.1: dependencies: '@types/estree-jsx': 1.0.0 '@types/hast': 2.3.4 @@ -16455,30 +14624,18 @@ packages: mdast-util-to-markdown: 1.5.0 transitivePeerDependencies: - supports-color - dev: true - /mdast-util-phrasing@3.0.1: - resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==} + mdast-util-phrasing@3.0.1: dependencies: '@types/mdast': 3.0.11 unist-util-is: 5.2.1 - dev: true - /mdast-util-to-hast@10.0.1: - resolution: {integrity: sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA==} + mdast-util-phrasing@4.1.0: dependencies: - '@types/mdast': 3.0.11 - '@types/unist': 2.0.6 - mdast-util-definitions: 4.0.0 - mdurl: 1.0.1 - unist-builder: 2.0.3 - unist-util-generated: 1.1.6 - unist-util-position: 3.1.0 - unist-util-visit: 2.0.3 - dev: true - - /mdast-util-to-hast@12.3.0: - resolution: {integrity: sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==} + '@types/mdast': 4.0.4 + unist-util-is: 6.0.0 + + mdast-util-to-hast@12.3.0: dependencies: '@types/hast': 2.3.4 '@types/mdast': 3.0.11 @@ -16488,10 +14645,8 @@ packages: unist-util-generated: 2.0.1 unist-util-position: 4.0.4 unist-util-visit: 4.1.2 - dev: true - /mdast-util-to-markdown@1.5.0: - resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==} + mdast-util-to-markdown@1.5.0: dependencies: '@types/mdast': 3.0.11 '@types/unist': 2.0.6 @@ -16501,79 +14656,43 @@ packages: micromark-util-decode-string: 1.1.0 unist-util-visit: 4.1.2 zwitch: 2.0.4 - dev: true - /mdast-util-to-string@1.1.0: - resolution: {integrity: sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==} - dev: true + mdast-util-to-markdown@2.1.0: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-decode-string: 2.0.0 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 - /mdast-util-to-string@3.2.0: - resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==} + mdast-util-to-string@3.2.0: dependencies: '@types/mdast': 3.0.11 - dev: true - - /mdurl@1.0.1: - resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} - dev: true - /media-typer@0.3.0: - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} - engines: {node: '>= 0.6'} - dev: true - - /memfs@3.5.3: - resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} - engines: {node: '>= 4.0.0'} + mdast-util-to-string@4.0.0: dependencies: - fs-monkey: 1.0.4 - dev: true + '@types/mdast': 4.0.4 - /memoize-one@6.0.0: - resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} - dev: false - - /memoizerific@1.11.3: - resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} - dependencies: - map-or-similar: 1.5.0 - dev: true + media-typer@0.3.0: {} - /memory-fs@0.4.1: - resolution: {integrity: sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==} - dependencies: - errno: 0.1.8 - readable-stream: 2.3.8 - dev: true + memoize-one@6.0.0: {} - /memory-fs@0.5.0: - resolution: {integrity: sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==} - engines: {node: '>=4.3.0 <5.0.0 || >=5.10'} + memoizerific@1.11.3: dependencies: - errno: 0.1.8 - readable-stream: 2.3.8 - dev: true + map-or-similar: 1.5.0 - /merge-descriptors@1.0.1: - resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} - dev: true + merge-descriptors@1.0.3: {} - /merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: true + merge-stream@2.0.0: {} - /merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - dev: true + merge2@1.4.1: {} - /methods@1.1.2: - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} - engines: {node: '>= 0.6'} - dev: true + methods@1.1.2: {} - /micromark-core-commonmark@1.1.0: - resolution: {integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==} + micromark-core-commonmark@1.1.0: dependencies: decode-named-character-reference: 1.0.2 micromark-factory-destination: 1.1.0 @@ -16591,82 +14710,85 @@ packages: micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 uvu: 0.5.6 - dev: true - - /micromark-extension-gfm-autolink-literal@1.0.5: - resolution: {integrity: sha512-z3wJSLrDf8kRDOh2qBtoTRD53vJ+CWIyo7uyZuxf/JAbNJjiHsOpG1y5wxk8drtv3ETAHutCu6N3thkOOgueWg==} - dependencies: - micromark-util-character: 1.2.0 - micromark-util-sanitize-uri: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - dev: true - - /micromark-extension-gfm-footnote@1.1.2: - resolution: {integrity: sha512-Yxn7z7SxgyGWRNa4wzf8AhYYWNrwl5q1Z8ii+CSTTIqVkmGZF1CElX2JI8g5yGoM3GAman9/PVCUFUSJ0kB/8Q==} - dependencies: - micromark-core-commonmark: 1.1.0 - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-normalize-identifier: 1.1.0 - micromark-util-sanitize-uri: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - dev: true - - /micromark-extension-gfm-strikethrough@1.0.7: - resolution: {integrity: sha512-sX0FawVE1o3abGk3vRjOH50L5TTLr3b5XMqnP9YDRb34M0v5OoZhG+OHFz1OffZ9dlwgpTBKaT4XW/AsUVnSDw==} - dependencies: - micromark-util-chunked: 1.1.0 - micromark-util-classify-character: 1.1.0 - micromark-util-resolve-all: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - dev: true - - /micromark-extension-gfm-table@1.0.7: - resolution: {integrity: sha512-3ZORTHtcSnMQEKtAOsBQ9/oHp9096pI/UvdPtN7ehKvrmZZ2+bbWhi0ln+I9drmwXMt5boocn6OlwQzNXeVeqw==} - dependencies: - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - dev: true - - /micromark-extension-gfm-tagfilter@1.0.2: - resolution: {integrity: sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g==} - dependencies: - micromark-util-types: 1.1.0 - dev: true - - /micromark-extension-gfm-task-list-item@1.0.5: - resolution: {integrity: sha512-RMFXl2uQ0pNQy6Lun2YBYT9g9INXtWJULgbt01D/x8/6yJ2qpKyzdZD3pi6UIkzF++Da49xAelVKUeUMqd5eIQ==} - dependencies: - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - dev: true - /micromark-extension-gfm@2.0.3: - resolution: {integrity: sha512-vb9OoHqrhCmbRidQv/2+Bc6pkP0FrtlhurxZofvOEy5o8RtuuvTq+RQ1Vw5ZDNrVraQZu3HixESqbG+0iKk/MQ==} + micromark-core-commonmark@2.0.1: dependencies: - micromark-extension-gfm-autolink-literal: 1.0.5 - micromark-extension-gfm-footnote: 1.1.2 - micromark-extension-gfm-strikethrough: 1.0.7 - micromark-extension-gfm-table: 1.0.7 - micromark-extension-gfm-tagfilter: 1.0.2 - micromark-extension-gfm-task-list-item: 1.0.5 - micromark-util-combine-extensions: 1.1.0 - micromark-util-types: 1.1.0 - dev: true - - /micromark-extension-mdx-expression@1.0.8: - resolution: {integrity: sha512-zZpeQtc5wfWKdzDsHRBY003H2Smg+PUi2REhqgIhdzAa5xonhP03FcXxqFSerFiNUr5AWmHpaNPQTBVOS4lrXw==} + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-factory-destination: 2.0.0 + micromark-factory-label: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-factory-title: 2.0.0 + micromark-factory-whitespace: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-html-tag-name: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-subtokenize: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm-autolink-literal@2.1.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm-footnote@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.1 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm-strikethrough@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm-table@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm-tagfilter@2.0.0: + dependencies: + micromark-util-types: 2.0.0 + + micromark-extension-gfm-task-list-item@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm@3.0.0: + dependencies: + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.0 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-mdx-expression@1.0.8: dependencies: '@types/estree': 1.0.1 micromark-factory-mdx-expression: 1.0.9 @@ -16676,10 +14798,8 @@ packages: micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 uvu: 0.5.6 - dev: true - /micromark-extension-mdx-jsx@1.0.5: - resolution: {integrity: sha512-gPH+9ZdmDflbu19Xkb8+gheqEDqkSpdCEubQyxuz/Hn8DOXiXvrXeikOoBA71+e8Pfi0/UYmU3wW3H58kr7akA==} + micromark-extension-mdx-jsx@1.0.5: dependencies: '@types/acorn': 4.0.6 '@types/estree': 1.0.1 @@ -16691,16 +14811,12 @@ packages: micromark-util-types: 1.1.0 uvu: 0.5.6 vfile-message: 3.1.4 - dev: true - /micromark-extension-mdx-md@1.0.1: - resolution: {integrity: sha512-7MSuj2S7xjOQXAjjkbjBsHkMtb+mDGVW6uI2dBL9snOBCbZmoNgDAeZ0nSn9j3T42UE/g2xVNMn18PJxZvkBEA==} + micromark-extension-mdx-md@1.0.1: dependencies: micromark-util-types: 1.1.0 - dev: true - /micromark-extension-mdxjs-esm@1.0.5: - resolution: {integrity: sha512-xNRBw4aoURcyz/S69B19WnZAkWJMxHMT5hE36GtDAyhoyn/8TuAeqjFJQlwk+MKQsUD7b3l7kFX+vlfVWgcX1w==} + micromark-extension-mdxjs-esm@1.0.5: dependencies: '@types/estree': 1.0.1 micromark-core-commonmark: 1.1.0 @@ -16711,40 +14827,45 @@ packages: unist-util-position-from-estree: 1.1.2 uvu: 0.5.6 vfile-message: 3.1.4 - dev: true - /micromark-extension-mdxjs@1.0.1: - resolution: {integrity: sha512-7YA7hF6i5eKOfFUzZ+0z6avRG52GpWR8DL+kN47y3f2KhxbBZMhmxe7auOeaTBrW2DenbbZTf1ea9tA2hDpC2Q==} + micromark-extension-mdxjs@1.0.1: dependencies: - acorn: 8.10.0 - acorn-jsx: 5.3.2(acorn@8.10.0) + acorn: 8.13.0 + acorn-jsx: 5.3.2(acorn@8.13.0) micromark-extension-mdx-expression: 1.0.8 micromark-extension-mdx-jsx: 1.0.5 micromark-extension-mdx-md: 1.0.1 micromark-extension-mdxjs-esm: 1.0.5 micromark-util-combine-extensions: 1.1.0 micromark-util-types: 1.1.0 - dev: true - /micromark-factory-destination@1.1.0: - resolution: {integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==} + micromark-factory-destination@1.1.0: dependencies: micromark-util-character: 1.2.0 micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 - dev: true - /micromark-factory-label@1.1.0: - resolution: {integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==} + micromark-factory-destination@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-factory-label@1.1.0: dependencies: micromark-util-character: 1.2.0 micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 uvu: 0.5.6 - dev: true - /micromark-factory-mdx-expression@1.0.9: - resolution: {integrity: sha512-jGIWzSmNfdnkJq05c7b0+Wv0Kfz3NJ3N4cBjnbO4zjXIlxJr+f8lk+5ZmwFvqdAbUy2q6B5rCY//g0QAAaXDWA==} + micromark-factory-label@2.0.0: + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-factory-mdx-expression@1.0.9: dependencies: '@types/estree': 1.0.1 micromark-util-character: 1.2.0 @@ -16754,82 +14875,112 @@ packages: unist-util-position-from-estree: 1.1.2 uvu: 0.5.6 vfile-message: 3.1.4 - dev: true - /micromark-factory-space@1.1.0: - resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==} + micromark-factory-space@1.1.0: dependencies: micromark-util-character: 1.2.0 micromark-util-types: 1.1.0 - dev: true - /micromark-factory-title@1.1.0: - resolution: {integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==} + micromark-factory-space@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-types: 2.0.0 + + micromark-factory-title@1.1.0: dependencies: micromark-factory-space: 1.1.0 micromark-util-character: 1.2.0 micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 - dev: true - /micromark-factory-whitespace@1.1.0: - resolution: {integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==} + micromark-factory-title@2.0.0: + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-factory-whitespace@1.1.0: dependencies: micromark-factory-space: 1.1.0 micromark-util-character: 1.2.0 micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 - dev: true - /micromark-util-character@1.2.0: - resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==} + micromark-factory-whitespace@2.0.0: + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-character@1.2.0: dependencies: micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 - dev: true - /micromark-util-chunked@1.1.0: - resolution: {integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==} + micromark-util-character@2.1.0: + dependencies: + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-chunked@1.1.0: dependencies: micromark-util-symbol: 1.1.0 - dev: true - /micromark-util-classify-character@1.1.0: - resolution: {integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==} + micromark-util-chunked@2.0.0: + dependencies: + micromark-util-symbol: 2.0.0 + + micromark-util-classify-character@1.1.0: dependencies: micromark-util-character: 1.2.0 micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 - dev: true - /micromark-util-combine-extensions@1.1.0: - resolution: {integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==} + micromark-util-classify-character@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-combine-extensions@1.1.0: dependencies: micromark-util-chunked: 1.1.0 micromark-util-types: 1.1.0 - dev: true - /micromark-util-decode-numeric-character-reference@1.1.0: - resolution: {integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==} + micromark-util-combine-extensions@2.0.0: + dependencies: + micromark-util-chunked: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-decode-numeric-character-reference@1.1.0: dependencies: micromark-util-symbol: 1.1.0 - dev: true - /micromark-util-decode-string@1.1.0: - resolution: {integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==} + micromark-util-decode-numeric-character-reference@2.0.1: + dependencies: + micromark-util-symbol: 2.0.0 + + micromark-util-decode-string@1.1.0: dependencies: decode-named-character-reference: 1.0.2 micromark-util-character: 1.2.0 micromark-util-decode-numeric-character-reference: 1.1.0 micromark-util-symbol: 1.1.0 - dev: true - /micromark-util-encode@1.1.0: - resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==} - dev: true + micromark-util-decode-string@2.0.0: + dependencies: + decode-named-character-reference: 1.0.2 + micromark-util-character: 2.1.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-symbol: 2.0.0 - /micromark-util-events-to-acorn@1.2.3: - resolution: {integrity: sha512-ij4X7Wuc4fED6UoLWkmo0xJQhsktfNh1J0m8g4PbIMPlx+ek/4YdW5mvbye8z/aZvAPUoxgXHrwVlXAPKMRp1w==} + micromark-util-encode@1.1.0: {} + + micromark-util-encode@2.0.0: {} + + micromark-util-events-to-acorn@1.2.3: dependencies: '@types/acorn': 4.0.6 '@types/estree': 1.0.1 @@ -16839,51 +14990,62 @@ packages: micromark-util-types: 1.1.0 uvu: 0.5.6 vfile-message: 3.1.4 - dev: true - /micromark-util-html-tag-name@1.2.0: - resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==} - dev: true + micromark-util-html-tag-name@1.2.0: {} - /micromark-util-normalize-identifier@1.1.0: - resolution: {integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==} + micromark-util-html-tag-name@2.0.0: {} + + micromark-util-normalize-identifier@1.1.0: dependencies: micromark-util-symbol: 1.1.0 - dev: true - /micromark-util-resolve-all@1.1.0: - resolution: {integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==} + micromark-util-normalize-identifier@2.0.0: + dependencies: + micromark-util-symbol: 2.0.0 + + micromark-util-resolve-all@1.1.0: dependencies: micromark-util-types: 1.1.0 - dev: true - /micromark-util-sanitize-uri@1.2.0: - resolution: {integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==} + micromark-util-resolve-all@2.0.0: + dependencies: + micromark-util-types: 2.0.0 + + micromark-util-sanitize-uri@1.2.0: dependencies: micromark-util-character: 1.2.0 micromark-util-encode: 1.1.0 micromark-util-symbol: 1.1.0 - dev: true - /micromark-util-subtokenize@1.1.0: - resolution: {integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==} + micromark-util-sanitize-uri@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-encode: 2.0.0 + micromark-util-symbol: 2.0.0 + + micromark-util-subtokenize@1.1.0: dependencies: micromark-util-chunked: 1.1.0 micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 uvu: 0.5.6 - dev: true - /micromark-util-symbol@1.1.0: - resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==} - dev: true + micromark-util-subtokenize@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 - /micromark-util-types@1.1.0: - resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==} - dev: true + micromark-util-symbol@1.1.0: {} - /micromark@3.2.0: - resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==} + micromark-util-symbol@2.0.0: {} + + micromark-util-types@1.1.0: {} + + micromark-util-types@2.0.0: {} + + micromark@3.2.0: dependencies: '@types/debug': 4.1.8 debug: 4.3.4(supports-color@9.3.1) @@ -16904,415 +15066,150 @@ packages: uvu: 0.5.6 transitivePeerDependencies: - supports-color - dev: true - /micromatch@3.1.10: - resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} - engines: {node: '>=0.10.0'} + micromark@4.0.0: dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - braces: 2.3.2 - define-property: 2.0.2 - extend-shallow: 3.0.2 - extglob: 2.0.4 - fragment-cache: 0.2.1 - kind-of: 6.0.3 - nanomatch: 1.2.13 - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 + '@types/debug': 4.1.8 + debug: 4.3.4(supports-color@9.3.1) + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.1 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-combine-extensions: 2.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-encode: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-subtokenize: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 transitivePeerDependencies: - supports-color - dev: true - /micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} + micromatch@4.0.5: dependencies: braces: 3.0.2 picomatch: 2.3.1 - dev: true - - /miller-rabin@4.0.1: - resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} - hasBin: true - dependencies: - bn.js: 4.12.0 - brorand: 1.1.0 - dev: true - /mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - dev: true + mime-db@1.52.0: {} - /mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} + mime-types@2.1.35: dependencies: mime-db: 1.52.0 - dev: true - - /mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - dev: true - - /mime@2.6.0: - resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} - engines: {node: '>=4.0.0'} - hasBin: true - dev: true - - /mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - dev: true - /mimic-response@1.0.1: - resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} - engines: {node: '>=4'} - dev: true - - /mimic-response@3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} - engines: {node: '>=10'} - dev: true + mime@1.6.0: {} - /min-document@2.19.0: - resolution: {integrity: sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==} - dependencies: - dom-walk: 0.1.2 - dev: true + mimic-fn@2.1.0: {} - /min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - dev: true + mimic-response@1.0.1: {} - /minimalistic-assert@1.0.1: - resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - dev: true + mimic-response@3.1.0: {} - /minimalistic-crypto-utils@1.0.1: - resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} - dev: true + min-indent@1.0.1: {} - /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 - dev: true - /minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} + minimatch@5.1.6: dependencies: brace-expansion: 2.0.1 - dev: true - - /minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - dev: true - - /minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} - dependencies: - yallist: 4.0.0 - dev: true - /minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - dev: true + minimist@1.2.8: {} - /minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} + minipass@3.3.6: dependencies: - minipass: 3.3.6 yallist: 4.0.0 - dev: true - - /mississippi@3.0.0: - resolution: {integrity: sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==} - engines: {node: '>=4.0.0'} - dependencies: - concat-stream: 1.6.2 - duplexify: 3.7.1 - end-of-stream: 1.4.4 - flush-write-stream: 1.1.1 - from2: 2.3.0 - parallel-transform: 1.2.0 - pump: 3.0.0 - pumpify: 1.5.1 - stream-each: 1.2.3 - through2: 2.0.5 - dev: true - /mixin-deep@1.3.2: - resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} - engines: {node: '>=0.10.0'} - dependencies: - for-in: 1.0.2 - is-extendable: 1.0.1 - dev: true + minipass@5.0.0: {} - /mkdirp-classic@0.5.3: - resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - dev: true - - /mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true + minizlib@2.1.2: dependencies: - minimist: 1.2.8 - dev: true + minipass: 3.3.6 + yallist: 4.0.0 - /mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - dev: true + mkdirp@1.0.4: {} - /mktemp@0.4.0: - resolution: {integrity: sha512-IXnMcJ6ZyTuhRmJSjzvHSRhlVPiN9Jwc6e59V0bEJ0ba6OBeX2L0E+mRN1QseeOF4mM+F1Rit6Nh7o+rl2Yn/A==} - engines: {node: '>0.9'} - dev: true + mktemp@0.4.0: {} - /mlly@1.4.2: - resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} + mlly@1.4.2: dependencies: - acorn: 8.10.0 + acorn: 8.13.0 pathe: 1.1.1 pkg-types: 1.0.3 ufo: 1.3.1 - dev: true - /moment-range@4.0.2(moment@2.29.4): - resolution: {integrity: sha512-n8sceWwSTjmz++nFHzeNEUsYtDqjgXgcOBzsHi+BoXQU2FW+eU92LUaK8gqOiSu5PG57Q9sYj1Fz4LRDj4FtKA==} - peerDependencies: - moment: '>= 2' + moment-range@4.0.2(moment@2.29.4): dependencies: es6-symbol: 3.1.3 moment: 2.29.4 - dev: false - - /moment@2.29.4: - resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} - dev: false - - /moo@0.5.2: - resolution: {integrity: sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==} - dev: true - - /move-concurrently@1.0.1: - resolution: {integrity: sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==} - dependencies: - aproba: 1.2.0 - copy-concurrently: 1.0.5 - fs-write-stream-atomic: 1.0.10 - mkdirp: 0.5.6 - rimraf: 2.7.1 - run-queue: 1.0.3 - dev: true - /mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} - dev: true - - /ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - dev: true + moment@2.29.4: {} - /ms@2.1.1: - resolution: {integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==} - dev: true + moo@0.5.2: {} - /ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + mri@1.2.0: {} - /ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: true + ms@2.0.0: {} - /nan@2.17.0: - resolution: {integrity: sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==} - requiresBuild: true - dev: true - optional: true + ms@2.1.2: {} - /nanoid@3.3.6: - resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: true + ms@2.1.3: {} - /nanomatch@1.2.13: - resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} - engines: {node: '>=0.10.0'} - dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - define-property: 2.0.2 - extend-shallow: 3.0.2 - fragment-cache: 0.2.1 - is-windows: 1.0.2 - kind-of: 6.0.3 - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: true + nanoid@3.3.7: {} - /natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - dev: true + natural-compare@1.4.0: {} - /nearley@2.20.1: - resolution: {integrity: sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==} - hasBin: true + nearley@2.20.1: dependencies: commander: 2.20.3 moo: 0.5.2 railroad-diagrams: 1.0.0 randexp: 0.4.6 - dev: true - /negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - dev: true + negotiator@0.6.3: {} - /neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - dev: true + neo-async@2.6.2: {} - /next-tick@1.1.0: - resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} - dev: false + next-tick@1.1.0: {} - /node-dir@0.1.17: - resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} - engines: {node: '>= 0.10.5'} + node-dir@0.1.17: dependencies: minimatch: 3.1.2 - dev: true - /node-fetch-native@1.2.0: - resolution: {integrity: sha512-5IAMBTl9p6PaAjYCnMv5FmqIF6GcZnawAVnzaCG0rX2aYZJ4CxEkZNtVPuTRug7fL7wyM5BQYTlAzcyMPi6oTQ==} - dev: true + node-fetch-native@1.2.0: {} - /node-fetch@2.6.11: - resolution: {integrity: sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - dependencies: - whatwg-url: 5.0.0 - dev: true + node-int64@0.4.0: {} - /node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - dev: true - - /node-libs-browser@2.2.1: - resolution: {integrity: sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==} - dependencies: - assert: 1.5.0 - browserify-zlib: 0.2.0 - buffer: 4.9.2 - console-browserify: 1.2.0 - constants-browserify: 1.0.0 - crypto-browserify: 3.12.0 - domain-browser: 1.2.0 - events: 3.3.0 - https-browserify: 1.0.0 - os-browserify: 0.3.0 - path-browserify: 0.0.1 - process: 0.11.10 - punycode: 1.4.1 - querystring-es3: 0.2.1 - readable-stream: 2.3.8 - stream-browserify: 2.0.2 - stream-http: 2.8.3 - string_decoder: 1.3.0 - timers-browserify: 2.0.12 - tty-browserify: 0.0.0 - url: 0.11.1 - util: 0.11.1 - vm-browserify: 1.1.2 - dev: true - - /node-preload@0.2.1: - resolution: {integrity: sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==} - engines: {node: '>=8'} + node-preload@0.2.1: dependencies: process-on-spawn: 1.0.0 - dev: true - /node-releases@2.0.12: - resolution: {integrity: sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==} + node-releases@2.0.12: {} - /nodeify@1.0.1: - resolution: {integrity: sha512-n7C2NyEze8GCo/z73KdbjRsBiLbv6eBn1FxwYKQ23IqGo7pQY3mhQan61Sv7eEDJCiyUjTVrVkXTzJCo1dW7Aw==} + node-releases@2.0.18: {} + + nodeify@1.0.1: dependencies: is-promise: 1.0.1 promise: 1.3.0 - dev: true - - /nodemailer@6.7.3: - resolution: {integrity: sha512-KUdDsspqx89sD4UUyUKzdlUOper3hRkDVkrKh/89G+d9WKsU5ox51NWS4tB1XR5dPUdR4SP0E3molyEfOvSa3g==} - engines: {node: '>=6.0.0'} - dev: true - /nodemailer@6.8.0: - resolution: {integrity: sha512-EjYvSmHzekz6VNkNd12aUqAco+bOkRe3Of5jVhltqKhEsjw/y0PYPJfp83+s9Wzh1dspYAkUW/YNQ350NATbSQ==} - engines: {node: '>=6.0.0'} - dev: true + nodemailer@6.7.3: {} - /normalize-package-data@2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} - dependencies: - hosted-git-info: 2.8.9 - resolve: 1.22.2 - semver: 7.5.3 - validate-npm-package-license: 3.0.4 - dev: true + nodemailer@6.8.0: {} - /normalize-path@2.1.1: - resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} - engines: {node: '>=0.10.0'} + normalize-path@2.1.1: dependencies: remove-trailing-separator: 1.1.0 - dev: true - /normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - dev: true + normalize-path@3.0.0: {} - /normalize-url@6.1.0: - resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} - engines: {node: '>=10'} - dev: true + normalize-url@6.1.0: {} - /notistack@3.0.1(csstype@3.1.2)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-ntVZXXgSQH5WYfyU+3HfcXuKaapzAJ8fBLQ/G618rn3yvSzEbnOB8ZSOwhX+dAORy/lw+GC2N061JA0+gYWTVA==} - engines: {node: '>=12.0.0', npm: '>=6.0.0'} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + notistack@3.0.1(csstype@3.1.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: clsx: 1.2.1 goober: 2.1.13(csstype@3.1.2) @@ -17320,41 +15217,20 @@ packages: react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: - csstype - dev: false - /now-and-later@2.0.1: - resolution: {integrity: sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==} - engines: {node: '>= 0.10'} + now-and-later@2.0.1: dependencies: once: 1.4.0 - dev: true - /npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} + npm-run-path@4.0.1: dependencies: path-key: 3.1.1 - dev: true - - /npmlog@5.0.1: - resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} - dependencies: - are-we-there-yet: 2.0.0 - console-control-strings: 1.1.0 - gauge: 3.0.2 - set-blocking: 2.0.0 - dev: true - /nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + nth-check@2.1.1: dependencies: boolbase: 1.0.0 - dev: true - /nyc@15.1.0: - resolution: {integrity: sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==} - engines: {node: '>=8.9'} - hasBin: true + nyc@15.1.0: dependencies: '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 @@ -17385,153 +15261,63 @@ packages: yargs: 15.4.1 transitivePeerDependencies: - supports-color - dev: true - /object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} + object-assign@4.1.1: {} - /object-copy@0.1.0: - resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} - engines: {node: '>=0.10.0'} - dependencies: - copy-descriptor: 0.1.1 - define-property: 0.2.5 - kind-of: 3.2.2 - dev: true + object-inspect@1.12.3: {} - /object-inspect@1.12.3: - resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} - dev: true + object-inspect@1.13.2: {} - /object-is@1.1.5: - resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} - engines: {node: '>= 0.4'} + object-is@1.1.5: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.0 - dev: true - - /object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - dev: true - /object-visit@1.0.1: - resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 - dev: true + object-keys@1.1.1: {} - /object.assign@4.1.4: - resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} - engines: {node: '>= 0.4'} + object.assign@4.1.4: dependencies: call-bind: 1.0.5 define-properties: 1.2.0 has-symbols: 1.0.3 object-keys: 1.1.1 - dev: true - /object.entries@1.1.6: - resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} - engines: {node: '>= 0.4'} + object.entries@1.1.6: dependencies: call-bind: 1.0.5 define-properties: 1.2.0 es-abstract: 1.21.2 - dev: true - /object.fromentries@2.0.6: - resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} - engines: {node: '>= 0.4'} + object.fromentries@2.0.6: dependencies: call-bind: 1.0.5 define-properties: 1.2.0 es-abstract: 1.21.2 - dev: true - /object.hasown@1.1.2: - resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} + object.hasown@1.1.2: dependencies: define-properties: 1.2.0 es-abstract: 1.21.2 - dev: true - - /object.pick@1.3.0: - resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 - dev: true - /object.values@1.1.6: - resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} - engines: {node: '>= 0.4'} + object.values@1.1.6: dependencies: call-bind: 1.0.5 define-properties: 1.2.0 es-abstract: 1.21.2 - dev: true - /on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} + on-finished@2.4.1: dependencies: ee-first: 1.1.1 - dev: true - - /on-headers@1.0.2: - resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} - engines: {node: '>= 0.8'} - dev: true - /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + once@1.4.0: dependencies: wrappy: 1.0.2 - dev: true - /onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} + onetime@5.1.2: dependencies: mimic-fn: 2.1.0 - dev: true - - /open@7.4.2: - resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} - engines: {node: '>=8'} - dependencies: - is-docker: 2.2.1 - is-wsl: 2.2.0 - dev: true - - /open@8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} - engines: {node: '>=12'} - dependencies: - define-lazy-prop: 2.0.0 - is-docker: 2.2.1 - is-wsl: 2.2.0 - dev: true - - /optionator@0.8.3: - resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} - engines: {node: '>= 0.8.0'} - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.3.0 - prelude-ls: 1.1.2 - type-check: 0.3.2 - word-wrap: 1.2.4 - dev: true - /optionator@0.9.1: - resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} - engines: {node: '>= 0.8.0'} + optionator@0.9.1: dependencies: deep-is: 0.1.4 fast-levenshtein: 2.0.6 @@ -17539,11 +15325,8 @@ packages: prelude-ls: 1.2.1 type-check: 0.4.0 word-wrap: 1.2.4 - dev: true - /ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} + ora@5.4.1: dependencies: bl: 4.1.0 chalk: 4.1.2 @@ -17554,143 +15337,63 @@ packages: log-symbols: 4.1.0 strip-ansi: 6.0.1 wcwidth: 1.0.1 - dev: true - /ordered-read-streams@1.0.1: - resolution: {integrity: sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==} + ordered-read-streams@1.0.1: dependencies: readable-stream: 2.3.8 - dev: true - /os-browserify@0.3.0: - resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} - dev: true + os-homedir@1.0.2: {} - /os-homedir@1.0.2: - resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} - engines: {node: '>=0.10.0'} - dev: true - - /p-cancelable@2.1.1: - resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} - engines: {node: '>=8'} - dev: true + p-cancelable@2.1.1: {} - /p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} + p-limit@2.3.0: dependencies: p-try: 2.2.0 - dev: true - /p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 - dev: true - /p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-limit@4.0.0: dependencies: yocto-queue: 1.0.0 - dev: true - /p-locate@3.0.0: - resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} - engines: {node: '>=6'} + p-locate@3.0.0: dependencies: p-limit: 2.3.0 - dev: true - /p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} + p-locate@4.1.0: dependencies: p-limit: 2.3.0 - dev: true - /p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} + p-locate@5.0.0: dependencies: p-limit: 3.1.0 - dev: true - /p-map@3.0.0: - resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==} - engines: {node: '>=8'} + p-map@3.0.0: dependencies: aggregate-error: 3.1.0 - dev: true - /p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} + p-map@4.0.0: dependencies: aggregate-error: 3.1.0 - dev: true - /p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - dev: true + p-try@2.2.0: {} - /package-hash@4.0.0: - resolution: {integrity: sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==} - engines: {node: '>=8'} + package-hash@4.0.0: dependencies: graceful-fs: 4.2.11 hasha: 5.2.2 lodash.flattendeep: 4.4.0 release-zalgo: 1.0.0 - dev: true - - /pako@0.2.9: - resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} - dev: true - - /pako@1.0.11: - resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} - /parallel-transform@1.2.0: - resolution: {integrity: sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==} - dependencies: - cyclist: 1.0.2 - inherits: 2.0.4 - readable-stream: 2.3.8 - dev: true + pako@1.0.11: {} - /parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} + parent-module@1.0.1: dependencies: callsites: 3.1.0 - /parse-asn1@5.1.6: - resolution: {integrity: sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==} - dependencies: - asn1.js: 5.4.1 - browserify-aes: 1.2.0 - evp_bytestokey: 1.0.3 - pbkdf2: 3.1.2 - safe-buffer: 5.2.1 - dev: true - - /parse-entities@2.0.0: - resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} - dependencies: - character-entities: 1.2.4 - character-entities-legacy: 1.1.4 - character-reference-invalid: 1.1.4 - is-alphanumerical: 1.0.4 - is-decimal: 1.0.4 - is-hexadecimal: 1.0.4 - dev: true - - /parse-entities@4.0.1: - resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} + parse-entities@4.0.1: dependencies: '@types/unist': 2.0.6 character-entities: 2.0.2 @@ -17700,747 +15403,339 @@ packages: is-alphanumerical: 2.0.1 is-decimal: 2.0.1 is-hexadecimal: 2.0.1 - dev: true - /parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} + parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.22.5 + '@babel/code-frame': 7.25.9 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - /parse-passwd@1.0.0: - resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} - engines: {node: '>=0.10.0'} - dev: true + parse-passwd@1.0.0: {} - /parse5-htmlparser2-tree-adapter@7.0.0: - resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} + parse5-htmlparser2-tree-adapter@7.0.0: dependencies: domhandler: 5.0.3 parse5: 7.1.2 - dev: true - - /parse5@6.0.1: - resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} - dev: true - /parse5@7.1.2: - resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + parse5@7.1.2: dependencies: entities: 4.5.0 - dev: true - /parseley@0.7.0: - resolution: {integrity: sha512-xyOytsdDu077M3/46Am+2cGXEKM9U9QclBDv7fimY7e+BBlxh2JcBp2mgNsmkyA9uvgyTjVzDi7cP1v4hcFxbw==} + parseley@0.7.0: dependencies: moo: 0.5.2 nearley: 2.20.1 - dev: true - - /parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} - dev: true - - /pascalcase@0.1.1: - resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} - engines: {node: '>=0.10.0'} - dev: true - /path-browserify@0.0.1: - resolution: {integrity: sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==} - dev: true + parseurl@1.3.3: {} - /path-exists@3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} - dev: true + path-exists@3.0.0: {} - /path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - dev: true + path-exists@4.0.0: {} - /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - dev: true + path-is-absolute@1.0.1: {} - /path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - dev: true + path-key@3.1.1: {} - /path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + path-parse@1.0.7: {} - /path-posix@1.0.0: - resolution: {integrity: sha512-1gJ0WpNIiYcQydgg3Ed8KzvIqTsDpNwq+cjBCssvBtuTWjEqY1AW+i+OepiEMqDCzyro9B2sLAe4RBPajMYFiA==} - dev: true + path-posix@1.0.0: {} - /path-to-regexp@0.1.7: - resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} - dev: true + path-to-regexp@0.1.10: {} - /path-to-regexp@1.8.0: - resolution: {integrity: sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==} + path-to-regexp@1.8.0: dependencies: isarray: 0.0.1 - dev: false - - /path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - - /pathe@1.1.1: - resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} - dev: true - /pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - dev: true + path-type@4.0.0: {} - /pbkdf2@3.1.2: - resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} - engines: {node: '>=0.12'} - dependencies: - create-hash: 1.2.0 - create-hmac: 1.1.7 - ripemd160: 2.0.2 - safe-buffer: 5.2.1 - sha.js: 2.4.11 - dev: true + path-type@5.0.0: {} - /peek-stream@1.1.3: - resolution: {integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==} - dependencies: - buffer-from: 1.1.2 - duplexify: 3.7.1 - through2: 2.0.5 - dev: true + pathe@1.1.1: {} - /pend@1.2.0: - resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} - dev: true + pathval@1.1.1: {} - /periscopic@3.1.0: - resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} + periscopic@3.1.0: dependencies: '@types/estree': 1.0.1 estree-walker: 3.0.3 is-reference: 3.0.1 - dev: true - /picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + picocolors@1.0.0: {} - /picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - dev: true + picocolors@1.1.1: {} - /pidtree@0.5.0: - resolution: {integrity: sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA==} - engines: {node: '>=0.10'} - hasBin: true - dev: true + picomatch@2.3.1: {} - /pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - dev: true + pidtree@0.5.0: {} - /pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - dev: true + pify@4.0.1: {} - /pkg-dir@3.0.0: - resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} - engines: {node: '>=6'} + pirates@4.0.6: {} + + pkg-dir@3.0.0: dependencies: find-up: 3.0.0 - dev: true - /pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} + pkg-dir@4.2.0: dependencies: find-up: 4.1.0 - dev: true - - /pkg-dir@5.0.0: - resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} - engines: {node: '>=10'} - dependencies: - find-up: 5.0.0 - dev: true - /pkg-types@1.0.3: - resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + pkg-types@1.0.3: dependencies: jsonc-parser: 3.2.0 mlly: 1.4.2 pathe: 1.1.1 - dev: true - /playwright-core@1.35.1: - resolution: {integrity: sha512-pNXb6CQ7OqmGDRspEjlxE49w+4YtR6a3X6mT1hZXeJHWmsEz7SunmvZeiG/+y1yyMZdHnnn73WKYdtV1er0Xyg==} - engines: {node: '>=16'} - hasBin: true - dev: true + playwright-core@1.35.1: {} - /playwright@1.35.1: - resolution: {integrity: sha512-NbwBeGJLu5m7VGM0+xtlmLAH9VUfWwYOhUi/lSEDyGg46r1CA9RWlvoc5yywxR9AzQb0mOCm7bWtOXV7/w43ZA==} - engines: {node: '>=16'} - hasBin: true - requiresBuild: true + playwright@1.35.1: dependencies: playwright-core: 1.35.1 - dev: true - /polished@4.2.2: - resolution: {integrity: sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ==} - engines: {node: '>=10'} + polished@4.2.2: dependencies: '@babel/runtime': 7.23.5 - dev: true - /popmotion@11.0.3: - resolution: {integrity: sha512-Y55FLdj3UxkR7Vl3s7Qr4e9m0onSnP8W7d/xQLsoJM40vs6UKHFdygs6SWryasTZYqugMjm3BepCF4CWXDiHgA==} + popmotion@11.0.3: dependencies: framesync: 6.0.1 hey-listen: 1.0.8 style-value-types: 5.0.0 tslib: 2.6.0 - dev: false - - /posix-character-classes@0.1.1: - resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} - engines: {node: '>=0.10.0'} - dev: true - - /postcss-value-parser@3.3.1: - resolution: {integrity: sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==} - dev: false - - /postcss@8.4.24: - resolution: {integrity: sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.6 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: true - /prelude-ls@1.1.2: - resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} - engines: {node: '>= 0.8.0'} - dev: true + postcss-value-parser@3.3.1: {} - /prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - dev: true + postcss@8.4.47: + dependencies: + nanoid: 3.3.7 + picocolors: 1.1.1 + source-map-js: 1.2.1 - /prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} - engines: {node: '>=6.0.0'} + prelude-ls@1.2.1: {} + + prettier-linter-helpers@1.0.0: dependencies: fast-diff: 1.3.0 - dev: true - - /prettier@2.3.0: - resolution: {integrity: sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w==} - engines: {node: '>=10.13.0'} - hasBin: true - dev: true - /prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - dev: true + prettier@3.3.3: {} - /pretty-bytes@5.6.0: - resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} - engines: {node: '>=6'} - dev: true + pretty-bytes@5.6.0: {} - /pretty-bytes@6.1.0: - resolution: {integrity: sha512-Rk753HI8f4uivXi4ZCIYdhmG1V+WKzvRMg/X+M42a6t7D07RcmopXJMDNk6N++7Bl75URRGsb40ruvg7Hcp2wQ==} - engines: {node: ^14.13.1 || >=16.0.0} - dev: true + pretty-bytes@6.1.0: {} - /pretty-format@27.5.1: - resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + pretty-format@27.5.1: dependencies: ansi-regex: 5.0.1 ansi-styles: 5.2.0 react-is: 17.0.2 - dev: true - /pretty-format@28.1.3: - resolution: {integrity: sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + pretty-format@29.5.0: dependencies: - '@jest/schemas': 28.1.3 - ansi-regex: 5.0.1 + '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 react-is: 18.2.0 - dev: true - /pretty-format@29.5.0: - resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + pretty-format@29.7.0: dependencies: - '@jest/schemas': 29.4.3 + '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 react-is: 18.2.0 - dev: true - - /pretty-hrtime@1.0.3: - resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} - engines: {node: '>= 0.8'} - dev: true - /process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + process-nextick-args@2.0.1: {} - /process-on-spawn@1.0.0: - resolution: {integrity: sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==} - engines: {node: '>=8'} + process-on-spawn@1.0.0: dependencies: fromentries: 1.3.2 - dev: true - - /process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - dev: true - - /progress@2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} - dev: true - /promise-inflight@1.0.1(bluebird@3.7.2): - resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} - peerDependencies: - bluebird: '*' - peerDependenciesMeta: - bluebird: - optional: true - dependencies: - bluebird: 3.7.2 - dev: true + process@0.11.10: {} - /promise-map-series@0.3.0: - resolution: {integrity: sha512-3npG2NGhTc8BWBolLLf8l/92OxMGaRLbqvIh9wjCHhDXNvk4zsxaTaCpiCunW09qWPrN2zeNSNwRLVBrQQtutA==} - engines: {node: 10.* || >= 12.*} - dev: true + promise-map-series@0.3.0: {} - /promise@1.3.0: - resolution: {integrity: sha512-R9WrbTF3EPkVtWjp7B7umQGVndpsi+rsDAfrR4xAALQpFLa/+2OriecLhawxzvii2gd9+DZFwROWDuUUaqS5yA==} + promise@1.3.0: dependencies: is-promise: 1.0.1 - dev: true - /prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} + prompts@2.4.2: dependencies: kleur: 3.0.3 sisteransi: 1.0.5 - dev: true - /prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + prop-types@15.8.1: dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 react-is: 16.13.1 - /property-information@5.6.0: - resolution: {integrity: sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==} - dependencies: - xtend: 4.0.2 - dev: true - - /property-information@6.2.0: - resolution: {integrity: sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==} - dev: true + property-information@6.2.0: {} - /proxy-addr@2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} + proxy-addr@2.0.7: dependencies: forwarded: 0.2.0 ipaddr.js: 1.9.1 - dev: true - - /proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - dev: true - - /prr@1.0.1: - resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} - dev: true - /public-encrypt@4.0.3: - resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} - dependencies: - bn.js: 4.12.0 - browserify-rsa: 4.1.0 - create-hash: 1.2.0 - parse-asn1: 5.1.6 - randombytes: 2.1.0 - safe-buffer: 5.2.1 - dev: true + proxy-from-env@1.1.0: {} - /pump@2.0.1: - resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} + pump@2.0.1: dependencies: end-of-stream: 1.4.4 once: 1.4.0 - dev: true - /pump@3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + pump@3.0.0: dependencies: end-of-stream: 1.4.4 once: 1.4.0 - dev: true - /pumpify@1.5.1: - resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} + pumpify@1.5.1: dependencies: duplexify: 3.7.1 inherits: 2.0.4 pump: 2.0.1 - dev: true - /punycode@1.4.1: - resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} - dev: true - - /punycode@2.3.0: - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} - engines: {node: '>=6'} - dev: true - - /puppeteer-core@2.1.1: - resolution: {integrity: sha512-n13AWriBMPYxnpbb6bnaY5YoY6rGj8vPLrz6CZF3o0qJNEwlcfJVxBzYZ0NJsQ21UbdJoijPCDrM++SUVEz7+w==} - engines: {node: '>=8.16.0'} - dependencies: - '@types/mime-types': 2.1.1 - debug: 4.3.4(supports-color@9.3.1) - extract-zip: 1.7.0 - https-proxy-agent: 4.0.0 - mime: 2.6.0 - mime-types: 2.1.35 - progress: 2.0.3 - proxy-from-env: 1.1.0 - rimraf: 2.7.1 - ws: 6.2.2 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: true + punycode@2.3.0: {} - /qs@6.11.0: - resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} - engines: {node: '>=0.6'} - dependencies: - side-channel: 1.0.4 - dev: true + pure-rand@6.1.0: {} - /qs@6.11.2: - resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} - engines: {node: '>=0.6'} + qs@6.13.0: dependencies: - side-channel: 1.0.4 - dev: true + side-channel: 1.0.6 - /querystring-es3@0.2.1: - resolution: {integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==} - engines: {node: '>=0.4.x'} - dev: true - - /queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: true + queue-microtask@1.2.3: {} - /quick-lru@5.1.1: - resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} - engines: {node: '>=10'} - dev: true + quick-lru@5.1.1: {} - /quick-temp@0.1.8: - resolution: {integrity: sha512-YsmIFfD9j2zaFwJkzI6eMG7y0lQP7YeWzgtFgNl38pGWZBSXJooZbOWwkcRot7Vt0Fg9L23pX0tqWU3VvLDsiA==} + quick-temp@0.1.8: dependencies: mktemp: 0.4.0 rimraf: 2.7.1 underscore.string: 3.3.6 - dev: true - /quoted-printable@1.0.1: - resolution: {integrity: sha512-cihC68OcGiQOjGiXuo5Jk6XHANTHl1K4JLk/xlEJRTIXfy19Sg6XzB95XonYgr+1rB88bCpr7WZE7D7AlZow4g==} - hasBin: true + quoted-printable@1.0.1: dependencies: utf8: 2.1.2 - dev: true - - /railroad-diagrams@1.0.0: - resolution: {integrity: sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==} - dev: true - - /ramda@0.28.0: - resolution: {integrity: sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA==} - dev: true - /ramda@0.29.0: - resolution: {integrity: sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA==} - dev: true + railroad-diagrams@1.0.0: {} - /randexp@0.4.6: - resolution: {integrity: sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==} - engines: {node: '>=0.12'} + randexp@0.4.6: dependencies: discontinuous-range: 1.0.0 ret: 0.1.15 - dev: true - - /randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - dependencies: - safe-buffer: 5.2.1 - dev: true - /randomfill@1.0.4: - resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} + randombytes@2.1.0: dependencies: - randombytes: 2.1.0 safe-buffer: 5.2.1 - dev: true - /range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} - dev: true + range-parser@1.2.1: {} - /raw-body@2.5.1: - resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} - engines: {node: '>= 0.8'} + raw-body@2.5.2: dependencies: bytes: 3.1.2 http-errors: 2.0.0 iconv-lite: 0.4.24 unpipe: 1.0.0 - dev: true - /rc-year-calendar@1.0.2(prop-types@15.8.1)(react@18.2.0): - resolution: {integrity: sha512-TdEHZ4hs3WEuEAAmX/HEWlK7EZwhACkpuJKdkxL360igekuQDguyXTC9RuDFdk6lv4CAT7L4d4D6PTP7zUMBlQ==} - peerDependencies: - prop-types: ^15.7.2 - react: ^16.8.4 + rc-year-calendar@1.0.2(prop-types@15.8.1)(react@18.2.0): dependencies: js-year-calendar: 1.0.2 prop-types: 15.8.1 react: 18.2.0 - dev: false - /react-chartjs-2@5.2.0(chart.js@4.4.0)(react@18.2.0): - resolution: {integrity: sha512-98iN5aguJyVSxp5U3CblRLH67J8gkfyGNbiK3c+l1QI/G4irHMPQw44aEPmjVag+YKTyQ260NcF82GTQ3bdscA==} - peerDependencies: - chart.js: ^4.1.1 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-chartjs-2@5.2.0(chart.js@4.4.0)(react@18.2.0): dependencies: chart.js: 4.4.0 react: 18.2.0 - dev: false - /react-colorful@5.6.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' + react-colorful@5.6.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: true - /react-docgen-typescript@2.2.2(typescript@4.9.5): - resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==} - peerDependencies: - typescript: '>= 4.3.x' + react-docgen-typescript@2.2.2(typescript@4.9.5): dependencies: typescript: 4.9.5 - dev: true - /react-docgen@6.0.0-alpha.3: - resolution: {integrity: sha512-DDLvB5EV9As1/zoUsct6Iz2Cupw9FObEGD3DMcIs3EDFIoSKyz8FZtoWj3Wj+oodrU4/NfidN0BL5yrapIcTSA==} - engines: {node: '>=12.0.0'} - hasBin: true + react-docgen@7.1.0: dependencies: - '@babel/core': 7.22.5 - '@babel/generator': 7.22.5 - ast-types: 0.14.2 - commander: 2.20.3 + '@babel/core': 7.25.9 + '@babel/traverse': 7.25.9 + '@babel/types': 7.25.9 + '@types/babel__core': 7.20.3 + '@types/babel__traverse': 7.20.1 + '@types/doctrine': 0.0.9 + '@types/resolve': 1.20.6 doctrine: 3.0.0 - estree-to-babel: 3.2.1 - neo-async: 2.6.2 - node-dir: 0.1.17 - resolve: 1.22.2 - strip-indent: 3.0.0 + resolve: 1.22.8 + strip-indent: 4.0.0 transitivePeerDependencies: - supports-color - dev: true - /react-dom@18.2.0(react@18.2.0): - resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} - peerDependencies: - react: ^18.2.0 + react-dom@18.2.0(react@18.2.0): dependencies: loose-envify: 1.4.0 react: 18.2.0 scheduler: 0.23.0 - /react-element-to-jsx-string@15.0.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-UDg4lXB6BzlobN60P8fHWVPX3Kyw8ORrTeBtClmIlGdkOOE+GYQSFvmEU5iLLpwp/6v42DINwNcwOhOLfQ//FQ==} - peerDependencies: - react: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0 - react-dom: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0 + react-element-to-jsx-string@15.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@base2/pretty-print-object': 1.0.1 is-plain-object: 5.0.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-is: 18.1.0 - dev: true - /react-error-boundary@4.0.12(react@18.2.0): - resolution: {integrity: sha512-kJdxdEYlb7CPC1A0SeUY38cHpjuu6UkvzKiAmqmOFL21VRfMhOcWxTCBgLVCO0VEMh9JhFNcVaXlV4/BTpiwOA==} - peerDependencies: - react: '>=16.13.1' + react-error-boundary@4.0.12(react@18.2.0): dependencies: '@babel/runtime': 7.23.5 react: 18.2.0 - dev: false - /react-google-login@5.2.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-JUngfvaSMcOuV0lFff7+SzJ2qviuNMQdqlsDJkUM145xkGPVIfqWXq9Ui+2Dr6jdJWH5KYdynz9+4CzKjI5u6g==} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - peerDependencies: - react: ^16 || ^17 - react-dom: ^16 || ^17 + react-google-login@5.2.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@types/react': 18.0.25 prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: false - /react-hook-form@7.40.0(react@18.2.0): - resolution: {integrity: sha512-0rokdxMPJs0k9bvFtY6dbcSydyNhnZNXCR49jgDr/aR03FDHFOK6gfh8ccqB3fl696Mk7lqh04xdm+agqWXKSw==} - engines: {node: '>=12.22.0'} - peerDependencies: - react: ^16.8.0 || ^17 || ^18 + react-hook-form@7.40.0(react@18.2.0): dependencies: react: 18.2.0 - dev: false - /react-i18next@11.18.6(i18next@21.10.0)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-yHb2F9BiT0lqoQDt8loZ5gWP331GwctHz9tYQ8A2EIEUu+CcEdjBLQWli1USG3RdWQt3W+jqQLg/d4rrQR96LA==} - peerDependencies: - i18next: '>= 19.0.0' - react: '>= 16.8.0' - react-dom: '*' - react-native: '*' - peerDependenciesMeta: - react-dom: - optional: true - react-native: - optional: true + react-i18next@11.18.6(i18next@21.10.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@babel/runtime': 7.22.5 html-parse-stringify: 3.0.1 i18next: 21.10.0 react: 18.2.0 + optionalDependencies: react-dom: 18.2.0(react@18.2.0) - dev: false - - /react-icons@4.7.1(react@18.2.0): - resolution: {integrity: sha512-yHd3oKGMgm7zxo3EA7H2n7vxSoiGmHk5t6Ou4bXsfcgWyhfDKMpyKfhHR6Bjnn63c+YXBLBPUql9H4wPJM6sXw==} - peerDependencies: - react: '*' - dependencies: - react: 18.2.0 - dev: false - /react-inspector@6.0.2(react@18.2.0): - resolution: {integrity: sha512-x+b7LxhmHXjHoU/VrFAzw5iutsILRoYyDq97EDYdFpPLcvqtEzk4ZSZSQjnFPbr5T57tLXnHcqFYoN1pI6u8uQ==} - peerDependencies: - react: ^16.8.4 || ^17.0.0 || ^18.0.0 + react-icons@4.7.1(react@18.2.0): dependencies: react: 18.2.0 - dev: true - /react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + react-is@16.13.1: {} - /react-is@17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + react-is@17.0.2: {} - /react-is@18.1.0: - resolution: {integrity: sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==} - dev: true + react-is@18.1.0: {} - /react-is@18.2.0: - resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + react-is@18.2.0: {} - /react-jwt@1.1.8(react@18.2.0): - resolution: {integrity: sha512-e6OPgkQutK8oZpAt7mPi2PcRVpev1c1JxvFwgLyGijVRznqNLWnYgMuW00THdzWPh6m7hzqhimz3UY7VfY1sEw==} - engines: {node: '>=10'} - peerDependencies: - react: ^16.0.0 || ^17.0.0 || ^18.0.0 + react-jwt@1.1.8(react@18.2.0): dependencies: react: 18.2.0 optionalDependencies: fsevents: 2.3.2 - dev: false - /react-lifecycles-compat@3.0.4: - resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} - dev: false + react-lifecycles-compat@3.0.4: {} - /react-load-script@0.0.6(prop-types@15.8.1)(react@18.2.0): - resolution: {integrity: sha512-aRGxDGP9VoLxcsaYvKWIW+LRrMOzz2eEcubTS4NvQPPugjk2VvMhow0wWTkSl7RxookomD1MwcP4l5UStg5ShQ==} - deprecated: abandoned and unmaintained - peerDependencies: - prop-types: '>=15' - react: '>=0.14.9' + react-load-script@0.0.6(prop-types@15.8.1)(react@18.2.0): dependencies: prop-types: 15.8.1 react: 18.2.0 - dev: false - /react-native-segmented-control-tab@3.4.1: - resolution: {integrity: sha512-BNPdlE9Unr0Xabewn8W+FhBMLjssXy9Ey7S7AY0hXlrKrEKFdC9z0yT+eEWd5dLam4T6T4IuGL8b7ZF4uGyWNw==} - dev: false + react-native-segmented-control-tab@3.4.1: {} - /react-redux-form@1.16.14(react-dom@18.2.0)(react-redux@7.2.9)(react@18.2.0)(redux@4.2.0): - resolution: {integrity: sha512-exd8FoWwJRQynjnYqCLmcbwcqgRPyU+qiKmTA7/T8qlNgyqgmbAgkYNe9NG9FYb5oLgHAtx5vDhVEpje888lIA==} - peerDependencies: - react: ^15.3.0 || ^16.0.0 - react-dom: ^0.14.7 || ^15.0.0 || ^16.0.0 - react-redux: ^4.0.0 || ^5.0.3 || ^7.0.0 - redux: ^3.0.0 || ^4.0.0 + react-redux-form@1.16.14(react-dom@18.2.0(react@18.2.0))(react-redux@7.2.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0)(redux@4.2.0): dependencies: icepick: 1.3.0 invariant: 2.2.4 @@ -18450,22 +15745,11 @@ packages: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-native-segmented-control-tab: 3.4.1 - react-redux: 7.2.9(react-dom@18.2.0)(react@18.2.0) + react-redux: 7.2.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0) redux: 4.2.0 shallow-compare: 1.2.2 - dev: false - /react-redux@7.2.9(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==} - peerDependencies: - react: ^16.8.3 || ^17 || ^18 - react-dom: '*' - react-native: '*' - peerDependenciesMeta: - react-dom: - optional: true - react-native: - optional: true + react-redux@7.2.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@babel/runtime': 7.22.5 '@types/react-redux': 7.1.25 @@ -18473,29 +15757,19 @@ packages: loose-envify: 1.4.0 prop-types: 15.8.1 react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) react-is: 17.0.2 - dev: false + optionalDependencies: + react-dom: 18.2.0(react@18.2.0) - /react-refresh@0.14.0: - resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} - engines: {node: '>=0.10.0'} - dev: true + react-refresh@0.14.0: {} - /react-resize-detector@7.1.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-zXnPJ2m8+6oq9Nn8zsep/orts9vQv3elrpA+R8XTcW7DVVUJ9vwDwMXaBtykAYjMnkCIaOoK9vObyR7ZgFNlOw==} - peerDependencies: - react: ^16.0.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 + react-resize-detector@7.1.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: lodash: 4.17.21 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /react-router-dom@4.3.1(react@18.2.0): - resolution: {integrity: sha512-c/MlywfxDdCp7EnB7YfPMOfMD3tOtIjrQlj/CKfNMBxdmpJP8xcz5P/UAFn3JbnQCNUxsHyVVqllF9LhgVyFCA==} - peerDependencies: - react: '>=15' + react-router-dom@4.3.1(react@18.2.0): dependencies: history: 4.10.1 invariant: 2.2.4 @@ -18504,12 +15778,8 @@ packages: react: 18.2.0 react-router: 4.3.1(react@18.2.0) warning: 4.0.3 - dev: false - /react-router@4.3.1(react@18.2.0): - resolution: {integrity: sha512-yrvL8AogDh2X42Dt9iknk4wF4V8bWREPirFfS9gLU1huk6qK41sg7Z/1S81jjTrGHxa3B8R3J6xIkDAA6CVarg==} - peerDependencies: - react: '>=15' + react-router@4.3.1(react@18.2.0): dependencies: history: 4.10.1 hoist-non-react-statics: 2.5.5 @@ -18519,19 +15789,12 @@ packages: prop-types: 15.8.1 react: 18.2.0 warning: 4.0.3 - dev: false - /react-select-event@5.5.1: - resolution: {integrity: sha512-goAx28y0+iYrbqZA2FeRTreHHs/ZtSuKxtA+J5jpKT5RHPCbVZJ4MqACfPnWyFXsEec+3dP5bCrNTxIX8oYe9A==} + react-select-event@5.5.1: dependencies: '@testing-library/dom': 9.3.1 - dev: true - /react-select@5.7.0(@babel/core@7.20.5)(@types/react@18.0.25)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-lJGiMxCa3cqnUr2Jjtg9YHsaytiZqeNOKeibv6WF5zbK/fPegZ1hg3y/9P1RZVLhqBTs0PfqQLKuAACednYGhQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-select@5.7.0(@babel/core@7.20.5)(@types/react@18.0.25)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@babel/runtime': 7.22.5 '@emotion/cache': 11.11.0 @@ -18542,33 +15805,21 @@ packages: prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) + react-transition-group: 4.4.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) use-isomorphic-layout-effect: 1.1.2(@types/react@18.0.25)(react@18.2.0) transitivePeerDependencies: - '@babel/core' - '@types/react' - dev: false - /react-smooth@2.0.3(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-yl4y3XiMorss7ayF5QnBiSprig0+qFHui8uh7Hgg46QX5O+aRMRKlfGGNGLHno35JkQSvSYY8eCWkBfHfrSHfg==} - peerDependencies: - prop-types: ^15.6.0 - react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 - react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + react-smooth@2.0.3(prop-types@15.8.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: fast-equals: 5.0.1 prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-transition-group: 2.9.0(react-dom@18.2.0)(react@18.2.0) - dev: false + react-transition-group: 2.9.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - /react-table@6.11.5(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-LM+AS9v//7Y7lAlgTWW/cW6Sn5VOb3EsSkKQfQTzOW8FngB1FUskLLNEVkAYsTX9LjOWR3QlGjykJqCE6eXT/g==} - peerDependencies: - prop-types: ^15.7.0 - react: ^16.x.x - react-dom: ^16.x.x + react-table@6.11.5(prop-types@15.8.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@types/react-table': 6.8.10 classnames: 2.3.2 @@ -18576,13 +15827,8 @@ packages: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-is: 16.13.1 - dev: false - /react-transition-group@2.9.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==} - peerDependencies: - react: '>=15.0.0' - react-dom: '>=15.0.0' + react-transition-group@2.9.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: dom-helpers: 3.4.0 loose-envify: 1.4.0 @@ -18590,13 +15836,8 @@ packages: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-lifecycles-compat: 3.0.4 - dev: false - /react-transition-group@4.4.5(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} - peerDependencies: - react: '>=16.6.0' - react-dom: '>=16.6.0' + react-transition-group@4.4.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@babel/runtime': 7.23.5 dom-helpers: 5.2.1 @@ -18604,44 +15845,19 @@ packages: prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: false - /react@18.2.0: - resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} - engines: {node: '>=0.10.0'} + react@18.2.0: dependencies: loose-envify: 1.4.0 - /read-pkg-up@7.0.1: - resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} - engines: {node: '>=8'} - dependencies: - find-up: 4.1.0 - read-pkg: 5.2.0 - type-fest: 0.8.1 - dev: true - - /read-pkg@5.2.0: - resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} - engines: {node: '>=8'} - dependencies: - '@types/normalize-package-data': 2.4.1 - normalize-package-data: 2.5.0 - parse-json: 5.2.0 - type-fest: 0.6.0 - dev: true - - /readable-stream@1.1.14: - resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==} + readable-stream@1.1.14: dependencies: core-util-is: 1.0.3 inherits: 2.0.4 isarray: 0.0.1 string_decoder: 0.10.31 - dev: true - /readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + readable-stream@2.3.8: dependencies: core-util-is: 1.0.3 inherits: 2.0.4 @@ -18651,69 +15867,29 @@ packages: string_decoder: 1.1.1 util-deprecate: 1.0.2 - /readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - dev: true - - /readdirp@2.2.1: - resolution: {integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==} - engines: {node: '>=0.10'} - requiresBuild: true - dependencies: - graceful-fs: 4.2.11 - micromatch: 3.1.10 - readable-stream: 2.3.8 - transitivePeerDependencies: - - supports-color - dev: true - optional: true - - /readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} + readable-stream@3.6.2: dependencies: - picomatch: 2.3.1 - dev: true + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 - /recast@0.21.5: - resolution: {integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==} - engines: {node: '>= 4'} + readdirp@3.6.0: dependencies: - ast-types: 0.15.2 - esprima: 4.0.1 - source-map: 0.6.1 - tslib: 2.6.0 - dev: true + picomatch: 2.3.1 - /recast@0.23.2: - resolution: {integrity: sha512-Qv6cPfVZyMOtPszK6PgW70pUgm7gPlFitAPf0Q69rlOA0zLw2XdDcNmPbVGYicFGT9O8I7TZ/0ryJD+6COvIPw==} - engines: {node: '>= 4'} + recast@0.23.9: dependencies: - assert: 2.0.0 ast-types: 0.16.1 esprima: 4.0.1 source-map: 0.6.1 - tslib: 2.6.0 - dev: true + tiny-invariant: 1.3.3 + tslib: 2.8.0 - /recharts-scale@0.4.5: - resolution: {integrity: sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==} + recharts-scale@0.4.5: dependencies: decimal.js-light: 2.5.1 - dev: false - /recharts@2.1.16(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-aYn1plTjYzRCo3UGxtWsduslwYd+Cuww3h/YAAEoRdGe0LRnBgYgaXSlVrNFkWOOSXrBavpmnli9h7pvRuk5wg==} - engines: {node: '>=12'} - peerDependencies: - prop-types: ^15.6.0 - react: ^16.0.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 + recharts@2.1.16(prop-types@15.8.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@types/d3-interpolate': 2.0.2 '@types/d3-scale': 3.3.2 @@ -18728,114 +15904,66 @@ packages: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-is: 16.13.1 - react-resize-detector: 7.1.2(react-dom@18.2.0)(react@18.2.0) - react-smooth: 2.0.3(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0) + react-resize-detector: 7.1.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-smooth: 2.0.3(prop-types@15.8.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) recharts-scale: 0.4.5 reduce-css-calc: 2.1.8 - dev: false - - /rechoir@0.6.2: - resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} - engines: {node: '>= 0.10'} - dependencies: - resolve: 1.22.2 - dev: true - /redent@3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} - engines: {node: '>=8'} + redent@3.0.0: dependencies: indent-string: 4.0.0 strip-indent: 3.0.0 - dev: true - /reduce-css-calc@2.1.8: - resolution: {integrity: sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg==} + reduce-css-calc@2.1.8: dependencies: css-unit-converter: 1.1.2 postcss-value-parser: 3.3.1 - dev: false - /redux-persist@6.0.0(react@18.2.0)(redux@4.2.0): - resolution: {integrity: sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ==} - peerDependencies: - react: '>=16' - redux: '>4.0.0' - peerDependenciesMeta: - react: - optional: true + redux-persist@6.0.0(react@18.2.0)(redux@4.2.0): dependencies: - react: 18.2.0 redux: 4.2.0 - dev: false + optionalDependencies: + react: 18.2.0 - /redux-saga@1.2.1: - resolution: {integrity: sha512-fVCicLlf4hLP+KB6H7RHfZlZ8LdYckhaemXBB3wh//a2ESyz/z/l8ygxlm0OqPjS/PARdsQ2hIdAltxEB+NgvA==} + redux-saga@1.2.1: dependencies: '@redux-saga/core': 1.2.3 - dev: false - /redux-thunk@2.4.2(redux@4.2.0): - resolution: {integrity: sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==} - peerDependencies: - redux: ^4 + redux-thunk@2.4.2(redux@4.2.0): dependencies: redux: 4.2.0 - dev: false - /redux@4.2.0: - resolution: {integrity: sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA==} + redux@4.2.0: dependencies: '@babel/runtime': 7.22.5 - /regenerate-unicode-properties@10.1.0: - resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} - engines: {node: '>=4'} + regenerate-unicode-properties@10.1.0: dependencies: regenerate: 1.4.2 - dev: true - /regenerate@1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - dev: true + regenerate-unicode-properties@10.2.0: + dependencies: + regenerate: 1.4.2 - /regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + regenerate@1.4.2: {} - /regenerator-runtime@0.14.0: - resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} + regenerator-runtime@0.13.11: {} - /regenerator-transform@0.15.1: - resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==} - dependencies: - '@babel/runtime': 7.23.5 - dev: true + regenerator-runtime@0.14.0: {} - /regex-not@1.0.2: - resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} - engines: {node: '>=0.10.0'} + regenerator-transform@0.15.2: dependencies: - extend-shallow: 3.0.2 - safe-regex: 1.1.0 - dev: true + '@babel/runtime': 7.23.5 - /regexp.prototype.flags@1.5.0: - resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} - engines: {node: '>= 0.4'} + regexp.prototype.flags@1.5.0: dependencies: call-bind: 1.0.5 define-properties: 1.2.0 functions-have-names: 1.2.3 - dev: true - /regexpp@3.2.0: - resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} - engines: {node: '>=8'} - dev: true + regexpp@3.2.0: {} - /regexpu-core@5.3.2: - resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} - engines: {node: '>=4'} + regexpu-core@5.3.2: dependencies: '@babel/regjsgen': 0.8.0 regenerate: 1.4.2 @@ -18843,489 +15971,279 @@ packages: regjsparser: 0.9.1 unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.1.0 - dev: true - /regjsparser@0.9.1: - resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} - hasBin: true + regexpu-core@6.1.1: + dependencies: + regenerate: 1.4.2 + regenerate-unicode-properties: 10.2.0 + regjsgen: 0.8.0 + regjsparser: 0.11.1 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.1.0 + + regjsgen@0.8.0: {} + + regjsparser@0.11.1: + dependencies: + jsesc: 3.0.2 + + regjsparser@0.9.1: dependencies: jsesc: 0.5.0 - dev: true - /release-zalgo@1.0.0: - resolution: {integrity: sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==} - engines: {node: '>=4'} + rehype-external-links@3.0.0: dependencies: - es6-error: 4.1.1 - dev: true + '@types/hast': 3.0.4 + '@ungap/structured-clone': 1.2.0 + hast-util-is-element: 3.0.0 + is-absolute-url: 4.0.1 + space-separated-tokens: 2.0.2 + unist-util-visit: 5.0.0 - /remark-external-links@8.0.0: - resolution: {integrity: sha512-5vPSX0kHoSsqtdftSHhIYofVINC8qmp0nctkeU9YoJwV3YfiBRiI6cbFRJ0oI/1F9xS+bopXG0m2KS8VFscuKA==} + rehype-slug@6.0.0: dependencies: - extend: 3.0.2 - is-absolute-url: 3.0.3 - mdast-util-definitions: 4.0.0 - space-separated-tokens: 1.1.5 - unist-util-visit: 2.0.3 - dev: true + '@types/hast': 3.0.4 + github-slugger: 2.0.0 + hast-util-heading-rank: 3.0.0 + hast-util-to-string: 3.0.1 + unist-util-visit: 5.0.0 - /remark-footnotes@2.0.0: - resolution: {integrity: sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ==} - dev: true + release-zalgo@1.0.0: + dependencies: + es6-error: 4.1.1 - /remark-gfm@3.0.1: - resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==} + remark-gfm@4.0.0: dependencies: - '@types/mdast': 3.0.11 - mdast-util-gfm: 2.0.2 - micromark-extension-gfm: 2.0.3 - unified: 10.1.2 - transitivePeerDependencies: - - supports-color - dev: true - - /remark-mdx@1.6.22: - resolution: {integrity: sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==} - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.10.4 - '@babel/plugin-proposal-object-rest-spread': 7.12.1(@babel/core@7.12.9) - '@babel/plugin-syntax-jsx': 7.12.1(@babel/core@7.12.9) - '@mdx-js/util': 1.6.22 - is-alphabetical: 1.0.4 - remark-parse: 8.0.3 - unified: 9.2.0 + '@types/mdast': 4.0.4 + mdast-util-gfm: 3.0.0 + micromark-extension-gfm: 3.0.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.5 transitivePeerDependencies: - supports-color - dev: true - /remark-mdx@2.3.0: - resolution: {integrity: sha512-g53hMkpM0I98MU266IzDFMrTD980gNF3BJnkyFcmN+dD873mQeD5rdMO3Y2X+x8umQfbSE0PcoEDl7ledSA+2g==} + remark-mdx@2.3.0: dependencies: mdast-util-mdx: 2.0.1 micromark-extension-mdxjs: 1.0.1 transitivePeerDependencies: - supports-color - dev: true - /remark-parse@10.0.2: - resolution: {integrity: sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==} + remark-parse@10.0.2: dependencies: '@types/mdast': 3.0.11 mdast-util-from-markdown: 1.3.1 unified: 10.1.2 transitivePeerDependencies: - supports-color - dev: true - - /remark-parse@8.0.3: - resolution: {integrity: sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==} - dependencies: - ccount: 1.1.0 - collapse-white-space: 1.0.6 - is-alphabetical: 1.0.4 - is-decimal: 1.0.4 - is-whitespace-character: 1.0.4 - is-word-character: 1.0.4 - markdown-escapes: 1.0.4 - parse-entities: 2.0.0 - repeat-string: 1.6.1 - state-toggle: 1.0.3 - trim: 1.0.1 - trim-trailing-lines: 1.1.4 - unherit: 1.1.3 - unist-util-remove-position: 2.0.1 - vfile-location: 3.2.0 - xtend: 4.0.2 - dev: true - /remark-rehype@10.1.0: - resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==} + remark-parse@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.1 + micromark-util-types: 2.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-rehype@10.1.0: dependencies: '@types/hast': 2.3.4 '@types/mdast': 3.0.11 mdast-util-to-hast: 12.3.0 unified: 10.1.2 - dev: true - - /remark-slug@6.1.0: - resolution: {integrity: sha512-oGCxDF9deA8phWvxFuyr3oSJsdyUAxMFbA0mZ7Y1Sas+emILtO+e5WutF9564gDsEN4IXaQXm5pFo6MLH+YmwQ==} - dependencies: - github-slugger: 1.5.0 - mdast-util-to-string: 1.1.0 - unist-util-visit: 2.0.3 - dev: true - /remark-squeeze-paragraphs@4.0.0: - resolution: {integrity: sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw==} + remark-stringify@11.0.0: dependencies: - mdast-squeeze-paragraphs: 4.0.0 - dev: true + '@types/mdast': 4.0.4 + mdast-util-to-markdown: 2.1.0 + unified: 11.0.5 - /remove-bom-buffer@3.0.0: - resolution: {integrity: sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==} - engines: {node: '>=0.10.0'} + remove-bom-buffer@3.0.0: dependencies: is-buffer: 1.1.6 is-utf8: 0.2.1 - dev: true - /remove-bom-stream@1.2.0: - resolution: {integrity: sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==} - engines: {node: '>= 0.10'} + remove-bom-stream@1.2.0: dependencies: remove-bom-buffer: 3.0.0 safe-buffer: 5.2.1 through2: 2.0.5 - dev: true - - /remove-trailing-separator@1.1.0: - resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} - dev: true - - /repeat-element@1.1.4: - resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} - engines: {node: '>=0.10.0'} - dev: true - /repeat-string@1.6.1: - resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} - engines: {node: '>=0.10'} - dev: true + remove-trailing-separator@1.1.0: {} - /replace-ext@1.0.1: - resolution: {integrity: sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==} - engines: {node: '>= 0.10'} - dev: true + replace-ext@1.0.1: {} - /require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - dev: true + require-directory@2.1.1: {} - /require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - dev: true + require-from-string@2.0.2: {} - /require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - dev: true + require-main-filename@2.0.0: {} - /requireindex@1.2.0: - resolution: {integrity: sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==} - engines: {node: '>=0.10.5'} - dev: true + requireindex@1.2.0: {} - /reselect@4.1.7: - resolution: {integrity: sha512-Zu1xbUt3/OPwsXL46hvOOoQrap2azE7ZQbokq61BQfiXvhewsKDwhMeZjTX9sX0nvw1t/U5Audyn1I9P/m9z0A==} - dev: false + reselect@4.1.7: {} - /resize-observer-polyfill@1.5.1: - resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} - dev: false + resize-observer-polyfill@1.5.1: {} - /resolve-alpn@1.2.1: - resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} - dev: true + resolve-alpn@1.2.1: {} - /resolve-cwd@3.0.0: - resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} - engines: {node: '>=8'} + resolve-cwd@3.0.0: dependencies: resolve-from: 5.0.0 - dev: true - /resolve-dir@0.1.1: - resolution: {integrity: sha512-QxMPqI6le2u0dCLyiGzgy92kjkkL6zO0XyvHzjdTNH3zM6e5Hz3BwG6+aEyNgiQ5Xz6PwTwgQEj3U50dByPKIA==} - engines: {node: '>=0.10.0'} + resolve-dir@0.1.1: dependencies: expand-tilde: 1.2.2 global-modules: 0.2.3 - dev: true - /resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} + resolve-from@4.0.0: {} - /resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - dev: true + resolve-from@5.0.0: {} - /resolve-options@1.1.0: - resolution: {integrity: sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==} - engines: {node: '>= 0.10'} + resolve-options@1.1.0: dependencies: value-or-function: 3.0.0 - dev: true - /resolve-pathname@3.0.0: - resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==} - dev: false + resolve-pathname@3.0.0: {} - /resolve-url@0.2.1: - resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} - deprecated: https://github.com/lydell/resolve-url#deprecated - dev: true + resolve.exports@2.0.2: {} - /resolve.exports@1.1.1: - resolution: {integrity: sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==} - engines: {node: '>=10'} - dev: true + resolve@1.22.2: + dependencies: + is-core-module: 2.15.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 - /resolve@1.22.2: - resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} - hasBin: true + resolve@1.22.8: dependencies: - is-core-module: 2.12.1 + is-core-module: 2.15.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - /resolve@2.0.0-next.4: - resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} - hasBin: true + resolve@2.0.0-next.4: dependencies: is-core-module: 2.12.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - dev: true - /responselike@2.0.1: - resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} + responselike@2.0.1: dependencies: lowercase-keys: 2.0.0 - dev: true - /restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} + restore-cursor@3.1.0: dependencies: onetime: 5.1.2 signal-exit: 3.0.7 - dev: true - /ret@0.1.15: - resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} - engines: {node: '>=0.12'} - dev: true + ret@0.1.15: {} - /reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: true + reusify@1.0.4: {} - /rfdc@1.3.0: - resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} - dev: true + rfdc@1.3.0: {} - /rimraf@2.6.3: - resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} - hasBin: true + rimraf@2.6.3: dependencies: glob: 7.2.3 - dev: true - /rimraf@2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - hasBin: true + rimraf@2.7.1: dependencies: glob: 7.2.3 - dev: true - /rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true + rimraf@3.0.2: dependencies: glob: 7.2.3 - dev: true - /ripemd160@2.0.2: - resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} - dependencies: - hash-base: 3.1.0 - inherits: 2.0.4 - dev: true - - /robust-predicates@3.0.2: - resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} - dev: false + robust-predicates@3.0.2: {} - /rollup-plugin-terser@7.0.2(rollup@2.79.1): - resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==} - deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser - peerDependencies: - rollup: ^2.0.0 + rollup-plugin-terser@7.0.2(rollup@2.79.1): dependencies: - '@babel/code-frame': 7.22.13 + '@babel/code-frame': 7.25.9 jest-worker: 26.6.2 rollup: 2.79.1 serialize-javascript: 4.0.0 terser: 5.18.2 - dev: true - /rollup@2.79.1: - resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} - engines: {node: '>=10.0.0'} - hasBin: true + rollup@2.79.1: optionalDependencies: fsevents: 2.3.2 - dev: true - /rollup@3.25.3: - resolution: {integrity: sha512-ZT279hx8gszBj9uy5FfhoG4bZx8c+0A1sbqtr7Q3KNWIizpTdDEPZbV2xcbvHsnFp4MavCQYZyzApJ+virB8Yw==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true + rollup@3.25.3: optionalDependencies: fsevents: 2.3.2 - dev: true - /rrule@2.7.2: - resolution: {integrity: sha512-NkBsEEB6FIZOZ3T8frvEBOB243dm46SPufpDckY/Ap/YH24V1zLeMmDY8OA10lk452NdrF621+ynDThE7FQU2A==} + rollup@3.29.5: + optionalDependencies: + fsevents: 2.3.2 + + rrule@2.7.2: dependencies: tslib: 2.6.0 - dev: false - /rsvp@3.2.1: - resolution: {integrity: sha512-Rf4YVNYpKjZ6ASAmibcwTNciQ5Co5Ztq6iZPEykHpkoflnD/K5ryE/rHehFsTm4NJj8nKDhbi3eKBWGogmNnkg==} - dev: true + rsvp@3.2.1: {} - /rsvp@4.8.5: - resolution: {integrity: sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==} - engines: {node: 6.* || >= 7.*} - dev: true + rsvp@4.8.5: {} - /run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 - dev: true - - /run-queue@1.0.3: - resolution: {integrity: sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==} - dependencies: - aproba: 1.2.0 - dev: true - - /rw@1.3.3: - resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} - dev: false - /rxjs@6.6.7: - resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} - engines: {npm: '>=2.0.0'} - dependencies: - tslib: 1.14.1 - dev: true + rw@1.3.3: {} - /rxjs@7.8.1: - resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + rxjs@7.8.1: dependencies: - tslib: 2.6.0 - dev: true + tslib: 2.8.0 - /sade@1.8.1: - resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} - engines: {node: '>=6'} + sade@1.8.1: dependencies: mri: 1.2.0 - dev: true - /safe-buffer@5.1.1: - resolution: {integrity: sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==} - dev: true - - /safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + safe-buffer@5.1.2: {} - /safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: true + safe-buffer@5.2.1: {} - /safe-regex-test@1.0.0: - resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + safe-regex-test@1.0.0: dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.1 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 is-regex: 1.1.4 - dev: true - /safe-regex@1.1.0: - resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} - dependencies: - ret: 0.1.15 - dev: true - - /safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + safer-buffer@2.1.2: {} - /sass@1.56.1: - resolution: {integrity: sha512-VpEyKpyBPCxE7qGDtOcdJ6fFbcpOM+Emu7uZLxVrkX8KVU/Dp5UF7WLvzqRuUhB6mqqQt1xffLoG+AndxTZrCQ==} - engines: {node: '>=12.0.0'} - hasBin: true + sass@1.56.1: dependencies: chokidar: 3.5.3 immutable: 4.3.0 source-map-js: 1.0.2 - dev: true - /scheduler@0.23.0: - resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + scheduler@0.23.0: dependencies: loose-envify: 1.4.0 - /schema-utils@1.0.0: - resolution: {integrity: sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==} - engines: {node: '>= 4'} - dependencies: - ajv: 6.12.6 - ajv-errors: 1.0.1(ajv@6.12.6) - ajv-keywords: 3.5.2(ajv@6.12.6) - dev: true - - /schema-utils@2.7.0: - resolution: {integrity: sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==} - engines: {node: '>= 8.9.0'} - dependencies: - '@types/json-schema': 7.0.12 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) - dev: true - - /schema-utils@2.7.1: - resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==} - engines: {node: '>= 8.9.0'} + schema-utils@2.7.1: dependencies: '@types/json-schema': 7.0.12 ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) - dev: true - /schema-utils@3.3.0: - resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} - engines: {node: '>= 10.13.0'} + schema-utils@3.3.0: dependencies: '@types/json-schema': 7.0.12 ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) - dev: true - /selderee@0.6.0: - resolution: {integrity: sha512-ibqWGV5aChDvfVdqNYuaJP/HnVBhlRGSRrlbttmlMpHcLuTqqbMH36QkSs9GEgj5M88JDYLI8eyP94JaQ8xRlg==} + selderee@0.6.0: dependencies: parseley: 0.7.0 - dev: true - /semver@7.5.3: - resolution: {integrity: sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==} - engines: {node: '>=10'} - hasBin: true + semver@7.5.3: dependencies: lru-cache: 6.0.0 - /send@0.18.0: - resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} - engines: {node: '>= 0.8.0'} + semver@7.6.3: {} + + send@0.19.0: dependencies: debug: 2.6.9 depd: 2.0.0 @@ -19342,293 +16260,131 @@ packages: statuses: 2.0.1 transitivePeerDependencies: - supports-color - dev: true - /serialize-javascript@4.0.0: - resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} + serialize-javascript@4.0.0: dependencies: randombytes: 2.1.0 - dev: true - /serialize-javascript@6.0.1: - resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} + serialize-javascript@6.0.1: dependencies: randombytes: 2.1.0 - dev: true - - /serve-favicon@2.5.0: - resolution: {integrity: sha512-FMW2RvqNr03x+C0WxTyu6sOv21oOjkq5j8tjquWccwa6ScNyGFOGJVpuS1NmTVGBAHS07xnSKotgf2ehQmf9iA==} - engines: {node: '>= 0.8.0'} - dependencies: - etag: 1.8.1 - fresh: 0.5.2 - ms: 2.1.1 - parseurl: 1.3.3 - safe-buffer: 5.1.1 - dev: true - /serve-static@1.15.0: - resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} - engines: {node: '>= 0.8.0'} + serve-static@1.16.2: dependencies: - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 parseurl: 1.3.3 - send: 0.18.0 + send: 0.19.0 transitivePeerDependencies: - supports-color - dev: true - /set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - dev: true + set-blocking@2.0.0: {} - /set-function-length@1.1.1: - resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} - engines: {node: '>= 0.4'} + set-function-length@1.1.1: dependencies: define-data-property: 1.1.1 get-intrinsic: 1.2.1 gopd: 1.0.1 has-property-descriptors: 1.0.0 - dev: true - /set-value@2.0.1: - resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} - engines: {node: '>=0.10.0'} + set-function-length@1.2.2: dependencies: - extend-shallow: 2.0.1 - is-extendable: 0.1.1 - is-plain-object: 2.0.4 - split-string: 3.1.0 - dev: true - - /setimmediate@1.0.5: - resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + 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 - /setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - dev: true + setimmediate@1.0.5: {} - /sha.js@2.4.11: - resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} - hasBin: true - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - dev: true + setprototypeof@1.2.0: {} - /shallow-clone@3.0.1: - resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} - engines: {node: '>=8'} + shallow-clone@3.0.1: dependencies: kind-of: 6.0.3 - dev: true - /shallow-compare@1.2.2: - resolution: {integrity: sha512-LUMFi+RppPlrHzbqmFnINTrazo0lPNwhcgzuAXVVcfy/mqPDrQmHAyz5bvV0gDAuRFrk804V0HpQ6u9sZ0tBeg==} - dev: false + shallow-compare@1.2.2: {} - /shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 - dev: true - - /shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - dev: true - /shelljs@0.8.5: - resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} - engines: {node: '>=4'} - hasBin: true - dependencies: - glob: 7.2.3 - interpret: 1.4.0 - rechoir: 0.6.2 - dev: true + shebang-regex@3.0.0: {} - /side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + side-channel@1.0.4: dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.1 object-inspect: 1.12.3 - dev: true - - /siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - dev: true - /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - dev: true - - /simple-update-notifier@1.1.0: - resolution: {integrity: sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==} - engines: {node: '>=8.10.0'} + side-channel@1.0.6: dependencies: - semver: 7.5.3 - dev: true + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.2 - /sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - dev: true + siginfo@2.0.0: {} - /slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - dev: true + signal-exit@3.0.7: {} - /slash@5.1.0: - resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} - engines: {node: '>=14.16'} - dev: true + sisteransi@1.0.5: {} - /slice-ansi@3.0.0: - resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} - engines: {node: '>=8'} + slash@3.0.0: {} + + slash@5.1.0: {} + + slice-ansi@3.0.0: dependencies: ansi-styles: 4.3.0 astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 - dev: true - /slice-ansi@4.0.0: - resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} - engines: {node: '>=10'} + slice-ansi@4.0.0: dependencies: ansi-styles: 4.3.0 astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 - dev: true - /slice-ansi@5.0.0: - resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} - engines: {node: '>=12'} + slice-ansi@5.0.0: dependencies: ansi-styles: 6.2.1 is-fullwidth-code-point: 4.0.0 - dev: true - - /snapdragon-node@2.1.1: - resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} - engines: {node: '>=0.10.0'} - dependencies: - define-property: 1.0.0 - isobject: 3.0.1 - snapdragon-util: 3.0.1 - dev: true - - /snapdragon-util@3.0.1: - resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: true - - /snapdragon@0.8.2: - resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} - engines: {node: '>=0.10.0'} - dependencies: - base: 0.11.2 - debug: 2.6.9 - define-property: 0.2.5 - extend-shallow: 2.0.1 - map-cache: 0.2.2 - source-map: 0.5.7 - source-map-resolve: 0.5.3 - use: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - /sort-keys@4.2.0: - resolution: {integrity: sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==} - engines: {node: '>=8'} + sort-keys@4.2.0: dependencies: is-plain-obj: 2.1.0 - dev: true - - /source-list-map@2.0.1: - resolution: {integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==} - dev: true - /source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} - engines: {node: '>=0.10.0'} - dev: true + source-map-js@1.0.2: {} - /source-map-resolve@0.5.3: - resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} - deprecated: See https://github.com/lydell/source-map-resolve#deprecated - dependencies: - atob: 2.1.2 - decode-uri-component: 0.2.2 - resolve-url: 0.2.1 - source-map-url: 0.4.1 - urix: 0.1.0 - dev: true + source-map-js@1.2.1: {} - /source-map-support@0.5.13: - resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + source-map-support@0.5.13: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - dev: true - /source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + source-map-support@0.5.21: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - dev: true - - /source-map-url@0.4.1: - resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} - deprecated: See https://github.com/lydell/source-map-url#deprecated - dev: true - /source-map@0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} + source-map@0.5.7: {} - /source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - dev: true + source-map@0.6.1: {} - /source-map@0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} - engines: {node: '>= 8'} - dev: true + source-map@0.7.4: {} - /source-map@0.8.0-beta.0: - resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} - engines: {node: '>= 8'} + source-map@0.8.0-beta.0: dependencies: whatwg-url: 7.1.0 - dev: true - /sourcemap-codec@1.4.8: - resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} - deprecated: Please use @jridgewell/sourcemap-codec instead - dev: true + sourcemap-codec@1.4.8: {} - /space-separated-tokens@1.1.5: - resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==} - dev: true - - /space-separated-tokens@2.0.2: - resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - dev: true + space-separated-tokens@2.0.2: {} - /spawn-wrap@2.0.0: - resolution: {integrity: sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==} - engines: {node: '>=8'} + spawn-wrap@2.0.0: dependencies: foreground-child: 2.0.0 is-windows: 1.0.2 @@ -19636,10 +16392,8 @@ packages: rimraf: 3.0.2 signal-exit: 3.0.7 which: 2.0.2 - dev: true - /spawnd@5.0.0: - resolution: {integrity: sha512-28+AJr82moMVWolQvlAIv3JcYDkjkFTEmfDc503wxrF5l2rQ3dFz6DpbXp3kD4zmgGGldfM4xM4v1sFj/ZaIOA==} + spawnd@5.0.0: dependencies: exit: 0.1.2 signal-exit: 3.0.7 @@ -19647,180 +16401,88 @@ packages: wait-port: 0.2.14 transitivePeerDependencies: - supports-color - dev: true - - /spdx-correct@3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} - dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.13 - dev: true - - /spdx-exceptions@2.3.0: - resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} - dev: true - - /spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - dependencies: - spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.13 - dev: true - - /spdx-license-ids@3.0.13: - resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} - dev: true - - /split-string@3.1.0: - resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 3.0.2 - dev: true - - /sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - dev: true - - /sprintf-js@1.1.2: - resolution: {integrity: sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==} - dev: true - /ssri@6.0.2: - resolution: {integrity: sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==} - dependencies: - figgy-pudding: 3.5.2 - dev: true + sprintf-js@1.0.3: {} - /stable@0.1.8: - resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} - deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' - dev: true + sprintf-js@1.1.2: {} - /stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} + stack-utils@2.0.6: dependencies: escape-string-regexp: 2.0.0 - dev: true - - /stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - dev: true - - /state-toggle@1.0.3: - resolution: {integrity: sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==} - dev: true - /static-extend@0.1.2: - resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} - engines: {node: '>=0.10.0'} - dependencies: - define-property: 0.2.5 - object-copy: 0.1.0 - dev: true + stackback@0.0.2: {} - /statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} - dev: true + statuses@2.0.1: {} - /std-env@3.4.3: - resolution: {integrity: sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==} - dev: true + std-env@3.4.3: {} - /stop-iteration-iterator@1.0.0: - resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} - engines: {node: '>= 0.4'} + stop-iteration-iterator@1.0.0: dependencies: internal-slot: 1.0.5 - dev: true - - /store2@2.14.2: - resolution: {integrity: sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==} - dev: true - /storybook@7.0.27: - resolution: {integrity: sha512-hp6lBETyC9uHFH0/RYU7v9Ga+e00VlaOA6/hKOFCoO1AH4/3J5/+Ey/uYslyAjCMIFsrqz7jyJjBzcUG/Ps+6g==} - hasBin: true + storybook@8.2.8(@babel/preset-env@7.25.9(@babel/core@7.25.9)): dependencies: - '@storybook/cli': 7.0.27 + '@babel/core': 7.25.9 + '@babel/types': 7.25.9 + '@storybook/codemod': 8.2.8 + '@storybook/core': 8.2.8 + '@types/semver': 7.5.0 + '@yarnpkg/fslib': 2.10.3 + '@yarnpkg/libzip': 2.3.0 + chalk: 4.1.2 + commander: 6.2.1 + cross-spawn: 7.0.3 + detect-indent: 6.1.0 + envinfo: 7.10.0 + execa: 5.1.1 + fd-package-json: 1.2.0 + find-up: 5.0.0 + fs-extra: 11.1.1 + giget: 1.1.2 + globby: 14.0.2 + jscodeshift: 0.15.2(@babel/preset-env@7.25.9(@babel/core@7.25.9)) + leven: 3.1.0 + ora: 5.4.1 + prettier: 3.3.3 + prompts: 2.4.2 + semver: 7.5.3 + strip-json-comments: 3.1.1 + tempy: 3.1.0 + tiny-invariant: 1.3.1 + ts-dedent: 2.2.0 transitivePeerDependencies: + - '@babel/preset-env' - bufferutil - - encoding - supports-color - utf-8-validate - dev: true - /stream-browserify@2.0.2: - resolution: {integrity: sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==} - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.8 - dev: true - - /stream-each@1.2.3: - resolution: {integrity: sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==} - dependencies: - end-of-stream: 1.4.4 - stream-shift: 1.0.1 - dev: true - - /stream-http@2.8.3: - resolution: {integrity: sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==} - dependencies: - builtin-status-codes: 3.0.0 - inherits: 2.0.4 - readable-stream: 2.3.8 - to-arraybuffer: 1.0.1 - xtend: 4.0.2 - dev: true + stream-shift@1.0.1: {} - /stream-shift@1.0.1: - resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} - dev: true - - /string-argv@0.3.2: - resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} - engines: {node: '>=0.6.19'} - dev: true + string-argv@0.3.2: {} - /string-length@4.0.2: - resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} - engines: {node: '>=10'} + string-length@4.0.2: dependencies: char-regex: 1.0.2 strip-ansi: 6.0.1 - dev: true - /string-length@5.0.1: - resolution: {integrity: sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==} - engines: {node: '>=12.20'} + string-length@5.0.1: dependencies: char-regex: 2.0.1 strip-ansi: 7.1.0 - dev: true - /string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - dev: true - /string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} + string-width@5.1.2: dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 strip-ansi: 7.1.0 - dev: true - /string.prototype.matchall@4.0.8: - resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} + string.prototype.matchall@4.0.8: dependencies: call-bind: 1.0.5 define-properties: 1.2.0 @@ -19830,224 +16492,116 @@ packages: internal-slot: 1.0.5 regexp.prototype.flags: 1.5.0 side-channel: 1.0.4 - dev: true - /string.prototype.trim@1.2.7: - resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} - engines: {node: '>= 0.4'} + string.prototype.trim@1.2.7: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.0 es-abstract: 1.21.2 - dev: true - /string.prototype.trimend@1.0.6: - resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} + string.prototype.trimend@1.0.6: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.0 es-abstract: 1.21.2 - dev: true - /string.prototype.trimstart@1.0.6: - resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} + string.prototype.trimstart@1.0.6: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.0 es-abstract: 1.21.2 - dev: true - /string_decoder@0.10.31: - resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} - dev: true + string_decoder@0.10.31: {} - /string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + string_decoder@1.1.1: dependencies: safe-buffer: 5.1.2 - /string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + string_decoder@1.3.0: dependencies: safe-buffer: 5.2.1 - dev: true - /stringify-entities@4.0.3: - resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} + stringify-entities@4.0.3: dependencies: character-entities-html4: 2.1.0 character-entities-legacy: 3.0.0 - dev: true - /stringify-object@3.3.0: - resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} - engines: {node: '>=4'} + stringify-object@3.3.0: dependencies: get-own-enumerable-property-symbols: 3.0.2 is-obj: 1.0.1 is-regexp: 1.0.0 - dev: true - /strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 - dev: true - /strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} + strip-ansi@7.1.0: dependencies: ansi-regex: 6.0.1 - dev: true - /strip-bom@4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - dev: true + strip-bom@3.0.0: {} - /strip-comments@2.0.1: - resolution: {integrity: sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==} - engines: {node: '>=10'} - dev: true + strip-bom@4.0.0: {} - /strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - dev: true + strip-comments@2.0.1: {} - /strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} + strip-final-newline@2.0.0: {} + + strip-indent@3.0.0: dependencies: min-indent: 1.0.1 - dev: true - - /strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - dev: true - /strip-literal@1.3.0: - resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} + strip-indent@4.0.0: dependencies: - acorn: 8.10.0 - dev: true + min-indent: 1.0.1 + + strip-json-comments@3.1.1: {} - /style-to-object@0.3.0: - resolution: {integrity: sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==} + strip-literal@1.3.0: dependencies: - inline-style-parser: 0.1.1 - dev: true + acorn: 8.10.0 - /style-to-object@0.4.1: - resolution: {integrity: sha512-HFpbb5gr2ypci7Qw+IOhnP2zOU7e77b+rzM+wTzXzfi1PrtBCX0E7Pk4wL4iTLnhzZ+JgEGAhX81ebTg/aYjQw==} + style-to-object@0.4.1: dependencies: inline-style-parser: 0.1.1 - dev: true - /style-value-types@5.0.0: - resolution: {integrity: sha512-08yq36Ikn4kx4YU6RD7jWEv27v4V+PUsOGa4n/as8Et3CuODMJQ00ENeAVXAeydX4Z2j1XHZF1K2sX4mGl18fA==} + style-value-types@5.0.0: dependencies: hey-listen: 1.0.8 tslib: 2.6.0 - dev: false - /stylis@4.1.3: - resolution: {integrity: sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==} + stylis@4.1.3: {} - /stylis@4.2.0: - resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} - dev: false + stylis@4.2.0: {} - /supercluster@7.1.5: - resolution: {integrity: sha512-EulshI3pGUM66o6ZdH3ReiFcvHpM3vAigyK+vcxdjpJyEbIIrtbmBdY23mGgnI24uXiGFvrGq9Gkum/8U7vJWg==} + supercluster@7.1.5: dependencies: kdbush: 3.0.0 - dev: false - /supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} + supports-color@5.5.0: dependencies: has-flag: 3.0.0 - /supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - dev: true - - /supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} + supports-color@7.2.0: dependencies: has-flag: 4.0.0 - dev: true - - /supports-color@9.3.1: - resolution: {integrity: sha512-knBY82pjmnIzK3NifMo3RxEIRD9E0kIzV4BKcyTZ9+9kWgLMxd4PrsTSMoFQUabgRBbF8KOLRDCyKgNV+iK44Q==} - engines: {node: '>=12'} - /supports-hyperlinks@2.3.0: - resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} - engines: {node: '>=8'} + supports-color@8.1.1: dependencies: has-flag: 4.0.0 - supports-color: 7.2.0 - dev: true - - /supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - /svg-parser@2.0.4: - resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} - dev: true - /symlink-or-copy@1.3.1: - resolution: {integrity: sha512-0K91MEXFpBUaywiwSSkmKjnGcasG/rVBXFLJz5DrgGabpYD6N+3yZrfD6uUIfpuTu65DZLHi7N8CizHc07BPZA==} - dev: true - - /synchronous-promise@2.0.17: - resolution: {integrity: sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g==} - dev: true + supports-color@9.3.1: {} - /tapable@1.1.3: - resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} - engines: {node: '>=6'} - dev: true + supports-preserve-symlinks-flag@1.0.0: {} - /tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} - dev: true + svg-parser@2.0.4: {} - /tar-fs@2.1.1: - resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} - dependencies: - chownr: 1.1.4 - mkdirp-classic: 0.5.3 - pump: 3.0.0 - tar-stream: 2.2.0 - dev: true + symlink-or-copy@1.3.1: {} - /tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} - dependencies: - bl: 4.1.0 - end-of-stream: 1.4.4 - fs-constants: 1.0.0 - inherits: 2.0.4 - readable-stream: 3.6.2 - dev: true + tapable@2.2.1: {} - /tar@6.1.15: - resolution: {integrity: sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==} - engines: {node: '>=10'} + tar@6.1.15: dependencies: chownr: 2.0.0 fs-minipass: 2.1.0 @@ -20055,533 +16609,229 @@ packages: minizlib: 2.1.2 mkdirp: 1.0.4 yallist: 4.0.0 - dev: true - - /telejson@6.0.8: - resolution: {integrity: sha512-nerNXi+j8NK1QEfBHtZUN/aLdDcyupA//9kAboYLrtzZlPLpUfqbVGWb9zz91f/mIjRbAYhbgtnJHY8I1b5MBg==} - dependencies: - '@types/is-function': 1.0.1 - global: 4.4.0 - is-function: 1.0.2 - is-regex: 1.1.4 - is-symbol: 1.0.4 - isobject: 4.0.0 - lodash: 4.17.21 - memoizerific: 1.11.3 - dev: true - /telejson@7.1.0: - resolution: {integrity: sha512-jFJO4P5gPebZAERPkJsqMAQ0IMA1Hi0AoSfxpnUaV6j6R2SZqlpkbS20U6dEUtA3RUYt2Ak/mTlkQzHH9Rv/hA==} + telejson@7.2.0: dependencies: memoizerific: 1.11.3 - dev: true - /telejson@7.2.0: - resolution: {integrity: sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==} - dependencies: - memoizerific: 1.11.3 - dev: true + temp-dir@2.0.0: {} - /temp-dir@2.0.0: - resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} - engines: {node: '>=8'} - dev: true + temp-dir@3.0.0: {} - /temp@0.8.4: - resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} - engines: {node: '>=6.0.0'} + temp@0.8.4: dependencies: rimraf: 2.6.3 - dev: true - /tempy@0.6.0: - resolution: {integrity: sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==} - engines: {node: '>=10'} - dependencies: - is-stream: 2.0.1 - temp-dir: 2.0.0 - type-fest: 0.16.0 - unique-string: 2.0.0 - dev: true - - /tempy@1.0.1: - resolution: {integrity: sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==} - engines: {node: '>=10'} + tempy@0.6.0: dependencies: - del: 6.1.1 is-stream: 2.0.1 temp-dir: 2.0.0 type-fest: 0.16.0 unique-string: 2.0.0 - dev: true - - /terminal-link@2.1.1: - resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} - engines: {node: '>=8'} - dependencies: - ansi-escapes: 4.3.2 - supports-hyperlinks: 2.3.0 - dev: true - /terser-webpack-plugin@1.4.5(webpack@4.46.0): - resolution: {integrity: sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==} - engines: {node: '>= 6.9.0'} - peerDependencies: - webpack: ^4.0.0 + tempy@3.1.0: dependencies: - cacache: 12.0.4 - find-cache-dir: 2.1.0 - is-wsl: 1.1.0 - schema-utils: 1.0.0 - serialize-javascript: 4.0.0 - source-map: 0.6.1 - terser: 4.8.1 - webpack: 4.46.0 - webpack-sources: 1.4.3 - worker-farm: 1.7.0 - dev: true + is-stream: 3.0.0 + temp-dir: 3.0.0 + type-fest: 2.19.0 + unique-string: 3.0.0 - /terser-webpack-plugin@5.3.9(esbuild@0.17.19)(webpack@5.88.0): - resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true + terser-webpack-plugin@5.3.9(@swc/core@1.7.39)(esbuild@0.18.20)(webpack@5.88.0(@swc/core@1.7.39)(esbuild@0.18.20)): dependencies: - '@jridgewell/trace-mapping': 0.3.18 - esbuild: 0.17.19 + '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.1 terser: 5.18.2 - webpack: 5.88.0(esbuild@0.17.19) - dev: true - - /terser@4.8.1: - resolution: {integrity: sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - acorn: 8.10.0 - commander: 2.20.3 - source-map: 0.6.1 - source-map-support: 0.5.21 - dev: true + webpack: 5.88.0(@swc/core@1.7.39)(esbuild@0.18.20) + optionalDependencies: + '@swc/core': 1.7.39 + esbuild: 0.18.20 - /terser@5.18.2: - resolution: {integrity: sha512-Ah19JS86ypbJzTzvUCX7KOsEIhDaRONungA4aYBjEP3JZRf4ocuDzTg4QWZnPn9DEMiMYGJPiSOy7aykoCc70w==} - engines: {node: '>=10'} - hasBin: true + terser@5.18.2: dependencies: '@jridgewell/source-map': 0.3.3 - acorn: 8.10.0 + acorn: 8.13.0 commander: 2.20.3 source-map-support: 0.5.21 - dev: true - /test-exclude@6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} + test-exclude@6.0.0: dependencies: '@istanbuljs/schema': 0.1.3 glob: 7.2.3 minimatch: 3.1.2 - dev: true - /text-segmentation@1.0.3: - resolution: {integrity: sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==} + text-segmentation@1.0.3: dependencies: utrie: 1.0.2 - dev: false - /text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - dev: true + text-table@0.2.0: {} - /through2-filter@3.0.0: - resolution: {integrity: sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==} + through2-filter@3.0.0: dependencies: through2: 2.0.5 xtend: 4.0.2 - dev: true - /through2@2.0.5: - resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + through2@2.0.5: dependencies: readable-stream: 2.3.8 xtend: 4.0.2 - dev: true - /through2@4.0.2: - resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} + through2@4.0.2: dependencies: readable-stream: 3.6.2 - dev: true - - /through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - dev: true - /timers-browserify@2.0.12: - resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==} - engines: {node: '>=0.6.0'} - dependencies: - setimmediate: 1.0.5 - dev: true + through@2.3.8: {} - /tiny-invariant@1.3.1: - resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} - dev: false + tiny-invariant@1.3.1: {} - /tiny-warning@1.0.3: - resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} - dev: false + tiny-invariant@1.3.3: {} - /tinybench@2.5.1: - resolution: {integrity: sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==} - dev: true + tiny-warning@1.0.3: {} - /tinypool@0.7.0: - resolution: {integrity: sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==} - engines: {node: '>=14.0.0'} - dev: true + tinybench@2.5.1: {} - /tinyrainbow@1.2.0: - resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} - engines: {node: '>=14.0.0'} - dev: true + tinypool@0.7.0: {} - /tinyspy@2.2.0: - resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} - engines: {node: '>=14.0.0'} - dev: true + tinyspy@2.2.0: {} - /tlds@1.231.0: - resolution: {integrity: sha512-L7UQwueHSkGxZHQBXHVmXW64oi+uqNtzFt2x6Ssk7NVnpIbw16CRs4eb/jmKOZ9t2JnqZ/b3Cfvo97lnXqKrhw==} - hasBin: true - dev: true + tlds@1.231.0: {} - /tmpl@1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - dev: true + tmpl@1.0.5: {} - /to-absolute-glob@2.0.2: - resolution: {integrity: sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==} - engines: {node: '>=0.10.0'} + to-absolute-glob@2.0.2: dependencies: is-absolute: 1.0.0 is-negated-glob: 1.0.0 - dev: true - - /to-arraybuffer@1.0.1: - resolution: {integrity: sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==} - dev: true - - /to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - - /to-object-path@0.3.0: - resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: true - /to-regex-range@2.1.1: - resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} - engines: {node: '>=0.10.0'} - dependencies: - is-number: 3.0.0 - repeat-string: 1.6.1 - dev: true + to-fast-properties@2.0.0: {} - /to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 - dev: true - - /to-regex@3.0.2: - resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} - engines: {node: '>=0.10.0'} - dependencies: - define-property: 2.0.2 - extend-shallow: 3.0.2 - regex-not: 1.0.2 - safe-regex: 1.1.0 - dev: true - /to-through@2.0.0: - resolution: {integrity: sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==} - engines: {node: '>= 0.10'} + to-through@2.0.0: dependencies: through2: 2.0.5 - dev: true - - /toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} - dev: true - /tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - dev: true + toidentifier@1.0.1: {} - /tr46@1.0.1: - resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} + tr46@1.0.1: dependencies: punycode: 2.3.0 - dev: true - - /tree-kill@1.2.2: - resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} - hasBin: true - dev: true - - /trim-lines@3.0.1: - resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - dev: true - /trim-trailing-lines@1.1.4: - resolution: {integrity: sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==} - dev: true + tree-kill@1.2.2: {} - /trim@1.0.1: - resolution: {integrity: sha512-3JVP2YVqITUisXblCDq/Bi4P9457G/sdEamInkyvCsjbTcXLXIiG7XCb4kGMFWh6JGXesS3TKxOPtrncN/xe8w==} - deprecated: Use String.prototype.trim() instead - dev: true + trim-lines@3.0.1: {} - /trough@1.0.5: - resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==} - dev: true + trough@2.1.0: {} - /trough@2.1.0: - resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} - dev: true + ts-dedent@2.2.0: {} - /ts-dedent@2.2.0: - resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} - engines: {node: '>=6.10'} - dev: true + tsconfig-paths@4.2.0: + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 - /tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + tslib@1.14.1: {} - /tslib@2.6.0: - resolution: {integrity: sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==} + tslib@2.6.0: {} - /tslib@2.8.0: - resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==} - dev: false + tslib@2.8.0: {} - /tsutils@3.21.0(typescript@4.9.5): - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - 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' + tsutils@3.21.0(typescript@4.9.5): dependencies: tslib: 1.14.1 typescript: 4.9.5 - dev: true - - /tty-browserify@0.0.0: - resolution: {integrity: sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==} - dev: true - - /type-check@0.3.2: - resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.1.2 - dev: true - /type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 - dev: true - /type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - dev: true + type-detect@4.0.8: {} - /type-fest@0.16.0: - resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} - engines: {node: '>=10'} - dev: true + type-fest@0.16.0: {} - /type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - dev: true + type-fest@0.20.2: {} - /type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - dev: true + type-fest@0.21.3: {} - /type-fest@0.6.0: - resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} - engines: {node: '>=8'} - dev: true + type-fest@0.8.1: {} - /type-fest@0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} - engines: {node: '>=8'} - dev: true + type-fest@1.4.0: {} - /type-fest@2.19.0: - resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} - engines: {node: '>=12.20'} - dev: true + type-fest@2.19.0: {} - /type-fest@3.12.0: - resolution: {integrity: sha512-qj9wWsnFvVEMUDbESiilKeXeHL7FwwiFcogfhfyjmvT968RXSvnl23f1JOClTHYItsi7o501C/7qVllscUP3oA==} - engines: {node: '>=14.16'} - dev: true + type-fest@3.12.0: {} - /type-is@1.6.18: - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} - engines: {node: '>= 0.6'} + type-is@1.6.18: dependencies: media-typer: 0.3.0 mime-types: 2.1.35 - dev: true - /type@1.2.0: - resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==} - dev: false + type@1.2.0: {} - /type@2.7.2: - resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} - dev: false + type@2.7.2: {} - /typed-array-length@1.0.4: - resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + typed-array-length@1.0.4: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 for-each: 0.3.3 is-typed-array: 1.1.12 - dev: true - /typedarray-to-buffer@3.1.5: - resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + typedarray-to-buffer@3.1.5: dependencies: is-typedarray: 1.0.0 - dev: true - /typedarray@0.0.6: - resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - dev: true + typedarray@0.0.6: {} - /typescript-compare@0.0.2: - resolution: {integrity: sha512-8ja4j7pMHkfLJQO2/8tut7ub+J3Lw2S3061eJLFQcvs3tsmJKp8KG5NtpLn7KcY2w08edF74BSVN7qJS0U6oHA==} + typescript-compare@0.0.2: dependencies: typescript-logic: 0.0.0 - dev: false - /typescript-logic@0.0.0: - resolution: {integrity: sha512-zXFars5LUkI3zP492ls0VskH3TtdeHCqu0i7/duGt60i5IGPIpAHE/DWo5FqJ6EjQ15YKXrt+AETjv60Dat34Q==} - dev: false + typescript-logic@0.0.0: {} - /typescript-tuple@2.2.1: - resolution: {integrity: sha512-Zcr0lbt8z5ZdEzERHAMAniTiIKerFCMgd7yjq1fPnDJ43et/k9twIFQMUYff9k5oXcsQ0WpvFcgzK2ZKASoW6Q==} + typescript-tuple@2.2.1: dependencies: typescript-compare: 0.0.2 - dev: false - - /typescript@4.9.5: - resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} - engines: {node: '>=4.2.0'} - hasBin: true - dev: true - /uc.micro@1.0.6: - resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} - dev: true + typescript@4.9.5: {} - /ufo@1.3.1: - resolution: {integrity: sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==} - dev: true + uc.micro@1.0.6: {} - /uglify-js@3.17.4: - resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} - engines: {node: '>=0.8.0'} - hasBin: true - requiresBuild: true - dev: true - optional: true + ufo@1.3.1: {} - /unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + unbox-primitive@1.0.2: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 - dev: true - /unc-path-regex@0.1.2: - resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==} - engines: {node: '>=0.10.0'} - dev: true + unc-path-regex@0.1.2: {} - /underscore.string@3.3.6: - resolution: {integrity: sha512-VoC83HWXmCrF6rgkyxS9GHv8W9Q5nhMKho+OadDJGzL2oDYbYEppBaCMH6pFlwLeqj2QS+hhkw2kpXkSdD1JxQ==} + underscore.string@3.3.6: dependencies: sprintf-js: 1.1.2 util-deprecate: 1.0.2 - dev: true - /unfetch@4.2.0: - resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==} - dev: true - - /unherit@1.1.3: - resolution: {integrity: sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==} - dependencies: - inherits: 2.0.4 - xtend: 4.0.2 - dev: true + undici-types@5.26.5: {} - /unicode-canonical-property-names-ecmascript@2.0.0: - resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} - engines: {node: '>=4'} - dev: true + unicode-canonical-property-names-ecmascript@2.0.0: {} - /unicode-match-property-ecmascript@2.0.0: - resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} - engines: {node: '>=4'} + unicode-match-property-ecmascript@2.0.0: dependencies: unicode-canonical-property-names-ecmascript: 2.0.0 unicode-property-aliases-ecmascript: 2.1.0 - dev: true - /unicode-match-property-value-ecmascript@2.1.0: - resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} - engines: {node: '>=4'} - dev: true + unicode-match-property-value-ecmascript@2.1.0: {} - /unicode-property-aliases-ecmascript@2.1.0: - resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} - engines: {node: '>=4'} - dev: true + unicode-property-aliases-ecmascript@2.1.0: {} - /unified@10.1.2: - resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} + unicorn-magic@0.1.0: {} + + unified@10.1.2: dependencies: '@types/unist': 2.0.6 bail: 2.0.2 @@ -20590,393 +16840,190 @@ packages: is-plain-obj: 4.1.0 trough: 2.1.0 vfile: 5.3.7 - dev: true - /unified@9.2.0: - resolution: {integrity: sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==} + unified@11.0.5: dependencies: - '@types/unist': 2.0.6 - bail: 1.0.5 + '@types/unist': 3.0.3 + bail: 2.0.2 + devlop: 1.1.0 extend: 3.0.2 - is-buffer: 2.0.5 - is-plain-obj: 2.1.0 - trough: 1.0.5 - vfile: 4.2.1 - dev: true - - /union-value@1.0.1: - resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} - engines: {node: '>=0.10.0'} - dependencies: - arr-union: 3.1.0 - get-value: 2.0.6 - is-extendable: 0.1.1 - set-value: 2.0.1 - dev: true - - /unique-filename@1.1.1: - resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} - dependencies: - unique-slug: 2.0.2 - dev: true - - /unique-slug@2.0.2: - resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==} - dependencies: - imurmurhash: 0.1.4 - dev: true + is-plain-obj: 4.1.0 + trough: 2.1.0 + vfile: 6.0.3 - /unique-stream@2.3.1: - resolution: {integrity: sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==} + unique-stream@2.3.1: dependencies: json-stable-stringify-without-jsonify: 1.0.1 through2-filter: 3.0.0 - dev: true - /unique-string@2.0.0: - resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} - engines: {node: '>=8'} + unique-string@2.0.0: dependencies: crypto-random-string: 2.0.0 - dev: true - - /unist-builder@2.0.3: - resolution: {integrity: sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==} - dev: true - - /unist-util-generated@1.1.6: - resolution: {integrity: sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==} - dev: true - - /unist-util-generated@2.0.1: - resolution: {integrity: sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==} - dev: true - - /unist-util-is@4.1.0: - resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==} - dev: true - - /unist-util-is@5.2.1: - resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} - dependencies: - '@types/unist': 2.0.6 - dev: true - /unist-util-position-from-estree@1.1.2: - resolution: {integrity: sha512-poZa0eXpS+/XpoQwGwl79UUdea4ol2ZuCYguVaJS4qzIOMDzbqz8a3erUCOmubSZkaOuGamb3tX790iwOIROww==} + unique-string@3.0.0: dependencies: - '@types/unist': 2.0.6 - dev: true + crypto-random-string: 4.0.0 - /unist-util-position@3.1.0: - resolution: {integrity: sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==} - dev: true + unist-util-generated@2.0.1: {} - /unist-util-position@4.0.4: - resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==} + unist-util-is@5.2.1: dependencies: '@types/unist': 2.0.6 - dev: true - /unist-util-remove-position@2.0.1: - resolution: {integrity: sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==} + unist-util-is@6.0.0: dependencies: - unist-util-visit: 2.0.3 - dev: true + '@types/unist': 3.0.3 - /unist-util-remove-position@4.0.2: - resolution: {integrity: sha512-TkBb0HABNmxzAcfLf4qsIbFbaPDvMO6wa3b3j4VcEzFVaw1LBKwnW4/sRJ/atSLSzoIg41JWEdnE7N6DIhGDGQ==} + unist-util-position-from-estree@1.1.2: dependencies: '@types/unist': 2.0.6 - unist-util-visit: 4.1.2 - dev: true - /unist-util-remove@2.1.0: - resolution: {integrity: sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q==} + unist-util-position@4.0.4: dependencies: - unist-util-is: 4.1.0 - dev: true + '@types/unist': 2.0.6 - /unist-util-stringify-position@2.0.3: - resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} + unist-util-remove-position@4.0.2: dependencies: '@types/unist': 2.0.6 - dev: true + unist-util-visit: 4.1.2 - /unist-util-stringify-position@3.0.3: - resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} + unist-util-stringify-position@3.0.3: dependencies: '@types/unist': 2.0.6 - dev: true - /unist-util-visit-parents@3.1.1: - resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==} + unist-util-stringify-position@4.0.0: dependencies: - '@types/unist': 2.0.6 - unist-util-is: 4.1.0 - dev: true + '@types/unist': 3.0.3 - /unist-util-visit-parents@5.1.3: - resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} + unist-util-visit-parents@5.1.3: dependencies: '@types/unist': 2.0.6 unist-util-is: 5.2.1 - dev: true - /unist-util-visit@2.0.3: - resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==} + unist-util-visit-parents@6.0.1: dependencies: - '@types/unist': 2.0.6 - unist-util-is: 4.1.0 - unist-util-visit-parents: 3.1.1 - dev: true + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 - /unist-util-visit@4.1.2: - resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} + unist-util-visit@4.1.2: dependencies: '@types/unist': 2.0.6 unist-util-is: 5.2.1 unist-util-visit-parents: 5.1.3 - dev: true - /universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - dev: true + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 - /universalify@2.0.0: - resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} - engines: {node: '>= 10.0.0'} - dev: true + universalify@0.1.2: {} - /unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} - dev: true + universalify@2.0.0: {} - /unplugin@0.10.2: - resolution: {integrity: sha512-6rk7GUa4ICYjae5PrAllvcDeuT8pA9+j5J5EkxbMFaV+SalHhxZ7X2dohMzu6C3XzsMT+6jwR/+pwPNR3uK9MA==} - dependencies: - acorn: 8.10.0 - chokidar: 3.5.3 - webpack-sources: 3.2.3 - webpack-virtual-modules: 0.4.6 - dev: true + unpipe@1.0.0: {} - /unset-value@1.0.0: - resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} - engines: {node: '>=0.10.0'} + unplugin@1.14.1(webpack-sources@3.2.3): dependencies: - has-value: 0.3.1 - isobject: 3.0.1 - dev: true - - /untildify@4.0.0: - resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} - engines: {node: '>=8'} - dev: true + acorn: 8.13.0 + webpack-virtual-modules: 0.6.2 + optionalDependencies: + webpack-sources: 3.2.3 - /upath@1.2.0: - resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} - engines: {node: '>=4'} - dev: true + upath@1.2.0: {} - /update-browserslist-db@1.0.11(browserslist@4.21.9): - resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' + update-browserslist-db@1.0.11(browserslist@4.21.9): dependencies: browserslist: 4.21.9 escalade: 3.1.1 - picocolors: 1.0.0 - - /uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - dependencies: - punycode: 2.3.0 - dev: true + picocolors: 1.1.1 - /urix@0.1.0: - resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} - deprecated: Please see https://github.com/lydell/urix#deprecated - dev: true - - /url@0.11.1: - resolution: {integrity: sha512-rWS3H04/+mzzJkv0eZ7vEDGiQbgquI1fGfOad6zKvgYQi1SzMmhl7c/DdRGxhaWrVH6z0qWITo8rpnxK/RfEhA==} + update-browserslist-db@1.1.1(browserslist@4.24.2): dependencies: - punycode: 1.4.1 - qs: 6.11.2 - dev: true + browserslist: 4.24.2 + escalade: 3.2.0 + picocolors: 1.1.1 - /use-isomorphic-layout-effect@1.1.2(@types/react@18.0.25)(react@18.2.0): - resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + uri-js@4.4.1: dependencies: - '@types/react': 18.0.25 - react: 18.2.0 - dev: false + punycode: 2.3.0 - /use-resize-observer@9.1.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-R25VqO9Wb3asSD4eqtcxk8sJalvIOYBqS8MNZlpDSQ4l4xMQxC/J7Id9HoTqPq8FwULIn0PVW+OAqF2dyYbjow==} - peerDependencies: - react: 16.8.0 - 18 - react-dom: 16.8.0 - 18 + use-isomorphic-layout-effect@1.1.2(@types/react@18.0.25)(react@18.2.0): dependencies: - '@juggle/resize-observer': 3.4.0 react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: true - - /use@3.1.1: - resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} - engines: {node: '>=0.10.0'} - dev: true + optionalDependencies: + '@types/react': 18.0.25 - /utf7@1.0.2: - resolution: {integrity: sha512-qQrPtYLLLl12NF4DrM9CvfkxkYI97xOb5dsnGZHE3teFr0tWiEZ9UdgMPczv24vl708cYMpe6mGXGHrotIp3Bw==} + utf7@1.0.2: dependencies: semver: 7.5.3 - dev: true - - /utf8@2.1.2: - resolution: {integrity: sha512-QXo+O/QkLP/x1nyi54uQiG0XrODxdysuQvE5dtVqv7F5K2Qb6FsN+qbr6KhF5wQ20tfcV3VQp0/2x1e1MRSPWg==} - dev: true - - /util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - /util@0.10.3: - resolution: {integrity: sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==} - dependencies: - inherits: 2.0.1 - dev: true + utf8@2.1.2: {} - /util@0.11.1: - resolution: {integrity: sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==} - dependencies: - inherits: 2.0.3 - dev: true + util-deprecate@1.0.2: {} - /util@0.12.5: - resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + util@0.12.5: dependencies: inherits: 2.0.4 is-arguments: 1.1.1 is-generator-function: 1.0.10 is-typed-array: 1.1.12 which-typed-array: 1.1.13 - dev: true - /utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} - dev: true + utils-merge@1.0.1: {} - /utrie@1.0.2: - resolution: {integrity: sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==} + utrie@1.0.2: dependencies: base64-arraybuffer: 1.0.2 - dev: false - /uuencode@0.0.4: - resolution: {integrity: sha512-yEEhCuCi5wRV7Z5ZVf9iV2gWMvUZqKJhAs1ecFdKJ0qzbyaVelmsE3QjYAamehfp9FKLiZbKldd+jklG3O0LfA==} - dev: true + uuencode@0.0.4: {} - /uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true + uuid@8.3.2: {} - /uuid@9.0.0: - resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} - hasBin: true - dev: true + uuid@9.0.0: {} - /uvu@0.5.6: - resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} - engines: {node: '>=8'} - hasBin: true + uvu@0.5.6: dependencies: dequal: 2.0.3 diff: 5.1.0 kleur: 4.1.5 sade: 1.8.1 - dev: true - /v8-to-istanbul@9.1.0: - resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} - engines: {node: '>=10.12.0'} + v8-to-istanbul@9.1.0: dependencies: - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.25 '@types/istanbul-lib-coverage': 2.0.4 convert-source-map: 1.9.0 - dev: true - - /validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - dependencies: - spdx-correct: 3.2.0 - spdx-expression-parse: 3.0.1 - dev: true - - /value-equal@1.0.1: - resolution: {integrity: sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==} - dev: false - - /value-or-function@3.0.0: - resolution: {integrity: sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==} - engines: {node: '>= 0.10'} - dev: true - /vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} - dev: true + value-equal@1.0.1: {} - /vfile-location@3.2.0: - resolution: {integrity: sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==} - dev: true + value-or-function@3.0.0: {} - /vfile-message@2.0.4: - resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==} - dependencies: - '@types/unist': 2.0.6 - unist-util-stringify-position: 2.0.3 - dev: true + vary@1.1.2: {} - /vfile-message@3.1.4: - resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} + vfile-message@3.1.4: dependencies: '@types/unist': 2.0.6 unist-util-stringify-position: 3.0.3 - dev: true - /vfile@4.2.1: - resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==} + vfile-message@4.0.2: dependencies: - '@types/unist': 2.0.6 - is-buffer: 2.0.5 - unist-util-stringify-position: 2.0.3 - vfile-message: 2.0.4 - dev: true + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 - /vfile@5.3.7: - resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} + vfile@5.3.7: dependencies: '@types/unist': 2.0.6 is-buffer: 2.0.5 unist-util-stringify-position: 3.0.3 vfile-message: 3.1.4 - dev: true - /vinyl-fs@3.0.3: - resolution: {integrity: sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==} - engines: {node: '>= 0.10'} + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.2 + + vinyl-fs@3.0.3: dependencies: fs-mkdirp-stream: 1.0.0 glob-stream: 6.1.0 @@ -20995,11 +17042,8 @@ packages: value-or-function: 3.0.0 vinyl: 2.2.1 vinyl-sourcemap: 1.1.0 - dev: true - /vinyl-sourcemap@1.1.0: - resolution: {integrity: sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==} - engines: {node: '>= 0.10'} + vinyl-sourcemap@1.1.0: dependencies: append-buffer: 1.0.2 convert-source-map: 1.9.0 @@ -21008,11 +17052,8 @@ packages: now-and-later: 2.0.1 remove-bom-buffer: 3.0.0 vinyl: 2.2.1 - dev: true - /vinyl@2.2.1: - resolution: {integrity: sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==} - engines: {node: '>= 0.10'} + vinyl@2.2.1: dependencies: clone: 2.1.2 clone-buffer: 1.0.0 @@ -21020,140 +17061,69 @@ packages: cloneable-readable: 1.1.3 remove-trailing-separator: 1.1.0 replace-ext: 1.0.1 - dev: true - /vite-node@0.34.5(@types/node@20.3.2)(sass@1.56.1): - resolution: {integrity: sha512-RNZ+DwbCvDoI5CbCSQSyRyzDTfFvFauvMs6Yq4ObJROKlIKuat1KgSX/Ako5rlDMfVCyMcpMRMTkJBxd6z8YRA==} - engines: {node: '>=v14.18.0'} - hasBin: true + vite-node@0.34.5(@types/node@20.3.2)(sass@1.56.1)(terser@5.18.2): dependencies: cac: 6.7.14 debug: 4.3.4(supports-color@9.3.1) mlly: 1.4.2 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.1.5(@types/node@20.3.2)(sass@1.56.1) + vite: 4.5.5(@types/node@20.3.2)(sass@1.56.1)(terser@5.18.2) transitivePeerDependencies: - '@types/node' - less + - lightningcss - sass - stylus - sugarss - supports-color - - terser - dev: true - - /vite-plugin-istanbul@4.0.0(vite@4.1.5): - resolution: {integrity: sha512-r5TUlEprFyp+L+by/waG1RsIMiqfy7LBAZvheFlXjxzm69146rHGW6bh9TDzXg7wJB6DsyjqKFtvAX50d/I/IQ==} - peerDependencies: - vite: '>=2.9.1 <= 5' + - terser + + vite-plugin-istanbul@4.0.0(vite@4.5.5(@types/node@20.3.2)(sass@1.56.1)(terser@5.18.2)): dependencies: '@istanbuljs/load-nyc-config': 1.1.0 istanbul-lib-instrument: 5.2.1 picocolors: 1.0.0 test-exclude: 6.0.0 - vite: 4.1.5(@types/node@20.3.2)(sass@1.56.1) + vite: 4.5.5(@types/node@20.3.2)(sass@1.56.1)(terser@5.18.2) transitivePeerDependencies: - supports-color - dev: true - /vite-plugin-pwa@0.14.3(vite@4.1.5)(workbox-build@6.6.0)(workbox-window@6.6.0): - resolution: {integrity: sha512-o/CEzdHXamdSV4WJ6hp1EQNe+yVvoFf9b5q1nMhOSqKxaW7BaDqAHAwnq8jt21wakDmcaipnuF3/j78AzZJ6wg==} - peerDependencies: - vite: ^3.1.0 || ^4.0.0 - workbox-build: ^6.5.4 - workbox-window: ^6.5.4 + vite-plugin-pwa@0.14.3(vite@4.5.5(@types/node@20.3.2)(sass@1.56.1)(terser@5.18.2))(workbox-build@6.6.0(@types/babel__core@7.20.3))(workbox-window@6.6.0): dependencies: '@rollup/plugin-replace': 5.0.2(rollup@3.25.3) debug: 4.3.4(supports-color@9.3.1) fast-glob: 3.2.12 pretty-bytes: 6.1.0 rollup: 3.25.3 - vite: 4.1.5(@types/node@20.3.2)(sass@1.56.1) - workbox-build: 6.6.0 + vite: 4.5.5(@types/node@20.3.2)(sass@1.56.1)(terser@5.18.2) + workbox-build: 6.6.0(@types/babel__core@7.20.3) workbox-window: 6.6.0 transitivePeerDependencies: - supports-color - dev: true - /vite-plugin-svgr@2.4.0(rollup@3.25.3)(vite@4.1.5): - resolution: {integrity: sha512-q+mJJol6ThvqkkJvvVFEndI4EaKIjSI0I3jNFgSoC9fXAz1M7kYTVUin8fhUsFojFDKZ9VHKtX6NXNaOLpbsHA==} - peerDependencies: - vite: ^2.6.0 || 3 || 4 + vite-plugin-svgr@2.4.0(rollup@3.25.3)(vite@4.5.5(@types/node@20.3.2)(sass@1.56.1)(terser@5.18.2)): dependencies: '@rollup/pluginutils': 5.0.2(rollup@3.25.3) '@svgr/core': 6.5.1 - vite: 4.1.5(@types/node@20.3.2)(sass@1.56.1) + vite: 4.5.5(@types/node@20.3.2)(sass@1.56.1)(terser@5.18.2) transitivePeerDependencies: - rollup - supports-color - dev: true - /vite@4.1.5(@types/node@20.3.2)(sass@1.56.1): - resolution: {integrity: sha512-zJ0RiVkf61kpd7O+VtU6r766xgnTaIknP/lR6sJTZq3HtVJ3HGnTo5DaJhTUtYoTyS/CQwZ6yEVdc/lrmQT7dQ==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true + vite@4.5.5(@types/node@20.3.2)(sass@1.56.1)(terser@5.18.2): dependencies: - '@types/node': 20.3.2 - esbuild: 0.16.17 - postcss: 8.4.24 - resolve: 1.22.2 - rollup: 3.25.3 - sass: 1.56.1 + esbuild: 0.18.20 + postcss: 8.4.47 + rollup: 3.29.5 optionalDependencies: + '@types/node': 20.3.2 fsevents: 2.3.2 - dev: true + sass: 1.56.1 + terser: 5.18.2 - /vitest@0.34.5(happy-dom@12.9.1)(sass@1.56.1): - resolution: {integrity: sha512-CPI68mmnr2DThSB3frSuE5RLm9wo5wU4fbDrDwWQQB1CWgq9jQVoQwnQSzYAjdoBOPoH2UtXpOgHVge/uScfZg==} - engines: {node: '>=v14.18.0'} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@vitest/browser': '*' - '@vitest/ui': '*' - happy-dom: '*' - jsdom: '*' - playwright: '*' - safaridriver: '*' - webdriverio: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - playwright: - optional: true - safaridriver: - optional: true - webdriverio: - optional: true + vitest@0.34.5(happy-dom@15.10.2)(playwright@1.35.1)(sass@1.56.1)(terser@5.18.2): dependencies: '@types/chai': 4.3.8 '@types/chai-subset': 1.3.3 @@ -21168,7 +17138,6 @@ packages: cac: 6.7.14 chai: 4.3.10 debug: 4.3.4(supports-color@9.3.1) - happy-dom: 12.9.1 local-pkg: 0.4.3 magic-string: 0.30.5 pathe: 1.1.1 @@ -21177,238 +17146,109 @@ packages: strip-literal: 1.3.0 tinybench: 2.5.1 tinypool: 0.7.0 - vite: 4.1.5(@types/node@20.3.2)(sass@1.56.1) - vite-node: 0.34.5(@types/node@20.3.2)(sass@1.56.1) + vite: 4.5.5(@types/node@20.3.2)(sass@1.56.1)(terser@5.18.2) + vite-node: 0.34.5(@types/node@20.3.2)(sass@1.56.1)(terser@5.18.2) why-is-node-running: 2.2.2 + optionalDependencies: + happy-dom: 15.10.2 + playwright: 1.35.1 transitivePeerDependencies: - less + - lightningcss - sass - stylus - sugarss - supports-color - terser - dev: true - /vm-browserify@1.1.2: - resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} - dev: true - - /void-elements@3.1.0: - resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} - engines: {node: '>=0.10.0'} - dev: false + void-elements@3.1.0: {} - /vscode-json-languageservice@4.2.1: - resolution: {integrity: sha512-xGmv9QIWs2H8obGbWg+sIPI/3/pFgj/5OWBhNzs00BkYQ9UaB2F6JJaGB/2/YOZJ3BvLXQTC4Q7muqU25QgAhA==} + vscode-json-languageservice@4.2.1: dependencies: jsonc-parser: 3.2.0 vscode-languageserver-textdocument: 1.0.11 vscode-languageserver-types: 3.17.5 vscode-nls: 5.2.0 vscode-uri: 3.0.8 - dev: true - /vscode-languageserver-textdocument@1.0.11: - resolution: {integrity: sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==} - dev: true + vscode-languageserver-textdocument@1.0.11: {} - /vscode-languageserver-types@3.17.5: - resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} - dev: true + vscode-languageserver-types@3.17.5: {} - /vscode-nls@5.2.0: - resolution: {integrity: sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==} - dev: true + vscode-nls@5.2.0: {} - /vscode-uri@3.0.8: - resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} - dev: true + vscode-uri@3.0.8: {} - /vue-template-compiler@2.7.14: - resolution: {integrity: sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==} + vue-template-compiler@2.7.14: dependencies: de-indent: 1.0.2 he: 1.2.0 - dev: true - /wait-on@5.3.0: - resolution: {integrity: sha512-DwrHrnTK+/0QFaB9a8Ol5Lna3k7WvUR4jzSKmz0YaPBpuN2sACyiPVKVfj6ejnjcajAcvn3wlbTyMIn9AZouOg==} - engines: {node: '>=8.9.0'} - hasBin: true + wait-on@7.2.0: dependencies: - axios: 0.21.4 - joi: 17.9.2 + axios: 1.7.4 + joi: 17.13.3 lodash: 4.17.21 minimist: 1.2.8 - rxjs: 6.6.7 + rxjs: 7.8.1 transitivePeerDependencies: - debug - dev: true - /wait-port@0.2.14: - resolution: {integrity: sha512-kIzjWcr6ykl7WFbZd0TMae8xovwqcqbx6FM9l+7agOgUByhzdjfzZBPK2CPufldTOMxbUivss//Sh9MFawmPRQ==} - engines: {node: '>=8'} - hasBin: true + wait-port@0.2.14: dependencies: chalk: 2.4.2 commander: 3.0.2 debug: 4.3.4(supports-color@9.3.1) transitivePeerDependencies: - supports-color - dev: true - /walk-sync@2.2.0: - resolution: {integrity: sha512-IC8sL7aB4/ZgFcGI2T1LczZeFWZ06b3zoHH7jBPyHxOtIIz1jppWHjjEXkOFvFojBVAK9pV7g47xOZ4LW3QLfg==} - engines: {node: 8.* || >= 10.*} + walk-sync@2.2.0: dependencies: '@types/minimatch': 3.0.5 ensure-posix-path: 1.1.1 matcher-collection: 2.0.1 minimatch: 3.1.2 - dev: true - /walker@1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + walk-up-path@3.0.1: {} + + walker@1.0.8: dependencies: makeerror: 1.0.12 - dev: true - /warning@4.0.3: - resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} + warning@4.0.3: dependencies: loose-envify: 1.4.0 - dev: false - - /watchpack-chokidar2@2.0.1: - resolution: {integrity: sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==} - requiresBuild: true - dependencies: - chokidar: 2.1.8 - transitivePeerDependencies: - - supports-color - dev: true - optional: true - - /watchpack@1.7.5: - resolution: {integrity: sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==} - dependencies: - graceful-fs: 4.2.11 - neo-async: 2.6.2 - optionalDependencies: - chokidar: 3.5.3 - watchpack-chokidar2: 2.0.1 - transitivePeerDependencies: - - supports-color - dev: true - /watchpack@2.4.0: - resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} - engines: {node: '>=10.13.0'} + watchpack@2.4.0: dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 - dev: true - /wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + wcwidth@1.0.1: dependencies: defaults: 1.0.4 - dev: true - - /web-namespaces@1.1.4: - resolution: {integrity: sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==} - dev: true - - /webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - dev: true - - /webidl-conversions@4.0.2: - resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} - dev: true - - /webidl-conversions@7.0.0: - resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} - engines: {node: '>=12'} - dev: true - /webpack-sources@1.4.3: - resolution: {integrity: sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==} - dependencies: - source-list-map: 2.0.1 - source-map: 0.6.1 - dev: true + webidl-conversions@4.0.2: {} - /webpack-sources@3.2.3: - resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} - engines: {node: '>=10.13.0'} - dev: true + webidl-conversions@7.0.0: {} - /webpack-virtual-modules@0.4.6: - resolution: {integrity: sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==} - dev: true + webpack-sources@3.2.3: {} - /webpack@4.46.0: - resolution: {integrity: sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==} - engines: {node: '>=6.11.5'} - hasBin: true - peerDependencies: - webpack-cli: '*' - webpack-command: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - webpack-command: - optional: true - dependencies: - '@webassemblyjs/ast': 1.9.0 - '@webassemblyjs/helper-module-context': 1.9.0 - '@webassemblyjs/wasm-edit': 1.9.0 - '@webassemblyjs/wasm-parser': 1.9.0 - acorn: 6.4.2 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) - chrome-trace-event: 1.0.3 - enhanced-resolve: 4.5.0 - eslint-scope: 4.0.3 - json-parse-better-errors: 1.0.2 - loader-runner: 2.4.0 - loader-utils: 1.4.2 - memory-fs: 0.4.1 - micromatch: 3.1.10 - mkdirp: 0.5.6 - neo-async: 2.6.2 - node-libs-browser: 2.2.1 - schema-utils: 1.0.0 - tapable: 1.1.3 - terser-webpack-plugin: 1.4.5(webpack@4.46.0) - watchpack: 1.7.5 - webpack-sources: 1.4.3 - transitivePeerDependencies: - - supports-color - dev: true + webpack-virtual-modules@0.6.2: {} - /webpack@5.88.0(esbuild@0.17.19): - resolution: {integrity: sha512-O3jDhG5e44qIBSi/P6KpcCcH7HD+nYIHVBhdWFxcLOcIGN8zGo5nqF3BjyNCxIh4p1vFdNnreZv2h2KkoAw3lw==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true + webpack@5.88.0(@swc/core@1.7.39)(esbuild@0.18.20): dependencies: '@types/eslint-scope': 3.7.4 '@types/estree': 1.0.1 '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/wasm-edit': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 - acorn: 8.10.0 - acorn-import-assertions: 1.9.0(acorn@8.10.0) - browserslist: 4.21.9 + acorn: 8.13.0 + acorn-import-assertions: 1.9.0(acorn@8.13.0) + browserslist: 4.24.2 chrome-trace-event: 1.0.3 enhanced-resolve: 5.15.0 - es-module-lexer: 1.3.0 + es-module-lexer: 1.5.4 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -21419,137 +17259,78 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.9(esbuild@0.17.19)(webpack@5.88.0) + terser-webpack-plugin: 5.3.9(@swc/core@1.7.39)(esbuild@0.18.20)(webpack@5.88.0(@swc/core@1.7.39)(esbuild@0.18.20)) watchpack: 2.4.0 webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - dev: true - - /whatwg-encoding@2.0.0: - resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} - engines: {node: '>=12'} - dependencies: - iconv-lite: 0.6.3 - dev: true - - /whatwg-mimetype@3.0.0: - resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} - engines: {node: '>=12'} - dev: true - /whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - dev: true + whatwg-mimetype@3.0.0: {} - /whatwg-url@7.1.0: - resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + whatwg-url@7.1.0: dependencies: lodash.sortby: 4.7.0 tr46: 1.0.1 webidl-conversions: 4.0.2 - dev: true - /which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + which-boxed-primitive@1.0.2: dependencies: is-bigint: 1.0.4 is-boolean-object: 1.1.2 is-number-object: 1.0.7 is-string: 1.0.7 is-symbol: 1.0.4 - dev: true - /which-collection@1.0.1: - resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} + which-collection@1.0.1: dependencies: is-map: 2.0.2 is-set: 2.0.2 is-weakmap: 2.0.1 is-weakset: 2.0.2 - dev: true - /which-module@2.0.1: - resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - dev: true + which-module@2.0.1: {} - /which-typed-array@1.1.13: - resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} - engines: {node: '>= 0.4'} + which-typed-array@1.1.13: dependencies: available-typed-arrays: 1.0.5 call-bind: 1.0.5 for-each: 0.3.3 gopd: 1.0.1 has-tostringtag: 1.0.0 - dev: true - /which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true + which@1.3.1: dependencies: isexe: 2.0.0 - dev: true - /which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true + which@2.0.2: dependencies: isexe: 2.0.0 - dev: true - /why-is-node-running@2.2.2: - resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} - engines: {node: '>=8'} - hasBin: true + why-is-node-running@2.2.2: dependencies: siginfo: 2.0.0 stackback: 0.0.2 - dev: true - - /wide-align@1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} - dependencies: - string-width: 4.2.3 - dev: true - - /word-wrap@1.2.4: - resolution: {integrity: sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==} - engines: {node: '>=0.10.0'} - dev: true - /wordwrap@1.0.0: - resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} - dev: true + word-wrap@1.2.4: {} - /workbox-background-sync@6.6.0: - resolution: {integrity: sha512-jkf4ZdgOJxC9u2vztxLuPT/UjlH7m/nWRQ/MgGL0v8BJHoZdVGJd18Kck+a0e55wGXdqyHO+4IQTk0685g4MUw==} + workbox-background-sync@6.6.0: dependencies: idb: 7.1.1 workbox-core: 6.6.0 - dev: true - /workbox-broadcast-update@6.6.0: - resolution: {integrity: sha512-nm+v6QmrIFaB/yokJmQ/93qIJ7n72NICxIwQwe5xsZiV2aI93MGGyEyzOzDPVz5THEr5rC3FJSsO3346cId64Q==} + workbox-broadcast-update@6.6.0: dependencies: workbox-core: 6.6.0 - dev: true - /workbox-build@6.6.0: - resolution: {integrity: sha512-Tjf+gBwOTuGyZwMz2Nk/B13Fuyeo0Q84W++bebbVsfr9iLkDSo6j6PST8tET9HYA58mlRXwlMGpyWO8ETJiXdQ==} - engines: {node: '>=10.0.0'} + workbox-build@6.6.0(@types/babel__core@7.20.3): dependencies: '@apideck/better-ajv-errors': 0.3.6(ajv@8.12.0) - '@babel/core': 7.23.2 - '@babel/preset-env': 7.22.5(@babel/core@7.23.2) + '@babel/core': 7.25.9 + '@babel/preset-env': 7.25.9(@babel/core@7.25.9) '@babel/runtime': 7.23.5 - '@rollup/plugin-babel': 5.3.1(@babel/core@7.23.2)(rollup@2.79.1) + '@rollup/plugin-babel': 5.3.1(@babel/core@7.25.9)(@types/babel__core@7.20.3)(rollup@2.79.1) '@rollup/plugin-node-resolve': 11.2.1(rollup@2.79.1) '@rollup/plugin-replace': 2.4.2(rollup@2.79.1) '@surma/rollup-plugin-off-main-thread': 2.2.3 @@ -21585,58 +17366,40 @@ packages: transitivePeerDependencies: - '@types/babel__core' - supports-color - dev: true - /workbox-cacheable-response@6.6.0: - resolution: {integrity: sha512-JfhJUSQDwsF1Xv3EV1vWzSsCOZn4mQ38bWEBR3LdvOxSPgB65gAM6cS2CX8rkkKHRgiLrN7Wxoyu+TuH67kHrw==} - deprecated: workbox-background-sync@6.6.0 + workbox-cacheable-response@6.6.0: dependencies: workbox-core: 6.6.0 - dev: true - /workbox-core@6.6.0: - resolution: {integrity: sha512-GDtFRF7Yg3DD859PMbPAYPeJyg5gJYXuBQAC+wyrWuuXgpfoOrIQIvFRZnQ7+czTIQjIr1DhLEGFzZanAT/3bQ==} - dev: true + workbox-core@6.6.0: {} - /workbox-expiration@6.6.0: - resolution: {integrity: sha512-baplYXcDHbe8vAo7GYvyAmlS4f6998Jff513L4XvlzAOxcl8F620O91guoJ5EOf5qeXG4cGdNZHkkVAPouFCpw==} + workbox-expiration@6.6.0: dependencies: idb: 7.1.1 workbox-core: 6.6.0 - dev: true - /workbox-google-analytics@6.6.0: - resolution: {integrity: sha512-p4DJa6OldXWd6M9zRl0H6vB9lkrmqYFkRQ2xEiNdBFp9U0LhsGO7hsBscVEyH9H2/3eZZt8c97NB2FD9U2NJ+Q==} - deprecated: It is not compatible with newer versions of GA starting with v4, as long as you are using GAv3 it should be ok, but the package is not longer being maintained + workbox-google-analytics@6.6.0: dependencies: workbox-background-sync: 6.6.0 workbox-core: 6.6.0 workbox-routing: 6.6.0 workbox-strategies: 6.6.0 - dev: true - /workbox-navigation-preload@6.6.0: - resolution: {integrity: sha512-utNEWG+uOfXdaZmvhshrh7KzhDu/1iMHyQOV6Aqup8Mm78D286ugu5k9MFD9SzBT5TcwgwSORVvInaXWbvKz9Q==} + workbox-navigation-preload@6.6.0: dependencies: workbox-core: 6.6.0 - dev: true - /workbox-precaching@6.6.0: - resolution: {integrity: sha512-eYu/7MqtRZN1IDttl/UQcSZFkHP7dnvr/X3Vn6Iw6OsPMruQHiVjjomDFCNtd8k2RdjLs0xiz9nq+t3YVBcWPw==} + workbox-precaching@6.6.0: dependencies: workbox-core: 6.6.0 workbox-routing: 6.6.0 workbox-strategies: 6.6.0 - dev: true - /workbox-range-requests@6.6.0: - resolution: {integrity: sha512-V3aICz5fLGq5DpSYEU8LxeXvsT//mRWzKrfBOIxzIdQnV/Wj7R+LyJVTczi4CQ4NwKhAaBVaSujI1cEjXW+hTw==} + workbox-range-requests@6.6.0: dependencies: workbox-core: 6.6.0 - dev: true - /workbox-recipes@6.6.0: - resolution: {integrity: sha512-TFi3kTgYw73t5tg73yPVqQC8QQjxJSeqjXRO4ouE/CeypmP2O/xqmB/ZFBBQazLTPxILUQ0b8aeh0IuxVn9a6A==} + workbox-recipes@6.6.0: dependencies: workbox-cacheable-response: 6.6.0 workbox-core: 6.6.0 @@ -21644,167 +17407,83 @@ packages: workbox-precaching: 6.6.0 workbox-routing: 6.6.0 workbox-strategies: 6.6.0 - dev: true - /workbox-routing@6.6.0: - resolution: {integrity: sha512-x8gdN7VDBiLC03izAZRfU+WKUXJnbqt6PG9Uh0XuPRzJPpZGLKce/FkOX95dWHRpOHWLEq8RXzjW0O+POSkKvw==} + workbox-routing@6.6.0: dependencies: workbox-core: 6.6.0 - dev: true - /workbox-strategies@6.6.0: - resolution: {integrity: sha512-eC07XGuINAKUWDnZeIPdRdVja4JQtTuc35TZ8SwMb1ztjp7Ddq2CJ4yqLvWzFWGlYI7CG/YGqaETntTxBGdKgQ==} + workbox-strategies@6.6.0: dependencies: workbox-core: 6.6.0 - dev: true - /workbox-streams@6.6.0: - resolution: {integrity: sha512-rfMJLVvwuED09CnH1RnIep7L9+mj4ufkTyDPVaXPKlhi9+0czCu+SJggWCIFbPpJaAZmp2iyVGLqS3RUmY3fxg==} + workbox-streams@6.6.0: dependencies: workbox-core: 6.6.0 workbox-routing: 6.6.0 - dev: true - /workbox-sw@6.6.0: - resolution: {integrity: sha512-R2IkwDokbtHUE4Kus8pKO5+VkPHD2oqTgl+XJwh4zbF1HyjAbgNmK/FneZHVU7p03XUt9ICfuGDYISWG9qV/CQ==} - dev: true + workbox-sw@6.6.0: {} - /workbox-window@6.6.0: - resolution: {integrity: sha512-L4N9+vka17d16geaJXXRjENLFldvkWy7JyGxElRD0JvBxvFEd8LOhr+uXCcar/NzAmIBRv9EZ+M+Qr4mOoBITw==} + workbox-window@6.6.0: dependencies: '@types/trusted-types': 2.0.3 workbox-core: 6.6.0 - dev: true - - /worker-farm@1.7.0: - resolution: {integrity: sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==} - dependencies: - errno: 0.1.8 - dev: true - /wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} + wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - dev: true - /wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} + wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - dev: true - /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: true + wrappy@1.0.2: {} - /write-file-atomic@2.4.3: - resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} + write-file-atomic@2.4.3: dependencies: graceful-fs: 4.2.11 imurmurhash: 0.1.4 signal-exit: 3.0.7 - dev: true - /write-file-atomic@3.0.3: - resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + write-file-atomic@3.0.3: dependencies: imurmurhash: 0.1.4 is-typedarray: 1.0.0 signal-exit: 3.0.7 typedarray-to-buffer: 3.1.5 - dev: true - /write-file-atomic@4.0.2: - resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + write-file-atomic@4.0.2: dependencies: imurmurhash: 0.1.4 signal-exit: 3.0.7 - dev: true - - /ws@6.2.2: - resolution: {integrity: sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dependencies: - async-limiter: 1.0.1 - dev: true - /ws@8.13.0: - resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} - 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 - dev: true + ws@8.13.0: {} - /xml@1.0.1: - resolution: {integrity: sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==} - dev: true + xml@1.0.1: {} - /xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - dev: true + xtend@4.0.2: {} - /y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - dev: true + y18n@4.0.3: {} - /y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - dev: true + y18n@5.0.8: {} - /yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + yallist@3.1.1: {} - /yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + yallist@4.0.0: {} - /yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} + yaml@1.10.2: {} - /yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} + yargs-parser@18.1.3: dependencies: camelcase: 5.3.1 decamelize: 1.2.0 - dev: true - /yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - dev: true - - /yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - dev: true + yargs-parser@21.1.1: {} - /yargs@15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} + yargs@15.4.1: dependencies: cliui: 6.0.0 decamelize: 1.2.0 @@ -21817,24 +17496,8 @@ packages: which-module: 2.0.1 y18n: 4.0.3 yargs-parser: 18.1.3 - dev: true - - /yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} - dependencies: - cliui: 7.0.4 - escalade: 3.1.1 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.9 - dev: true - /yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} + yargs@17.7.2: dependencies: cliui: 8.0.1 escalade: 3.1.1 @@ -21843,29 +17506,9 @@ packages: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 21.1.1 - dev: true - /yauzl@2.10.0: - resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} - dependencies: - buffer-crc32: 0.2.13 - fd-slicer: 1.1.0 - dev: true - - /yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - dev: true + yocto-queue@0.1.0: {} - /yocto-queue@1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} - engines: {node: '>=12.20'} - dev: true + yocto-queue@1.0.0: {} - /zwitch@1.0.5: - resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==} - dev: true - - /zwitch@2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - dev: true + zwitch@2.0.4: {} diff --git a/packages/webapp/public/locales/de/animal.json b/packages/webapp/public/locales/de/animal.json index 5e29131818..e329b55bd4 100644 --- a/packages/webapp/public/locales/de/animal.json +++ b/packages/webapp/public/locales/de/animal.json @@ -3,23 +3,39 @@ "ANGUS": "Angus", "CHAROLAIS": "Charolais", "COBB_500": "Cobb 500", - "CORNISH_CROSS": "Cornisch Kreuz", - "DUROC": "Duroc", - "HEREFORD": "Hereford", - "LANDRACE": "Landrasse", + "CORNISH_CROSS": "Cornish Cross", + "DUROC": "Duroc-Schwein", + "HEREFORD": "Hereford-Rind", + "LANDRACE": "Landrace", "LEGHORN": "Leghorn", "PLYMOUTH_ROCK": "Plymouth Rock", - "RHODE_ISLAND_RED": "Rhode Island Red", + "RHODE_ISLAND_RED": "Rhodeländer", "ROSS_308": "Ross 308", - "YORKSHIRE_LARGE_WHITE": "Yorkshire Großes Weißes" + "YORKSHIRE_LARGE_WHITE": "Yorkshire Large White" }, "ORIGIN": { "BORN_AT_FARM": "Auf dem Bauernhof geboren", - "BROUGHT_IN": "Eingebracht" + "BROUGHT_IN": "Eingeführt in" + }, + "PURPOSE": { + "GRAZING": "Weiden", + "MILKING": "Melken", + "MANURE_MANAGEMENT": "Mistwirtschaft", + "PEST_OR_DISEASE_CONTROL": "Schädlings- und Krankheitsbekämpfung", + "BREEDING": "Zucht", + "FEEDING": "Fütterung", + "VETERINARY_CARE": "Tierärztliche Versorgung", + "BIRTHING": "Geburt", + "WEANING": "Absetzen", + "TRANSPORTATION": "Transport", + "BEHAVIORAL_AND_SOCIAL_MANAGEMENT": "Verhaltens- und Sozialmanagement", + "EXERCISE": "Training", + "QUARANTINE": "Quarantäne", + "OTHER": "Anderes" }, "SEX": { - "FEMALE": "Weiblich", - "MALE": "Männlich" + "MALE": "Männlich", + "FEMALE": "Weiblich" }, "TAG_COLOR": { "BLUE": "Blau", @@ -29,31 +45,25 @@ "WHITE": "Weiß", "YELLOW": "Gelb" }, - "TAG_PLACEMENT": { - "LEFT_EAR": "Linkes Ohr", - "LEFT_LEG": "Linkes Bein", - "RIGHT_EAR": "Rechtes Ohr", - "RIGHT_LEG": "Rechtes Bein" - }, "TAG_TYPE": { - "EAR_TAG": "Ohrmarke", - "LEG_BAND": "Beinband" + "EAR_TAG": "Ohrschild", + "LEG_BAND": "Fußband" }, "TYPE": { "CATTLE": "Rinder", - "CHICKEN": "Huhn", + "CHICKEN": "Hühner", "PIGS": "Schweine" }, "USE": { - "ANIMAL_FIBERS_AND_SKINS": "Tierische Fasern und Felle", - "BREEDING": "Aufzucht", - "COMPANIONSHIP": "Geselligkeit", + "MILK": "Milch", "EGGS": "Eier", "FAT": "Fett", - "LABOUR_AND_DRAFT": "Arbeit und Entwürfe", "MEAT": "Fleisch", - "MILK": "Milch", - "OTHER": "Andere", - "RECREATIONAL_OR_CULTURAL_USE": "Kulturelle oder Freizeitnutzung" + "ANIMAL_FIBERS_AND_SKINS": "Tierfasern und Felle", + "LABOUR_AND_DRAFT": "Arbeitsaufwand und Entwurf", + "BREEDING": "Zucht", + "RECREATIONAL_OR_CULTURAL_USE": "Freizeit- oder Kulturnutzung", + "COMPANIONSHIP": "Begleitung", + "OTHER": "Andere" } } diff --git a/packages/webapp/public/locales/de/common.json b/packages/webapp/public/locales/de/common.json index 351c29b4fd..15f33dc74a 100644 --- a/packages/webapp/public/locales/de/common.json +++ b/packages/webapp/public/locales/de/common.json @@ -4,20 +4,36 @@ "ADD": "Hinzufügen", "ADD_ANOTHER_ITEM": "Weiteres Element hinzufügen", "ADD_ITEM": "{{itemName}} hinzufügen", + "ADD_TO_GROUP": "Zur Gruppe hinzufügen", + "AGE": "Alter", + "AGE_DAYS_COUNT_one": "{{count}}T", + "AGE_DAYS_COUNT_other": "{{count}}T", + "AGE_MONTHS_COUNT_one": "{{count}}M", + "AGE_MONTHS_COUNT_other": "{{count}}M", + "AGE_YEARS_COUNT_one": "{{count}}J", + "AGE_YEARS_COUNT_other": "{{count}}J", "ALL": "Alle", "AMOUNT": "Betrag", + "AND": "und", "APPLY": "Anwenden", "BACK": "Zurück", "CANCEL": "Abbrechen", "CHANGE": "Ändern", "CHAR_LIMIT_ERROR": "Limit ist {{value}} Zeichen", + "CLEAR_ACTIVE_FILTERS": "Aktive Filter löschen", + "CLEAR_SELECTION": "Auswahl entfernen", + "CLONE": "Klonen", "CLOSE": "Schließen", "CONFIRM": "Bestätigen", "CONTINUE": "Weiter", + "COUNT": "Zählen", "CREATE": "Erstellen", + "CREATE_A_TASK": "Aufgabe erstellen", "DATE": "Datum", "DELETE": "Löschen", + "DO_NOT_KNOW": "Ich weiß es nicht", "DO_NOT_SHOW": "Diese Nachricht nicht mehr anzeigen.", + "DONE": "Fertig", "EDIT": "Bearbeiten", "EDIT_DATE": "Datum bearbeiten", "EDITING": "Bearbeite...", @@ -28,6 +44,7 @@ "GO_BACK": "Zurück", "GOT_IT": "Verstanden!", "HERE": "hier", + "INVALID_DATE": "Ungültiges Datum", "LOADING": "Laden...", "MARK_ABANDON": "Verwerfen", "MARK_COMPLETE": "Als abgeschlossen markieren", @@ -39,16 +56,23 @@ "NEEDS_PLAN": "Bedarfsplan", "NEXT": "Weiter", "NO": "Nein", + "NON_ORGANIC": "Nicht biologisch", + "NONE": "keine", "NOT_SURE": "Nicht sicher", "NOTES": "Anmerkungen", "OK": "OK", "OPTIONAL": "(optional)", "OR": "oder", + "ORGANIC": "Biologisch", "OTHER": "Andere", "PAST": "Vergangene", "PLANNED": "Geplant", + "PREVIOUS": "Vorherige", + "PRICE": "Preis", "PROCEED": "Weiter", + "PROPERTY_UNKNOWN": "{{property}} unbekannt", "QUANTITY": "Menge", + "REMOVE": "Entfernen", "REMOVE_ITEM": "Artikel entfernen", "REQUIRED": "Erforderlich", "RETIRE": "In den Ruhestand gehen", @@ -56,16 +80,29 @@ "SAVE_CHANGES": "Änderungen speichern", "SEARCH": "Suche", "SELECT": "Wählen", + "SELECT_ALL": "Alle auswählen", + "SELECTED_COUNT": "{{count}} ausgewählt", + "SELECTED_COUNT_one": "{{count}} ausgewählt", + "SELECTED_COUNT_many": "{{count}} ausgewählt", + "SELECTED_COUNT_other": "{{count}} ausgewählt", + "SELECT_OR_ADD_YOUR_OWN": "Eigene auswählen oder hinzufügen", + "SET": "Festlegen", + "SHOWING_ALL": "Zeige alle", "SKIP": "Überspringen", "SORRY": "Entschuldigung", "SUBMIT": "Einreichen", "SUBMITTING": "Einreichen...", "THATS_FINE": "Das ist in Ordnung", "TODAY": "Heute", + "TOTAL": "Gesamt", + "TRANSITIONING": "Umstellung", "TYPE": "Typ", + "TYPES": "Typen", + "UNKNOWN": "Unbekannt", "UPDATE": "Aktualisieren", "UPLOAD": "Hochladen", "UPLOADING": "Hochladen...", + "USE": "Benutzen", "WORD_LIMIT_ERROR": "Nur {{value}} Zeichen können angezeigt werden", "YEAR": "Jahr", "YES": "Ja", diff --git a/packages/webapp/public/locales/de/message.json b/packages/webapp/public/locales/de/message.json index 437ac6096b..5223f9b971 100644 --- a/packages/webapp/public/locales/de/message.json +++ b/packages/webapp/public/locales/de/message.json @@ -1,4 +1,18 @@ { + "ANIMALS": { + "FAILED_CREATE_ANIMALS": "Fehler beim Erstellen der Tiere", + "FAILED_CREATE_BATCHES": "Fehler beim Erstellen der Chargen", + "FAILED_REMOVE_ANIMALS": "Fehler beim Entfernen der ausgewählten Tiere", + "FAILED_REMOVE_BATCHES": "Fehler beim Entfernen der ausgewählten Chargen", + "FAILED_UPDATE_ANIMAL": "Fehler beim Aktualisieren des Tieres", + "FAILED_UPDATE_BATCH": "Fehler beim Aktualisieren der Charge", + "SUCCESS_CREATE_ANIMALS": "Tiere erfolgreich erstellt", + "SUCCESS_CREATE_BATCHES": "Chargen erfolgreich erstellt", + "SUCCESS_REMOVE_ANIMALS": "Ausgewählte Tiere erfolgreich entfernt", + "SUCCESS_REMOVE_BATCHES": "Ausgewählte Chargen erfolgreich entfernt", + "SUCCESS_UPDATE_ANIMAL": "Tier erfolgreich aktualisiert", + "SUCCESS_UPDATE_BATCH": "Charge erfolgreich aktualisiert" + }, "ASSIGN_TASK": { "ERROR": "Aufgabe konnte nicht zugewiesen werden", "SUCCESS": "Aufgaben erfolgreich zugewiesen" @@ -40,7 +54,9 @@ "ERROR": { "ADD": "Fehler beim Hinzufügen neuer Ausgaben", "DELETE": "Fehler beim Löschen von Ausgaben", - "UPDATE": "Fehler beim Aktualisieren der Ausgaben!" + "UPDATE": "Fehler beim Aktualisieren der Ausgaben!", + "EXPENSE_DELETED": "Diese Ausgabe existiert nicht mehr", + "EXPENSE_TYPE_DELETED": "Dieser Ausgabentyp wurde gelöscht" }, "SUCCESS": { "ADD": "Neue Ausgaben erfolgreich hinzugefügt!", @@ -70,6 +86,11 @@ "UPDATE": "Betriebsdaten erfolgreich aktualisiert!" } }, + "HELP_REQUEST": { + "ERROR": { + "SEND": "Beim Senden Ihres Feedbacks hat etwas nicht geklappt. Bitte versuchen Sie es erneut." + } + }, "LOG_HARVEST": { "ERROR": { "ADD_USE_TYPE": "Fehler beim Hinzufügen des benutzerdefinierten Erntetyps", @@ -141,7 +162,8 @@ }, "REVENUE": { "ERROR": { - "EDIT": "Aktualisierung der Einnahmen gescheitert" + "EDIT": "Aktualisierung der Einnahmen gescheitert", + "REVENUE_TYPE_DELETED": "Diese Einnahmeart wurde gelöscht" }, "SUCCESS": { "EDIT": "Einnahmen erfolgreich aktualisiert" @@ -163,7 +185,8 @@ "ERROR": { "ADD": "Verkauf nicht möglich", "DELETE": "Neuer Verkauf wurde nicht gelöscht", - "UPDATE": "Verkauf nicht aktualisiert" + "UPDATE": "Verkauf nicht aktualisiert", + "SALE_DELETED": "Dieser Verkauf existiert nicht mehr" }, "SUCCESS": { "ADD": "Erfolgreicher Zusatzverkauf", diff --git a/packages/webapp/public/locales/de/task.json b/packages/webapp/public/locales/de/task.json index c1f42a5ca6..12b8cce63f 100644 --- a/packages/webapp/public/locales/de/task.json +++ b/packages/webapp/public/locales/de/task.json @@ -10,20 +10,16 @@ "WEEDING": "Unkraut", "WASH_AND_PACK_TASK": "Waschen und Verpacken", "PEST_CONTROL_TASK": "Schädlingsbekämpfung", - "PEST_CONTROL_TASK_LOWER": "Schädlingsbekämpfung", "OTHER_TASK": "Andere", "BREAK_TASK": "Pause", "SOIL_TASK": "Ergebnisse der Bodenproben", "IRRIGATION_TASK": "Bewässerung", - "IRRIGATION_TASK_LOWER": "Bewässerung", "TRANSPORT_TASK": "Transport", "FIELD_WORK_TASK": "Feldarbeit", - "FIELD_WORK_TASK_LOWER": "Feldarbeit", "PLANT_TASK": "Bepflanzung", "TRANSPLANT_TASK": "Umpflanzen", "SOCIAL_TASK": "Soziales", "CLEANING_TASK": "Reinigung", - "CLEANING_TASK_LOWER": "reinigen", "SOIL_AMENDMENT_TASK": "Bodenverbesserung", - "SOIL_AMENDMENT_TASK_LOWER": "Bodenverbesserung" + "MOVEMENT_TASK": "Bewegung" } diff --git a/packages/webapp/public/locales/de/translation.json b/packages/webapp/public/locales/de/translation.json index f8cc95348d..8294302045 100644 --- a/packages/webapp/public/locales/de/translation.json +++ b/packages/webapp/public/locales/de/translation.json @@ -1,4 +1,68 @@ { + "ADD_ANIMAL": { + "ADD_ANIMALS": "Tiere hinzufügen", + "ADD_ANIMALS_FLOW": "Hinzufügen von Tieren", + "ADD_ANIMALS_TITLE": "Tiere Hinzufügen", + "ADD_DETAILS_INFO": "Füllen Sie unterhalb Ihre Tierdaten aus oder speichern Sie sie und machen Sie später weiter.", + "ADD_TO_INVENTORY": "Fügen Sie Tiere zu Ihrem Bestand hinzu", + "ANIMAL_BASICS": "Tiergrundlagen", + "ANIMAL_DETAILS": "Tierdetails", + "ANIMALS_TOTAL_one": "{{count}} Tier gesamt", + "ANIMALS_TOTAL_other": "{{count}} Tiere gesamt", + "ANIMALS_UNSPECIFIED_one": "{{count}} nicht spezifiziert", + "ANIMALS_UNSPECIFIED_other": "{{count}} nicht spezifiziert", + "BATCH_NAME": "Chargenname", + "BATCH_NAME_PLACEHOLDER": "Chargennamen eingeben", + "BREED": "Zucht", + "BREED_PLACEHOLDER_DISABLED": "Bitte wählen Sie zuerst einen Typ", + "CREATE_INDIVIDUAL_PROFILES": "Individuelle Tierprofile erstellen", + "CREATE_INDIVIDUAL_PROFILES_TOOLTIP": "Wählen Sie diese Option, wenn Sie jedes Tier einzeln verfolgen und verwalten möchten", + "EDIT_BASIC_INFO": "Basis-Info bearbeiten", + "GENERAL_DETAILS": "Allgemeine Details", + "GENERAL_DETAILS_BATCH": "Allgemeine Chargendetails", + "GROUP_NAME": "Gruppenname", + "GROUP_NAME_PLACEHOLDER": "Gruppenname eingeben", + "ORIGIN": "Ursprung", + "ORIGIN_BATCH": "Chargen-Herkunft", + "OTHER_DETAILS": "Sonstige Details", + "OTHER_DETAILS_BATCH": "Weitere Chargendetails", + "OUT_OF_COUNT_one": "{{animalNumber}} von {{count}}", + "OUT_OF_COUNT_other": "{{animalNumber}} von {{count}}", + "PLACEHOLDER": { + "BATCH_NAME": "Chargennamen eingeben", + "DAM": "Tippe ein Muttertier ein", + "NAME": "Namen eingeben", + "OTHER_DETAILS": "Beschreibung eingeben", + "OTHER_USE": "Beschreiben Sie die andere Verwendung", + "PRICE": "Wie viel hat es gekostet?", + "SIRE": "Vatertier eingeben", + "SUPPLIER": "Lieferant eingeben", + "TAG_COLOUR": "Welche Farbe hat die Marke?", + "TAG_NUMBER": "Markennummer eingeben", + "TAG_TYPE": "Was ist der Markentyp?", + "TAG_TYPE_INFO": "Bitte beschreiben Sie Ihren Markentyp" + }, + "REMOVE_CONFIRM": "Möchten Sie wirklich entfernen?", + "SELECT_SEXES": "Geschlechter auswählen", + "SEX_DETAIL": "Geschlechtsdetails", + "SEX_DETAIL_ERROR_one": "Maximale Tieranzahl: {{count}}", + "SEX_DETAIL_ERROR_other": "Maximale Tieranzahl: {{count}}", + "SEX_DETAIL_ERROR_POPOVER_one": "Sie können nicht mehr als {{count}} Tier haben", + "SEX_DETAIL_ERROR_POPOVER_other": "Sie können nicht mehr als {{count}} Tiere haben", + "SPECIFY_SEX": "Geschlecht spezifizieren", + "SUMMARY": { + "ADD_MORE_DETAILS": "Weitere Details zu Ihren Tieren hinzufügen", + "ALL_DONE": "Alles fertig!", + "ANIMAL_SUMMARY_COUNT_one": "{{count}} einzelnes Tier", + "ANIMAL_SUMMARY_COUNT_other": "{{count}} einzelne Tiere", + "BATCH_SUMMARY_COUNT_one": "{{count}} Charge", + "BATCH_SUMMARY_COUNT_other": "{{count}} Chargen", + "HERE_IS_SUMMARY": "Hier ist eine Zusammenfassung Ihrer hinzugefügten Tiere:", + "MAIN": "Sie haben erfolgreich {{animalCount}} {{and}} {{batchCount}} zu Ihrem Bestand hinzugefügt." + }, + "TYPE": "Typ", + "UNIQUE_DETAILS": "Einzigartige Details" + }, "ADD_FARM": { "ADDRESS_IS_REQUIRED": "Adresse ist erforderlich", "DISABLE_GEO_LOCATION": "Die Standortdienste müssen aktiviert sein, um Ihren aktuellen Standort zu finden.", @@ -53,6 +117,7 @@ "ASSIGN_TASK": "Aufgabe zuweisen", "ASSIGNEE": "Beauftragter", "CANCEL": "Aufgabenerstellung", + "CANT_FIND_INFO_TASK": "Sie können auch Ihre eigenen benutzerdefinierten Aufgabentypen erstellen!", "CLEANING_VIEW": { "ESTIMATED_WATER": "Geschätzter Wasserverbrauch", "IS_PERMITTED": "Steht das Reinigungsmittel auf der Liste der zulässigen Stoffe?", @@ -99,6 +164,7 @@ "IRRIGATION_VIEW": { "BRAND_TOOLTIP": "Diese Aufgabe ist für die Bewässerung Ihres Standorts gedacht. Wenn Sie eine Bewässerung installieren möchten, erstellen Sie stattdessen eine Feldarbeitsaufgabe.", "CALCULATE_WATER_USAGE": "Berechnung des Wasserverbrauchs", + "CALCULATE_WATER_USAGE_WARNING": "Für Wildpflanzen ist eine Schätzung der Wassernutzung nach Tiefe nicht verfügbar.", "DEFAULT_APPLICATION_DEPTH": "Als Standardanwendungstiefe für diesen Standort festlegen", "DEFAULT_LOCATION_FLOW_RATE": "Als Standardflussrate für diesen Standort festlegen", "DEPTH": "Tiefe", @@ -135,9 +201,19 @@ }, "WHAT_TYPE_OF_IRRIGATION": "Welche Art der Bewässerung?" }, - "MANAGE_CUSTOM_TASKS": "Verwalten von benutzerdefinierten Aufgaben", + "MANAGE_CUSTOM_TASKS": "Verwalten Sie Ihre benutzerdefinierten Aufgaben", + "MOVEMENT_VIEW": { + "MOVEMENT_PURPOSE_LABEL": "Was ist der Zweck dieser Bewegung?", + "MOVEMENT_PURPOSE_PLACEHOLDER": "Wählen Sie den Zweck für diese Bewegung", + "OTHER_PURPOSE_EXPLANATION_LABEL": "Erklärung", + "OTHER_PURPOSE_EXPLANATION_PLACEHOLDER": "Bitte beschreiben Sie den Grund für diese Bewegung" + }, + "NEED_ANIMAL_LOCATION_MOVEMENT": "Du brauchst einen Ort oder ein Gebiet, wo Tiere bewegt werden können. Gehe zur Karte, um einen Tierstandort zu erstellen.", "NEED_MANAGEMENT_PLAN": "Sie benötigen einen aktiven oder geplanten Anbauplan, bevor Sie eine Ernteaufgabe oder eine Umpflanzaufgabe planen können. Rufen Sie den Pflanzenkatalog auf, um jetzt einen Plan zu erstellen.", + "NO_ANIMAL_LOCATION": "Keine zugelassenen Tierstandorte", "NO_MANAGEMENT_PLAN": "Keine förderfähigen Anbaupläne", + "NOTES_LABEL": "Gibt es etwas Spezielles, das zu dieser Aufgabe hinzugefügt werden sollte?", + "NOTES_PLACEHOLDER": "Anweisungen oder Spezifikationen für den Beauftragten hinzufügen", "PEST_CONTROL_VIEW": { "BIOLOGICAL_CONTROL": "Biologische Kontrolle", "FLAME_WEEDING": "Flammenunkrautbekämpfung", @@ -196,11 +272,64 @@ "TASK": "Aufgabe", "TASK_NOTES_CHAR_LIMIT": "Notizen müssen weniger als 10.000 Zeichen umfassen", "TELL_US_ABOUT_YOUR_TASK_TYPE_ONE": "Erzählen Sie uns von dieser Aufgabe", + "THIS_TASK_IS_COMPLETED": "Diese Aufgabe ist bereits abgeschlossen", + "THIS_TASK_IS_COMPLETED_EXPLANATION": "Wenn Sie auf \"Speichern\" klicken, wird diese Aufgabe sofort gespeichert. Sie werden dann aufgefordert, sie abzuschließen.", "TRANSPLANT_METHOD": "Umpflanzsmethode", "WAGE_OVERRIDE": "Lohnaufhebung", "WHAT_PLANTING_METHOD": "Was ist die Umpflanzmethode?", "WILD_CROP": "Wildfrüchte" }, + "ANIMAL": { + "ADD_MORE_BODY_TEXT": "Haben Sie einen anderen Tiertyp oder eine andere Rasse?", + "ADD_MORE_BUTTON": "Mehr Tiere hinzufügen", + "ANIMAL_BREED": "Rasse", + "ANIMAL_COUNT_one": "{{count}} Tier", + "ANIMAL_COUNT_other": "{{count}} Tiere", + "ANIMAL_GROUPS": "Gruppe", + "ANIMAL_ID": "ID", + "ANIMAL_IDENTIFICATION": "Identifizierung", + "ANIMAL_LOCATIONS": "Standort", + "ANIMAL_SEXES": "Geschlecht", + "ANIMAL_TYPE": "Typ", + "ATTRIBUTE": { + "ANIMAL_IMAGE": "Tierbild", + "BATCH_IMAGE": "Chargenbild", + "BATCH_NAME": "Chargenname", + "DAM": "Muttertier", + "DATE_OF_BIRTH": "Geburtsdatum", + "LITEFARM_ID": "LiteFarm ID", + "ORGANIC_STATUS": "Bio-Status", + "OTHER_DETAILS_ANIMAL": "Andere Tierdetails", + "OTHER_DETAILS_BATCH": "Chargendetails", + "OTHER_USE": "Andere Verwendung", + "SIRE": "Vatertier", + "SUPPLIER": "Lieferant", + "TAG_COLOUR": "Markenfarbe", + "TAG_NUMBER": "Markennummer", + "TAG_TYPE": "Markentyp", + "WEANING_DATE": "Absetzdatum" + }, + "BATCH": "Charge", + "BETA_SPOTLIGHT_HEADING": "Einführung der neuen Tierfunktion", + "EDIT_ANIMAL_FLOW": "bearbeite", + "FILTER": { + "BATCHES": "Chargen", + "BATCHES_OR_INDIVIDUALS": "Chargen oder Einzeltiere", + "FEMALE": "Weiblich", + "INDIVIDUALS": "Einzeltiere", + "MALE": "Männlich", + "TITLE": "Tiere filtern" + }, + "REMOVE_ANIMAL": "Tiere entfernen", + "SEARCH_INVENTORY_PLACEHOLDER": "Durchsuche Ihren Bestand", + "SHOWING_RESULTS_WITH_COUNT_one": "{{count}} Ergebnis wird angezeigt", + "SHOWING_RESULTS_WITH_COUNT_many": "{{count}} Ergebnisse werden angezeigt", + "SHOWING_RESULTS_WITH_COUNT_other": "{{count}} Ergebnisse werden angezeigt", + "TABS": { + "BASIC_INFO": "Grundinfo", + "TASKS": "Aufgaben" + } + }, "BED_PLAN": { "LENGTH_OF_BED": "Länge der Betten", "NUMBER_0F_BEDS": "# Anzahl der Betten", @@ -822,7 +951,7 @@ }, "TUTORIALS": "Kartenanleitungen", "UNABLE_TO_RETIRE": { - "BODY": "Sie können nur Standorte zurückziehen, die keine aktiven oder geplanten Pflanzen oder Aufgaben haben.", + "BODY": "Sie können nur Standorte zurückziehen, die keine aktiven oder geplanten Pflanzen, Tiere oder Aufgaben haben.", "TITLE": "Nicht möglich, zurückzuziehen" }, "WATER_VALVE": { @@ -853,13 +982,18 @@ } }, "FILE_SIZE_MODAL": { - "BODY": "Dateien dürfen nicht größer als 10 MB sein.", + "BODY": "Dateien können nicht größer als {{size}} MB sein.", "TITLE": "Dateigröße zu groß" }, "FILTER": { + "CLEAR": "entfernen", "CLEAR_ALL": "Alle löschen", "CLEAR_ALL_FILTERS": "Alle Filter löschen", - "SELECT_ALL": "Alle auswählen" + "SELECT_ALL": "Alle auswählen", + "SELECTED_one": "{{count}} ausgewählt", + "SELECTED_other": "{{count}} ausgewählt", + "SHOWING_ALL": "Zeige alle", + "SHOWING_ALL_DEFAULT": "Zeige alle (Standard)" }, "FINANCES": { "ACTUAL_REVENUE": { @@ -921,6 +1055,8 @@ "HELP": { "ATTACHMENT_LABEL": "Bildschirmfoto oder Datei hochladen", "EMAIL": "E-Mail", + "FEEDBACK_INVITATION": "Hilfe erhalten oder Feedback geben", + "SEND_US_FEEDBACK": "Senden Sie uns Feedback", "MESSAGE_LABEL": "Nachricht", "OPTIONS": { "OTHER": "Andere", @@ -930,7 +1066,6 @@ }, "PREFERRED_CONTACT": "Bevorzugte Kontaktmethode", "REQUIRED_LABEL": "Erforderliches Feld", - "TITLE": "Anfrage einreichen", "TYPE_SUPPORT_LABEL": "Art der Anfrage", "TYPE_SUPPORT_PLACEHOLDER": "Wählen Sie die Art der Unterstützung", "WHATSAPP": "Whatsapp", @@ -939,6 +1074,11 @@ "HOME": { "GREETING": "Guten Tag, " }, + "HOVERPILL": { + "PLUS_OTHERS_COUNT_one": "+ {{count}} andere", + "PLUS_OTHERS_COUNT_many": "+ {{count}} andere", + "PLUS_OTHERS_COUNT_other": "+ {{count}} andere" + }, "INSIGHTS": { "BIODIVERSITY": { "AMPHIBIANS": "Amphibien", @@ -1260,6 +1400,10 @@ }, "MENU": { "ACTUAL_REVENUES": "Tatsächliche Einnahmen", + "ANIMALS": "Tiere", + "ANIMALS_GROUPS": "Gruppen", + "ANIMALS_INVENTORY": "Bestand", + "ANIMALS_LOCATION": "Standorte", "CERTIFICATIONS": "Zertifizierungen", "CROPS": "Kulturpflanzen", "DOCUMENTS": "Dokumente", @@ -1458,6 +1602,22 @@ "LITEFARM_UPDATED": "LiteFarm v{{version}} ist jetzt verfügbar!", "NOTES": "Hinweise zur Veröffentlichung" }, + "REMOVE_ANIMALS": { + "CREATED_IN_ERROR": "In Fehler erstellt", + "CULLED": "Ausgemustert", + "EXPLANATION": "Erklärung", + "MORE_DETAILS": "Möchten Sie weitere Details angeben?", + "NATURAL_DEATH": "Natürlicher Tod", + "REMOVAL_REASONS": "Entfernungsgründe", + "REMOVE_ANIMALS": "Tiere entfernen", + "REMOVED_AND_ARCHIVED": "Diese Tiere wurden erfolgreich aus Ihrem Bauernhof entfernt und werden in Ihrem historischen Bestand verfügbar sein.", + "SLAUGHTERED_FOR_CONSUMPTION": "Zum Verbrauch geschlachtet", + "SLAUGHTERED_FOR_SALE": "Zum Verkauf geschlachtet", + "SOLD": "Verkauft", + "WHY": "Teilen Sie uns mit, warum Sie diese Tiere entfernen", + "WILL_BE_ARCHIVED": "Diese Tiere werden aus deinem aktiven Inventar entfernt", + "WILL_BE_PERMANENTLY_REMOVED": "Diese Tiere werden dauerhaft aus Ihrem Bauernhof entfernt" + }, "REPEAT_PLAN": { "AFTER": "Nach", "COMPLETION": "Fertigstellung", @@ -1498,7 +1658,7 @@ }, "REQUEST_CONFIRMATION_MODAL": { "BUTTON": "Verstanden", - "DESCRIPTION": "Jemand wird sich innerhalb von 48 Stunden mit Ihnen in Verbindung setzen.", + "DESCRIPTION": "Jemand wird in Kürze Kontakt aufnehmen.", "TITLE": "Anfrage abgeschickt" }, "REVENUE": { @@ -1611,6 +1771,11 @@ "NO_RESULTS_FOR": "Es wurden leider keine Ergebnisse für Ihren Suchbegriff gefunden <1>'{{searchTerm}}'", "ZERO": "0 Ergebnisse" }, + "SECTION_HEADER": { + "ANIMALS_GROUPS": "Tiergruppen", + "ANIMALS_INVENTORY": "Tierbestand", + "ANIMALS_LOCATION": "Tierstandorte" + }, "SENSOR": { "BRAND": "Marke", "BRAND_HELPTEXT": "Die Marken, in die LiteFarm integriert werden kann, sind unten aufgeführt. Wenn Sie diese Sensormarke nicht mehr verwenden möchten, versuchen Sie stattdessen, diesen Sensor zu deaktivieren.", @@ -1768,6 +1933,7 @@ "LABOUR_ISSUE": "Arbeitsproblem", "MACHINERY_ISSUE": "Maschinenproblem", "MARKET_PROBLEM": "Marktproblem", + "NO_ANIMALS": "Automatisch aufgegeben: Keine Tiere für diese Aufgabe", "OTHER": "Andere", "SCHEDULING_ISSUE": "Terminplanungsproblem", "WEATHER": "Wetter" @@ -1787,9 +1953,14 @@ "ADD_TASK": "Erstellen Sie eine Aufgabe", "ADD_TASK_FLOW": "Aufgabenerstellung", "AMOUNT_TO_ALLOCATE": "Zuzuweisender Betrag", + "ANIMALS": "Tiere", + "ANIMALS_AT_LEAST_ONE_TO_COMPLETE": "Mindestens ein Tier muss ausgewählt werden, um diese Aufgabe abzuschließen. Um alle Tiere zu entfernen, verlassen Sie stattdessen die Aufgabe.", + "ANIMAL_MOVING_TO_LOCATION": "Verschieben nach:", + "ANIMAL_MOVEMENT_EXPANDING_SUMMARY_TITLE": "Tiere in dieser Aufgabe", "CARD": { "MULTIPLE_CROPS": "Mehrere Kulturpflanzen", - "MULTIPLE_LOCATIONS": "Mehrere Standorte" + "MULTIPLE_LOCATIONS": "Mehrere Standorte", + "NO_LOCATION": "Kein Standort" }, "COMPLETE": { "DATE": "Datum der Fertigstellung", @@ -1845,6 +2016,7 @@ "HOW_WILL_HARVEST_BE_USED": "Wie wird die Ernte genutzt?", "IRRIGATION_LOCATION": "Wählen Sie einen Bewässerungsstandort", "LOCATIONS": "Standort(e)", + "NO_LOCATIONS_FOR_TASK": "Kein spezieller Standort für diese Aufgabe erforderlich", "NO_TASKS_TO_DISPLAY": "Es gibt keine Aufgaben anzuzeigen.", "NO_WORK_DONE": "Keine Arbeit wurde abgeschlossen", "PAGE_TITLE": "Aufgaben", @@ -1853,6 +2025,7 @@ "QUANTITY_CANNOT_EXCEED": "Die genutzte Erntemenge darf nicht größer sein als die zu verteilende Menge", "RATE_THIS_TASK": "Bewerten Sie diese Aufgabe", "REMOVE_HARVEST_USE": "Entfernen", + "SELECT_ANIMALS": "Tiere auswählen", "SELECT_DATE": "Wählen Sie das Datum der Aufgabe", "SELECT_TASK_LOCATIONS": "Wählen Sie die Aufgabenstellung(en)", "SELECT_WILD_CROP": "Diese Aufgabe zielt auf eine Wildpflanze ab", @@ -1885,6 +2058,13 @@ "MAYBE_LATER": "Vielleicht taucht es später noch auf.", "UNKNOWN_RECORD": "Unbekannter Nachweis" }, + "UPLOADER": { + "CHANGE_IMAGE": "Bild Ändern", + "CLICK_TO_UPLOAD": "Zum Hochladen klicken", + "DRAG_DROP": "oder ziehen und ablegen", + "REMOVE_IMAGE": "Bild Entfernen", + "UPLOAD_IMAGE": "Bild Hochladen" + }, "WAGE": { "ERROR": "Der Lohn muss eine gültige, nicht-negative Dezimalzahl sein", "HOURLY_WAGE": "Stundenlohn", @@ -1900,5 +2080,11 @@ }, "YEAR_SELECTOR": { "TITLE": "Jahr auswählen" + }, + "BADGE": { + "BETA": { + "TITLE": "Beta", + "ANIMALS_CONTENT": "Erhalten Sie einen ersten Einblick in unsere neue Funktion zur Tierverwaltung – jetzt in der Beta-Phase! Ihr Feedback ist entscheidend, während wir diese Funktion weiterentwickeln. Bitte teilen Sie uns eventuelle Fehler oder Verbesserungsvorschläge mit. Wir schätzen Ihre Hilfe bei der Verbesserung von LiteFarm sehr! Mehr über die Beta erfahren Sie hier" + } } } diff --git a/packages/webapp/public/locales/en/animal.json b/packages/webapp/public/locales/en/animal.json new file mode 100644 index 0000000000..80d34b07a8 --- /dev/null +++ b/packages/webapp/public/locales/en/animal.json @@ -0,0 +1,69 @@ +{ + "BREED": { + "ANGUS": "Angus", + "CHAROLAIS": "Charolais", + "COBB_500": "Cobb 500", + "CORNISH_CROSS": "Cornish Cross", + "DUROC": "Duroc", + "HEREFORD": "Hereford", + "LANDRACE": "Landrace", + "LEGHORN": "Leghorn", + "PLYMOUTH_ROCK": "Plymouth Rock", + "RHODE_ISLAND_RED": "Rhode Island Red", + "ROSS_308": "Ross 308", + "YORKSHIRE_LARGE_WHITE": "Yorkshire Large White" + }, + "ORIGIN": { + "BORN_AT_FARM": "Born at the farm", + "BROUGHT_IN": "Brought in" + }, + "PURPOSE": { + "GRAZING": "Grazing", + "MILKING": "Milking", + "MANURE_MANAGEMENT": "Manure management", + "PEST_OR_DISEASE_CONTROL": "Pest or disease control", + "BREEDING": "Breeding", + "FEEDING": "Feeding", + "VETERINARY_CARE": "Veterinary care", + "BIRTHING": "Birthing", + "WEANING": "Weaning", + "TRANSPORTATION": "Transportation", + "BEHAVIORAL_AND_SOCIAL_MANAGEMENT": "Behavioural and social management", + "EXERCISE": "Exercise", + "QUARANTINE": "Quarantine", + "OTHER": "Other" + }, + "SEX": { + "MALE": "Male", + "FEMALE": "Female" + }, + "TAG_COLOR": { + "BLUE": "Blue", + "GREEN": "Green", + "ORANGE": "Orange", + "RED": "Red", + "WHITE": "White", + "YELLOW": "Yellow" + }, + "TAG_TYPE": { + "EAR_TAG": "Ear tag", + "LEG_BAND": "Leg band" + }, + "TYPE": { + "CATTLE": "Cattle", + "CHICKEN": "Chicken", + "PIGS": "Pigs" + }, + "USE": { + "MILK": "Milk", + "EGGS": "Eggs", + "FAT": "Fat", + "MEAT": "Meat", + "ANIMAL_FIBERS_AND_SKINS": "Animal Fibers and Skins", + "LABOUR_AND_DRAFT": "Labour and Draft", + "BREEDING": "Breeding", + "RECREATIONAL_OR_CULTURAL_USE": "Recreational or Cultural Use", + "COMPANIONSHIP": "Companionship", + "OTHER": "Other" + } +} diff --git a/packages/webapp/public/locales/en/common.json b/packages/webapp/public/locales/en/common.json index 9640a1a5de..a6dd4879cf 100644 --- a/packages/webapp/public/locales/en/common.json +++ b/packages/webapp/public/locales/en/common.json @@ -4,20 +4,36 @@ "ADD": "Add", "ADD_ANOTHER_ITEM": "Add another item", "ADD_ITEM": "Add {{itemName}}", + "ADD_TO_GROUP": "Add to group", + "AGE": "Age", + "AGE_DAYS_COUNT_one": "{{count}}d", + "AGE_DAYS_COUNT_other": "{{count}}d", + "AGE_MONTHS_COUNT_one": "{{count}}m", + "AGE_MONTHS_COUNT_other": "{{count}}m", + "AGE_YEARS_COUNT_one": "{{count}}y", + "AGE_YEARS_COUNT_other": "{{count}}y", "ALL": "All", "AMOUNT": "Amount", + "AND": "and", "APPLY": "Apply", "BACK": "Go Back", "CANCEL": "Cancel", "CHANGE": "Change", "CHAR_LIMIT_ERROR": "Limit is {{value}} characters", + "CLEAR_ACTIVE_FILTERS": "Clear active filters", + "CLEAR_SELECTION": "Clear selection", + "CLONE": "Clone", "CLOSE": "Close", "CONFIRM": "Confirm", "CONTINUE": "Continue", + "COUNT": "Count", "CREATE": "Create", + "CREATE_A_TASK": "Create a task", "DATE": "Date", "DELETE": "Delete", + "DO_NOT_KNOW": "I don't know", "DO_NOT_SHOW": "Don’t show this message again.", + "DONE": "Done", "EDIT": "Edit", "EDIT_DATE": "Edit date", "EDITING": "Editing...", @@ -28,6 +44,7 @@ "GO_BACK": "Go back", "GOT_IT": "Got it!", "HERE": "here", + "INVALID_DATE": "Invalid date", "LOADING": "Loading...", "MARK_ABANDON": "Abandon", "MARK_COMPLETE": "Mark Complete", @@ -39,16 +56,23 @@ "NEEDS_PLAN": "Needs plan", "NEXT": "Next", "NO": "No", + "NON_ORGANIC": "Non-organic", + "NONE": "none", "NOT_SURE": "Not sure", "NOTES": "Notes", "OK": "OK", "OPTIONAL": "(optional)", "OR": "or", + "ORGANIC": "Organic", "OTHER": "Other", "PAST": "Past", "PLANNED": "Planned", + "PREVIOUS": "Previous", + "PRICE": "Price", "PROCEED": "Proceed", + "PROPERTY_UNKNOWN": "{{property}} unknown", "QUANTITY": "Quantity", + "REMOVE": "Remove", "REMOVE_ITEM": "Remove item", "REQUIRED": "Required", "RETIRE": "Retire", @@ -56,16 +80,29 @@ "SAVE_CHANGES": "Save Changes", "SEARCH": "Search", "SELECT": "Select", + "SELECT_ALL": "Select all", + "SELECTED_COUNT": "{{count}} selected", + "SELECTED_COUNT_one": "{{count}} selected", + "SELECTED_COUNT_many": "{{count}} selected", + "SELECTED_COUNT_other": "{{count}} selected", + "SELECT_OR_ADD_YOUR_OWN": "Select or add your own", + "SET": "Set", + "SHOWING_ALL": "Showing all", "SKIP": "Skip", "SORRY": "Sorry", "SUBMIT": "Submit", "SUBMITTING": "Submitting...", "THATS_FINE": "That’s fine", "TODAY": "Today", + "TOTAL": "Total", + "TRANSITIONING": "Transitioning", "TYPE": "Type", + "TYPES": "Types", + "UNKNOWN": "Unknown", "UPDATE": "Update", "UPLOAD": "Upload", "UPLOADING": "Uploading...", + "USE": "Use", "WORD_LIMIT_ERROR": "Only {{value}} characters can be displayed", "YEAR": "Year", "YES": "Yes", diff --git a/packages/webapp/public/locales/en/message.json b/packages/webapp/public/locales/en/message.json index 0b24c8fb33..003440b89e 100644 --- a/packages/webapp/public/locales/en/message.json +++ b/packages/webapp/public/locales/en/message.json @@ -1,4 +1,18 @@ { + "ANIMALS": { + "FAILED_CREATE_ANIMALS": "Failed to create animals", + "FAILED_CREATE_BATCHES": "Failed to create batches", + "FAILED_REMOVE_ANIMALS": "Failed to remove selected animals", + "FAILED_REMOVE_BATCHES": "Failed to remove selected batches", + "FAILED_UPDATE_ANIMAL": "Failed to update animal", + "FAILED_UPDATE_BATCH": "Failed to update batch", + "SUCCESS_CREATE_ANIMALS": "Successfully created animals", + "SUCCESS_CREATE_BATCHES": "Successfully created batches", + "SUCCESS_REMOVE_ANIMALS": "Successfully removed selected animals", + "SUCCESS_REMOVE_BATCHES": "Successfully removed selected batches", + "SUCCESS_UPDATE_ANIMAL": "Successfully updated animal", + "SUCCESS_UPDATE_BATCH": "Successfully updated batch" + }, "ASSIGN_TASK": { "ERROR": "Failed to assign tasks", "SUCCESS": "Successfully assigned tasks" @@ -40,7 +54,9 @@ "ERROR": { "ADD": "Failed to add new expenses", "DELETE": "Failed to delete expenses", - "UPDATE": "Failed to update expenses!" + "UPDATE": "Failed to update expenses!", + "EXPENSE_DELETED": "This expense no longer exists", + "EXPENSE_TYPE_DELETED": "This expense type has been deleted" }, "SUCCESS": { "ADD": "Successfully added new expenses!", @@ -70,6 +86,11 @@ "UPDATE": "Successfully updated farm info!" } }, + "HELP_REQUEST": { + "ERROR": { + "SEND": "Something went wrong while submitting your feedback. Please try again." + } + }, "LOG_HARVEST": { "ERROR": { "ADD_USE_TYPE": "Failed to add custom harvest use type", @@ -141,7 +162,8 @@ }, "REVENUE": { "ERROR": { - "EDIT": "Failed to update revenue" + "EDIT": "Failed to update revenue", + "REVENUE_TYPE_DELETED": "This revenue type has been deleted" }, "SUCCESS": { "EDIT": "Revenue successfully updated" @@ -163,7 +185,8 @@ "ERROR": { "ADD": "Failed to add sale", "DELETE": "Failed to delete new sale", - "UPDATE": "Failed to update sale" + "UPDATE": "Failed to update sale", + "SALE_DELETED": "This sale no longer exists" }, "SUCCESS": { "ADD": "Successfully added sale", diff --git a/packages/webapp/public/locales/en/task.json b/packages/webapp/public/locales/en/task.json index 187c606877..7d0129cd5f 100644 --- a/packages/webapp/public/locales/en/task.json +++ b/packages/webapp/public/locales/en/task.json @@ -10,20 +10,16 @@ "WEEDING": "Weed", "WASH_AND_PACK_TASK": "Wash and Pack", "PEST_CONTROL_TASK": "Pest Control", - "PEST_CONTROL_TASK_LOWER": "pest control", "OTHER_TASK": "Other", "BREAK_TASK": "Break", "SOIL_TASK": "Soil Sample Results", "IRRIGATION_TASK": "Irrigation", - "IRRIGATION_TASK_LOWER": "irrigation", "TRANSPORT_TASK": "Transport", "FIELD_WORK_TASK": "Field Work", - "FIELD_WORK_TASK_LOWER": "field work", "PLANT_TASK": "Planting", "TRANSPLANT_TASK": "Transplant", "SOCIAL_TASK": "Social", "CLEANING_TASK": "Clean", - "CLEANING_TASK_LOWER": "clean", "SOIL_AMENDMENT_TASK": "Soil Amendment", - "SOIL_AMENDMENT_TASK_LOWER": "soil amendment" + "MOVEMENT_TASK": "Movement" } diff --git a/packages/webapp/public/locales/en/translation.json b/packages/webapp/public/locales/en/translation.json index 10ff0b8da8..9378779763 100644 --- a/packages/webapp/public/locales/en/translation.json +++ b/packages/webapp/public/locales/en/translation.json @@ -1,4 +1,68 @@ { + "ADD_ANIMAL": { + "ADD_ANIMALS": "Add animals", + "ADD_ANIMALS_FLOW": "addition of animals", + "ADD_ANIMALS_TITLE": "Add Animals", + "ADD_DETAILS_INFO": "Fill in your animal details below or save and pick this up later on.", + "ADD_TO_INVENTORY": "Add animals to your inventory", + "ANIMAL_BASICS": "Animal basics", + "ANIMAL_DETAILS": "Animal details", + "ANIMALS_TOTAL_one": "{{count}} animal total", + "ANIMALS_TOTAL_other": "{{count}} animals total", + "ANIMALS_UNSPECIFIED_one": "{{count}} unspecified", + "ANIMALS_UNSPECIFIED_other": "{{count}} unspecified", + "BATCH_NAME": "Batch name", + "BATCH_NAME_PLACEHOLDER": "Type in batch name", + "BREED": "Breed", + "BREED_PLACEHOLDER_DISABLED": "Please select a type first", + "CREATE_INDIVIDUAL_PROFILES": "Create individual animal profiles", + "CREATE_INDIVIDUAL_PROFILES_TOOLTIP": "Select this option if you want to track and manage each animal separately", + "EDIT_BASIC_INFO": "Edit basic info", + "GENERAL_DETAILS": "General details", + "GENERAL_DETAILS_BATCH": "Batch general details", + "GROUP_NAME": "Group name", + "GROUP_NAME_PLACEHOLDER": "Type in group name", + "ORIGIN": "Origin", + "ORIGIN_BATCH": "Batch origin", + "OTHER_DETAILS": "Other details", + "OTHER_DETAILS_BATCH": "Batch other details", + "OUT_OF_COUNT_one": "{{animalNumber}} out of {{count}}", + "OUT_OF_COUNT_other": "{{animalNumber}} out of {{count}}", + "PLACEHOLDER": { + "BATCH_NAME": "Type in the batch name", + "DAM": "Type in a dam", + "NAME": "Type in a name", + "OTHER_DETAILS": "Enter a description", + "OTHER_USE": "Describe the other use", + "PRICE": "How much did it cost?", + "SIRE": "Type in a sire", + "SUPPLIER": "Type in a supplier", + "TAG_COLOUR": "What colour is the tag?", + "TAG_NUMBER": "Type in the tag number", + "TAG_TYPE": "What is the tag type?", + "TAG_TYPE_INFO": "Please describe your tag type" + }, + "REMOVE_CONFIRM": "Do you really want to remove?", + "SELECT_SEXES": "Select sexes", + "SEX_DETAIL": "Sex detail", + "SEX_DETAIL_ERROR_one": "Maximum animal count: {{count}}", + "SEX_DETAIL_ERROR_other": "Maximum animal count: {{count}}", + "SEX_DETAIL_ERROR_POPOVER_one": "You cannot have more than {{count}} animal", + "SEX_DETAIL_ERROR_POPOVER_other": "You cannot have more than {{count}} animals", + "SPECIFY_SEX": "Specify sex", + "SUMMARY": { + "ADD_MORE_DETAILS": "Add more details to your animals", + "ALL_DONE": "All done!", + "ANIMAL_SUMMARY_COUNT_one": "{{count}} individual animal", + "ANIMAL_SUMMARY_COUNT_other": "{{count}} individual animals", + "BATCH_SUMMARY_COUNT_one": "{{count}} batch", + "BATCH_SUMMARY_COUNT_other": "{{count}} batches", + "HERE_IS_SUMMARY": "Here is a summary of your added animals:", + "MAIN": "You successfully added {{animalCount}} {{and}} {{batchCount}} to your inventory." + }, + "TYPE": "Type", + "UNIQUE_DETAILS": "Unique details" + }, "ADD_FARM": { "ADDRESS_IS_REQUIRED": "Address is required", "DISABLE_GEO_LOCATION": "Location services must be enabled to find your current location.", @@ -53,6 +117,7 @@ "ASSIGN_TASK": "Assign task", "ASSIGNEE": "Assignee", "CANCEL": "task creation", + "CANT_FIND_INFO_TASK": "You can also create your own custom task types!", "CLEANING_VIEW": { "ESTIMATED_WATER": "Estimated water usage", "IS_PERMITTED": "Is the cleaning agent in the permitted substances list?", @@ -99,6 +164,7 @@ "IRRIGATION_VIEW": { "BRAND_TOOLTIP": "This task is for watering your location. If you want to install irrigation, create a field work task instead.", "CALCULATE_WATER_USAGE": "Calculate Water Usage", + "CALCULATE_WATER_USAGE_WARNING": "For wild crops, estimation of water usage by depth is not available.", "DEFAULT_APPLICATION_DEPTH": "Set as default application depth for this location", "DEFAULT_LOCATION_FLOW_RATE": "Set as default flow rate for this location", "DEPTH": "Depth", @@ -135,9 +201,19 @@ }, "WHAT_TYPE_OF_IRRIGATION": "What type of irrigation?" }, - "MANAGE_CUSTOM_TASKS": "Manage custom tasks", + "MANAGE_CUSTOM_TASKS": "Manage your custom tasks", + "MOVEMENT_VIEW": { + "MOVEMENT_PURPOSE_LABEL": "What's the purpose of this movement?", + "MOVEMENT_PURPOSE_PLACEHOLDER": "Select the purpose for this movement", + "OTHER_PURPOSE_EXPLANATION_LABEL": "Explanation", + "OTHER_PURPOSE_EXPLANATION_PLACEHOLDER": "Please describe the reason for this movement" + }, + "NEED_ANIMAL_LOCATION_MOVEMENT": "You'll need a location or area where animals can be moved. Go to the map to create an animal location.", "NEED_MANAGEMENT_PLAN": "You'll need an active or planned crop plan before you can schedule a harvest task or transplant task. Go to the crop catalogue to create a plan now.", + "NO_ANIMAL_LOCATION": "No eligible animal locations", "NO_MANAGEMENT_PLAN": "No eligible crop plans", + "NOTES_LABEL": "Anything specific to add related to this task?", + "NOTES_PLACEHOLDER": "Add any instructions or specifics for the assignee", "PEST_CONTROL_VIEW": { "BIOLOGICAL_CONTROL": "Biological control", "FLAME_WEEDING": "Flame weeding", @@ -196,11 +272,64 @@ "TASK": "task", "TASK_NOTES_CHAR_LIMIT": "Notes must be less than 10,000 characters", "TELL_US_ABOUT_YOUR_TASK_TYPE_ONE": "Tell us about this task", + "THIS_TASK_IS_COMPLETED": "This task has already been completed", + "THIS_TASK_IS_COMPLETED_EXPLANATION": "Clicking 'Save' will immediately save this task. You'll then be prompted to complete it.", "TRANSPLANT_METHOD": "Transplant method", "WAGE_OVERRIDE": "Wage override", "WHAT_PLANTING_METHOD": "What is the transplanting method?", "WILD_CROP": "Wild crops" }, + "ANIMAL": { + "ADD_MORE_BODY_TEXT": "Do you have another animal type or a different breed?", + "ADD_MORE_BUTTON": "Add more animals", + "ANIMAL_BREED": "Breed", + "ANIMAL_COUNT_one": "{{count}} animal", + "ANIMAL_COUNT_other": "{{count}} animals", + "ANIMAL_GROUPS": "Group", + "ANIMAL_ID": "ID", + "ANIMAL_IDENTIFICATION": "Identification", + "ANIMAL_LOCATIONS": "Location", + "ANIMAL_SEXES": "Sex", + "ANIMAL_TYPE": "Type", + "ATTRIBUTE": { + "ANIMAL_IMAGE": "Animal image", + "BATCH_IMAGE": "Batch image", + "BATCH_NAME": "Batch name", + "DAM": "Dam", + "DATE_OF_BIRTH": "Date of birth", + "LITEFARM_ID": "LiteFarm ID", + "ORGANIC_STATUS": "Organic status", + "OTHER_DETAILS_ANIMAL": "Other animal details", + "OTHER_DETAILS_BATCH": "Batch details", + "OTHER_USE": "Other use", + "SIRE": "Sire", + "SUPPLIER": "Supplier", + "TAG_COLOUR": "Tag colour", + "TAG_NUMBER": "Tag number", + "TAG_TYPE": "Tag type", + "WEANING_DATE": "Weaning date" + }, + "BATCH": "Batch", + "BETA_SPOTLIGHT_HEADING": "Introducing the new Animals feature", + "EDIT_ANIMAL_FLOW": "editing", + "FILTER": { + "BATCHES": "Batches", + "BATCHES_OR_INDIVIDUALS": "Batches or Individuals", + "FEMALE": "Female", + "INDIVIDUALS": "Individuals", + "MALE": "Male", + "TITLE": "Filter animals" + }, + "REMOVE_ANIMAL": "Remove animals", + "SEARCH_INVENTORY_PLACEHOLDER": "Search your inventory", + "SHOWING_RESULTS_WITH_COUNT_one": "Showing {{count}} result", + "SHOWING_RESULTS_WITH_COUNT_many": "Showing {{count}} results", + "SHOWING_RESULTS_WITH_COUNT_other": "Showing {{count}} results", + "TABS": { + "BASIC_INFO": "Basic info", + "TASKS": "Tasks" + } + }, "BED_PLAN": { "LENGTH_OF_BED": "Length of beds", "NUMBER_0F_BEDS": "# of beds", @@ -822,7 +951,7 @@ }, "TUTORIALS": "Map Tutorials", "UNABLE_TO_RETIRE": { - "BODY": "You can only retire locations that have no active or planned crops or tasks.", + "BODY": "You can only retire locations that have no active or planned crops, no animals or tasks.", "TITLE": "Unable to retire" }, "WATER_VALVE": { @@ -853,13 +982,18 @@ } }, "FILE_SIZE_MODAL": { - "BODY": "Files cannot be larger than 10MB.", + "BODY": "Files cannot be larger than {{size}} MB.", "TITLE": "File size too large" }, "FILTER": { + "CLEAR": "clear", "CLEAR_ALL": "Clear all", "CLEAR_ALL_FILTERS": "Clear all filters", - "SELECT_ALL": "Select all" + "SELECT_ALL": "Select all", + "SELECTED_one": "{{count}} selected", + "SELECTED_other": "{{count}} selected", + "SHOWING_ALL": "Showing all", + "SHOWING_ALL_DEFAULT": "Showing All (Default)" }, "FINANCES": { "ACTUAL_REVENUE": { @@ -921,6 +1055,8 @@ "HELP": { "ATTACHMENT_LABEL": "Upload screenshot or file", "EMAIL": "Email", + "FEEDBACK_INVITATION": "Get help or give us feedback", + "SEND_US_FEEDBACK": "Send us feedback", "MESSAGE_LABEL": "Message", "OPTIONS": { "OTHER": "Other", @@ -930,7 +1066,6 @@ }, "PREFERRED_CONTACT": "Preferred contact method", "REQUIRED_LABEL": "Required Field", - "TITLE": "Request Help", "TYPE_SUPPORT_LABEL": "Type of support", "TYPE_SUPPORT_PLACEHOLDER": "Choose type of support", "WHATSAPP": "Whatsapp", @@ -939,6 +1074,11 @@ "HOME": { "GREETING": "Good day, " }, + "HOVERPILL": { + "PLUS_OTHERS_COUNT_one": "+ {{count}} other", + "PLUS_OTHERS_COUNT_many": "+ {{count}} others", + "PLUS_OTHERS_COUNT_other": "+ {{count}} others" + }, "INSIGHTS": { "BIODIVERSITY": { "AMPHIBIANS": "Amphibians", @@ -1260,6 +1400,10 @@ }, "MENU": { "ACTUAL_REVENUES": "Actual revenues", + "ANIMALS": "Animals", + "ANIMALS_GROUPS": "Groups", + "ANIMALS_INVENTORY": "Inventory", + "ANIMALS_LOCATION": "Locations", "CERTIFICATIONS": "Certifications", "CROPS": "Crops", "DOCUMENTS": "Documents", @@ -1458,6 +1602,22 @@ "LITEFARM_UPDATED": "LiteFarm v{{version}} is now available!", "NOTES": "Release notes" }, + "REMOVE_ANIMALS": { + "CREATED_IN_ERROR": "Created in error", + "CULLED": "Culled", + "EXPLANATION": "Explanation", + "MORE_DETAILS": "Do you want to give more details?", + "NATURAL_DEATH": "Natural Death", + "REMOVAL_REASONS": "Removal reasons", + "REMOVE_ANIMALS": "Remove animals", + "REMOVED_AND_ARCHIVED": "These animals have been successfully removed from your farm and will be available in your historical inventory.", + "SLAUGHTERED_FOR_CONSUMPTION": "Slaughtered for consumption", + "SLAUGHTERED_FOR_SALE": "Slaughtered for sale", + "SOLD": "Sold", + "WHY": "Tell us why you are removing these animals", + "WILL_BE_ARCHIVED": "These animals will be removed from your active inventory", + "WILL_BE_PERMANENTLY_REMOVED": "These animals will be permanently removed from your farm" + }, "REPEAT_PLAN": { "AFTER": "After", "COMPLETION": "completion", @@ -1498,7 +1658,7 @@ }, "REQUEST_CONFIRMATION_MODAL": { "BUTTON": "Got it", - "DESCRIPTION": "Someone will be in touch within 48 hours.", + "DESCRIPTION": "Someone will be in touch soon.", "TITLE": "Help request submitted" }, "REVENUE": { @@ -1611,6 +1771,11 @@ "NO_RESULTS_FOR": "Sorry, we couldn't find any results for your search term <1>'{{searchTerm}}'", "ZERO": "0 results" }, + "SECTION_HEADER": { + "ANIMALS_GROUPS": "Animal groups", + "ANIMALS_INVENTORY": "Animal inventory", + "ANIMALS_LOCATION": "Animal locations" + }, "SENSOR": { "BRAND": "Brand", "BRAND_HELPTEXT": "Brands that LiteFarm can integrate with are shown below. If you would no longer like to use this sensor brand, try retiring this sensor instead.", @@ -1768,6 +1933,7 @@ "LABOUR_ISSUE": "Labour issue", "MACHINERY_ISSUE": "Machinery issue", "MARKET_PROBLEM": "Market problem", + "NO_ANIMALS": "Auto-abandoned: No animals for this task", "OTHER": "Other", "SCHEDULING_ISSUE": "Scheduling issue", "WEATHER": "Weather" @@ -1787,9 +1953,14 @@ "ADD_TASK": "Create a task", "ADD_TASK_FLOW": "task creation", "AMOUNT_TO_ALLOCATE": "Amount to allocate", + "ANIMALS": "Animals", + "ANIMALS_AT_LEAST_ONE_TO_COMPLETE": "At least one animal must be selected to complete this task. To remove all animals, abandon the task instead.", + "ANIMAL_MOVING_TO_LOCATION": "Moving to:", + "ANIMAL_MOVEMENT_EXPANDING_SUMMARY_TITLE": "Animals in this task", "CARD": { "MULTIPLE_CROPS": "Multiple crops", - "MULTIPLE_LOCATIONS": "Multiple locations" + "MULTIPLE_LOCATIONS": "Multiple locations", + "NO_LOCATION": "No location" }, "COMPLETE": { "DATE": "Completion date", @@ -1845,6 +2016,7 @@ "HOW_WILL_HARVEST_BE_USED": "How will the harvest be used?", "IRRIGATION_LOCATION": "Select an irrigation location", "LOCATIONS": "Location(s)", + "NO_LOCATIONS_FOR_TASK": "No specific location required for this task", "NO_TASKS_TO_DISPLAY": "There are no tasks to display.", "NO_WORK_DONE": "No work was completed", "PAGE_TITLE": "Tasks", @@ -1853,6 +2025,7 @@ "QUANTITY_CANNOT_EXCEED": "Harvest quantity used cannot exceed amount to allocate", "RATE_THIS_TASK": "Rate this task", "REMOVE_HARVEST_USE": "Remove", + "SELECT_ANIMALS": "Select animals", "SELECT_DATE": "Select the task date", "SELECT_TASK_LOCATIONS": "Select the task location(s)", "SELECT_WILD_CROP": "This task targets a wild crop", @@ -1885,6 +2058,13 @@ "MAYBE_LATER": "Maybe it’ll turnip later.", "UNKNOWN_RECORD": "Unknown record" }, + "UPLOADER": { + "CHANGE_IMAGE": "Change Image", + "CLICK_TO_UPLOAD": "Click to upload", + "DRAG_DROP": "or drag and drop", + "REMOVE_IMAGE": "Remove Image", + "UPLOAD_IMAGE": "Upload Image" + }, "WAGE": { "ERROR": "Wage must be a valid, non-negative decimal number", "HOURLY_WAGE": "Hourly Wage", @@ -1900,5 +2080,11 @@ }, "YEAR_SELECTOR": { "TITLE": "Select Year" + }, + "BADGE": { + "BETA": { + "TITLE": "Beta", + "ANIMALS_CONTENT": "Get a sneak peek at our new animal management feature—now in beta! Your feedback is crucial as we refine this feature. Please share any bugs or suggestions you encounter. We appreciate your help in improving LiteFarm! You can learn more about beta here" + } } } diff --git a/packages/webapp/public/locales/es/animal.json b/packages/webapp/public/locales/es/animal.json new file mode 100644 index 0000000000..7954246002 --- /dev/null +++ b/packages/webapp/public/locales/es/animal.json @@ -0,0 +1,69 @@ +{ + "BREED": { + "ANGUS": "Angus", + "CHAROLAIS": "Charolesa", + "COBB_500": "Cobb 500", + "CORNISH_CROSS": "Cornish Cross", + "DUROC": "Duroc", + "HEREFORD": "Hereford", + "LANDRACE": "Landrace", + "LEGHORN": "Leghorn", + "PLYMOUTH_ROCK": "Plymouth Rock", + "RHODE_ISLAND_RED": "Rhode Island Red", + "ROSS_308": "Ross 308", + "YORKSHIRE_LARGE_WHITE": "Yorkshire Large White" + }, + "ORIGIN": { + "BORN_AT_FARM": "Nacido en la granja", + "BROUGHT_IN": "Traído" + }, + "PURPOSE": { + "GRAZING": "Pastoreo", + "MILKING": "Ordeñe", + "MANURE_MANAGEMENT": "Gestión del estiércol", + "PEST_OR_DISEASE_CONTROL": "Control de plagas o enfermedades", + "BREEDING": "Cría", + "FEEDING": "Alimentación", + "VETERINARY_CARE": "Cuidados veterinarios", + "BIRTHING": "Nacimiento", + "WEANING": "Destete", + "TRANSPORTATION": "Transporte", + "BEHAVIORAL_AND_SOCIAL_MANAGEMENT": "Gestión social y de comportamiento", + "EXERCISE": "Ejercicio", + "QUARANTINE": "Cuarentena", + "OTHER": "Otro" + }, + "SEX": { + "MALE": "Macho", + "FEMALE": "Hembra" + }, + "TAG_COLOR": { + "BLUE": "Azul", + "GREEN": "Verde", + "ORANGE": "Naranja", + "RED": "Rojo", + "WHITE": "Blanco", + "YELLOW": "Amarillo" + }, + "TAG_TYPE": { + "EAR_TAG": "Etiqueta para la oreja", + "LEG_BAND": "Cinta para la pierna" + }, + "TYPE": { + "CATTLE": "Ganado", + "CHICKEN": "Gallinas", + "PIGS": "Cerdos" + }, + "USE": { + "MILK": "Leche", + "EGGS": "Huevos", + "FAT": "Grasa", + "MEAT": "Carne", + "ANIMAL_FIBERS_AND_SKINS": "Fibras y pieles de origen animal", + "LABOUR_AND_DRAFT": "Trabajo y proyecto", + "BREEDING": "Cría", + "RECREATIONAL_OR_CULTURAL_USE": "Uso recreativo o cultural", + "COMPANIONSHIP": "Acompañamiento", + "OTHER": "Otro" + } +} diff --git a/packages/webapp/public/locales/es/common.json b/packages/webapp/public/locales/es/common.json index 080ce04cd7..c7d04bd305 100644 --- a/packages/webapp/public/locales/es/common.json +++ b/packages/webapp/public/locales/es/common.json @@ -4,20 +4,36 @@ "ADD": "Agregar", "ADD_ANOTHER_ITEM": "Agregar otro ítem", "ADD_ITEM": "Agregar {{itemName}}", + "ADD_TO_GROUP": "Añadir al grupo", + "AGE": "Edad", + "AGE_DAYS_COUNT_one": "{{count}}d", + "AGE_DAYS_COUNT_other": "{{count}}d", + "AGE_MONTHS_COUNT_one": "{{count}}m", + "AGE_MONTHS_COUNT_other": "{{count}}m", + "AGE_YEARS_COUNT_one": "{{count}}a", + "AGE_YEARS_COUNT_other": "{{count}}a", "ALL": "Todo", "AMOUNT": "Monto", + "AND": "y", "APPLY": "Aplicar", "BACK": "Atrás", "CANCEL": "Cancelar", "CHANGE": "Cambiar", "CHAR_LIMIT_ERROR": "El límite es de {{value}} caracteres.", + "CLEAR_ACTIVE_FILTERS": "Borrar filtros activos", + "CLEAR_SELECTION": "Borrar selección", + "CLONE": "Clon", "CLOSE": "Cerrar", "CONFIRM": "Confirmar", "CONTINUE": "Continuar", + "COUNT": "Cantidad", "CREATE": "Agregar", + "CREATE_A_TASK": "Crear una tarea", "DATE": "Fecha", "DELETE": "Borrar", + "DO_NOT_KNOW": "No lo sé", "DO_NOT_SHOW": "No vuelva a mostrar este mensaje.", + "DONE": "Hecho", "EDIT": "Editar", "EDIT_DATE": "Editar fecha", "EDITING": "Editando...", @@ -28,6 +44,7 @@ "GO_BACK": "Volver", "GOT_IT": "Entendido", "HERE": "aquí", + "INVALID_DATE": "Fecha no válida", "LOADING": "Cargando...", "MARK_ABANDON": "Abandonar", "MARK_COMPLETE": "Completar", @@ -39,16 +56,23 @@ "NEEDS_PLAN": "Necesita un plan", "NEXT": "Próximo", "NO": "No", + "NON_ORGANIC": "No orgánico", + "NONE": "ninguno", "NOT_SURE": "No estoy seguro/a", "NOTES": "Notas", "OK": "Está bien", "OPTIONAL": "(opcional)", "OR": "o", + "ORGANIC": "Orgánico", "OTHER": "Otro", "PAST": "Pasado", "PLANNED": "Planificado", + "PREVIOUS": "Anterior", + "PRICE": "Precio", "PROCEED": "Proceder", + "PROPERTY_UNKNOWN": "{{property}} desconocido", "QUANTITY": "Cantidad", + "REMOVE": "Eliminar", "REMOVE_ITEM": "Eliminar ítem", "REQUIRED": "Requerido", "RETIRE": "Retirar", @@ -56,16 +80,29 @@ "SAVE_CHANGES": "Guardar cambios", "SEARCH": "Buscar", "SELECT": "Seleccionar", + "SELECT_ALL": "Seleccionar todo", + "SELECTED_COUNT": "{{count}} seleccionado", + "SELECTED_COUNT_one": "{{count}} seleccionado", + "SELECTED_COUNT_many": "{{count}} seleccionado", + "SELECTED_COUNT_other": "{{count}} seleccionado", + "SELECT_OR_ADD_YOUR_OWN": "Seleccione o añada el suyo propio", + "SET": "Establecer", + "SHOWING_ALL": "Mostrar todo", "SKIP": "Omitir", "SORRY": "Disculpa", "SUBMIT": "Enviar", "SUBMITTING": "Enviando...", "THATS_FINE": "Está bien", "TODAY": "Hoy", + "TOTAL": "Total", + "TRANSITIONING": "En transición", "TYPE": "Tipo", + "TYPES": "Tipos", + "UNKNOWN": "Desconocido", "UPDATE": "Actualizar", "UPLOAD": "Subir", "UPLOADING": "Subiendo", + "USE": "Utilizar", "WORD_LIMIT_ERROR": "Solo se pueden mostrar {{value}} caracteres", "YEAR": "Año", "YES": "Sí", diff --git a/packages/webapp/public/locales/es/message.json b/packages/webapp/public/locales/es/message.json index ddbec2c198..c14d5b5b4b 100644 --- a/packages/webapp/public/locales/es/message.json +++ b/packages/webapp/public/locales/es/message.json @@ -1,4 +1,18 @@ { + "ANIMALS": { + "FAILED_CREATE_ANIMALS": "Error al crear animales", + "FAILED_CREATE_BATCHES": "Error al crear lotes", + "FAILED_REMOVE_ANIMALS": "Error al eliminar los animales seleccionados", + "FAILED_REMOVE_BATCHES": "Error al eliminar los lotes seleccionados", + "FAILED_UPDATE_ANIMAL": "Error al actualizar el animal", + "FAILED_UPDATE_BATCH": "Error al actualizar el lote", + "SUCCESS_CREATE_ANIMALS": "Animales creados con éxito", + "SUCCESS_CREATE_BATCHES": "Lotes creados con éxito", + "SUCCESS_REMOVE_ANIMALS": "Eliminados con éxito los animales seleccionados", + "SUCCESS_REMOVE_BATCHES": "Eliminados con éxito los lotes seleccionados", + "SUCCESS_UPDATE_ANIMAL": "Animal actualizado con éxito", + "SUCCESS_UPDATE_BATCH": "Lote actualizado con éxito" + }, "ASSIGN_TASK": { "ERROR": "Error al asignar tareas", "SUCCESS": "Tareas asignadas con éxito" @@ -40,7 +54,9 @@ "ERROR": { "ADD": "No se pudo agregar nuevos gastos", "DELETE": "No se pudo borrar gastos", - "UPDATE": "No se pudo actualizar gastos!" + "UPDATE": "No se pudo actualizar gastos!", + "EXPENSE_DELETED": "Este gasto ha dejado de existir", + "EXPENSE_TYPE_DELETED": "Este tipo de gasto se ha eliminado" }, "SUCCESS": { "ADD": "¡Nuevos gastos agregados exitosamente!", @@ -70,6 +86,11 @@ "UPDATE": "Información sobre la finca actualizada exitosamente!" } }, + "HELP_REQUEST": { + "ERROR": { + "SEND": "Algo ha fallado al enviar su comentario. Por favor, inténtelo de nuevo." + } + }, "LOG_HARVEST": { "ERROR": { "ADD_USE_TYPE": "No se pudo agregar tipo de uso habitual de la cosecha", @@ -141,7 +162,8 @@ }, "REVENUE": { "ERROR": { - "EDIT": "No se pudieron actualizar los ingresos" + "EDIT": "No se pudieron actualizar los ingresos", + "REVENUE_TYPE_DELETED": "Este tipo de ingreso ha sido eliminado" }, "SUCCESS": { "EDIT": "Ingresos actualizados correctamente" @@ -163,7 +185,8 @@ "ERROR": { "ADD": "No se pudo agregar venta", "DELETE": "No se pudo borrar nueva venta", - "UPDATE": "No se pudo actualizar venta" + "UPDATE": "No se pudo actualizar venta", + "SALE_DELETED": "Esta venta ya no existe" }, "SUCCESS": { "ADD": "Venta agregada exitosamente", diff --git a/packages/webapp/public/locales/es/task.json b/packages/webapp/public/locales/es/task.json index 0f26a07256..b0bbf21c37 100644 --- a/packages/webapp/public/locales/es/task.json +++ b/packages/webapp/public/locales/es/task.json @@ -10,20 +10,16 @@ "WEEDING": "Desmalezar", "WASH_AND_PACK_TASK": "Lavar y guardar", "PEST_CONTROL_TASK": "Control de pestes", - "PEST_CONTROL_TASK_LOWER": "control de pestes", "OTHER_TASK": "Otro", "BREAK_TASK": "Descansar", "SOIL_TASK": "Resultados de muestra de suelo", "IRRIGATION_TASK": "Regar", - "IRRIGATION_TASK_LOWER": "Riego", "TRANSPORT_TASK": "Transportar", "FIELD_WORK_TASK": "Trabajo de campo", - "FIELD_WORK_TASK_LOWER": "trabajo de campo", "PLANT_TASK": "Plantar", "TRANSPLANT_TASK": "Trasplantar", "SOCIAL_TASK": "Social", "CLEANING_TASK": "Limpiar", - "CLEANING_TASK_LOWER": "limpiar", "SOIL_AMENDMENT_TASK": "Aditivo de suelo", - "SOIL_AMENDMENT_TASK_LOWER": "Aditivo de suelo" + "MOVEMENT_TASK": "Movimiento" } diff --git a/packages/webapp/public/locales/es/translation.json b/packages/webapp/public/locales/es/translation.json index 17573fcbb2..570590d9e3 100644 --- a/packages/webapp/public/locales/es/translation.json +++ b/packages/webapp/public/locales/es/translation.json @@ -1,4 +1,68 @@ { + "ADD_ANIMAL": { + "ADD_ANIMALS": "Agregar animales", + "ADD_ANIMALS_FLOW": "incorporación de animales", + "ADD_ANIMALS_TITLE": "Agregar animales", + "ADD_DETAILS_INFO": "Introduzca los datos del animal a continuación o guárdelos y recupérelos más tarde.", + "ADD_TO_INVENTORY": "Añade animales a tu inventario", + "ANIMAL_BASICS": "Conceptos básicos sobre los animales", + "ANIMAL_DETAILS": "Detalles de los animales", + "ANIMALS_TOTAL_one": "{{count}} total de animales", + "ANIMALS_TOTAL_other": "{{count}} total de animales", + "ANIMALS_UNSPECIFIED_one": "{{count}} sin especificar", + "ANIMALS_UNSPECIFIED_other": "{{count}} sin especificar", + "BATCH_NAME": "Nombre del lote", + "BATCH_NAME_PLACEHOLDER": "Introduzca el nombre del lote", + "BREED": "Raza", + "BREED_PLACEHOLDER_DISABLED": "Por favor, seleccione primero un tipo", + "CREATE_INDIVIDUAL_PROFILES": "Crear perfiles individuales de los animales", + "CREATE_INDIVIDUAL_PROFILES_TOOLTIP": "Seleccione esta opción si desea hacer un seguimiento y gestionar cada animal por separado", + "EDIT_BASIC_INFO": "Editar información básica", + "GENERAL_DETAILS": "Información general", + "GENERAL_DETAILS_BATCH": "Datos generales del lote", + "GROUP_NAME": "Nombre del grupo", + "GROUP_NAME_PLACEHOLDER": "Escriba el nombre del grupo", + "ORIGIN": "Procedencia", + "ORIGIN_BATCH": "Lote de procedencia", + "OTHER_DETAILS": "Otros detalles", + "OTHER_DETAILS_BATCH": "Otros detalles del lote", + "OUT_OF_COUNT_one": "{{animalNumber}} de {{count}}", + "OUT_OF_COUNT_other": "{{animalNumber}} de {{count}}", + "PLACEHOLDER": { + "BATCH_NAME": "Introduzca el nombre del lote", + "DAM": "Ingresa una madre", + "NAME": "Introduzca un nombre", + "OTHER_DETAILS": "Introduzca una descripción", + "OTHER_USE": "Describa el otro uso", + "PRICE": "¿Cuánto le costó?", + "SIRE": "Ingresa un padre", + "SUPPLIER": "Introduzca un proveedor", + "TAG_COLOUR": "¿De qué color es la etiqueta?", + "TAG_NUMBER": "Escriba el número de etiqueta", + "TAG_TYPE": "¿Cuál es el tipo de etiqueta?", + "TAG_TYPE_INFO": "Por favor, describa el tipo de etiqueta" + }, + "REMOVE_CONFIRM": "¿Realmente quiere eliminar?", + "SELECT_SEXES": "Seleccione el sexo", + "SEX_DETAIL": "Detalles sobre el sexo", + "SEX_DETAIL_ERROR_one": "Recuento máximo de animales: {{count}}", + "SEX_DETAIL_ERROR_other": "Recuento máximo de animales: {{count}}", + "SEX_DETAIL_ERROR_POPOVER_one": "No puede tener más de {{count}} animales", + "SEX_DETAIL_ERROR_POPOVER_other": "No puede tener más de {{count}} animales", + "SPECIFY_SEX": "Especifique el sexo", + "SUMMARY": { + "ADD_MORE_DETAILS": "Añade más detalles sobre tus animales", + "ALL_DONE": "¡Todo listo!", + "ANIMAL_SUMMARY_COUNT_one": "{{count}} animales individuales", + "ANIMAL_SUMMARY_COUNT_other": "{{count}} animales individuales", + "BATCH_SUMMARY_COUNT_one": "{{count}} lote", + "BATCH_SUMMARY_COUNT_other": "{{count}} lotes", + "HERE_IS_SUMMARY": "Aquí tienes un resumen de los animales añadidos:", + "MAIN": "Has añadido con éxito {{animalCount}} {{and}} {{batchCount}} a tu inventario." + }, + "TYPE": "Tipo", + "UNIQUE_DETAILS": "Detalles únicos" + }, "ADD_FARM": { "ADDRESS_IS_REQUIRED": "La dirección es obligatoria", "DISABLE_GEO_LOCATION": "Los servicios de ubicación deben estar habilitados para encontrar su ubicación actual.", @@ -53,6 +117,7 @@ "ASSIGN_TASK": "Asignar tarea", "ASSIGNEE": "Responsable", "CANCEL": "creación de la tarea", + "CANT_FIND_INFO_TASK": "También puedes crear tus propios tipos de tareas personalizadas", "CLEANING_VIEW": { "ESTIMATED_WATER": "Uso de agua estimado", "IS_PERMITTED": "¿Está el agente de limpieza en la lista de sustancias permitidas?", @@ -99,6 +164,7 @@ "IRRIGATION_VIEW": { "BRAND_TOOLTIP": "Esta tarea es para regar su ubicación. Si desea instalar riego, cree una tarea de trabajo de campo en su lugar.", "CALCULATE_WATER_USAGE": "Calcular el consumo de agua", + "CALCULATE_WATER_USAGE_WARNING": "En el caso de los cultivos silvestres, no se dispone de una estimación del consumo de agua por profundidad.", "DEFAULT_APPLICATION_DEPTH": "Establecer como profundidad de aplicación predeterminada para esta ubicación", "DEFAULT_LOCATION_FLOW_RATE": "Establecer como índice de flujo predeterminado para esta ubicación", "DEPTH": "Profundidad", @@ -135,9 +201,19 @@ }, "WHAT_TYPE_OF_IRRIGATION": "¿Qué tipo de riego?" }, - "MANAGE_CUSTOM_TASKS": "Administrar tareas personalizadas", + "MANAGE_CUSTOM_TASKS": "Gestiona tus tareas personalizadas", + "MOVEMENT_VIEW": { + "MOVEMENT_PURPOSE_LABEL": "¿Cuál es el objetivo de este movimiento?", + "MOVEMENT_PURPOSE_PLACEHOLDER": "Seleccionar el objetivo de este movimiento", + "OTHER_PURPOSE_EXPLANATION_LABEL": "Explicación", + "OTHER_PURPOSE_EXPLANATION_PLACEHOLDER": "Describa el motivo de este movimiento" + }, + "NEED_ANIMAL_LOCATION_MOVEMENT": "Necesitas una ubicación o área a la cual sea posible mover animales. Ve al mapa para crear una ubicación para animales.", "NEED_MANAGEMENT_PLAN": "Necesitará un plan de cultivo que está activo o planificado antes de poder programar una tarea de cosecha o una tarea de trasplante. Vaya al catálogo de cultivos para crear un plan ahora.", + "NO_ANIMAL_LOCATION": "No hay ninguna ubicación elegible para animales", "NO_MANAGEMENT_PLAN": "No hay ningun plan de cultivo de cultivos elegibles", + "NOTES_LABEL": "¿Algo específico que añadir en relación con esta tarea?", + "NOTES_PLACEHOLDER": "Añada instrucciones o datos específicos para el/la asignado/a", "PEST_CONTROL_VIEW": { "BIOLOGICAL_CONTROL": "Control biológico", "FLAME_WEEDING": "Deshierbe de llama", @@ -196,11 +272,64 @@ "TASK": "tarea", "TASK_NOTES_CHAR_LIMIT": "Las notas deben tener menos de 10,000 caracteres", "TELL_US_ABOUT_YOUR_TASK_TYPE_ONE": "Cuéntenos sobre esta tarea", + "THIS_TASK_IS_COMPLETED": "Esta tarea ya se ha completado", + "THIS_TASK_IS_COMPLETED_EXPLANATION": "Al hacer clic en «Guardar» se guardará inmediatamente esta tarea. A continuación, se le pedirá que la complete.", "TRANSPLANT_METHOD": "Método de trasplantar", "WAGE_OVERRIDE": "Alterar el salario", "WHAT_PLANTING_METHOD": "¿Cuál es el método de trasplante?", "WILD_CROP": "Cultivos silvestres" }, + "ANIMAL": { + "ADD_MORE_BODY_TEXT": "¿Tiene otro tipo de animal o una raza diferente?", + "ADD_MORE_BUTTON": "Añadir más animales", + "ANIMAL_BREED": "Raza", + "ANIMAL_COUNT_one": "{{count}} animal", + "ANIMAL_COUNT_other": "{{count}} animales", + "ANIMAL_GROUPS": "Grupo", + "ANIMAL_ID": "ID", + "ANIMAL_IDENTIFICATION": "Identificación", + "ANIMAL_LOCATIONS": "Ubicación", + "ANIMAL_SEXES": "Sexo", + "ANIMAL_TYPE": "Tipo", + "ATTRIBUTE": { + "ANIMAL_IMAGE": "Imagen del animal", + "BATCH_IMAGE": "Imagen del lote", + "BATCH_NAME": "Nombre del lote", + "DAM": "Madre", + "DATE_OF_BIRTH": "Fecha de nacimiento", + "LITEFARM_ID": "LiteFarm ID", + "ORGANIC_STATUS": "Estado de transición orgánica", + "OTHER_DETAILS_ANIMAL": "Otros detalles de los animales", + "OTHER_DETAILS_BATCH": "Detalles del lote", + "OTHER_USE": "Otros usos", + "SIRE": "Padre", + "SUPPLIER": "Proveedor", + "TAG_COLOUR": "Color de la etiqueta", + "TAG_NUMBER": "Número de la etiqueta", + "TAG_TYPE": "Tipo de etiqueta", + "WEANING_DATE": "Fecha de destete" + }, + "BATCH": "Lote", + "BETA_SPOTLIGHT_HEADING": "Presentación de la nueva función Animales", + "EDIT_ANIMAL_FLOW": "edición", + "FILTER": { + "BATCHES": "Lotes", + "BATCHES_OR_INDIVIDUALS": "Lotes o individuales", + "FEMALE": "Hembra", + "INDIVIDUALS": "Individuales", + "MALE": "Macho", + "TITLE": "Filtrar animales" + }, + "REMOVE_ANIMAL": "Eliminar animales", + "SEARCH_INVENTORY_PLACEHOLDER": "Buscar en tu inventario", + "SHOWING_RESULTS_WITH_COUNT_one": "Mostrando {{count}} resultados", + "SHOWING_RESULTS_WITH_COUNT_many": "Mostrando {{count}} resultados", + "SHOWING_RESULTS_WITH_COUNT_other": "Mostrando {{count}} resultados", + "TABS": { + "BASIC_INFO": "Información básica", + "TASKS": "Tareas" + } + }, "BED_PLAN": { "LENGTH_OF_BED": "Largo de camas", "NUMBER_0F_BEDS": "# de camas", @@ -822,7 +951,7 @@ }, "TUTORIALS": "Tutoriales de mapas", "UNABLE_TO_RETIRE": { - "BODY": "Solo puede retirar ubicaciones que no tengan cultivos o tareas activos o planificados.", + "BODY": "Sólo puedes retirar ubicaciones que no tengan cultivos activos o previstos, ni animales o tareas.", "TITLE": "No se pudo retirar" }, "WATER_VALVE": { @@ -853,13 +982,18 @@ } }, "FILE_SIZE_MODAL": { - "BODY": "Los archivos no pueden exceder los 10 MB.", + "BODY": "Los archivos no pueden tener un tamaño superior a {{size}} MB.", "TITLE": "Tamaño de archivo demasiado grande" }, "FILTER": { + "CLEAR": "borrar", "CLEAR_ALL": "Borrar todos", "CLEAR_ALL_FILTERS": "Borrar todos los filtros", - "SELECT_ALL": "Seleccionar todos" + "SELECT_ALL": "Seleccionar todos", + "SELECTED_one": "{{count}} seleccionados", + "SELECTED_other": "{{count}} seleccionados", + "SHOWING_ALL": "Mostrar todos", + "SHOWING_ALL_DEFAULT": "Mostrar todo (predeterminado)" }, "FINANCES": { "ACTUAL_REVENUE": { @@ -921,6 +1055,8 @@ "HELP": { "ATTACHMENT_LABEL": "Cargue imagen de pantalla o archivo", "EMAIL": "Correo electrónico", + "FEEDBACK_INVITATION": "Obtenga ayuda o envíenos sus comentarios", + "SEND_US_FEEDBACK": "Envíenos sus comentarios", "MESSAGE_LABEL": "Mensaje", "OPTIONS": { "OTHER": "Otro", @@ -930,7 +1066,6 @@ }, "PREFERRED_CONTACT": "Método de contacto preferido", "REQUIRED_LABEL": "Campo solicitado", - "TITLE": "Solicitar ayuda", "TYPE_SUPPORT_LABEL": "Tipo de ayuda", "TYPE_SUPPORT_PLACEHOLDER": "Elija tipo de ayuda", "WHATSAPP": "Whatsapp", @@ -939,6 +1074,11 @@ "HOME": { "GREETING": "Buen dia," }, + "HOVERPILL": { + "PLUS_OTHERS_COUNT_one": "+ {{count}} otro", + "PLUS_OTHERS_COUNT_many": "+ {{count}} otros", + "PLUS_OTHERS_COUNT_other": "+ {{count}} otros" + }, "INSIGHTS": { "BIODIVERSITY": { "AMPHIBIANS": "Anfibio", @@ -1260,6 +1400,10 @@ }, "MENU": { "ACTUAL_REVENUES": "Ingresos reales", + "ANIMALS": "Animales", + "ANIMALS_GROUPS": "Grupos", + "ANIMALS_INVENTORY": "Inventario", + "ANIMALS_LOCATION": "Ubicaciones", "CERTIFICATIONS": "Certificaciones", "CROPS": "Cultivos", "DOCUMENTS": "Documentos", @@ -1458,6 +1602,22 @@ "LITEFARM_UPDATED": "LiteFarm v{{version}} ya está disponible!", "NOTES": "Notas de publicación" }, + "REMOVE_ANIMALS": { + "CREATED_IN_ERROR": "Creado por error", + "CULLED": "Recogidos", + "EXPLANATION": "Explicación", + "MORE_DETAILS": "¿Quiere dar más detalles?", + "NATURAL_DEATH": "Muerte natural", + "REMOVAL_REASONS": "Motivos de la eliminación", + "REMOVE_ANIMALS": "Eliminar animales", + "REMOVED_AND_ARCHIVED": "Estos animales han sido eliminados con éxito de su finca y estarán disponibles en su inventario histórico.", + "SLAUGHTERED_FOR_CONSUMPTION": "Faenados para el consumo", + "SLAUGHTERED_FOR_SALE": "Faenados para la venta", + "SOLD": "Vendidos", + "WHY": "Indique por qué retira estos animales", + "WILL_BE_ARCHIVED": "Estos animales serán eliminados de tu inventario activo", + "WILL_BE_PERMANENTLY_REMOVED": "Estos animales serán retirados permanentemente de su finca" + }, "REPEAT_PLAN": { "AFTER": "Después", "COMPLETION": "terminó", @@ -1498,7 +1658,7 @@ }, "REQUEST_CONFIRMATION_MODAL": { "BUTTON": "Entendido", - "DESCRIPTION": "Alguien lo contactará dentro de 48 horas.", + "DESCRIPTION": "Alguien se pondrá en contacto pronto con usted.", "TITLE": "Solicitud de ayuda enviada" }, "REVENUE": { @@ -1611,6 +1771,11 @@ "NO_RESULTS_FOR": "Disculpe, no hemos podido encontrar resultados para su búsqueda <1>'{{searchTerm}}'", "ZERO": "0 resultados" }, + "SECTION_HEADER": { + "ANIMALS_GROUPS": "Grupo de animales", + "ANIMALS_INVENTORY": "Inventario de animales", + "ANIMALS_LOCATION": "Localización de animales" + }, "SENSOR": { "BRAND": "Marca", "BRAND_HELPTEXT": "A continuación se muestran las marcas con las que LiteFarm puede integrarse. Si ya no desea utilizar esta marca de sensores, retire este sensor.", @@ -1768,6 +1933,7 @@ "LABOUR_ISSUE": "Problema laboral", "MACHINERY_ISSUE": "Problema de maquinaria", "MARKET_PROBLEM": "Problema de mercado", + "NO_ANIMALS": "Auto-abandonado: No hay animales para esta tarea", "OTHER": "Otro", "SCHEDULING_ISSUE": "Problema de programación", "WEATHER": "Clima" @@ -1787,9 +1953,14 @@ "ADD_TASK": "Crear una tarea", "ADD_TASK_FLOW": "creación de tareas", "AMOUNT_TO_ALLOCATE": "Cantidad a asignar", + "ANIMALS": "Animales", + "ANIMALS_AT_LEAST_ONE_TO_COMPLETE": "Al menos un animal debe estar seleccionado para poder completar esta tarea. Si desea eliminar todos los animales, abandone la tarea.", + "ANIMAL_MOVING_TO_LOCATION": "Moviendo a:", + "ANIMAL_MOVEMENT_EXPANDING_SUMMARY_TITLE": "Animales en esta tarea", "CARD": { "MULTIPLE_CROPS": "Múltiples cultivos", - "MULTIPLE_LOCATIONS": "Múltiples ubicaciones" + "MULTIPLE_LOCATIONS": "Múltiples ubicaciones", + "NO_LOCATION": "Ninguna ubicación" }, "COMPLETE": { "DATE": "Fecha de completar", @@ -1845,6 +2016,7 @@ "HOW_WILL_HARVEST_BE_USED": "Como va a usar la cosecha?", "IRRIGATION_LOCATION": "Seleccione un lugar de riego", "LOCATIONS": "Ubicacion (es)", + "NO_LOCATIONS_FOR_TASK": "No se requiere una ubicación específica para esta tarea", "NO_TASKS_TO_DISPLAY": "No hay tareas para mostrar.", "NO_WORK_DONE": "No se completó ningún trabajo", "PAGE_TITLE": "Tareas", @@ -1853,6 +2025,7 @@ "QUANTITY_CANNOT_EXCEED": "La cantidad de cosecha utilizada no puede exceder la cantidad a asignar", "RATE_THIS_TASK": "Califica esta tarea", "REMOVE_HARVEST_USE": "Quitar", + "SELECT_ANIMALS": "Seleccionar animales", "SELECT_DATE": "Seleccione la fecha de la tarea", "SELECT_TASK_LOCATIONS": "Seleccione la(s) ubicación(es) de la tarea", "SELECT_WILD_CROP": "Esta tarea se dirige a un cultivo silvestre", @@ -1885,6 +2058,13 @@ "MAYBE_LATER": "Tal vez aparezca más tarde.", "UNKNOWN_RECORD": "Registro desconocido" }, + "UPLOADER": { + "CHANGE_IMAGE": "Cambiar la imagen", + "CLICK_TO_UPLOAD": "Haga click para cargar", + "DRAG_DROP": "o arrastre y suelte", + "REMOVE_IMAGE": "Eliminar imagen", + "UPLOAD_IMAGE": "Subir imagen" + }, "WAGE": { "ERROR": "Salario debe ser válido, no números decimales negativos", "HOURLY_WAGE": "Salario por hora", @@ -1900,5 +2080,11 @@ }, "YEAR_SELECTOR": { "TITLE": "Seleccionar año" + }, + "BADGE": { + "BETA": { + "TITLE": "Beta", + "ANIMALS_CONTENT": "¡Descubre un adelanto de nuestra nueva función de gestión de animales, ahora en versión beta! Su opinión es fundamental mientras perfeccionamos esta herramienta. Por favor, comparte cualquier error o sugerencia que encuentre. ¡Agradecemos su ayuda para mejorar LiteFarm! Puedes obtener más información sobre la versión beta aquí" + } } } diff --git a/packages/webapp/public/locales/fr/animal.json b/packages/webapp/public/locales/fr/animal.json new file mode 100644 index 0000000000..14288ee6d1 --- /dev/null +++ b/packages/webapp/public/locales/fr/animal.json @@ -0,0 +1,69 @@ +{ + "BREED": { + "ANGUS": "Angus", + "CHAROLAIS": "Charolais", + "COBB_500": "Cobb 500", + "CORNISH_CROSS": "Cornish Cross", + "DUROC": "Duroc", + "HEREFORD": "Hereford", + "LANDRACE": "Landrace", + "LEGHORN": "Leghorn", + "PLYMOUTH_ROCK": "Plymouth Rock", + "RHODE_ISLAND_RED": "Rhode Island Red", + "ROSS_308": "Ross 308", + "YORKSHIRE_LARGE_WHITE": "Yorkshire Large White" + }, + "ORIGIN": { + "BORN_AT_FARM": "Né à la ferme", + "BROUGHT_IN": "Apporté" + }, + "PURPOSE": { + "GRAZING": "Pâturage", + "MILKING": "Traite", + "MANURE_MANAGEMENT": "Gestion du fumier", + "PEST_OR_DISEASE_CONTROL": "Lutte contre les ravageurs et les maladies", + "BREEDING": "Élevage", + "FEEDING": "Alimentation", + "VETERINARY_CARE": "Soins vétérinaires", + "BIRTHING": "Naissance", + "WEANING": "Sevrage", + "TRANSPORTATION": "Transport", + "BEHAVIORAL_AND_SOCIAL_MANAGEMENT": "Gestion comportementale et sociale", + "EXERCISE": "Exercice", + "QUARANTINE": "Quarantaine", + "OTHER": "Autre" + }, + "SEX": { + "MALE": "Male", + "FEMALE": "Femelle" + }, + "TAG_COLOR": { + "BLUE": "Bleu", + "GREEN": "Vert", + "ORANGE": "Orange", + "RED": "Rouge", + "WHITE": "Blanc", + "YELLOW": "Jaune" + }, + "TAG_TYPE": { + "EAR_TAG": "Boucle d'oreille", + "LEG_BAND": "Bague de patte" + }, + "TYPE": { + "CATTLE": "Bovins", + "CHICKEN": "Poulets", + "PIGS": "Cochons" + }, + "USE": { + "MILK": "Lait", + "EGGS": "Oeufs", + "FAT": "Graisse", + "MEAT": "Viande", + "ANIMAL_FIBERS_AND_SKINS": "Fibres animales et peaux", + "LABOUR_AND_DRAFT": "Labour et Traction", + "BREEDING": "Élevage", + "RECREATIONAL_OR_CULTURAL_USE": "Utilisation récréative ou culturelle", + "COMPANIONSHIP": "Compagnie", + "OTHER": "Autre" + } +} diff --git a/packages/webapp/public/locales/fr/common.json b/packages/webapp/public/locales/fr/common.json index 8a9248ea52..f060b94c3a 100644 --- a/packages/webapp/public/locales/fr/common.json +++ b/packages/webapp/public/locales/fr/common.json @@ -4,20 +4,36 @@ "ADD": "Ajouter", "ADD_ANOTHER_ITEM": "Ajouter un autre item", "ADD_ITEM": "Ajouter {{itemName}}", + "ADD_TO_GROUP": "Ajouter au groupe", + "AGE": "Age", + "AGE_DAYS_COUNT_one": "{{count}}j", + "AGE_DAYS_COUNT_other": "{{count}}j", + "AGE_MONTHS_COUNT_one": "{{count}}d", + "AGE_MONTHS_COUNT_other": "{{count}}d", + "AGE_YEARS_COUNT_one": "{{count}}ans", + "AGE_YEARS_COUNT_other": "{{count}}ans", "ALL": "Tout", "AMOUNT": "Quantité", + "AND": "et", "APPLY": "Appliquer", "BACK": "Retour", "CANCEL": "Annuler", "CHANGE": "Modifier", "CHAR_LIMIT_ERROR": "Limité à {{value}} caractères", + "CLEAR_ACTIVE_FILTERS": "Effacer les filtres actifs", + "CLEAR_SELECTION": "Effacer la sélection", + "CLONE": "Cloner", "CLOSE": "Fermer", "CONFIRM": "Valider", "CONTINUE": "Continuer", + "COUNT": "Nombre", "CREATE": "Créer", + "CREATE_A_TASK": "Créer une tâche", "DATE": "Date", "DELETE": "Effacer", + "DO_NOT_KNOW": "Je ne sais pas", "DO_NOT_SHOW": "Ne plus afficher ce message", + "DONE": "Terminé", "EDIT": "Modifier", "EDIT_DATE": "Modifier la Date", "EDITING": "Édition...", @@ -28,6 +44,7 @@ "GO_BACK": "Retourner", "GOT_IT": "J'ai compris !", "HERE": "Ici", + "INVALID_DATE": "Date non valide", "LOADING": "Chargement en cours...", "MARK_ABANDON": "Marquer Abandonné", "MARK_COMPLETE": "Marquer Complet", @@ -39,16 +56,23 @@ "NEEDS_PLAN": "Plan Requis", "NEXT": "Suivant", "NO": "Non", + "NON_ORGANIC": "Non-bio", + "NONE": "aucun", "NOT_SURE": "Incertain(e)", "NOTES": "Notes", "OK": "OK", "OPTIONAL": "(optionnel)", "OR": "ou", + "ORGANIC": "Bio", "OTHER": "Autre", "PAST": "Passé", "PLANNED": "Planifié", + "PREVIOUS": "Précédent", + "PRICE": "Prix", "PROCEED": "Continuer", + "PROPERTY_UNKNOWN": "{{property}} inconnu", "QUANTITY": "Quantité", + "REMOVE": "Supprimer", "REMOVE_ITEM": "Supprimer l'item", "REQUIRED": "Réponse requise", "RETIRE": "Abandonner", @@ -56,16 +80,29 @@ "SAVE_CHANGES": "Enregistrer les changements", "SEARCH": "Rechercher", "SELECT": "Selectionner", + "SELECT_ALL": "Tout sélectionner", + "SELECTED_COUNT": "{{count}} sélectionné", + "SELECTED_COUNT_one": "{{count}} sélectionné", + "SELECTED_COUNT_many": "{{count}} sélectionné", + "SELECTED_COUNT_other": "{{count}} sélectionné", + "SELECT_OR_ADD_YOUR_OWN": "Sélectionnez ou ajoutez la vôtre", + "SET": "Définir", + "SHOWING_ALL": "Tout afficher", "SKIP": "Passer", "SORRY": "Désolé", "SUBMIT": "Soumettre", "SUBMITTING": "Soumission en cours...", "THATS_FINE": "C'est bien", "TODAY": "Aujourd'hui", + "TOTAL": "Total", + "TRANSITIONING": "Transition", "TYPE": "Type", + "TYPES": "Types", + "UNKNOWN": "Inconnu", "UPDATE": "Mettre à Jour", "UPLOAD": "Télécharger", "UPLOADING": "Téléchargement...", + "USE": "Utiliser", "WORD_LIMIT_ERROR": "Limité à {{value}} mots", "YEAR": "Année", "YES": "Oui", diff --git a/packages/webapp/public/locales/fr/message.json b/packages/webapp/public/locales/fr/message.json index f1dd9829c6..11d15910f6 100644 --- a/packages/webapp/public/locales/fr/message.json +++ b/packages/webapp/public/locales/fr/message.json @@ -1,4 +1,18 @@ { + "ANIMALS": { + "FAILED_CREATE_ANIMALS": "Impossible de créer des animaux", + "FAILED_CREATE_BATCHES": "Échec de la création des lots", + "FAILED_REMOVE_ANIMALS": "Échec de la suppression des animaux sélectionnés", + "FAILED_REMOVE_BATCHES": "Échec de la suppression des lots sélectionnés", + "FAILED_UPDATE_ANIMAL": "Échec de la mise à jour de l'animal", + "FAILED_UPDATE_BATCH": "Échec de la mise à jour du lot", + "SUCCESS_CREATE_ANIMALS": "Animaux créés avec succès", + "SUCCESS_CREATE_BATCHES": "Lots créés avec succès", + "SUCCESS_REMOVE_ANIMALS": "Animaux sélectionnés supprimés avec succès", + "SUCCESS_REMOVE_BATCHES": "Les lots sélectionnés ont été supprimés avec succès", + "SUCCESS_UPDATE_ANIMAL": "Animal mis à jour avec succès", + "SUCCESS_UPDATE_BATCH": "Vente mise à jour" + }, "ASSIGN_TASK": { "ERROR": "Erreur à l'attribution des tâches", "SUCCESS": "Tâches attribuées" @@ -40,7 +54,9 @@ "ERROR": { "ADD": "Impossible d'ajouter de nouvelles dépenses", "DELETE": "Impossible de supprimer les dépenses", - "UPDATE": "Impossible de mettre à jour les dépenses" + "UPDATE": "Impossible de mettre à jour les dépenses", + "EXPENSE_DELETED": "Cette dépense n'existe plus", + "EXPENSE_TYPE_DELETED": "Ce type de dépense a été supprimé" }, "SUCCESS": { "ADD": "Nouvelles dépenses ajoutées", @@ -70,6 +86,11 @@ "UPDATE": "Informations sur l'exploitation mises à jour !" } }, + "HELP_REQUEST": { + "ERROR": { + "SEND": "Une erreur s'est produite lors de l'envoi de votre commentaire. Veuillez réessayer." + } + }, "LOG_HARVEST": { "ERROR": { "ADD_USE_TYPE": "Impossible d'ajouter un usage personnalisé", @@ -141,7 +162,8 @@ }, "REVENUE": { "ERROR": { - "EDIT": "Impossible de mettre à jour le chiffre d'affaires" + "EDIT": "Impossible de mettre à jour le chiffre d'affaires", + "REVENUE_TYPE_DELETED": "Ce type de revenu a été supprimé" }, "SUCCESS": { "EDIT": "Chiffre d'affaires mis à jour" @@ -163,7 +185,8 @@ "ERROR": { "ADD": "Impossible d'ajouter la vente", "DELETE": "Impossible de supprimer la vente", - "UPDATE": "Impossible de mettre à jour la vente" + "UPDATE": "Impossible de mettre à jour la vente", + "SALE_DELETED": "Cette vente n'existe plus" }, "SUCCESS": { "ADD": "Vente ajoutée", diff --git a/packages/webapp/public/locales/fr/task.json b/packages/webapp/public/locales/fr/task.json index 2743fddbf0..89663edc2f 100644 --- a/packages/webapp/public/locales/fr/task.json +++ b/packages/webapp/public/locales/fr/task.json @@ -1,5 +1,5 @@ { - "BED_PREPARATION_TASK": "Préparation Planche", + "BED_PREPARATION_TASK": "Préparation du lit", "DELIVERY": "Livraison", "SALE_TASK": "Ventes", "SOCIAL_EVENT": "Évenement Social", @@ -10,20 +10,16 @@ "WEEDING": "Désherber", "WASH_AND_PACK_TASK": "Laver et Emballer", "PEST_CONTROL_TASK": "Nuisibles", - "PEST_CONTROL_TASK_LOWER": "lutter contre les nuisibles", "OTHER_TASK": "Autre", "BREAK_TASK": "Pause", "SOIL_TASK": "Analyse de sol", "IRRIGATION_TASK": "Irrigation", - "IRRIGATION_TASK_LOWER": "travaux d’irrigation", "TRANSPORT_TASK": "Transport", "FIELD_WORK_TASK": "Travail de Terrain", - "FIELD_WORK_TASK_LOWER": "travail de terrain", "PLANT_TASK": "Plantation", "TRANSPLANT_TASK": "Repiquage", "SOCIAL_TASK": "Social", "CLEANING_TASK": "Nettoyage", - "CLEANING_TASK_LOWER": "nettoyage", "SOIL_AMENDMENT_TASK": "Amendement", - "SOIL_AMENDMENT_TASK_LOWER": "amendement de sol" + "MOVEMENT_TASK": "Déplacement" } diff --git a/packages/webapp/public/locales/fr/translation.json b/packages/webapp/public/locales/fr/translation.json index 4e4c544a0f..6d3d220ad6 100644 --- a/packages/webapp/public/locales/fr/translation.json +++ b/packages/webapp/public/locales/fr/translation.json @@ -1,4 +1,68 @@ { + "ADD_ANIMAL": { + "ADD_ANIMALS": "Ajouter des animaux", + "ADD_ANIMALS_FLOW": "ajout d'animaux", + "ADD_ANIMALS_TITLE": "Ajouter des animaux", + "ADD_DETAILS_INFO": "Remplissez les détails de votre animal ci-dessous ou enregistrez pour y revenir plus tard.", + "ADD_TO_INVENTORY": "Ajouter des animaux à votre inventaire", + "ANIMAL_BASICS": "Informations de base sur l’animal", + "ANIMAL_DETAILS": "Détails sur les animaux", + "ANIMALS_TOTAL_one": "{{count}} Total des animaux", + "ANIMALS_TOTAL_other": "{{count}} Total des animaux", + "ANIMALS_UNSPECIFIED_one": "{{count}} non spécifié", + "ANIMALS_UNSPECIFIED_other": "{{count}} non spécifié", + "BATCH_NAME": "Nom du lot", + "BATCH_NAME_PLACEHOLDER": "Tapez le nom du lot", + "BREED": "Race", + "BREED_PLACEHOLDER_DISABLED": "Sélectionnez d'abord un type", + "CREATE_INDIVIDUAL_PROFILES": "Créer des profils d'animaux individuels", + "CREATE_INDIVIDUAL_PROFILES_TOOLTIP": "Sélectionnez cette option si vous souhaitez suivre et gérer chaque animal séparément", + "EDIT_BASIC_INFO": "Modifier les infos de base", + "GENERAL_DETAILS": "Détails généraux", + "GENERAL_DETAILS_BATCH": "Détails généraux du lot", + "GROUP_NAME": "Nom du groupe", + "GROUP_NAME_PLACEHOLDER": "Tapez le nom du groupe", + "ORIGIN": "Origine", + "ORIGIN_BATCH": "Origine du lot", + "OTHER_DETAILS": "Autres détails", + "OTHER_DETAILS_BATCH": "Autres détails du lot", + "OUT_OF_COUNT_one": "{{animalNumber}} sur {{count}}", + "OUT_OF_COUNT_other": "{{animalNumber}} sur {{count}}", + "PLACEHOLDER": { + "BATCH_NAME": "Tapez le nom du lot", + "DAM": "Saisissez une mère", + "NAME": "Tapez un nom", + "OTHER_DETAILS": "Saisir une description", + "OTHER_USE": "Décrire l'autre utilisation", + "PRICE": "Combien cela a-t-il coûté?", + "SIRE": "Saisissez un père", + "SUPPLIER": "Saisissez un fournisseur", + "TAG_COLOUR": "Quelle est la couleur du tag?", + "TAG_NUMBER": "Tapez le numéro du tag", + "TAG_TYPE": "Quel est le type de tag ?", + "TAG_TYPE_INFO": "Veuillez décrire votre type de tag" + }, + "REMOVE_CONFIRM": "Voulez-vous vraiment supprimer ?", + "SELECT_SEXES": "Sélectionner les sexes", + "SEX_DETAIL": "Détail des sexes", + "SEX_DETAIL_ERROR_one": "Nombre maximum d'animaux : {{count}}", + "SEX_DETAIL_ERROR_other": "Nombre maximum d'animaux : {{count}}", + "SEX_DETAIL_ERROR_POPOVER_one": "Vous ne pouvez pas avoir plus de {{count}} animal", + "SEX_DETAIL_ERROR_POPOVER_other": "Vous ne pouvez pas avoir plus de {{count}} animaux", + "SPECIFY_SEX": "Spécifier le sexe", + "SUMMARY": { + "ADD_MORE_DETAILS": "Ajoutez plus de détails à vos animaux", + "ALL_DONE": "Terminé !", + "ANIMAL_SUMMARY_COUNT_one": "{{count}} animal individuel", + "ANIMAL_SUMMARY_COUNT_other": "{{count}} animal individuel", + "BATCH_SUMMARY_COUNT_one": "{{count}} lot", + "BATCH_SUMMARY_COUNT_other": "{{count}} lots", + "HERE_IS_SUMMARY": "Voici un résumé de vos animaux ajoutés:", + "MAIN": "Vous avez ajouté avec succès {{animalCount}} {{and}} {{batchCount}} à votre inventaire." + }, + "TYPE": "Type", + "UNIQUE_DETAILS": "Détails uniques" + }, "ADD_FARM": { "ADDRESS_IS_REQUIRED": "Une adresse est requise", "DISABLE_GEO_LOCATION": "Les services de localisation doivent être activés pour trouver votre position actuelle", @@ -53,6 +117,7 @@ "ASSIGN_TASK": "Attribuer une tâche", "ASSIGNEE": "Personne responsable", "CANCEL": "création de tâches", + "CANT_FIND_INFO_TASK": "Vous pouvez aussi créer vos propres types de tâches personnalisées!", "CLEANING_VIEW": { "ESTIMATED_WATER": "Consommation d'eau estimée", "IS_PERMITTED": "Le produit de nettoyage est-il dans la liste des substances autorisées ?", @@ -99,6 +164,7 @@ "IRRIGATION_VIEW": { "BRAND_TOOLTIP": "Cette tâche est d'arroser votre emplacement. Pour configuer l'irrigation, créez plutôt une tâche de terrain.", "CALCULATE_WATER_USAGE": "Calculer la consommation d'eau", + "CALCULATE_WATER_USAGE_WARNING": "Pour les cultures sauvages, il n'est pas possible d'estimer l'utilisation de l'eau par profondeur.", "DEFAULT_APPLICATION_DEPTH": "Sélectionner cette profondeur d'application par défaut pour cet emplacement", "DEFAULT_LOCATION_FLOW_RATE": "Sélectionner ce débit par défaut pour cet emplacement", "DEPTH": "Profondeur", @@ -136,8 +202,18 @@ "WHAT_TYPE_OF_IRRIGATION": "Quel type d'irrigation ?" }, "MANAGE_CUSTOM_TASKS": "Gérer les tâches personnalisées", + "MOVEMENT_VIEW": { + "MOVEMENT_PURPOSE_LABEL": "Quel est le but de ce mouvement ?", + "MOVEMENT_PURPOSE_PLACEHOLDER": "Sélectionnez le but de ce mouvement", + "OTHER_PURPOSE_EXPLANATION_LABEL": "Explication", + "OTHER_PURPOSE_EXPLANATION_PLACEHOLDER": "Veuillez décrire la raison de ce mouvement" + }, + "NEED_ANIMAL_LOCATION_MOVEMENT": "Vous aurez besoin d'un emplacement ou d'une zone où les animaux peuvent être déplacés. Allez sur la carte pour créer un emplacement animal.", "NEED_MANAGEMENT_PLAN": "Vous avez besoin d'un plan de culture actif ou planifié avant de pouvoir programmer une tâche de récolte ou une tâche de plantation. Accédez au catalogue de cultures pour créer un plan maintenant.", + "NO_ANIMAL_LOCATION": "Aucun emplacement animal éligible", "NO_MANAGEMENT_PLAN": "Aucun plan de culture éligible", + "NOTES_LABEL": "Quelque chose de spécifique à ajouter à cette tâche?", + "NOTES_PLACEHOLDER": "Ajouter des instructions ou des précisions pour le responsable", "PEST_CONTROL_VIEW": { "BIOLOGICAL_CONTROL": "Lutte biologique", "FLAME_WEEDING": "Sarclage à la flamme", @@ -196,11 +272,64 @@ "TASK": "tâche", "TASK_NOTES_CHAR_LIMIT": "Les notes doivent comporter moins de 10 000 caractères", "TELL_US_ABOUT_YOUR_TASK_TYPE_ONE": "Décrivez cette tache", + "THIS_TASK_IS_COMPLETED": "Cette tâche a déjà été complétée", + "THIS_TASK_IS_COMPLETED_EXPLANATION": "En cliquant sur « Enregistrer », vous sauverez immédiatement cette tâche. Vous serez ensuite invité à la compléter.", "TRANSPLANT_METHOD": "Méthode de repiquage", "WAGE_OVERRIDE": "Dérogation de salaire", "WHAT_PLANTING_METHOD": "Quelle est la méthode de repiquage ?", "WILD_CROP": "Cultures sauvages" }, + "ANIMAL": { + "ADD_MORE_BODY_TEXT": "Avez-vous un autre type d'animal ou une race différente?", + "ADD_MORE_BUTTON": "Ajouter plus d'animaux", + "ANIMAL_BREED": "Race", + "ANIMAL_COUNT_one": "{{count}} animal", + "ANIMAL_COUNT_other": "{{count}} animaux", + "ANIMAL_GROUPS": "Groupe", + "ANIMAL_ID": "ID", + "ANIMAL_IDENTIFICATION": "Identification", + "ANIMAL_LOCATIONS": "Lieu", + "ANIMAL_SEXES": "Sexe", + "ANIMAL_TYPE": "Type", + "ATTRIBUTE": { + "ANIMAL_IMAGE": "Image de l'animal", + "BATCH_IMAGE": "Image du lot", + "BATCH_NAME": "Nom du lot", + "DAM": "Mère", + "DATE_OF_BIRTH": "Date de naissance", + "LITEFARM_ID": "ID LiteFarm", + "ORGANIC_STATUS": "Statut biologique", + "OTHER_DETAILS_ANIMAL": "Autres informations sur l'animal", + "OTHER_DETAILS_BATCH": "Détails du lot", + "OTHER_USE": "Autres utilisations", + "SIRE": "Père", + "SUPPLIER": "Fournisseur", + "TAG_COLOUR": "Couleur de l'étiquette", + "TAG_NUMBER": "Numéro d'étiquette", + "TAG_TYPE": "Type d'étiquette", + "WEANING_DATE": "Date de sevrage" + }, + "BATCH": "Lot", + "BETA_SPOTLIGHT_HEADING": "Introduction de la nouvelle fonctionnalité Animaux", + "EDIT_ANIMAL_FLOW": "édition", + "FILTER": { + "BATCHES": "Lots", + "BATCHES_OR_INDIVIDUALS": "Lots ou individus", + "FEMALE": "Femelle", + "INDIVIDUALS": "Individus", + "MALE": "Male", + "TITLE": "Filtrer les animaux" + }, + "REMOVE_ANIMAL": "Retirer des animaux", + "SEARCH_INVENTORY_PLACEHOLDER": "Rechercher dans votre inventaire", + "SHOWING_RESULTS_WITH_COUNT_one": "Affichage du résultat {{count}}", + "SHOWING_RESULTS_WITH_COUNT_many": "Affichage des résultats {{count}}", + "SHOWING_RESULTS_WITH_COUNT_other": "Affichage des résultats {{count}}", + "TABS": { + "BASIC_INFO": "Informations de base", + "TASKS": "Tâches" + } + }, "BED_PLAN": { "LENGTH_OF_BED": "Longueur des plates-bandes", "NUMBER_0F_BEDS": "# de plates-bandes", @@ -822,7 +951,7 @@ }, "TUTORIALS": "Vidéos d'instructions", "UNABLE_TO_RETIRE": { - "BODY": "Vous ne pouvez retirer que les emplacements qui n'ont pas de cultures, de journaux ou de tâches actifs ou planifiés.", + "BODY": "Vous ne pouvez désactiver que les emplacements sans cultures actives ou prévues, sans animaux et sans tâches.", "TITLE": "Incapable à retirer" }, "WATER_VALVE": { @@ -853,13 +982,18 @@ } }, "FILE_SIZE_MODAL": { - "BODY": "Les fichiers ne peuvent pas dépasser 10MB.", + "BODY": "Les fichiers ne peuvent pas être supérieurs à {{size}} Mo.", "TITLE": "Fichier trop volumineux" }, "FILTER": { + "CLEAR": "vider", "CLEAR_ALL": "Effacer la sélection", "CLEAR_ALL_FILTERS": "Effacer tous les filtres", - "SELECT_ALL": "Sélectionner tout" + "SELECT_ALL": "Sélectionner tout", + "SELECTED_one": "{{count}} sélectionné", + "SELECTED_other": "{{count}} sélectionné", + "SHOWING_ALL": "Affichage de tout", + "SHOWING_ALL_DEFAULT": "Tout afficher (par défaut)" }, "FINANCES": { "ACTUAL_REVENUE": { @@ -921,6 +1055,8 @@ "HELP": { "ATTACHMENT_LABEL": "Télécharger une capture d'écran ou un fichier", "EMAIL": "Courriel", + "FEEDBACK_INVITATION": "Obtenez de l'aide ou donnez-nous votre avis", + "SEND_US_FEEDBACK": "Envoyez-nous votre avis", "MESSAGE_LABEL": "Message", "OPTIONS": { "OTHER": "Autre", @@ -930,7 +1066,6 @@ }, "PREFERRED_CONTACT": "Méthode de contact préférée", "REQUIRED_LABEL": "Champ obligatoire", - "TITLE": "Demander de l'aide", "TYPE_SUPPORT_LABEL": "Type de support", "TYPE_SUPPORT_PLACEHOLDER": "Choisissez le type de support", "WHATSAPP": "Whatsapp", @@ -939,6 +1074,11 @@ "HOME": { "GREETING": "Bonjour, " }, + "HOVERPILL": { + "PLUS_OTHERS_COUNT_one": "+ {{count}} autre", + "PLUS_OTHERS_COUNT_many": "+ {{count}} autres", + "PLUS_OTHERS_COUNT_other": "+ {{count}} autres" + }, "INSIGHTS": { "BIODIVERSITY": { "AMPHIBIANS": "Amphibiens", @@ -1260,6 +1400,10 @@ }, "MENU": { "ACTUAL_REVENUES": "Chiffres d'affaires réels", + "ANIMALS": "Animaux", + "ANIMALS_GROUPS": "Groupes", + "ANIMALS_INVENTORY": "Inventaire", + "ANIMALS_LOCATION": "Emplacements", "CERTIFICATIONS": "Certifications", "CROPS": "Cultures", "DOCUMENTS": "Documents", @@ -1458,6 +1602,22 @@ "LITEFARM_UPDATED": "LiteFarm v{{version}} est maintenant disponible !", "NOTES": "Notes de version" }, + "REMOVE_ANIMALS": { + "CREATED_IN_ERROR": "Créé par erreur", + "CULLED": "Abattu", + "EXPLANATION": "Explication", + "MORE_DETAILS": "Voulez-vous donner plus de détails ?", + "NATURAL_DEATH": "Mort naturelle", + "REMOVAL_REASONS": "Raisons de retrait", + "REMOVE_ANIMALS": "Retirer des animaux", + "REMOVED_AND_ARCHIVED": "Ces animaux ont été retirés de votre ferme avec succès et seront disponibles dans votre inventaire historique.", + "SLAUGHTERED_FOR_CONSUMPTION": "Abattu pour la consommation", + "SLAUGHTERED_FOR_SALE": "Abattu pour vendre", + "SOLD": "Vendu", + "WHY": "Dites-nous pourquoi vous retirez ces animaux", + "WILL_BE_ARCHIVED": "Ces animaux seront retirés de votre inventaire", + "WILL_BE_PERMANENTLY_REMOVED": "Ces animaux seront définitivement retirés de votre ferme" + }, "REPEAT_PLAN": { "AFTER": "Après", "COMPLETION": "finalisation", @@ -1498,7 +1658,7 @@ }, "REQUEST_CONFIRMATION_MODAL": { "BUTTON": "J'ai compris", - "DESCRIPTION": "Vous serez contacté dans les 48 heures.", + "DESCRIPTION": "Quelqu'un sera bientôt en contact.", "TITLE": "Demande d'aide soumise" }, "REVENUE": { @@ -1611,6 +1771,11 @@ "NO_RESULTS_FOR": "Aucun résultat pour <1>'{{searchTerm}}'", "ZERO": "Aucun résultat" }, + "SECTION_HEADER": { + "ANIMALS_GROUPS": "Groupes d'animaux", + "ANIMALS_INVENTORY": "Inventaire d'animaux", + "ANIMALS_LOCATION": "Emplacements des animaux" + }, "SENSOR": { "BRAND": "Marque", "BRAND_HELPTEXT": "Les marques avec lesquelles LiteFarm peut s’intégrer sont indiquées ci-dessous. Si vous ne souhaitez plus utiliser cette marque de capteur, essayez de retirer ce capteur.", @@ -1768,6 +1933,7 @@ "LABOUR_ISSUE": "Problème de travail", "MACHINERY_ISSUE": "Problème de machine", "MARKET_PROBLEM": "Problème de marché", + "NO_ANIMALS": "Abandon automatique : pas d'animaux pour cette tâche", "OTHER": "Autre", "SCHEDULING_ISSUE": "Problème de planification", "WEATHER": "Météo" @@ -1787,9 +1953,14 @@ "ADD_TASK": "Créer une tâche", "ADD_TASK_FLOW": "création de tâche", "AMOUNT_TO_ALLOCATE": "Montant à allouer", + "ANIMALS": "Animaux", + "ANIMALS_AT_LEAST_ONE_TO_COMPLETE": "Au moins un animal doit être sélectionné pour accomplir cette tâche. Pour supprimer tous les animaux, abandonnez la tâche.", + "ANIMAL_MOVING_TO_LOCATION": "Déplacement vers :", + "ANIMAL_MOVEMENT_EXPANDING_SUMMARY_TITLE": "Animaux dans cette tâche", "CARD": { "MULTIPLE_CROPS": "Plusieurs cultures", - "MULTIPLE_LOCATIONS": "Plusieurs emplacements" + "MULTIPLE_LOCATIONS": "Plusieurs emplacements", + "NO_LOCATION": "Aucun emplacement" }, "COMPLETE": { "DATE": "Date d'achèvement", @@ -1845,6 +2016,7 @@ "HOW_WILL_HARVEST_BE_USED": "Comment la récolte sera-t-elle utilisée ?", "IRRIGATION_LOCATION": "Sélectionner un emplacement d’irrigation", "LOCATIONS": "Emplacement(s)", + "NO_LOCATIONS_FOR_TASK": "Aucun emplacement spécifique requis pour cette tâche", "NO_TASKS_TO_DISPLAY": "Il n'y a aucune tâche à afficher.", "NO_WORK_DONE": "Aucun travail n'a été terminé", "PAGE_TITLE": "Tâches", @@ -1853,6 +2025,7 @@ "QUANTITY_CANNOT_EXCEED": "La quantité de récolte utilisée ne peut pas dépasser la quantité à allouer", "RATE_THIS_TASK": "Évaluez cette tâche", "REMOVE_HARVEST_USE": "Supprimer", + "SELECT_ANIMALS": "Sélectionnez les animaux", "SELECT_DATE": "Sélectionnez la date de la tâche", "SELECT_TASK_LOCATIONS": "Sélectionnez le(s) emplacement(s) de la tâche", "SELECT_WILD_CROP": "Cette tâche cible une culture sauvage", @@ -1885,6 +2058,13 @@ "MAYBE_LATER": "Espérons le trouver plus tard.", "UNKNOWN_RECORD": "Enregistrement inconnu" }, + "UPLOADER": { + "CHANGE_IMAGE": "Modifier l’image", + "CLICK_TO_UPLOAD": "Cliquer pour télécharger", + "DRAG_DROP": "ou glisser déposer", + "REMOVE_IMAGE": "Supprimer image", + "UPLOAD_IMAGE": "Ajouter une image" + }, "WAGE": { "ERROR": "Le salaire doit être un nombre décimal valide et non négatif", "HOURLY_WAGE": "Salaire horaire", @@ -1900,5 +2080,11 @@ }, "YEAR_SELECTOR": { "TITLE": "Selectionnez une année" + }, + "BADGE": { + "BETA": { + "TITLE": "Béta", + "ANIMALS_CONTENT": "Jetez un coup d'œil à notre nouvelle fonctionnalité de gestion des animaux, maintenant en bêta! Vos commentaires sont cruciaux au fur et à mesure que nous affinons cette fonctionnalité. Veuillez partager des bugs ou des suggestions que vous rencontrez. Nous apprécions votre aide pour améliorer liteFarm ! Vous pouvez en apprendre plus sur la bêta ici" + } } } diff --git a/packages/webapp/public/locales/hi/animal.json b/packages/webapp/public/locales/hi/animal.json new file mode 100644 index 0000000000..16ed82a65c --- /dev/null +++ b/packages/webapp/public/locales/hi/animal.json @@ -0,0 +1,69 @@ +{ + "BREED": { + "ANGUS": "एंगस", + "CHAROLAIS": "शारोलैस", + "COBB_500": "कॉब 500", + "CORNISH_CROSS": "कॉर्निश क्रॉस", + "DUROC": "ड्यूरॉक", + "HEREFORD": "हेरफोर्ड", + "LANDRACE": "लैंडरेस", + "LEGHORN": "लेगहॉर्न", + "PLYMOUTH_ROCK": "प्लीमाउथ रॉक", + "RHODE_ISLAND_RED": "रोड आइलैंड रेड", + "ROSS_308": "रॉस 308", + "YORKSHIRE_LARGE_WHITE": "यॉर्कशायर बड़ा सफेद" + }, + "ORIGIN": { + "BORN_AT_FARM": "फार्म पर जन्मा", + "BROUGHT_IN": "लाया गया" + }, + "PURPOSE": { + "GRAZING": "चराई", + "MILKING": "दूध दोहन", + "MANURE_MANAGEMENT": "गोबर प्रबंधन", + "PEST_OR_DISEASE_CONTROL": "कीट या बीमारी नियंत्रण", + "BREEDING": "प्रजनन", + "FEEDING": "खिलाना", + "VETERINARY_CARE": "पशु चिकित्सा देखभाल", + "BIRTHING": "जन्म देना", + "WEANING": "दूध छुड़ाना", + "TRANSPORTATION": "परिवहन", + "BEHAVIORAL_AND_SOCIAL_MANAGEMENT": "व्यवहार और सामाजिक प्रबंधन", + "EXERCISE": "व्यायाम", + "QUARANTINE": "संगरोध", + "OTHER": "अन्य" + }, + "SEX": { + "MALE": "पुरुष", + "FEMALE": "महिला" + }, + "TAG_COLOR": { + "BLUE": "नीला", + "GREEN": "हरा", + "ORANGE": "नारंगी", + "RED": "लाल", + "WHITE": "सफेद", + "YELLOW": "पीला" + }, + "TAG_TYPE": { + "EAR_TAG": "कान की टैग", + "LEG_BAND": "पैर की पट्टी" + }, + "TYPE": { + "CATTLE": "पशु", + "CHICKEN": "मुर्गी", + "PIGS": "सुअर" + }, + "USE": { + "MILK": "दूध", + "EGGS": "अंडे", + "FAT": "वसा", + "MEAT": "मांस", + "ANIMAL_FIBERS_AND_SKINS": "पशु रेशे और खाल", + "LABOUR_AND_DRAFT": "मजदूरी और मसौदा", + "BREEDING": "प्रजनन", + "RECREATIONAL_OR_CULTURAL_USE": "सांस्कृतिक या मनोरंजन उपयोग", + "COMPANIONSHIP": "संगति", + "OTHER": "अन्य" + } +} diff --git a/packages/webapp/public/locales/hi/common.json b/packages/webapp/public/locales/hi/common.json index cc1b742e38..765012e173 100644 --- a/packages/webapp/public/locales/hi/common.json +++ b/packages/webapp/public/locales/hi/common.json @@ -4,20 +4,36 @@ "ADD": "जोड़ें", "ADD_ANOTHER_ITEM": "एक और आइटम जोड़ें", "ADD_ITEM": "जोड़ें {{itemName}}", + "ADD_TO_GROUP": "समूह में जोड़ें", + "AGE": "आयु", + "AGE_DAYS_COUNT_one": "{{count}}दिन", + "AGE_DAYS_COUNT_other": "{{count}}दिन", + "AGE_MONTHS_COUNT_one": "{{count}}महीना", + "AGE_MONTHS_COUNT_other": "{{count}}महीना", + "AGE_YEARS_COUNT_one": "{{count}}वर्ष", + "AGE_YEARS_COUNT_other": "{{count}} वर्ष", "ALL": "सभी", "AMOUNT": "राशि", + "AND": "और", "APPLY": "लागू करें", "BACK": "वापस जाएँ", "CANCEL": "रद्द करें", "CHANGE": "बदलें", "CHAR_LIMIT_ERROR": "सीमा {{value}} अक्षर है", + "CLEAR_ACTIVE_FILTERS": "सक्रिय फ़िल्टर हटाएं", + "CLEAR_SELECTION": "चयन हटाएं", + "CLONE": "क्लोन", "CLOSE": "बंद करें", "CONFIRM": "पुष्टि क", "CONTINUE": "जारी रखें", + "COUNT": "गिनती", "CREATE": "बनाएं", + "CREATE_A_TASK": "एक कार्य बनाएँ", "DATE": "तारीख", "DELETE": "हटाएं", + "DO_NOT_KNOW": "मुझे नहीं पता", "DO_NOT_SHOW": "यह संदेश फिर से न दिखाएं।", + "DONE": "हो गया", "EDIT": "संपादित करें", "EDIT_DATE": "तारीख संपादित करें", "EDITING": "संपादन जारी...", @@ -28,6 +44,7 @@ "GO_BACK": "वापस जाओ", "GOT_IT": "समझ गया!", "HERE": "यहां", + "INVALID_DATE": "अमान्य तिथि", "LOADING": "लोड हो रहा है...", "MARK_ABANDON": "छोड़ दें", "MARK_COMPLETE": "पूर्ण चिह्नित करें", @@ -39,16 +56,23 @@ "NEEDS_PLAN": "योजना बाकी है", "NEXT": "अगला", "NO": "नहीं", + "NON_ORGANIC": "अकार्बनिक", + "NONE": "कोई नहीं", "NOT_SURE": "निश्चित नहीं हूँ", "NOTES": "नोट्स", "OK": "ठीक है", "OPTIONAL": "(वैकल्पिक)", "OR": "या", + "ORGANIC": "कार्बनिक", "OTHER": "कुछ और", "PAST": "अतीत", "PLANNED": "योजनाबद्ध", + "PREVIOUS": "पिछला", + "PRICE": "कीमत", "PROCEED": "आगे बढ़ें", + "PROPERTY_UNKNOWN": "{{property}} अज्ञात", "QUANTITY": "मात्रा", + "REMOVE": "हटाएं", "REMOVE_ITEM": "आइटम हटाएं", "REQUIRED": "आवश्यक", "RETIRE": "सेवानिवृत्त", @@ -56,16 +80,29 @@ "SAVE_CHANGES": "परिवर्तन सहेजें", "SEARCH": "खोजें", "SELECT": "चुनें", + "SELECT_ALL": "सभी चुनें", + "SELECTED_COUNT": "{{count}} चयनित", + "SELECTED_COUNT_one": "{{count}} चयनित", + "SELECTED_COUNT_many": "{{count}} चयनित", + "SELECTED_COUNT_other": "{{count}} चयनित", + "SELECT_OR_ADD_YOUR_OWN": "चुनें या अपना जोड़ें", + "SET": "सेट", + "SHOWING_ALL": "सभी दिखाएं", "SKIP": "छोड़ें", "SORRY": "क्षमा करें", "SUBMIT": "जमा करें", "SUBMITTING": "जमा हो रहा है...", "THATS_FINE": "वह ठीक है", "TODAY": "आज", + "TOTAL": "कुल", + "TRANSITIONING": "संक्रमणकालीन", "TYPE": "प्रकार", + "TYPES": "प्रकार", + "UNKNOWN": "अज्ञात", "UPDATE": "अपडेट करें", "UPLOAD": "अपलोड करें", "UPLOADING": "अपलोड हो रहा है...", + "USE": "उपयोग", "WORD_LIMIT_ERROR": "केवल {{value}} अक्षर प्रदर्शित किए जा सकते हैं", "YEAR": "वर्ष", "YES": "हाँ", diff --git a/packages/webapp/public/locales/hi/message.json b/packages/webapp/public/locales/hi/message.json index ef5d9f2568..edc705b7c5 100644 --- a/packages/webapp/public/locales/hi/message.json +++ b/packages/webapp/public/locales/hi/message.json @@ -1,4 +1,18 @@ { + "ANIMALS": { + "FAILED_CREATE_ANIMALS": "जानवरों को बनाने में विफल", + "FAILED_CREATE_BATCHES": "बैच बनाने में विफल", + "FAILED_REMOVE_ANIMALS": "चयनित जानवरों को हटाने में विफल", + "FAILED_REMOVE_BATCHES": "चयनित बैचों को हटाने में विफल", + "FAILED_UPDATE_ANIMAL": "जानवर को अपडेट करने में विफल", + "FAILED_UPDATE_BATCH": "बैच को अपडेट करने में विफल", + "SUCCESS_CREATE_ANIMALS": "जानवरों को सफलतापूर्वक बनाया गया", + "SUCCESS_CREATE_BATCHES": "बैचों को सफलतापूर्वक बनाया गया", + "SUCCESS_REMOVE_ANIMALS": "चयनित जानवरों को सफलतापूर्वक हटाया गया", + "SUCCESS_REMOVE_BATCHES": "चयनित बैचों को सफलतापूर्वक हटाया गया", + "SUCCESS_UPDATE_ANIMAL": "जानवर को सफलतापूर्वक अपडेट किया गया", + "SUCCESS_UPDATE_BATCH": "बैच को सफलतापूर्वक अपडेट किया गया" + }, "ASSIGN_TASK": { "ERROR": "कार्य सौंपने में विफल", "SUCCESS": "कार्य सफलतापूर्वक सौंपे गए" @@ -40,7 +54,9 @@ "ERROR": { "ADD": "नए खर्च जोड़ने में विफल", "DELETE": "खर्च हटाने में विफल", - "UPDATE": "खर्च अपडेट करने में विफल!" + "UPDATE": "खर्च अपडेट करने में विफल!", + "EXPENSE_DELETED": "यह खर्च अब मौजूद नहीं है", + "EXPENSE_TYPE_DELETED": "इस खर्च प्रकार को हटा दिया गया है" }, "SUCCESS": { "ADD": "ए खर्च सफलतापूर्वक जोड़े गए!", @@ -70,6 +86,11 @@ "UPDATE": "खेत की जानकारी सफलतापूर्वक अपडेट की गई!" } }, + "HELP_REQUEST": { + "ERROR": { + "SEND": "आपके फीडबैक को सबमिट करते समय कुछ गलत हो गया। कृपया पुनः प्रयास करें।" + } + }, "LOG_HARVEST": { "ERROR": { "ADD_USE_TYPE": "उपयोगकर्ता जानकारी में लॉगिन करने में विफल", @@ -141,7 +162,8 @@ }, "REVENUE": { "ERROR": { - "EDIT": "राजस्व अपडेट करने में विफल" + "EDIT": "राजस्व अपडेट करने में विफल", + "REVENUE_TYPE_DELETED": "इस राजस्व प्रकार को हटा दिया गया है" }, "SUCCESS": { "EDIT": "राजस्व सफलतापूर्वक अपडेट किया गया" @@ -163,7 +185,8 @@ "ERROR": { "ADD": "बिक्री जोड़ने में विफल", "DELETE": "नई बिक्री हटाने में विफल", - "UPDATE": "बिक्री अपडेट करने में विफल" + "UPDATE": "बिक्री अपडेट करने में विफल", + "SALE_DELETED": "यह बिक्री अब मौजूद नहीं है" }, "SUCCESS": { "ADD": "बिक्री सफलतापूर्वक जोड़ी गई", diff --git a/packages/webapp/public/locales/hi/task.json b/packages/webapp/public/locales/hi/task.json index 0ffcd77faa..b3736df34e 100644 --- a/packages/webapp/public/locales/hi/task.json +++ b/packages/webapp/public/locales/hi/task.json @@ -10,20 +10,16 @@ "WEEDING": "निराई", "WASH_AND_PACK_TASK": "धोना और पैक करना", "PEST_CONTROL_TASK": "कीट नियंत्रण", - "PEST_CONTROL_TASK_LOWER": "कीट नियंत्रण", "OTHER_TASK": "कुछ और", "BREAK_TASK": "विराम", "SOIL_TASK": "मृदा नमूना परिणाम", "IRRIGATION_TASK": "सिंचाई", - "IRRIGATION_TASK_LOWER": "सिंचाई", "TRANSPORT_TASK": "परिवहन", "FIELD_WORK_TASK": "खेती का काम", - "FIELD_WORK_TASK_LOWER": "खेती का काम", "PLANT_TASK": "रोपण", "TRANSPLANT_TASK": "पौध रोपण", "SOCIAL_TASK": "सामाजिक", "CLEANING_TASK": "सफाई", - "CLEANING_TASK_LOWER": "सफाई", "SOIL_AMENDMENT_TASK": "मृदा संशोधन", - "SOIL_AMENDMENT_TASK_LOWER": "मृदा संशोधन" + "MOVEMENT_TASK": "गति" } diff --git a/packages/webapp/public/locales/hi/translation.json b/packages/webapp/public/locales/hi/translation.json index 6f68f42c68..60b1df5095 100644 --- a/packages/webapp/public/locales/hi/translation.json +++ b/packages/webapp/public/locales/hi/translation.json @@ -1,4 +1,68 @@ { + "ADD_ANIMAL": { + "ADD_ANIMALS": "जानवर जोड़ें", + "ADD_ANIMALS_FLOW": "जानवरों का जोड़", + "ADD_ANIMALS_TITLE": "जानवर जोड़ें", + "ADD_DETAILS_INFO": "नीचे अपने जानवरों का विवरण भरें या इसे सहेजकर बाद में जारी रखें।", + "ADD_TO_INVENTORY": "अपनी सूची में जानवर जोड़ें", + "ANIMAL_BASICS": "जानवर की बुनियादी जानकारी", + "ANIMAL_DETAILS": "जानवर का विवरण", + "ANIMALS_TOTAL_one": "कुल {{count}} जानवर", + "ANIMALS_TOTAL_other": "कुल {{count}} जानवर", + "ANIMALS_UNSPECIFIED_one": "{{count}} अनिर्दिष्ट", + "ANIMALS_UNSPECIFIED_other": "{{count}} अनिर्दिष्ट", + "BATCH_NAME": "बैच का नाम", + "BATCH_NAME_PLACEHOLDER": "बैच का नाम टाइप करें", + "BREED": "नस्ल", + "BREED_PLACEHOLDER_DISABLED": "कृपया पहले एक प्रकार चुनें", + "CREATE_INDIVIDUAL_PROFILES": "व्यक्तिगत जानवरों की प्रोफ़ाइल बनाएं", + "CREATE_INDIVIDUAL_PROFILES_TOOLTIP": "इस विकल्प का चयन करें यदि आप प्रत्येक जानवर को अलग से ट्रैक और प्रबंधित करना चाहते हैं।", + "EDIT_BASIC_INFO": "बुनियादी जानकारी संपादित करें", + "GENERAL_DETAILS": "सामान्य विवरण", + "GENERAL_DETAILS_BATCH": "बैच के सामान्य विवरण", + "GROUP_NAME": "समूह का नाम", + "GROUP_NAME_PLACEHOLDER": "समूह का नाम टाइप करें", + "ORIGIN": "मूल", + "ORIGIN_BATCH": "बैच का मूल", + "OTHER_DETAILS": "अन्य विवरण", + "OTHER_DETAILS_BATCH": "बैच के अन्य विवरण", + "OUT_OF_COUNT_one": "{{count}} में से {{animalNumber}}", + "OUT_OF_COUNT_other": "{{count}} में से {{animalNumber}}", + "PLACEHOLDER": { + "BATCH_NAME": "बैच का नाम टाइप करें", + "DAM": "एक मातृ का नाम टाइप करें", + "NAME": "एक नाम टाइप करें", + "OTHER_DETAILS": "विवरण दर्ज करें", + "OTHER_USE": "अन्य उपयोग का वर्णन करें", + "PRICE": "इसकी लागत कितनी थी?", + "SIRE": "एक पिता का नाम टाइप करें", + "SUPPLIER": "आपूर्तिकर्ता का नाम टाइप करें", + "TAG_COLOUR": "टैग का रंग क्या है?", + "TAG_NUMBER": "टैग संख्या टाइप करें", + "TAG_TYPE": "टैग का प्रकार क्या है?", + "TAG_TYPE_INFO": "कृपया अपने टैग के प्रकार का वर्णन करें" + }, + "REMOVE_CONFIRM": "क्या आप वाकई हटाना चाहते हैं?", + "SELECT_SEXES": "लिंग चुनें", + "SEX_DETAIL": "लिंग का विवरण", + "SEX_DETAIL_ERROR_one": "अधिकतम जानवरों की संख्या: {{count}}", + "SEX_DETAIL_ERROR_other": "अधिकतम जानवरों की संख्या: {{count}}", + "SEX_DETAIL_ERROR_POPOVER_one": "आपके पास {{count}} से अधिक जानवर नहीं हो सकते", + "SEX_DETAIL_ERROR_POPOVER_other": "आपके पास {{count}} से अधिक जानवर नहीं हो सकते", + "SPECIFY_SEX": "लिंग निर्दिष्ट करें", + "SUMMARY": { + "ADD_MORE_DETAILS": "अपने जानवरों के लिए और विवरण जोड़ें", + "ALL_DONE": "सब हो गया!", + "ANIMAL_SUMMARY_COUNT_one": "{{count}} व्यक्तिगत जानवर", + "ANIMAL_SUMMARY_COUNT_other": "{{count}} व्यक्तिगत जानवर", + "BATCH_SUMMARY_COUNT_one": "{{count}} बैच", + "BATCH_SUMMARY_COUNT_other": "{{count}} बैच", + "HERE_IS_SUMMARY": "यह आपके जोड़े गए जानवरों का सारांश है:", + "MAIN": "आपने सफलतापूर्वक {{animalCount}} {{and}} {{batchCount}} अपनी सूची में जोड़े।" + }, + "TYPE": "प्रकार", + "UNIQUE_DETAILS": "विशिष्ट विवरण" + }, "ADD_FARM": { "ADDRESS_IS_REQUIRED": "पता आवश्यक है", "DISABLE_GEO_LOCATION": "अपने वर्तमान स्थान का पता लगाने के लिए स्थान सेवाओं को सक्षम करना होगा", @@ -53,6 +117,7 @@ "ASSIGN_TASK": "टास्क सौंपें", "ASSIGNEE": "सौंपने वाला", "CANCEL": "टास्क निर्माण रद्द करें", + "CANT_FIND_INFO_TASK": "आप अपने स्वयं के कस्टम कार्य प्रकार भी बना सकते हैं!", "CLEANING_VIEW": { "ESTIMATED_WATER": "अनुमानित जल उपयोग", "IS_PERMITTED": "क्या सफाई एजेंट अनुमत सब्सटेंस सूची में है?", @@ -99,6 +164,7 @@ "IRRIGATION_VIEW": { "BRAND_TOOLTIP": "यह कार्य आपके स्थान की सिंचाई के लिए है। यदि आप सिंचाई स्थापित करना चाहते हैं, तो इसके बजाय एक क्षेत्र कार्य कार्य बनाएं।", "CALCULATE_WATER_USAGE": "जल उपयोग की गणना करें", + "CALCULATE_WATER_USAGE_WARNING": "जंगली फसलों के लिए, गहराई के अनुसार पानी के उपयोग का अनुमान उपलब्ध नहीं है।", "DEFAULT_APPLICATION_DEPTH": "इस स्थान के लिए डिफ़ॉल्ट अनुप्रयोग गहराई निर्धारित करें", "DEFAULT_LOCATION_FLOW_RATE": "इस स्थान के लिए डिफ़ॉल्ट प्रवाह दर निर्धारित करें", "DEPTH": "गहराई", @@ -135,9 +201,19 @@ }, "WHAT_TYPE_OF_IRRIGATION": "सिंचाई का कौन सा प्रकार?" }, - "MANAGE_CUSTOM_TASKS": "कस्टम कार्यों का प्रबंधन करें", + "MANAGE_CUSTOM_TASKS": "अपने कस्टम कार्यों का प्रबंधन करें", + "MOVEMENT_VIEW": { + "MOVEMENT_PURPOSE_LABEL": "इस स्थानांतरण का उद्देश्य क्या है?", + "MOVEMENT_PURPOSE_PLACEHOLDER": "इस स्थानांतरण के उद्देश्य का चयन करें", + "OTHER_PURPOSE_EXPLANATION_LABEL": "व्याख्या", + "OTHER_PURPOSE_EXPLANATION_PLACEHOLDER": "कृपया इस स्थानांतरण के कारण का वर्णन करें" + }, + "NEED_ANIMAL_LOCATION_MOVEMENT": "आपको एक ऐसी जगह की ज़रूरत है जहाँ जानवरों को ले जाया जा सके। यह स्थान बनाने के लिए मैप पर जाएँ।", "NEED_MANAGEMENT_PLAN": "आपको कटाई कार्य या प्रत्यारोपण कार्य निर्धारित करने से पहले एक सक्रिय या योजनाबद्ध फसल योजना की आवश्यकता होगी। अब योजना बनाने के लिए फसल कैटलॉग पर जाएँ।", + "NO_ANIMAL_LOCATION": "जानवरों के लिए सही स्थान नहीं है", "NO_MANAGEMENT_PLAN": "कोई योग्य फसल योजना नहीं", + "NOTES_LABEL": "क्या इस कार्य से संबंधित कुछ विशेष जोड़ना है?", + "NOTES_PLACEHOLDER": "निर्देश या असाइन किए गए व्यक्ति के लिए कोई विशेष विवरण जोड़ें", "PEST_CONTROL_VIEW": { "BIOLOGICAL_CONTROL": "जैविक नियंत्रण", "FLAME_WEEDING": "लौ निराई", @@ -196,11 +272,64 @@ "TASK": "कार्य", "TASK_NOTES_CHAR_LIMIT": "नोट्स 10,000 अक्षरों से कम होने चाहिए", "TELL_US_ABOUT_YOUR_TASK_TYPE_ONE": "इस कार्य के बारे में बताएं", + "THIS_TASK_IS_COMPLETED": "यह कार्य पहले ही पूरा हो चुका है।", + "THIS_TASK_IS_COMPLETED_EXPLANATION": "'सहेजें' पर क्लिक करने से यह कार्य तुरंत सहेजा जाएगा। इसके बाद इसे पूरा करने के लिए आपको प्रेरित किया जाएगा।", "TRANSPLANT_METHOD": "प्रत्यारोपण विधि", "WAGE_OVERRIDE": "मजदूरी अधिलेखन", "WHAT_PLANTING_METHOD": "प्रत्यारोपण की विधि क्या है?", "WILD_CROP": "जंगली फसलें" }, + "ANIMAL": { + "ADD_MORE_BODY_TEXT": "क्या आपके पास कोई और जानवर का प्रकार या अलग नस्ल है?", + "ADD_MORE_BUTTON": "और जानवर जोड़ें", + "ANIMAL_BREED": "नस्ल", + "ANIMAL_COUNT_one": "{{count}} जानवर", + "ANIMAL_COUNT_other": "{{count}} जानवर", + "ANIMAL_GROUPS": "समूह", + "ANIMAL_ID": "पहचान संख्या (ID)", + "ANIMAL_IDENTIFICATION": "पहचान", + "ANIMAL_LOCATIONS": "स्थान", + "ANIMAL_SEXES": "लिंग", + "ANIMAL_TYPE": "प्रकार", + "ATTRIBUTE": { + "ANIMAL_IMAGE": "जानवर की तस्वीर", + "BATCH_IMAGE": "बैच की तस्वीर", + "BATCH_NAME": "बैच का नाम", + "DAM": "मातृ", + "DATE_OF_BIRTH": "जन्म तिथि", + "LITEFARM_ID": "लाइटफार्म आईडी", + "ORGANIC_STATUS": "जैविक स्थिति", + "OTHER_DETAILS_ANIMAL": "अन्य जानवर का विवरण", + "OTHER_DETAILS_BATCH": "बैच का विवरण", + "OTHER_USE": "अन्य उपयोग", + "SIRE": "पिता", + "SUPPLIER": "आपूर्तिकर्ता", + "TAG_COLOUR": "टैग का रंग", + "TAG_NUMBER": "टैग संख्या", + "TAG_TYPE": "टैग का प्रकार", + "WEANING_DATE": "दूध छुड़ाने की तारीख" + }, + "BATCH": "बैच", + "BETA_SPOTLIGHT_HEADING": "नई जानवर सुविधा का परिचय", + "EDIT_ANIMAL_FLOW": "संपादन", + "FILTER": { + "BATCHES": "बैच", + "BATCHES_OR_INDIVIDUALS": "बैच या व्यक्तिगत", + "FEMALE": "महिला", + "INDIVIDUALS": "व्यक्तिगत", + "MALE": "पुरुष", + "TITLE": "जानवरों को फ़िल्टर करें" + }, + "REMOVE_ANIMAL": "जानवरों को हटाएं", + "SEARCH_INVENTORY_PLACEHOLDER": "अपनी सूची में खोजें", + "SHOWING_RESULTS_WITH_COUNT_one": "{{count}} परिणाम दिखा रहा है", + "SHOWING_RESULTS_WITH_COUNT_many": "{{count}} परिणाम दिखा रहा है", + "SHOWING_RESULTS_WITH_COUNT_other": "{{count}} परिणाम दिखा रहा है", + "TABS": { + "BASIC_INFO": "मूल जानकारी", + "TASKS": "कार्य" + } + }, "BED_PLAN": { "LENGTH_OF_BED": "बेड की लंबाई", "NUMBER_0F_BEDS": "बेड की संख्या", @@ -822,7 +951,7 @@ }, "TUTORIALS": "नक्शे के ट्यूटोरियल", "UNABLE_TO_RETIRE": { - "BODY": "आप केवल उन स्थानों को सेवानिवृत्त कर सकते हैं जिनमें कोई सक्रिय या योजनाबद्ध फसल या कार्य नहीं है।", + "BODY": "आप केवल उन स्थानों को सेवानिवृत्त कर सकते हैं जहां कोई सक्रिय या नियोजित फसलें, जानवर या कार्य नहीं हैं।", "TITLE": "सेवानिवृत्त करने में असमर्थ" }, "WATER_VALVE": { @@ -853,13 +982,18 @@ } }, "FILE_SIZE_MODAL": { - "BODY": "फ़ाइलें 10MB से बड़ी नहीं हो सकतीं।", + "BODY": "फ़ाइलें {{size}} MB से बड़ी नहीं हो सकतीं।", "TITLE": "फ़ाइल आकार बहुत बड़ा है" }, "FILTER": { + "CLEAR": "साफ़ करें", "CLEAR_ALL": "साफ़ करें", "CLEAR_ALL_FILTERS": "सभी साफ़ करें", - "SELECT_ALL": "सभी चुनें" + "SELECT_ALL": "सभी चुनें", + "SELECTED_one": "{{count}} चयनित", + "SELECTED_other": "{{count}} चयनित", + "SHOWING_ALL": "सभी दिखाएं", + "SHOWING_ALL_DEFAULT": "सभी दिखा रहा है" }, "FINANCES": { "ACTUAL_REVENUE": { @@ -921,6 +1055,8 @@ "HELP": { "ATTACHMENT_LABEL": "स्क्रीनशॉट या फाइल अपलोड करें", "EMAIL": "ईमेल", + "FEEDBACK_INVITATION": "मदद प्राप्त करें या हमें प्रतिक्रिया दें", + "SEND_US_FEEDBACK": "हमें अपनी प्रतिक्रिया भेजें", "MESSAGE_LABEL": "संदेश", "OPTIONS": { "OTHER": "कुछ और", @@ -930,7 +1066,6 @@ }, "PREFERRED_CONTACT": "पसंदीदा संपर्क विधि", "REQUIRED_LABEL": "आवश्यक फील्ड", - "TITLE": "सहायता का अनुरोध", "TYPE_SUPPORT_LABEL": "समर्थन का प्रकार", "TYPE_SUPPORT_PLACEHOLDER": "समर्थन का प्रकार चुनें", "WHATSAPP": "व्हाट्सएप", @@ -939,6 +1074,11 @@ "HOME": { "GREETING": "नमस्ते, " }, + "HOVERPILL": { + "PLUS_OTHERS_COUNT_one": "+ {{count}} अन्य", + "PLUS_OTHERS_COUNT_many": "+ {{count}} अन्य", + "PLUS_OTHERS_COUNT_other": "+ {{count}} अन्य" + }, "INSIGHTS": { "BIODIVERSITY": { "AMPHIBIANS": "उभयचर", @@ -1260,6 +1400,10 @@ }, "MENU": { "ACTUAL_REVENUES": "वास्तविक राजस्व", + "ANIMALS": "जानवर", + "ANIMALS_GROUPS": "समूह", + "ANIMALS_INVENTORY": "सूची", + "ANIMALS_LOCATION": "स्थान", "CERTIFICATIONS": "पशु", "CROPS": "फसलें", "DOCUMENTS": "इन्वेंटरी", @@ -1458,6 +1602,22 @@ "LITEFARM_UPDATED": "लाइटफार्म v{{version}} अब उपलब्ध है!", "NOTES": "रिलीज़ नोट्स" }, + "REMOVE_ANIMALS": { + "CREATED_IN_ERROR": "गलती से बनाया गया", + "CULLED": "छांटा गया", + "EXPLANATION": "व्याख्या", + "MORE_DETAILS": "क्या आप और विवरण देना चाहते हैं?", + "NATURAL_DEATH": "प्राकृतिक मृत्यु", + "REMOVAL_REASONS": "हटाने के कारण", + "REMOVE_ANIMALS": "जानवरों को हटाएं", + "REMOVED_AND_ARCHIVED": "इन जानवरों को सफलतापूर्वक आपके फ़ार्म से हटा दिया गया है और यह आपकी ऐतिहासिक सूची में उपलब्ध होंगे।", + "SLAUGHTERED_FOR_CONSUMPTION": "खपत के लिए वध किया गया", + "SLAUGHTERED_FOR_SALE": "बिक्री के लिए वध किया गया", + "SOLD": "बेचा गया", + "WHY": "हमें बताएं कि आप इन जानवरों को क्यों हटा रहे हैं", + "WILL_BE_ARCHIVED": "ये जानवर आपकी मौजूदा जानवरों की सूची से हटा दिए जाएंगे", + "WILL_BE_PERMANENTLY_REMOVED": "इन जानवरों को आपके फ़ार्म से स्थायी रूप से हटा दिया जाएगा" + }, "REPEAT_PLAN": { "AFTER": "बाद में", "COMPLETION": "समापन", @@ -1498,7 +1658,7 @@ }, "REQUEST_CONFIRMATION_MODAL": { "BUTTON": "समझ लिया", - "DESCRIPTION": "कोई व्यक्ति 48 घंटों के भीतर आपसे संपर्क करेगा।", + "DESCRIPTION": "कोई आपसे जल्द ही संपर्क करेगा।", "TITLE": "सहायता अनुरोध सबमिट किया गया" }, "REVENUE": { @@ -1611,6 +1771,11 @@ "NO_RESULTS_FOR": "माफ़ कीजिए, हम आपके खोज शब्द <1>'{{searchTerm}}' के लिए कोई परिणाम नहीं ढूंढ पाए।", "ZERO": "0 परिणाम" }, + "SECTION_HEADER": { + "ANIMALS_GROUPS": "जानवर समूह", + "ANIMALS_INVENTORY": "जानवर सूची", + "ANIMALS_LOCATION": "जानवर स्थान" + }, "SENSOR": { "BRAND": "ब्रांड", "BRAND_HELPTEXT": "नीचे वे ब्रांड दिखाए गए हैं जिनके साथ लाइटफार्म को एकीकृत किया जा सकता है। यदि आप इस सेंसर ब्रांड का उपयोग करना बंद करना चाहते हैं, तो इसके बजाय इस सेंसर को सेवानिवृत्त करने का प्रयास करें।", @@ -1768,6 +1933,7 @@ "LABOUR_ISSUE": "श्रम मुद्दा", "MACHINERY_ISSUE": "मशीनरी मुद्दा", "MARKET_PROBLEM": "बाजार समस्या", + "NO_ANIMALS": "स्वतः परित्यक्त: इस कार्य के लिए कोई जानवर नहीं है", "OTHER": "अन्य", "SCHEDULING_ISSUE": "शेड्यूलिंग मुद्दा", "WEATHER": "मौसम" @@ -1787,9 +1953,14 @@ "ADD_TASK": "एक कार्य बनाएँ", "ADD_TASK_FLOW": "कार्य निर्माण", "AMOUNT_TO_ALLOCATE": "आवंटित राशि", + "ANIMALS": "जानवर", + "ANIMALS_AT_LEAST_ONE_TO_COMPLETE": "इस कार्य को पूरा करने के लिए कम से कम एक जानवर का चयन करना आवश्यक है। सभी जानवरों को हटाने के लिए, कार्य को छोड़ दें।", + "ANIMAL_MOVING_TO_LOCATION": "स्थानांतरित कर रहे हैं:", + "ANIMAL_MOVEMENT_EXPANDING_SUMMARY_TITLE": "इस कार्य में शामिल जानवर।", "CARD": { "MULTIPLE_CROPS": "कई फसलें", - "MULTIPLE_LOCATIONS": "कई स्थान" + "MULTIPLE_LOCATIONS": "कई स्थान", + "NO_LOCATION": "कोई स्थान नहीं।" }, "COMPLETE": { "DATE": "समाप्ति तिथि", @@ -1845,6 +2016,7 @@ "HOW_WILL_HARVEST_BE_USED": "फसल का उपयोग कैसे किया जाएगा?", "IRRIGATION_LOCATION": "एक सिंचाई स्थान चुनें", "LOCATIONS": "स्थान(ओं)", + "NO_LOCATIONS_FOR_TASK": "इस कार्य के लिए किसी विशेष स्थान की आवश्यकता नहीं है।", "NO_TASKS_TO_DISPLAY": "दिखाने के लिए कोई कार्य नहीं हैं।", "NO_WORK_DONE": "कोई कार्य नहीं किया गया", "PAGE_TITLE": "कार्य", @@ -1853,6 +2025,7 @@ "QUANTITY_CANNOT_EXCEED": "फसल उपयोग की मात्रा आवंटित राशि से अधिक नहीं हो सकती", "RATE_THIS_TASK": "इस कार्य को रेट करें", "REMOVE_HARVEST_USE": "हटाएं", + "SELECT_ANIMALS": "जानवर चुनें।", "SELECT_DATE": "कार्य तिथि चुनें", "SELECT_TASK_LOCATIONS": "कार्य स्थान(ओं) का चयन करें", "SELECT_WILD_CROP": "यह कार्य एक जंगली फसल को लक्षित करता है", @@ -1885,6 +2058,13 @@ "MAYBE_LATER": "शायद बाद में यह मिलेगा।", "UNKNOWN_RECORD": "अज्ञात रिकॉर्ड" }, + "UPLOADER": { + "CHANGE_IMAGE": "चित्र बदलें", + "CLICK_TO_UPLOAD": "अपलोड करने के लिए क्लिक करें", + "DRAG_DROP": "या खींचकर छोड़ें", + "REMOVE_IMAGE": "चित्र हटाएं", + "UPLOAD_IMAGE": "चित्र अपलोड करें" + }, "WAGE": { "ERROR": "वेतन एक वैध, गैर-ऋणात्मक दशमलव संख्या होना चाहिए", "HOURLY_WAGE": "घंटे का वेतन", @@ -1900,5 +2080,11 @@ }, "YEAR_SELECTOR": { "TITLE": "वर्ष चुनें" + }, + "BADGE": { + "BETA": { + "TITLE": "बीटा", + "ANIMALS_CONTENT": "हमारी नई जानवर प्रबंधन सुविधा पर एक नज़र डालें—अब बीटा में! इस सुविधा को परिष्कृत करने के लिए आपकी प्रतिक्रिया बहुत महत्वपूर्ण है। कृपया किसी भी बग या सुझाव को साझा करें जो आप पाते हैं। लाइटफार्म को बेहतर बनाने में मदद के लिए हम आपके आभारी हैं! बीटा के बारे में और जानने के लिए यहां क्लिक करें।" + } } } diff --git a/packages/webapp/public/locales/ml/animal.json b/packages/webapp/public/locales/ml/animal.json new file mode 100644 index 0000000000..b71599fd2e --- /dev/null +++ b/packages/webapp/public/locales/ml/animal.json @@ -0,0 +1,69 @@ +{ + "BREED": { + "ANGUS": "അംഗസ്", + "CHAROLAIS": "കരോലൈസ്", + "COBB_500": "കോബ് 500 കോഴി ഇനം", + "CORNISH_CROSS": "കോർണിഷ് ക്രോസ് കോഴി ഇനം", + "DUROC": "ഡ്യൂറോക്ക് പന്നി ഇനം", + "HEREFORD": "ഹെയർഫോർഡ്", + "LANDRACE": "പരമ്പരാഗത ഇനം", + "LEGHORN": "ലെഗോൺ", + "PLYMOUTH_ROCK": "പ്ലൈമൗത്ത് റോക്ക്", + "RHODE_ISLAND_RED": "റോഡ് ഐലൻഡ് റെഡ്", + "ROSS_308": "റോസ് 308", + "YORKSHIRE_LARGE_WHITE": "യോർക്ക്ഷയർ ലാർജ് വൈറ്റ് പന്നി ഇനം" + }, + "ORIGIN": { + "BORN_AT_FARM": "ഫാമിൽ ജനിച്ചവ", + "BROUGHT_IN": "കൊണ്ടുവന്നവ" + }, + "PURPOSE": { + "GRAZING": "മേച്ചിൽ", + "MILKING": "കറവ", + "MANURE_MANAGEMENT": "വള നിയന്ത്രണം", + "PEST_OR_DISEASE_CONTROL": "കീടങ്ങൾ അല്ലെങ്കിൽ രോഗ നിയന്ത്രണം", + "BREEDING": "പ്രജനനം", + "FEEDING": "തീറ്റ", + "VETERINARY_CARE": "മൃഗസംരക്ഷണം", + "BIRTHING": "ജനനം", + "WEANING": "മുലകുടി മാറൽ", + "TRANSPORTATION": "ഗതാഗതം", + "BEHAVIORAL_AND_SOCIAL_MANAGEMENT": "പെരുമാറ്റപരവും സാമൂഹികവുമായ നിയന്ത്രണം", + "EXERCISE": "വ്യായാമം", + "QUARANTINE": "ക്വാറന്റീൻ", + "OTHER": "മറ്റുള്ളവ" + }, + "SEX": { + "MALE": "ആൺ", + "FEMALE": "പെൺ" + }, + "TAG_COLOR": { + "BLUE": "നീല", + "GREEN": "പച്ച", + "ORANGE": "ഓറഞ്ച്", + "RED": "ചുവപ്പ്", + "WHITE": "വെള്ള", + "YELLOW": "മഞ്ഞ" + }, + "TAG_TYPE": { + "EAR_TAG": "ചെവി ടാഗ്", + "LEG_BAND": "ലെഗ് ബാൻഡ്" + }, + "TYPE": { + "CATTLE": "കന്നുകാലി", + "CHICKEN": "കോഴി", + "PIGS": "പന്നികൾ" + }, + "USE": { + "MILK": "പാൽ", + "EGGS": "മുട്ട", + "FAT": "കൊഴുപ്പ്", + "MEAT": "മാംസം", + "ANIMAL_FIBERS_AND_SKINS": "മൃഗങ്ങളുടെ നാരുകളും തൊലികളും", + "LABOUR_AND_DRAFT": "അധ്വാനവും ചുമക്കലും", + "BREEDING": "പ്രജനനം", + "RECREATIONAL_OR_CULTURAL_USE": "വിനോദ അല്ലെങ്കിൽ സാംസ്കാരിക ഉപയോഗം", + "COMPANIONSHIP": "സൗഹൃദം", + "OTHER": "മറ്റുള്ളവ" + } +} diff --git a/packages/webapp/public/locales/ml/common.json b/packages/webapp/public/locales/ml/common.json index fd2686bcca..2076702899 100644 --- a/packages/webapp/public/locales/ml/common.json +++ b/packages/webapp/public/locales/ml/common.json @@ -4,20 +4,36 @@ "ADD": "ചേർക്കുക", "ADD_ANOTHER_ITEM": "മറ്റൊരു ഇനം ചേർക്കുക", "ADD_ITEM": "ചേർക്കുക {{itemName}}", + "ADD_TO_GROUP": "ഗ്രൂപ്പിലേക്ക് ചേർക്കുക", + "AGE": "പ്രായം", + "AGE_DAYS_COUNT_one": "പ്രായം (ദിവസം)", + "AGE_DAYS_COUNT_other": "പ്രായം (ദിവസം)", + "AGE_MONTHS_COUNT_one": "പ്രായം (മാസം)", + "AGE_MONTHS_COUNT_other": "പ്രായം (മാസം)", + "AGE_YEARS_COUNT_one": "പ്രായം (വർഷം)", + "AGE_YEARS_COUNT_other": "പ്രായം (വർഷം)", "ALL": "എല്ലാം", "AMOUNT": "തുക", + "AND": "ഒപ്പം", "APPLY": "പ്രയോഗിക്കുക", "BACK": "മടങ്ങിപ്പോവുക", "CANCEL": "റദ്ദാക്കുക", "CHANGE": "മാറ്റം", "CHAR_LIMIT_ERROR": "പരിധി {{value}} പ്രതീകങ്ങളാണ്", + "CLEAR_ACTIVE_FILTERS": "സജീവ ഫിൽട്ടറുകൾ മായ്ക്കുക", + "CLEAR_SELECTION": "തിരഞ്ഞെടുത്തവ മായ്ക്കുക", + "CLONE": "ക്ലോൺ", "CLOSE": "അടയ്‌ക്കുക", "CONFIRM": "സ്ഥിരീകരിക്കുക", "CONTINUE": "തുടരുക", + "COUNT": "എണ്ണം", "CREATE": "സൃഷ്ടിക്കുക", + "CREATE_A_TASK": "ഒരു കൃത്യം സൃഷ്ടിക്കുക", "DATE": "തീയതി", "DELETE": "ഒഴിവാക്കുക", + "DO_NOT_KNOW": "എനിക്കറിയില്ല", "DO_NOT_SHOW": "ഈ സന്ദേശം വീണ്ടും കാണിക്കരുത്.", + "DONE": "ചെയ്തു", "EDIT": "തിരുത്തുക", "EDIT_DATE": "തീയതി തിരുത്തുക", "EDITING": "എഡിറ്റിംഗ് തുടരുന്നു...", @@ -28,6 +44,7 @@ "GO_BACK": "മടങ്ങിപ്പോവുക", "GOT_IT": "മനസ്സിലായി!", "HERE": "ഇവിടെ", + "INVALID_DATE": "അസാധുവായ തീയതി", "LOADING": "ലോഡ് ചെയ്യുന്നു...", "MARK_ABANDON": "ഉപേക്ഷിക്കുക", "MARK_COMPLETE": "പൂർത്തിയായതായി അടയാളപ്പെടുത്തുക", @@ -39,16 +56,23 @@ "NEEDS_PLAN": "ആസൂത്രണം ആവശ്യമാണ്", "NEXT": "അടുത്തത്", "NO": "ഇല്ല", + "NON_ORGANIC": "അജൈവ", + "NONE": "ഒന്നുമല്ല", "NOT_SURE": "തീർച്ചയില്ല", "NOTES": "കുറിപ്പുകൾ", "OK": "ശരി", - "OPTIONAL": "(ഇച്ഛാനുസൃതമായ)", + "OPTIONAL": "(ഇഷ്ടാനുസൃതം)", "OR": "അല്ലെങ്കില്‍", + "ORGANIC": "ജൈവ", "OTHER": "മറ്റുള്ളവ", "PAST": "കഴിഞ്ഞത്", "PLANNED": "പദ്ധതീകരിച്ച", + "PREVIOUS": "മുൻപുള്ള", + "PRICE": "വില", "PROCEED": "തുടരുക", + "PROPERTY_UNKNOWN": "{{property}} അജ്ഞാതം", "QUANTITY": "അളവ്", + "REMOVE": "നീക്കം ചെയ്യുക", "REMOVE_ITEM": "ഇനം നീക്കം ചെയ്യുക", "REQUIRED": "ആവശ്യമാണ്", "RETIRE": "വിരമിക്കുക", @@ -56,16 +80,29 @@ "SAVE_CHANGES": "മാറ്റങ്ങൾ സംരക്ഷിക്കുക", "SEARCH": "തിരയുക", "SELECT": "തിരഞ്ഞെടുക്കുക", + "SELECT_ALL": "എല്ലാം തിരഞ്ഞെടുക്കുക", + "SELECTED_COUNT": "{{count}} തിരഞ്ഞെടുത്തവ", + "SELECTED_COUNT_one": "{{count}} തിരഞ്ഞെടുത്തവ", + "SELECTED_COUNT_many": "തിരഞ്ഞെടുത്ത {{എണ്ണം}}", + "SELECTED_COUNT_other": "{{count}} തിരഞ്ഞെടുത്തവ", + "SELECT_OR_ADD_YOUR_OWN": "നിങ്ങളുടേത് തിരഞ്ഞെടുക്കുക അല്ലെങ്കിൽ ചേർക്കുക", + "SET": "ക്രമീകരിക്കുക", + "SHOWING_ALL": "എല്ലാം കാണിക്കുന്നു", "SKIP": "ഒഴിവാക്കുക", "SORRY": "ക്ഷമിക്കണം", "SUBMIT": "സമർപ്പിക്കുക", "SUBMITTING": "സമർപ്പിക്കുന്നു...", "THATS_FINE": "അത്‌ കുഴപ്പമില്ല", "TODAY": "ഇന്ന്", + "TOTAL": "മൊത്തം", + "TRANSITIONING": "പരിവർത്തനം", "TYPE": "തരം", + "TYPES": "തരങ്ങൾ", + "UNKNOWN": "അജ്ഞാതം", "UPDATE": "അപ്ഡേറ്റ് ചെയ്യുക", "UPLOAD": "അപ്‌ലോഡ് ചെയ്യുക", "UPLOADING": "അപ്‌ലോഡ് ചെയ്യുന്നു...", + "USE": "ഉപയോഗം", "WORD_LIMIT_ERROR": "പ്രതീകങ്ങൾ {{value}} മാത്രമേ പ്രദർശിപ്പിക്കാൻ കഴിയൂ", "YEAR": "വര്‍ഷം", "YES": "അതെ", diff --git a/packages/webapp/public/locales/ml/message.json b/packages/webapp/public/locales/ml/message.json index 90aabbe026..5403dc54bc 100644 --- a/packages/webapp/public/locales/ml/message.json +++ b/packages/webapp/public/locales/ml/message.json @@ -1,6 +1,20 @@ { + "ANIMALS": { + "FAILED_CREATE_ANIMALS": "മൃഗങ്ങളെ സൃഷ്ടിക്കുന്നതിൽ പരാജയപ്പെട്ടു", + "FAILED_CREATE_BATCHES": "ബാച്ചുകൾ സൃഷ്ടിക്കുന്നതിൽ പരാജയപ്പെട്ടു", + "FAILED_REMOVE_ANIMALS": "തിരഞ്ഞെടുത്ത മൃഗങ്ങളെ നീക്കം ചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു", + "FAILED_REMOVE_BATCHES": "തിരഞ്ഞെടുത്ത ബാച്ചുകൾ നീക്കം ചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു", + "FAILED_UPDATE_ANIMAL": "മൃഗം പുതുക്കാൻ ചെയ്യാനായില്ല", + "FAILED_UPDATE_BATCH": "ബാച്ച് പുതുക്കുന്നതിൽ പരാജയപ്പെട്ടു", + "SUCCESS_CREATE_ANIMALS": "മൃഗങ്ങളെ വിജയകരമായി സൃഷ്ടിച്ചു", + "SUCCESS_CREATE_BATCHES": "ബാച്ചുകൾ സൃഷ്ടിച്ചു", + "SUCCESS_REMOVE_ANIMALS": "തിരഞ്ഞെടുത്ത മൃഗങ്ങളെ നീക്കം ചെയ്തു", + "SUCCESS_REMOVE_BATCHES": "തിരഞ്ഞെടുത്ത ബാച്ചുകൾ നീക്കം ചെയ്തു", + "SUCCESS_UPDATE_ANIMAL": "മൃഗം വിജയകരമായി പുതുക്കി", + "SUCCESS_UPDATE_BATCH": "ബാച്ച് വിജയകരമായി പുതുക്കി" + }, "ASSIGN_TASK": { - "ERROR": "ജോലി കൈമാറുന്നതിൽ പരാജയപ്പെട്ടു", + "ERROR": "ജോലി നൽകുന്നതിൽ പരാജയപ്പെട്ടു", "SUCCESS": "ചുമതലകൾ വിജയകരമായി ഏൽപ്പിച്ചു" }, "ATTACHMENTS": { @@ -9,7 +23,7 @@ "FAILED_ARCHIVE": "രേഖ സംഭരിക്കുന്നതിൽ പരാജയപ്പെട്ടു", "FAILED_UNARCHIVE": "രേഖ സംഭരിക്കുന്നതിൽ പരാജയപ്പെട്ടു", "FAILED_UPLOAD": "അറ്റാച്ച്‌മെൻ്റ് അപ്‌ലോഡ് ചെയ്യാനായില്ല", - "UPDATE": "രേഖ അപ്ഡേറ്റ് ചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു" + "UPDATE": "രേഖ പുതുക്കുന്നതിൽ പരാജയപ്പെട്ടു" }, "SUCCESS": { "ARCHIVE": "രേഖ വിജയകരമായി സംഭരിച്ചു", @@ -25,13 +39,13 @@ }, "CROP_VARIETY": { "ERROR": { - "ADD": "പിശക്: ഡാറ്റാബേസിൽ വ്യതിയാനം ചേർക്കുന്നതിൽ പരാജയപ്പെട്ടു", - "ADD_ALREADY_EXISTS": "പിശക്: വൈവിധ്യം നിലവിലുണ്ട്", + "ADD": "പിശക്: ഡാറ്റാബേസിൽ ഇനങ്ങൾ ചേർക്കുന്നതിൽ പരാജയപ്പെട്ടു", + "ADD_ALREADY_EXISTS": "പിശക്: ഇനങ്ങൾ നിലവിലുണ്ട്", "DELETE": "വിള ഇനം നീക്കം ചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു", "UPDATE": "വിള ഇനം അപ്‌ഡേറ്റ് ചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു" }, "SUCCESS": { - "ADD": "വൈവിധ്യം വിജയകരമായി സംരക്ഷിച്ചു!", + "ADD": "ഇനങ്ങൾ വിജയകരമായി സംരക്ഷിച്ചു!", "DELETE": "വിള ഇനം നീക്കം ചെയ്തു", "UPDATE": "വിള ഇനം വിജയകരമായി അപ്ഡേറ്റ് ചെയ്തു" } @@ -40,7 +54,9 @@ "ERROR": { "ADD": "പുതിയ ചെലവുകൾ ചേർക്കുന്നതിൽ പരാജയപ്പെട്ടു", "DELETE": "ചെലവ് ഇല്ലാതാക്കുന്നതിൽ പരാജയപ്പെട്ടു", - "UPDATE": "ചെലവുകൾ അപ്ഡേറ്റ് ചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു!" + "UPDATE": "ചെലവുകൾ അപ്ഡേറ്റ് ചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു!", + "EXPENSE_DELETED": "ഈ ചെലവ് ഇപ്പോൾ നിലവിലില്ല", + "EXPENSE_TYPE_DELETED": "ഈ ചെലവ് തരം നീക്കം ചെയ്‌തു" }, "SUCCESS": { "ADD": "പുതിയ ചെലവുകൾ വിജയകരമായി ചേർത്തു!", @@ -70,6 +86,11 @@ "UPDATE": "കൃഷിയിട വിവരങ്ങൾ വിജയകരമായി അപ്ഡേറ്റ് ചെയ്തു!" } }, + "HELP_REQUEST": { + "ERROR": { + "SEND": "നിങ്ങളുടെ ഫീഡ്‌ബാക്ക് സമർപ്പിക്കുമ്പോൾ എന്തോ കുഴപ്പം സംഭവിച്ചു. ദയവായി വീണ്ടും ശ്രമിക്കുക." + } + }, "LOG_HARVEST": { "ERROR": { "ADD_USE_TYPE": "ഇഷ്‌ടാനുസൃത വിളവെടുപ്പ് ഉപയോഗ തരം ചേർക്കുന്നതിൽ പരാജയപ്പെട്ടു", @@ -141,7 +162,8 @@ }, "REVENUE": { "ERROR": { - "EDIT": "വരുമാനം അപ്ഡേറ്റ് ചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു" + "EDIT": "വരുമാനം അപ്ഡേറ്റ് ചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു", + "REVENUE_TYPE_DELETED": "ഈ വരുമാന തരം നീക്കം ചെയ്തു" }, "SUCCESS": { "EDIT": "വരുമാനം വിജയകരമായി അപ്ഡേറ്റ് ചെയ്തു" @@ -163,7 +185,8 @@ "ERROR": { "ADD": "വിൽപ്പന ചേർക്കുന്നതിൽ പരാജയപ്പെട്ടു", "DELETE": "പുതിയ വിൽപ്പന നീക്കം ചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു", - "UPDATE": "വിൽപ്പന അപ്ഡേറ്റ് ചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു" + "UPDATE": "വിൽപ്പന അപ്ഡേറ്റ് ചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു", + "SALE_DELETED": "ഈ വിൽപ്പന ഇപ്പോൾ നിലവിലില്ല" }, "SUCCESS": { "ADD": "വിൽപ്പന വിജയകരമായി ചേർത്തു", diff --git a/packages/webapp/public/locales/ml/task.json b/packages/webapp/public/locales/ml/task.json index 8d13326b1b..12648d374f 100644 --- a/packages/webapp/public/locales/ml/task.json +++ b/packages/webapp/public/locales/ml/task.json @@ -10,20 +10,16 @@ "WEEDING": "കള", "WASH_AND_PACK_TASK": "കഴുകി പായ്ക്ക് ചെയ്യുക", "PEST_CONTROL_TASK": "കീട നിയന്ത്രണം", - "PEST_CONTROL_TASK_LOWER": "കീട നിയന്ത്രണം", "OTHER_TASK": "മറ്റുള്ളവ", "BREAK_TASK": "താൽക്കാലികമായി നിർത്തുക", "SOIL_TASK": "മണ്ണ് സാമ്പിൾ ഫലങ്ങൾ", "IRRIGATION_TASK": "ജലസേചനം", - "IRRIGATION_TASK_LOWER": "ജലസേചനം", "TRANSPORT_TASK": "ഗതാഗതം", "FIELD_WORK_TASK": "കൃഷി ജോലി", - "FIELD_WORK_TASK_LOWER": "കൃഷി ജോലി", "PLANT_TASK": "നടീൽ", "TRANSPLANT_TASK": "പറിച്ചുനടുക", "SOCIAL_TASK": "സാമൂഹിക", "CLEANING_TASK": "വൃത്തിയാക്കൽ", - "CLEANING_TASK_LOWER": "വൃത്തിയാക്കൽ", "SOIL_AMENDMENT_TASK": "മണ്ണ് ഭേദഗതികൾ", - "SOIL_AMENDMENT_TASK_LOWER": "മണ്ണ് ഭേദഗതികൾ" + "MOVEMENT_TASK": "ചലനം" } diff --git a/packages/webapp/public/locales/ml/translation.json b/packages/webapp/public/locales/ml/translation.json index 10ab7aff08..ab793160c9 100644 --- a/packages/webapp/public/locales/ml/translation.json +++ b/packages/webapp/public/locales/ml/translation.json @@ -1,4 +1,68 @@ { + "ADD_ANIMAL": { + "ADD_ANIMALS": "മൃഗങ്ങളെ ചേർക്കുക", + "ADD_ANIMALS_FLOW": "മൃഗങ്ങളുടെ കൂട്ടിച്ചേർക്കൽ", + "ADD_ANIMALS_TITLE": "മൃഗങ്ങളെ ചേർക്കുക", + "ADD_DETAILS_INFO": "നിങ്ങളുടെ മൃഗങ്ങളുടെ വിശദാംശങ്ങൾ ചുവടെ പൂരിപ്പിക്കുക അല്ലെങ്കിൽ സംരക്ഷിച്ച് ഇത് പിന്നീട് എടുക്കുക.", + "ADD_TO_INVENTORY": "നിങ്ങളുടെ ഇൻവെൻ്ററിയിലേക്ക് മൃഗങ്ങളെ ചേർക്കുക", + "ANIMAL_BASICS": "മൃഗങ്ങളുടെ അടിസ്ഥാനകാര്യങ്ങൾ", + "ANIMAL_DETAILS": "മൃഗങ്ങളുടെ വിശദാംശങ്ങൾ", + "ANIMALS_TOTAL_one": "{{count}} ആകെ മൃഗങ്ങൾ", + "ANIMALS_TOTAL_other": "{{count}} ആകെ മൃഗങ്ങൾ", + "ANIMALS_UNSPECIFIED_one": "{{count}} വ്യക്തമാക്കിയിട്ടില്ല", + "ANIMALS_UNSPECIFIED_other": "{{count}} വ്യക്തമാക്കിയിട്ടില്ല", + "BATCH_NAME": "ബാച്ചിൻ്റെ പേര്", + "BATCH_NAME_PLACEHOLDER": "ബാച്ചിൻ്റെ പേര് ടൈപ്പ് ചെയ്യുക", + "BREED": "ഇനം", + "BREED_PLACEHOLDER_DISABLED": "ആദ്യം ഒരു തരം തിരഞ്ഞെടുക്കുക", + "CREATE_INDIVIDUAL_PROFILES": "വ്യക്തിഗത മൃഗ പ്രൊഫൈലുകൾ സൃഷ്ടിക്കുക", + "CREATE_INDIVIDUAL_PROFILES_TOOLTIP": "ഓരോ മൃഗത്തെയും വെവ്വേറെ ട്രാക്ക് ചെയ്യാനും നിയന്ത്രിക്കാനും നിങ്ങൾ ആഗ്രഹിക്കുന്നുവെങ്കിൽ ഈ ഓപ്ഷൻ തിരഞ്ഞെടുക്കുക", + "EDIT_BASIC_INFO": "അടിസ്ഥാന വിവരങ്ങൾ തിരുത്തുക", + "GENERAL_DETAILS": "പൊതുവായ വിശദാംശങ്ങൾ", + "GENERAL_DETAILS_BATCH": "ബാച്ച് പൊതുവായ വിശദാംശങ്ങൾ", + "GROUP_NAME": "ഗ്രൂപ്പിൻ്റെ പേര്", + "GROUP_NAME_PLACEHOLDER": "ഗ്രൂപ്പിൻ്റെ പേര് ടൈപ്പ് ചെയ്യുക", + "ORIGIN": "ഉത്ഭവം", + "ORIGIN_BATCH": "ബാച്ച് ഉത്ഭവം", + "OTHER_DETAILS": "മറ്റ് വിശദാംശങ്ങൾ", + "OTHER_DETAILS_BATCH": "ബാച്ച് മറ്റ് വിശദാംശങ്ങൾ", + "OUT_OF_COUNT_one": "{{count}}-ൽ {{animalNumber}}", + "OUT_OF_COUNT_other": "{{count}}-ൽ {{animalNumber}}", + "PLACEHOLDER": { + "BATCH_NAME": "ബാച്ചിൻ്റെ പേര് ടൈപ്പ് ചെയ്യുക", + "DAM": "മൃഗത്തിൻ്റെ പെൺ രക്ഷിതാവിൻറെ പേര് ടൈപ്പ് ചെയ്യുക", + "NAME": "ഒരു പേര് ടൈപ്പ് ചെയ്യുക", + "OTHER_DETAILS": "ഒരു വിവരണം നൽകുക", + "OTHER_USE": "മറ്റ് ഉപയോഗം വിവരിക്കുക", + "PRICE": "എത്ര ചിലവായി?", + "SIRE": "ഒരു മൃഗത്തിൻ്റെ ആൺ രക്ഷിതാവിൻറെ ടൈപ്പ് ചെയ്യുക", + "SUPPLIER": "ഒരു വിതരണക്കാരനെ ടൈപ്പ് ചെയ്യുക", + "TAG_COLOUR": "ടാഗ് ഏത് നിറമാണ്?", + "TAG_NUMBER": "ടാഗ് നമ്പർ ടൈപ്പ് ചെയ്യുക", + "TAG_TYPE": "ടാഗ് തരം എന്താണ്?", + "TAG_TYPE_INFO": "നിങ്ങളുടെ ടാഗ് തരം വിവരിക്കുക" + }, + "REMOVE_CONFIRM": "നിങ്ങൾക്ക് ശരിക്കും നീക്കം ചെയ്യണോ?", + "SELECT_SEXES": "ലിംഗഭേദം തിരഞ്ഞെടുക്കുക", + "SEX_DETAIL": "ലിംഗഭേദ വിശദാംശങ്ങൾ", + "SEX_DETAIL_ERROR_one": "പരമാവധി മൃഗങ്ങളുടെ എണ്ണം: {{count}}", + "SEX_DETAIL_ERROR_other": "പരമാവധി മൃഗങ്ങളുടെ എണ്ണം: {{count}}", + "SEX_DETAIL_ERROR_POPOVER_one": "നിങ്ങൾക്ക് {{count}} ൽ കൂടുതൽ മൃഗങ്ങൾ ഉണ്ടാകരുത്", + "SEX_DETAIL_ERROR_POPOVER_other": "നിങ്ങൾക്ക് {{count}} ൽ കൂടുതൽ മൃഗങ്ങൾ ഉണ്ടാകരുത്", + "SPECIFY_SEX": "ലിംഗഭേദം വ്യക്തമാക്കുക", + "SUMMARY": { + "ADD_MORE_DETAILS": "നിങ്ങളുടെ മൃഗങ്ങൾക്ക് കൂടുതൽ വിശദാംശങ്ങൾ ചേർക്കുക", + "ALL_DONE": "എല്ലാം ചെയ്‌തു!", + "ANIMAL_SUMMARY_COUNT_one": "{{count}} വ്യക്തിഗത മൃഗം", + "ANIMAL_SUMMARY_COUNT_other": "{{count}} വ്യക്തിഗത മൃഗങ്ങൾ", + "BATCH_SUMMARY_COUNT_one": "{{count}} ബാച്ച്", + "BATCH_SUMMARY_COUNT_other": "{{count}} ബാച്ചുകൾ", + "HERE_IS_SUMMARY": "നിങ്ങൾ ചേർത്ത മൃഗങ്ങളുടെ ഒരു സംഗ്രഹം ഇതാ:", + "MAIN": "നിങ്ങളുടെ ഇൻവെൻ്ററിയിലേക്ക് {{animalCount}} {{and}} {{batchCount}} വിജയകരമായി ചേർത്തു." + }, + "TYPE": "തരം", + "UNIQUE_DETAILS": "അതുല്യമായ വിശദാംശങ്ങൾ" + }, "ADD_FARM": { "ADDRESS_IS_REQUIRED": "വിലാസം ആവശ്യമാണ്", "DISABLE_GEO_LOCATION": "നിങ്ങളുടെ നിലവിലെ സ്ഥാനം കണ്ടെത്താൻ സ്ഥാനം സേവനങ്ങൾ പ്രവർത്തനക്ഷമമാക്കിയിരിക്കണം.", @@ -53,6 +117,7 @@ "ASSIGN_TASK": "ചുമതല ഏൽപ്പിക്കുക", "ASSIGNEE": "ഏൽപ്പിക്കപ്പെട്ട ആൾ", "CANCEL": "ചുമതല സൃഷ്ടിക്കൽ", + "CANT_FIND_INFO_TASK": "നിങ്ങൾക്ക് നിങ്ങളുടെ സ്വന്തം ഇഷ്‌ടാനുസൃത ചുമതല തരങ്ങൾ സൃഷ്‌ടിക്കാനും കഴിയും!", "CLEANING_VIEW": { "ESTIMATED_WATER": "കണക്കാക്കിയ ജല ഉപഭോഗം", "IS_PERMITTED": "ക്ലീനിംഗ് ഏജൻ്റ് അനുവദനീയമായ വസ്തുക്കളുടെ പട്ടികയിലാണോ?", @@ -99,6 +164,7 @@ "IRRIGATION_VIEW": { "BRAND_TOOLTIP": "നിങ്ങളുടെ സ്ഥലം നനയ്ക്കുന്നതിനാണ് ഈ ചുമതല. നിങ്ങൾക്ക് ജലസേചനം ഇൻസ്റ്റാൾ ചെയ്യണമെങ്കിൽ, പകരം ഒരു ഫീൽഡ് വർക്ക് ചുമതല സൃഷ്ടിക്കുക.", "CALCULATE_WATER_USAGE": "ജല ഉപഭോഗം കണക്കാക്കുക", + "CALCULATE_WATER_USAGE_WARNING": "കാട്ടുവിളകൾക്ക്, ആഴം തിരിച്ചുള്ള ജല ഉപഭോഗ കണക്കുകൾ ലഭ്യമല്ല.", "DEFAULT_APPLICATION_DEPTH": "ഈ സ്ഥലത്തിനായി ഡിഫോൾട്ട് ആപ്ലിക്കേഷൻ ആഴം ആയി സജ്ജീകരിക്കുക", "DEFAULT_LOCATION_FLOW_RATE": "ഈ സ്ഥലത്തിനായി ഡിഫോൾട്ട് ഒഴുക്ക് നിരക്ക് ആയി സജ്ജീകരിക്കുക", "DEPTH": "ആഴം", @@ -135,9 +201,19 @@ }, "WHAT_TYPE_OF_IRRIGATION": "ഏത് തരത്തിലുള്ള ജലസേചനമാണ്?" }, - "MANAGE_CUSTOM_TASKS": "ഇഷ്‌ടാനുസൃത ജോലികൾ നിയന്ത്രിക്കുക", + "MANAGE_CUSTOM_TASKS": "നിങ്ങളുടെ ഇഷ്ടാനുസൃത ചുമതലകൾ നിയന്ത്രിക്കുക", + "MOVEMENT_VIEW": { + "MOVEMENT_PURPOSE_LABEL": "ഈ പ്രസ്ഥാനത്തിൻ്റെ ഉദ്ദേശം എന്താണ്?", + "MOVEMENT_PURPOSE_PLACEHOLDER": "ഈ പ്രസ്ഥാനത്തിൻ്റെ ഉദ്ദേശ്യം തിരഞ്ഞെടുക്കുക", + "OTHER_PURPOSE_EXPLANATION_LABEL": "വിശദീകരണം", + "OTHER_PURPOSE_EXPLANATION_PLACEHOLDER": "ഈ പ്രസ്ഥാനത്തിൻ്റെ കാരണം ദയവായി വിശദീകരിക്കുക" + }, + "NEED_ANIMAL_LOCATION_MOVEMENT": "മൃഗങ്ങളെ നീക്കാൻ കഴിയുന്ന ഒരു സ്ഥലം നിങ്ങൾക്ക് ആവശ്യമാണ്. അനുയോജ്യമായ ഒരു സ്ഥലമോ പ്രദേശമോ സൃഷ്ടിക്കാൻ മാപ്പിലേക്ക് പോകുക.", "NEED_MANAGEMENT_PLAN": "ഒരു വിളവെടുപ്പ് ചുമതലയോ പറിച്ചുനടൽ ചുമതലയോ ഷെഡ്യൂൾ ചെയ്യുന്നതിന് മുമ്പ് നിങ്ങൾക്ക് സജീവമോ ആസൂത്രിതമോ ആയ ഒരു വിള പ്ലാൻ ആവശ്യമാണ്. ഇപ്പോൾ ഒരു പ്ലാൻ സൃഷ്‌ടിക്കാൻ ക്രോപ്പ് കാറ്റലോഗിലേക്ക് പോകുക. ദയവായി ചേർക്കുക.", + "NO_ANIMAL_LOCATION": "മൃഗങ്ങളെ സൂക്ഷിക്കാൻ യോഗ്യമായ സ്ഥലങ്ങളില്ല", "NO_MANAGEMENT_PLAN": "യോഗ്യതയുള്ള ക്രോപ്പ് പ്ലാനുകളൊന്നുമില്ല", + "NOTES_LABEL": "ഈ ചുമതലയുമായി ബന്ധപ്പെട്ട് എന്തെങ്കിലും പ്രത്യേകമായി ചേർക്കേണ്ടതുണ്ടോ?", + "NOTES_PLACEHOLDER": "നിയോഗിക്കപ്പെട്ടവർക്കായി എന്തെങ്കിലും നിർദ്ദേശങ്ങളോ പ്രത്യേകതകളോ ചേർക്കുക", "PEST_CONTROL_VIEW": { "BIOLOGICAL_CONTROL": "ജൈവ നിയന്ത്രണം", "FLAME_WEEDING": "തീജ്വാല കളനിയന്ത്രണം", @@ -196,11 +272,64 @@ "TASK": "ചുമതല", "TASK_NOTES_CHAR_LIMIT": "കുറിപ്പുകൾ 10,000 പ്രതീകങ്ങളിൽ കുറവായിരിക്കണം", "TELL_US_ABOUT_YOUR_TASK_TYPE_ONE": "ഈ ചുമതലയെക്കുറിച്ച് ഞങ്ങളോട് പറയുക", + "THIS_TASK_IS_COMPLETED": "ഈ ചുമതല ഇതിനകം പൂർത്തിയായി", + "THIS_TASK_IS_COMPLETED_EXPLANATION": "'സംരക്ഷിക്കുക' ക്ലിക്കുചെയ്യുന്നത്ഈ വഴി ഈ ചുമതല ഉടനടി സംരക്ഷിക്കും. തുടർന്ന് അത് പൂർത്തിയാക്കാൻ നിങ്ങളോട് ആവശ്യപ്പെടും.", "TRANSPLANT_METHOD": "പറിച്ചുനടൽ രീതി", "WAGE_OVERRIDE": "കൂലി അസാധുവാക്കൽ", "WHAT_PLANTING_METHOD": "പറിച്ചുനടൽ രീതി എന്താണ്?", "WILD_CROP": "കാട്ടുവിളകൾ" }, + "ANIMAL": { + "ADD_MORE_BODY_TEXT": "നിങ്ങൾക്ക് മറ്റൊരു തരം മൃഗം അല്ലെങ്കിൽ മറ്റൊരു ഇനം ഉണ്ടോ?", + "ADD_MORE_BUTTON": "കൂടുതൽ മൃഗങ്ങളെ ചേർക്കുക", + "ANIMAL_BREED": "ഇനം", + "ANIMAL_COUNT_one": "{{count}} മൃഗം", + "ANIMAL_COUNT_other": "{{count}} മൃഗങ്ങൾ", + "ANIMAL_GROUPS": "ഗ്രൂപ്പ്", + "ANIMAL_ID": "ഐഡി", + "ANIMAL_IDENTIFICATION": "തിരിച്ചറിയൽ", + "ANIMAL_LOCATIONS": "സ്ഥാനം", + "ANIMAL_SEXES": "ലിംഗഭേദം", + "ANIMAL_TYPE": "തരം", + "ATTRIBUTE": { + "ANIMAL_IMAGE": "മൃഗ ചിത്രം", + "BATCH_IMAGE": "ബാച്ച് ചിത്രം", + "BATCH_NAME": "ബാച്ചിൻ്റെ പേര്", + "DAM": "മൃഗത്തിൻ്റെ പെൺ രക്ഷിതാവ്", + "DATE_OF_BIRTH": "ജനനത്തീയതി", + "LITEFARM_ID": "ലൈറ്റ്ഫാം ഐഡി", + "ORGANIC_STATUS": "ജൈവ നില", + "OTHER_DETAILS_ANIMAL": "മറ്റ് മൃഗങ്ങളുടെ വിശദാംശങ്ങൾ", + "OTHER_DETAILS_BATCH": "ബാച്ച് വിശദാംശങ്ങൾ", + "OTHER_USE": "മറ്റ് ഉപയോഗം", + "SIRE": "ഒരു മൃഗത്തിൻ്റെ ആൺ രക്ഷിതാവ്", + "SUPPLIER": "വിതരണക്കാരൻ", + "TAG_COLOUR": "ടാഗ് നിറം", + "TAG_NUMBER": "ടാഗ് നമ്പർ", + "TAG_TYPE": "ടാഗ് തരം", + "WEANING_DATE": "മുലകുടി മാറുന്ന തീയതി" + }, + "BATCH": "ബാച്ച്", + "BETA_SPOTLIGHT_HEADING": "പുതിയ മൃഗങ്ങളുടെ സവിശേഷത അവതരിപ്പിക്കുന്നു", + "EDIT_ANIMAL_FLOW": "എഡിറ്റിംഗ്", + "FILTER": { + "BATCHES": "ബാച്ചുകൾ", + "BATCHES_OR_INDIVIDUALS": "ബാച്ചുകൾ അല്ലെങ്കിൽ വ്യക്തികൾ", + "FEMALE": "സ്ത്രീ", + "INDIVIDUALS": "വ്യക്തികൾ", + "MALE": "ആൺ", + "TITLE": "മൃഗങ്ങളെ ഫിൽട്ടർ ചെയ്യുക" + }, + "REMOVE_ANIMAL": "മൃഗങ്ങളെ നീക്കം ചെയ്യുക", + "SEARCH_INVENTORY_PLACEHOLDER": "നിങ്ങളുടെ ഇൻവെൻ്ററി തിരയുക", + "SHOWING_RESULTS_WITH_COUNT_one": "{{count}} ഫലം കാണിക്കുന്നു", + "SHOWING_RESULTS_WITH_COUNT_many": "{{count}} ഫലം കാണിക്കുന്നു", + "SHOWING_RESULTS_WITH_COUNT_other": "{{count}} ഫലം കാണിക്കുന്നു", + "TABS": { + "BASIC_INFO": "അടിസ്ഥാന വിവരങ്ങൾ", + "TASKS": "ചുമതലകൾ" + } + }, "BED_PLAN": { "LENGTH_OF_BED": "വിത്തുതടത്തിൻ്റെ നീളം", "NUMBER_0F_BEDS": "വിത്ത് കിടക്കകളുടെ എണ്ണം", @@ -249,7 +378,7 @@ "REQUEST_CERTIFIER": "ഒരു സർട്ടിഫയർക്കായി അഭ്യർത്ഥിക്കുക", "TITLE": "ആരാണ് നിങ്ങളുടെ സർട്ടിഫയർ?" }, - "INPUT_PLACEHOLDER": "തിരയാൻ ടൈപ്പ് ചെയ്യുക", + "INPUT_PLACEHOLDER": "തിരയാനായി ടൈപ്പ് ചെയ്യുക", "INTERESTED_IN_CERTIFICATION": { "PARAGRAPH": "ഈ സീസണിൽ ഒരു സർട്ടിഫിക്കേഷൻ പിന്തുടരാനോ പുതുക്കാനോ നിങ്ങൾ ഉദ്ദേശിക്കുന്നുണ്ടോ?", "TITLE": "സർട്ടിഫിക്കേഷനുകളിൽ താൽപ്പര്യമുണ്ടോ?", @@ -822,7 +951,7 @@ }, "TUTORIALS": "മാപ്പ് ട്യൂട്ടോറിയലുകൾ", "UNABLE_TO_RETIRE": { - "BODY": "സജീവമായതോ ആസൂത്രണം ചെയ്തതോ ആയ വിളകളോ ടാസ്‌ക്കുകളോ ഇല്ലാത്ത ലൊക്കേഷനുകൾ മാത്രമേ നിങ്ങൾക്ക് മാറാൻ സാധിക്കു.", + "BODY": "സജീവമായതോ ആസൂത്രിതമായതോ ആയ വിളകളോ മൃഗങ്ങളോ ജോലികളോ ഇല്ലാത്ത ലൊക്കേഷനുകൾ മാത്രമേ നിങ്ങൾക്ക് റിട്ടയർ ചെയ്യാൻ കഴിയൂ.", "TITLE": "സ്ഥലം മാറാൻ സാധിക്കുന്നില്ല" }, "WATER_VALVE": { @@ -853,13 +982,18 @@ } }, "FILE_SIZE_MODAL": { - "BODY": "ഫയലുകൾ 10MB-യിൽ കൂടുതലാകരുത്.", + "BODY": "ഫയലുകൾ {{size}} MB-യേക്കാൾ വലുതായിരിക്കരുത്.", "TITLE": "ഫയൽ വലുപ്പം വളരെ വലുതാണ്" }, "FILTER": { + "CLEAR": "മായ്ക്കുക", "CLEAR_ALL": "എല്ലാം മായ്‌ക്കുക", "CLEAR_ALL_FILTERS": "എല്ലാ ഫിൽട്ടറുകളും മായ്‌ക്കുക", - "SELECT_ALL": "എല്ലാം തിരഞ്ഞെടുക്കുക" + "SELECT_ALL": "എല്ലാം തിരഞ്ഞെടുക്കുക", + "SELECTED_one": "{{count}} തിരഞ്ഞെടുത്തു", + "SELECTED_other": "{{count}} തിരഞ്ഞെടുത്തു", + "SHOWING_ALL": "എല്ലാം കാണിക്കുന്നു", + "SHOWING_ALL_DEFAULT": "എല്ലാം കാണിക്കുന്നു (സ്ഥിരസ്ഥിതി)" }, "FINANCES": { "ACTUAL_REVENUE": { @@ -921,6 +1055,8 @@ "HELP": { "ATTACHMENT_LABEL": "സ്ക്രീൻഷോട്ടോ ഫയലോ അപ്ലോഡ് ചെയ്യുക", "EMAIL": "ഇമെയിൽ", + "FEEDBACK_INVITATION": "സഹായം നേടുക അല്ലെങ്കിൽ ഞങ്ങൾക്ക് പ്രതികരണം നൽകുക", + "SEND_US_FEEDBACK": "ഞങ്ങൾക്ക് പ്രതികരണം അയയ്‌ക്കുക", "MESSAGE_LABEL": "സന്ദേശം", "OPTIONS": { "OTHER": "മറ്റുള്ളവ", @@ -930,7 +1066,6 @@ }, "PREFERRED_CONTACT": "കോൺടാക്ട് ചെയ്യാനുള്ള രീതി തിരഞ്ഞെടുക്കുക", "REQUIRED_LABEL": "ആവശ്യമായ ഫീൽഡ്", - "TITLE": "സഹായം അഭ്യർത്ഥിക്കുക", "TYPE_SUPPORT_LABEL": "എന്തുതരം സഹായമാണ് വേണ്ടത്", "TYPE_SUPPORT_PLACEHOLDER": "എന്തുതരം സഹായമാണ് വേണ്ടതെന്ന് തിരഞ്ഞെടുക്കുക", "WHATSAPP": "വാട്സ്ആപ്പ്", @@ -939,6 +1074,11 @@ "HOME": { "GREETING": "ശുഭദിനം " }, + "HOVERPILL": { + "PLUS_OTHERS_COUNT_one": "+ {{count}} മറ്റ്", + "PLUS_OTHERS_COUNT_many": "+ മറ്റ് {{count}}", + "PLUS_OTHERS_COUNT_other": "+ മറ്റ് {{count}}" + }, "INSIGHTS": { "BIODIVERSITY": { "AMPHIBIANS": "ഉഭയജീവകൾ", @@ -1260,6 +1400,10 @@ }, "MENU": { "ACTUAL_REVENUES": "യഥാർത്ഥ വരുമാനം", + "ANIMALS": "മൃഗങ്ങൾ", + "ANIMALS_GROUPS": "ഗ്രൂപ്പുകൾ", + "ANIMALS_INVENTORY": "ഇൻവെൻ്ററി", + "ANIMALS_LOCATION": "സ്ഥാനങ്ങൾ", "CERTIFICATIONS": "സർട്ടിഫിക്കേഷനുകൾ", "CROPS": "വിളകൾ", "DOCUMENTS": "പ്രമാണങ്ങൾ", @@ -1458,6 +1602,22 @@ "LITEFARM_UPDATED": "ലൈറ്റ്ഫാമിൻ്റെ v{{version}} ഇപ്പോൾ ലഭ്യമാണ!", "NOTES": "റിലീസ് നോട്ടുകൾ" }, + "REMOVE_ANIMALS": { + "CREATED_IN_ERROR": "തെറ്റായി സൃഷ്ടിച്ചു", + "CULLED": "കളഞ്ഞു", + "EXPLANATION": "വിശദീകരണം", + "MORE_DETAILS": "കൂടുതൽ വിശദാംശങ്ങൾ നൽകണോ?", + "NATURAL_DEATH": "സ്വാഭാവിക മരണം", + "REMOVAL_REASONS": "നീക്കംചെയ്യൽ കാരണങ്ങൾ", + "REMOVE_ANIMALS": "മൃഗങ്ങൾ നീക്കംചെയ്യൽ", + "REMOVED_AND_ARCHIVED": "ഈ മൃഗങ്ങളെ നിങ്ങളുടെ ഫാമിൽ നിന്ന് വിജയകരമായി നീക്കം ചെയ്‌തു, അവ നിങ്ങളുടെ ചരിത്രപരമായ ഇൻവെൻ്ററിയിൽ ലഭ്യമാകും.", + "SLAUGHTERED_FOR_CONSUMPTION": "ഉപഭോഗത്തിനായി അറുത്തു", + "SLAUGHTERED_FOR_SALE": "വിൽപനയ്ക്കായി അറുത്തു", + "SOLD": "വിറ്റു", + "WHY": "എന്തുകൊണ്ടാണ് നിങ്ങൾ ഈ മൃഗങ്ങളെ നീക്കം ചെയ്യുന്നതെന്ന് ഞങ്ങളോട് പറയുക", + "WILL_BE_ARCHIVED": "ഈ മൃഗങ്ങളെ നിങ്ങളുടെ ഇൻവെൻ്ററിയിൽ നിന്ന് നീക്കം ചെയ്യും", + "WILL_BE_PERMANENTLY_REMOVED": "ഈ മൃഗങ്ങളെ നിങ്ങളുടെ ഫാമിൽ നിന്ന് ശാശ്വതമായി നീക്കം ചെയ്യും" + }, "REPEAT_PLAN": { "AFTER": "ശേഷം", "COMPLETION": "പൂർത്തീകരണം", @@ -1498,7 +1658,7 @@ }, "REQUEST_CONFIRMATION_MODAL": { "BUTTON": "മനസ്സിലായി", - "DESCRIPTION": "48 മണിക്കൂറിനുള്ളിൽ ആരെങ്കിലും ബന്ധപ്പെടും.", + "DESCRIPTION": "ആരെങ്കിലും ഉടൻ ബന്ധപ്പെടും.", "TITLE": "സഹായ അഭ്യർത്ഥന സമർപ്പിച്ചു" }, "REVENUE": { @@ -1611,6 +1771,11 @@ "NO_RESULTS_FOR": "ക്ഷമിക്കണം, നിങ്ങളുടെ തിരയൽ പദമായ <1>'{{searchTerm}}' എന്നതിന് ഞങ്ങൾക്ക് ഫലങ്ങളൊന്നും കണ്ടെത്താൻ കഴിഞ്ഞില്ല", "ZERO": "0 ഫലങ്ങൾ" }, + "SECTION_HEADER": { + "ANIMALS_GROUPS": "മൃഗ ഗ്രൂപ്പുകൾ", + "ANIMALS_INVENTORY": "മൃഗങ്ങളുടെ ഇൻവെൻ്ററി", + "ANIMALS_LOCATION": "മൃഗങ്ങളുടെ സ്ഥാനങ്ങൾ" + }, "SENSOR": { "BRAND": "ബ്രാൻഡ്", "BRAND_HELPTEXT": "ലൈറ്റ് ഫാം സംയോജിപ്പിക്കാൻ കഴിയുന്ന ബ്രാൻഡുകൾ ചുവടെ കാണിച്ചിരിക്കുന്നു. നിങ്ങൾക്ക് ഇനി ഈ സെൻസർ ബ്രാൻഡ് ഉപയോഗിക്കാൻ താൽപ്പര്യമില്ലെങ്കിൽ, പകരം ഈ സെൻസർ പിൻവലിക്കാൻ ശ്രമിക്കുക.", @@ -1768,6 +1933,7 @@ "LABOUR_ISSUE": "തൊഴിൽ പ്രശ്നം", "MACHINERY_ISSUE": "യന്ത്രങ്ങളുടെ പ്രശ്നം", "MARKET_PROBLEM": "വിപണി പ്രശ്നം", + "NO_ANIMALS": "സ്വയമേവ ഉപേക്ഷിക്കപ്പെട്ടു: ഈ ചുമതലക്കായി മൃഗങ്ങളൊന്നുമില്ല", "OTHER": "മറ്റുള്ളവ", "SCHEDULING_ISSUE": "ഷെഡ്യൂളിംഗ് പ്രശ്നം", "WEATHER": "കാലാവസ്ഥ" @@ -1787,9 +1953,14 @@ "ADD_TASK": "ഒരു ചുമതല സൃഷ്ടിക്കുക", "ADD_TASK_FLOW": "ചുമതല സൃഷ്ടിക്കൽ", "AMOUNT_TO_ALLOCATE": "അനുവദിക്കേണ്ട തുക", + "ANIMALS": "മൃഗങ്ങൾ", + "ANIMALS_AT_LEAST_ONE_TO_COMPLETE": "ഈ ടാസ്ക് പൂർത്തിയാക്കാൻ കുറഞ്ഞത് ഒരു മൃഗത്തെയെങ്കിലും തിരഞ്ഞെടുക്കണം. എല്ലാ മൃഗങ്ങളെയും നീക്കം ചെയ്യാനായി, പകരം ടാസ്ക് ഉപേക്ഷിക്കുക.", + "ANIMAL_MOVING_TO_LOCATION": "ഇതിലേക്ക് നീങ്ങുന്നു:", + "ANIMAL_MOVEMENT_EXPANDING_SUMMARY_TITLE": "ഈ ടാസ്കിലെ മൃഗങ്ങൾ", "CARD": { "MULTIPLE_CROPS": "ഒന്നിലധികം വിളകൾ", - "MULTIPLE_LOCATIONS": "ഒന്നിലധികം സ്ഥാനങ്ങൾ" + "MULTIPLE_LOCATIONS": "ഒന്നിലധികം സ്ഥാനങ്ങൾ", + "NO_LOCATION": "സ്ഥാനമില്ല" }, "COMPLETE": { "DATE": "പൂർത്തിയാക്കിയ തീയതി", @@ -1845,6 +2016,7 @@ "HOW_WILL_HARVEST_BE_USED": "വിളവെടുപ്പ് എങ്ങനെ ഉപയോഗിക്കും?", "IRRIGATION_LOCATION": "ഒരു ജലസേചന സ്ഥലം തിരഞ്ഞെടുക്കുക", "LOCATIONS": "സ്ഥലം (ങ്ങൾ)", + "NO_LOCATIONS_FOR_TASK": "ഈ ടാസ്ക്കിന് പ്രത്യേക സ്ഥാനം ആവശ്യമില്ല", "NO_TASKS_TO_DISPLAY": "പ്രദർശിപ്പിക്കാൻ ചുമതലകളൊന്നുമില്ല.", "NO_WORK_DONE": "ഒരു പണിയും പൂർത്തിയായില്ല", "PAGE_TITLE": "ചുമതലകൾ", @@ -1853,6 +2025,7 @@ "QUANTITY_CANNOT_EXCEED": "ഉപയോഗിച്ച വിളവെടുപ്പിൻ്റെ അളവ് അനുവദിക്കേണ്ട തുകയിൽ കവിയരുത്", "RATE_THIS_TASK": "ഈ ടാസ്ക് റേറ്റുചെയ്യുക", "REMOVE_HARVEST_USE": "നീക്കംചെയ്യുക", + "SELECT_ANIMALS": "മൃഗങ്ങളെ തിരഞ്ഞെടുക്കുക", "SELECT_DATE": "ചുമതലക്കുള്ള തീയതി തിരഞ്ഞെടുക്കുക", "SELECT_TASK_LOCATIONS": "ടാസ്‌ക് ലൊക്കേഷൻ(കൾ) തിരഞ്ഞെടുക്കുക", "SELECT_WILD_CROP": "ഈ ടാസ്ക് ഒരു കാട്ടുവിളയെ ലക്ഷ്യമിടുന്നു", @@ -1885,6 +2058,13 @@ "MAYBE_LATER": "ഒരുപക്ഷേ നമുക്ക് അത് പിന്നീട് ലഭിക്കും.", "UNKNOWN_RECORD": "അജ്ഞാത റെക്കോർഡ്" }, + "UPLOADER": { + "CHANGE_IMAGE": "ചിത്രം മാറ്റുക", + "CLICK_TO_UPLOAD": "അപ്‌ലോഡ് ചെയ്യാൻ ക്ലിക്ക് ചെയ്യുക", + "DRAG_DROP": "അല്ലെങ്കിൽ വലിച്ചിടുക", + "REMOVE_IMAGE": "ചിത്രം നീക്കം ചെയ്യുക", + "UPLOAD_IMAGE": "ചിത്രം അപ്‌ലോഡ് ചെയ്യുക" + }, "WAGE": { "ERROR": "വേതനം സാധുവായ, നെഗറ്റീവ് അല്ലാത്ത ദശാംശ സംഖ്യയായിരിക്കണം", "HOURLY_WAGE": "മണിക്കൂർ കൂലി", @@ -1900,5 +2080,11 @@ }, "YEAR_SELECTOR": { "TITLE": "വർഷം തിരഞ്ഞെടുക്കുക" + }, + "BADGE": { + "BETA": { + "TITLE": "ബീറ്റ", + "ANIMALS_CONTENT": "ഞങ്ങളുടെ പുതിയ മൃഗ പരിപാലന ഫീച്ചറിന്റെ ഒരു ആദ്യദൃഷ്ടി നോട്ടം ലഭിക്കൂ—ഇപ്പോൾ ബീറ്റയിൽ ലഭ്യമാണ്! ഞങ്ങൾ ഈ ഫീച്ചർ പരിഷ്കരിക്കുമ്പോൾ നിങ്ങളുടെ ഫീഡ്ബാക്ക് നിർണായകമാണ്. നിങ്ങൾ നേരിടുന്ന ഏതെങ്കിലും ബഗുകളോ നിർദ്ദേശങ്ങളോ ദയവായി പങ്കിടുക. liteFarm മെച്ചപ്പെടുത്തുന്നതിനുള്ള നിങ്ങളുടെ സഹായത്തെ ഞങ്ങൾ അഭിനന്ദിക്കുന്നു! നിങ്ങൾക്ക് ബീറ്റയെക്കുറിച്ച് ഇവിടെ കൂടുതലറിയാനാകും" + } } } diff --git a/packages/webapp/public/locales/pa/animal.json b/packages/webapp/public/locales/pa/animal.json new file mode 100644 index 0000000000..55f3269caa --- /dev/null +++ b/packages/webapp/public/locales/pa/animal.json @@ -0,0 +1,69 @@ +{ + "BREED": { + "ANGUS": "ਐਂਗਸ", + "CHAROLAIS": "ਚਰੋਲੀਸਿਸ", + "COBB_500": "ਕੋਬ 500", + "CORNISH_CROSS": "ਕੋਰਨਿਸ਼ ਕਰਾਸ", + "DUROC": "ਡੂਰੋਕ", + "HEREFORD": "ਹੇਰਫ਼ਰਡ", + "LANDRACE": "ਲੈਂਡਰੇਸ", + "LEGHORN": "ਲੇਘੌਰਨ", + "PLYMOUTH_ROCK": "ਪਲਾਈਮਥ ਰਾਕ", + "RHODE_ISLAND_RED": "ਰੋਡ ਆਇਲੈਂਡ ਰੈੱਡ", + "ROSS_308": "ਰਾਸ 308", + "YORKSHIRE_LARGE_WHITE": "ਯਾਰਕਸ਼ਾਇਰ ਲਾਰਜ ਵਾਇਟ" + }, + "ORIGIN": { + "BORN_AT_FARM": "ਖੇਤ ਵਿੱਚ ਪੈਦਾ ਹੋਇਆ", + "BROUGHT_IN": "ਵਿੱਚ ਲਿਆਂਦਾ ਗਿਆ" + }, + "PURPOSE": { + "GRAZING": "ਚਰਾਉਣਾ", + "MILKING": "ਦੁੱਧ ਕੜ੍ਹਨਾ", + "MANURE_MANAGEMENT": "ਖਾਦ ਦਾ ਪ੍ਰਬੰਧਨ", + "PEST_OR_DISEASE_CONTROL": "ਕੀਟ ਜਾਂ ਬਿਮਾਰੀ ਦਾ ਨਿਯੰਤਰਣ", + "BREEDING": "ਪ੍ਰਜਨਨ", + "FEEDING": "ਖੁਰਾਕ ਦੇਣਾ", + "VETERINARY_CARE": "ਪਸ਼ੂ-ਚਿਕਿਤਸਾ ਸੇਵਾ", + "BIRTHING": "ਜਨਮ ਦੇਣਾ", + "WEANING": "ਛੁਟਕਾਰਾ", + "TRANSPORTATION": "ਆਵਾਜਾਈ", + "BEHAVIORAL_AND_SOCIAL_MANAGEMENT": "ਵਰਤੋਂ ਅਤੇ ਸਮਾਜਕ ਪ੍ਰਬੰਧਨ", + "EXERCISE": "ਕਸਰਤ", + "QUARANTINE": "ਇਕਾਂਤਵਾਸ", + "OTHER": "ਹੋਰ" + }, + "SEX": { + "MALE": "ਨਰ", + "FEMALE": "ਮਾਦਾ" + }, + "TAG_COLOR": { + "BLUE": "ਨੀਲਾ", + "GREEN": "ਹਰਾ", + "ORANGE": "ਸੰਤਰੀ", + "RED": "ਲਾਲ", + "WHITE": "ਚਿੱਟਾ", + "YELLOW": "ਪੀਲਾ" + }, + "TAG_TYPE": { + "EAR_TAG": "ਕੰਨ ਟੈਗ", + "LEG_BAND": "ਲੱਤ ਟੈਗ" + }, + "TYPE": { + "CATTLE": "ਪਸ਼ੂ", + "CHICKEN": "ਮੁਰਗੀ", + "PIGS": "ਸੂਅਰ" + }, + "USE": { + "MILK": "ਦੂਧ", + "EGGS": "ਅੰਡੇ", + "FAT": "ਚਰਬੀ", + "MEAT": "ਮਾਸ", + "ANIMAL_FIBERS_AND_SKINS": "ਜਾਨਵਰਾਂ ਦੇ ਰੇਸ਼ੇ ਅਤੇ ਚਮੜੀਆਂ", + "LABOUR_AND_DRAFT": "ਮਜ਼ਦੂਰੀ ਅਤੇ ਖਿੜਤ", + "BREEDING": "ਪ੍ਰਜਨਨ", + "RECREATIONAL_OR_CULTURAL_USE": "ਮਨੋਰੰਜਨ ਜਾਂ ਸਾਂਸਕ੍ਰਿਤਿਕ ਵਰਤੋਂ", + "COMPANIONSHIP": "ਸਾਥ", + "OTHER": "ਹੋਰ" + } +} diff --git a/packages/webapp/public/locales/pa/common.json b/packages/webapp/public/locales/pa/common.json index 7229b15fdc..4c861b2138 100644 --- a/packages/webapp/public/locales/pa/common.json +++ b/packages/webapp/public/locales/pa/common.json @@ -4,20 +4,36 @@ "ADD": "ਸ਼ਾਮਲ ਕਰੋ", "ADD_ANOTHER_ITEM": "ਕੋਈ ਹੋਰ ਆਈਟਮ ਸ਼ਾਮਲ ਕਰੋ", "ADD_ITEM": "{{itemName}} ਸ਼ਾਮਲ ਕਰੋ", + "ADD_TO_GROUP": "ਗਰੁੱਪ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ", + "AGE": "ਉਮਰ", + "AGE_DAYS_COUNT_one": "{{count}}ਦ", + "AGE_DAYS_COUNT_other": "{{count}}ਦ", + "AGE_MONTHS_COUNT_one": "{{count}}ਮ", + "AGE_MONTHS_COUNT_other": "{{count}}ਮ", + "AGE_YEARS_COUNT_one": "{{count}}ਸ", + "AGE_YEARS_COUNT_other": "{{count}}ਸ", "ALL": "ਸਾਰੇ", "AMOUNT": "ਮਾਤ੍ਰਾ", + "AND": "ਅਤੇ", "APPLY": "ਲਾਗੂ ਕਰੋ", "BACK": "ਵਾਪਸ ਜਾਓ", "CANCEL": "ਰੱਦ ਕਰੋ", "CHANGE": "ਤਬਦੀਲੀ", "CHAR_LIMIT_ERROR": "ਸੀਮਾ {{value}} ਅੱਖਰ ਹੈ", + "CLEAR_ACTIVE_FILTERS": "ਸਰਗਰਮ ਫਿਲਟਰਾਂ ਨੂੰ ਸਾਫ ਕਰੋ", + "CLEAR_SELECTION": "ਚੋਣ ਨੂੰ ਸਾਫ ਕਰੋ", + "CLONE": "ਕਲੋਨ", "CLOSE": "ਬੰਦ ਕਰੋ", "CONFIRM": "ਪੁਸ਼ਟੀ ਕਰੋ", "CONTINUE": "ਜਾਰੀ ਰੱਖੋ", + "COUNT": "ਗਿਣਤੀ", "CREATE": "ਬਣਾਓ", + "CREATE_A_TASK": "ਇੱਕ ਕੰਮ ਬਣਾਓ", "DATE": "ਤਾਰੀਖ", "DELETE": "ਮਿਟਾਓ", + "DO_NOT_KNOW": "ਮੈਨੂੰ ਨਹੀਂ ਪਤਾ", "DO_NOT_SHOW": "ਇਸ ਸੰਦੇਸ਼ ਨੂੰ ਦੁਬਾਰਾ ਨਾ ਦਿਖਾਓ।", + "DONE": "ਮੁਕੰਮਲ", "EDIT": "ਸੰਪਾਦਿਤ ਕਰੋ", "EDIT_DATE": "ਤਾਰੀਖ ਦਾ ਸੰਪਾਦਨ ਕਰੋ", "EDITING": "ਸੰਪਾਦਨ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ...", @@ -28,6 +44,7 @@ "GO_BACK": "ਵਾਪਸ ਜਾਓ", "GOT_IT": "ਸਮਝ ਗਿਆ!", "HERE": "ਇਥੇ", + "INVALID_DATE": "ਅਵੈਧ ਤਾਰੀਖ", "LOADING": "ਲੋਡ ਹੋ ਰਿਹਾ ਹੈ...", "MARK_ABANDON": "ਛੱਡ ਦਿਓ", "MARK_COMPLETE": "ਮੁਕੰਮਲ ਦੀ ਨਿਸ਼ਾਨਦੇਹੀ ਕਰੋ", @@ -39,16 +56,23 @@ "NEEDS_PLAN": "ਯੋਜਨਾ ਦੀ ਲੋੜ ਹੈ", "NEXT": "ਅਗਲਾ", "NO": "ਨਹੀਂ", + "NON_ORGANIC": "ਗੈਰ-ਜੈਵਿਕ", + "NONE": "ਕੋਈ ਨਹੀਂ", "NOT_SURE": "ਪਤਾ ਨਹੀਂ", "NOTES": "ਨੋਟਸ", "OK": "ਠੀਕ ਹੈ", "OPTIONAL": "(ਵਿਕਲਪਿਕ)", "OR": "ਜਾਂ", + "ORGANIC": "ਜੈਵਿਕ", "OTHER": "ਹੋਰ", "PAST": "ਬੀਤੇ", "PLANNED": "ਯੋਜਨਾਬੱਧ", + "PREVIOUS": "ਪਿਛਲਾ", + "PRICE": "ਕੀਮਤ", "PROCEED": "ਅੱਗੇ ਵਧੋ", + "PROPERTY_UNKNOWN": "{{property}} ਅਣਜਾਣ", "QUANTITY": "ਮਾਤਰਾ", + "REMOVE": "ਹਟਾਓ", "REMOVE_ITEM": "ਆਈਟਮ ਹਟਾਓ", "REQUIRED": "ਲੋੜੀਂਦਾ ਹੈ", "RETIRE": "ਰਿਟਾਇਰ", @@ -56,16 +80,29 @@ "SAVE_CHANGES": "ਬਦਲਾਅ ਸੇਵ ਕਰੋ", "SEARCH": "ਖੋਜੋ", "SELECT": "ਚੁਣੋ", + "SELECT_ALL": "ਸਾਰਿਆਂ ਨੂੰ ਚੁਣੋ", + "SELECTED_COUNT": "{{count}} ਚੁਣਿਆ ਗਿਆ", + "SELECTED_COUNT_one": "{{count}} ਚੁਣਿਆ ਗਿਆ", + "SELECTED_COUNT_many": "{{count}} ਚੁਣਿਆ ਗਿਆ", + "SELECTED_COUNT_other": "{{count}} ਚੁਣਿਆ ਗਿਆ", + "SELECT_OR_ADD_YOUR_OWN": "ਆਪਣਾ ਚੁਣੋ ਜਾਂ ਸ਼ਾਮਲ ਕਰੋ", + "SET": "ਸੈੱਟ", + "SHOWING_ALL": "ਸਾਰੇ ਵੇਖਾ ਰਹੇ ਹੋ", "SKIP": "ਛੱਡੋ", "SORRY": "ਮਾਫ਼ ਕਰੋ", "SUBMIT": "ਜਮ੍ਹਾਂ ਕਰੋ", "SUBMITTING": "ਸਪੁਰਦ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ...", "THATS_FINE": "ਇਹ ਠੀਕ ਹੈ", "TODAY": "ਅੱਜ", + "TOTAL": "ਕੁੱਲ", + "TRANSITIONING": "ਬਦਲ ਰਹੇ ਹਨ", "TYPE": "ਕਿਸਮ", + "TYPES": "ਕਿਸਮਾਂ", + "UNKNOWN": "ਅਣਜਾਣ", "UPDATE": "ਅੱਪਡੇਟ ਕਰੋ", "UPLOAD": "ਅੱਪਲੋਡ ਕਰੋ", "UPLOADING": "ਅੱਪਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ...", + "USE": "ਵਰਤੋਂ", "WORD_LIMIT_ERROR": "ਸਿਰਫ਼ {{value}} ਅੱਖਰ ਹੀ ਦਿਖਾਏ ਜਾ ਸਕਦੇ ਹਨ", "YEAR": "ਸਾਲ", "YES": "ਹਾਂ", diff --git a/packages/webapp/public/locales/pa/message.json b/packages/webapp/public/locales/pa/message.json index 19c5298ec9..6b1bb64342 100644 --- a/packages/webapp/public/locales/pa/message.json +++ b/packages/webapp/public/locales/pa/message.json @@ -1,4 +1,18 @@ { + "ANIMALS": { + "FAILED_CREATE_ANIMALS": "ਜਾਨਵਰ ਬਣਾਉਣ ਵਿੱਚ ਅਸਫਲ ਰਿਹਾ", + "FAILED_CREATE_BATCHES": "ਬੈਚ ਬਣਾਉਣ ਵਿੱਚ ਅਸਫਲ ਰਿਹਾ", + "FAILED_REMOVE_ANIMALS": "ਚੁਣੇ ਗਏ ਜਾਨਵਰ ਹਟਾਉਣ ਵਿੱਚ ਅਸਫਲ ਰਿਹਾ", + "FAILED_REMOVE_BATCHES": "ਚੁਣੇ ਗਏ ਬੈਚ ਹਟਾਉਣ ਵਿੱਚ ਅਸਫਲ ਰਿਹਾ", + "FAILED_UPDATE_ANIMAL": "ਜਾਨਵਰ ਨੂੰ ਅਪਡੇਟ ਕਰਨ ਵਿੱਚ ਅਸਫਲ", + "FAILED_UPDATE_BATCH": "ਬੈਚ ਨੂੰ ਅਪਡੇਟ ਕਰਨ ਵਿੱਚ ਅਸਫਲ", + "SUCCESS_CREATE_ANIMALS": "ਜਾਨਵਰ ਸਫਲਤਾਪੂਰਵਕ ਬਣਾਏ ਗਏ", + "SUCCESS_CREATE_BATCHES": "ਬੈਚ ਸਫਲਤਾਪੂਰਵਕ ਬਣਾਏ ਗਏ", + "SUCCESS_REMOVE_ANIMALS": "ਚੁਣੇ ਗਏ ਜਾਨਵਰ ਸਫਲਤਾਪੂਰਵਕ ਹਟਾਏ ਗਏ", + "SUCCESS_REMOVE_BATCHES": "ਚੁਣੇ ਗਏ ਬੈਚ ਸਫਲਤਾਪੂਰਵਕ ਹਟਾਏ ਗਏ", + "SUCCESS_UPDATE_ANIMAL": "ਜਾਨਵਰ ਸਫਲਤਾਪੂਰਵਕ ਅਪਡੇਟ ਕੀਤਾ ਗਿਆ", + "SUCCESS_UPDATE_BATCH": "ਬੈਚ ਸਫਲਤਾਪੂਰਵਕ ਅਪਡੇਟ ਕੀਤਾ ਗਿਆ" + }, "ASSIGN_TASK": { "ERROR": "ਕੰਮ ਅਸਾਈਨ ਕਰਨ ਵਿੱਚ ਅਸਫਲ", "SUCCESS": "ਸਫਲਤਾਪੂਰਵਕ ਕੰਮ ਸੌਂਪੇ ਗਏ" @@ -40,7 +54,9 @@ "ERROR": { "ADD": "ਨਵੇਂ ਖਰਚੇ ਜੋੜਨ ਵਿੱਚ ਅਸਫਲ", "DELETE": "ਖਰਚਿਆਂ ਨੂੰ ਮਿਟਾਉਣਾ ਅਸਫਲ ਰਿਹਾ", - "UPDATE": "ਖਰਚਿਆਂ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨ ਵਿੱਚ ਅਸਫਲ!" + "UPDATE": "ਖਰਚਿਆਂ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨ ਵਿੱਚ ਅਸਫਲ!", + "EXPENSE_DELETED": "ਇਹ ਖਰਚ ਹੁਣ ਮੌਜੂਦ ਨਹੀਂ ਹੈ", + "EXPENSE_TYPE_DELETED": "ਇਸ ਖਰਚੇ ਦੀ ਕਿਸਮ ਨੂੰ ਹਟਾ ਦਿੱਤਾ ਗਿਆ ਹੈ" }, "SUCCESS": { "ADD": "ਸਫਲਤਾਪੂਰਵਕ ਨਵੇਂ ਖਰਚੇ ਸ਼ਾਮਲ ਕੀਤੇ ਗਏ!", @@ -70,6 +86,11 @@ "UPDATE": "ਫਾਰਮ ਜਾਣਕਾਰੀ ਨੂੰ ਸਫਲਤਾਪੂਰਵਕ ਅੱਪਡੇਟ ਕੀਤਾ ਗਿਆ!" } }, + "HELP_REQUEST": { + "ERROR": { + "SEND": "ਤੁਹਾਡਾ ਫੀਡਬੈਕ ਸਬਮਿਟ ਕਰਦੇ ਸਮੇਂ ਕੁਝ ਗਲਤ ਹੋ ਗਿਆ। ਕਿਰਪਾ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।" + } + }, "LOG_HARVEST": { "ERROR": { "ADD_USE_TYPE": "ਕਸਟਮ ਵਾਢੀ ਵਰਤੋਂ ਕਿਸਮ ਨੂੰ ਸ਼ਾਮਲ ਕਰਨਾ ਅਸਫਲ ਰਿਹਾ", @@ -141,7 +162,8 @@ }, "REVENUE": { "ERROR": { - "EDIT": "ਆਮਦਨ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨਾ ਅਸਫਲ ਰਿਹਾ" + "EDIT": "ਆਮਦਨ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨਾ ਅਸਫਲ ਰਿਹਾ", + "REVENUE_TYPE_DELETED": "ਇਸ ਆਮਦਨੀ ਦੀ ਕਿਸਮ ਨੂੰ ਹਟਾ ਦਿੱਤਾ ਗਿਆ ਹੈ" }, "SUCCESS": { "EDIT": "ਆਮਦਨ ਸਫਲਤਾਪੂਰਵਕ ਅੱਪਡੇਟ ਕੀਤੀ ਗਈ" @@ -163,7 +185,8 @@ "ERROR": { "ADD": "ਵਿਕਰੀ ਨੂੰ ਸ਼ਾਮਲ ਕਰਨਾ ਅਸਫਲ ਰਿਹਾ", "DELETE": "ਨਵੀਂ ਵਿਕਰੀ ਨੂੰ ਮਿਟਾਉਣਾ ਅਸਫਲ ਰਿਹਾ", - "UPDATE": "ਵਿਕਰੀ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨ ਵਿੱਚ ਅਸਫਲ" + "UPDATE": "ਵਿਕਰੀ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨ ਵਿੱਚ ਅਸਫਲ", + "SALE_DELETED": "ਇਹ ਵਿਕਰੀ ਹੁਣ ਮੌਜੂਦ ਨਹੀਂ ਹੈ" }, "SUCCESS": { "ADD": "ਸਫਲਤਾਪੂਰਵਕ ਵਿਕਰੀ ਸ਼ਾਮਲ ਕੀਤੀ ਗਈ", diff --git a/packages/webapp/public/locales/pa/task.json b/packages/webapp/public/locales/pa/task.json index 564968668e..82db1efb16 100644 --- a/packages/webapp/public/locales/pa/task.json +++ b/packages/webapp/public/locales/pa/task.json @@ -10,20 +10,16 @@ "WEEDING": "ਬੂਟੀ", "WASH_AND_PACK_TASK": "ਧੋਵੋ ਅਤੇ ਪੈਕ", "PEST_CONTROL_TASK": "ਕੀਟਨਾਸ਼ਕ ਨਿਯੰਤਰਣ", - "PEST_CONTROL_TASK_LOWER": "ਕੀਟਨਾਸ਼ਕ ਨਿਯੰਤਰਣ", "OTHER_TASK": "ਕੋਈ ਹੋਰ", "BREAK_TASK": "ਬ੍ਰੇਕ", "SOIL_TASK": "ਮਿੱਟੀ ਦੇ ਨਮੂਨੇ ਦੇ ਨਤੀਜੇ", "IRRIGATION_TASK": "ਇਰੀਗੇਸ਼ਨ", - "IRRIGATION_TASK_LOWER": "ਇਰੀਗੇਸ਼ਨ", "TRANSPORT_TASK": "ਆਵਾਜਾਈ", "FIELD_WORK_TASK": "ਫੀਲਡ ਵਰਕ", - "FIELD_WORK_TASK_LOWER": "ਫੀਲਡ ਵਰਕ", "PLANT_TASK": "ਪਲਾਂਟਿੰਗ", "TRANSPLANT_TASK": "ਟ੍ਰਾਂਸਪਲਾਂਟ", "SOCIAL_TASK": "ਸਮਾਜਿਕ", "CLEANING_TASK": "ਸਾਫ਼", - "CLEANING_TASK_LOWER": "ਸਾਫ਼", "SOIL_AMENDMENT_TASK": "ਮਿੱਟੀ ਸੋਧ", - "SOIL_AMENDMENT_TASK_LOWER": "ਮਿੱਟੀ ਸੋਧ" + "MOVEMENT_TASK": "ਚਲਹਾਅ" } diff --git a/packages/webapp/public/locales/pa/translation.json b/packages/webapp/public/locales/pa/translation.json index da1d8e24c6..1d859ce171 100644 --- a/packages/webapp/public/locales/pa/translation.json +++ b/packages/webapp/public/locales/pa/translation.json @@ -1,4 +1,68 @@ { + "ADD_ANIMAL": { + "ADD_ANIMALS": "ਜਾਨਵਰ ਸ਼ਾਮਲ ਕਰੋ", + "ADD_ANIMALS_FLOW": "ਜਾਨਵਰਾਂ ਦੀ ਸ਼ਾਮਲਤ", + "ADD_ANIMALS_TITLE": "ਜਾਨਵਰ ਸ਼ਾਮਲ ਕਰੋ", + "ADD_DETAILS_INFO": "ਹੇਠਾਂ ਆਪਣੇ ਜਾਨਵਰਾਂ ਦੇ ਵੇਰਵੇ ਭਰੋ ਜਾਂ ਇਸਨੂੰ ਸੇਵ ਕਰਕੇ ਬਾਅਦ ਵਿੱਚ ਜਾਰੀ ਰੱਖੋ।", + "ADD_TO_INVENTORY": "ਆਪਣੇ ਸਟਾਕ ਵਿੱਚ ਜਾਨਵਰ ਸ਼ਾਮਲ ਕਰੋ", + "ANIMAL_BASICS": "ਜਾਨਵਰਾਂ ਦੇ ਮੂਲ ਵੇਰਵੇ", + "ANIMAL_DETAILS": "ਜਾਨਵਰਾਂ ਦੇ ਵੇਰਵੇ", + "ANIMALS_TOTAL_one": "{{count}} ਜਾਨਵਰਾਂ ਦਾ ਕੁੱਲ", + "ANIMALS_TOTAL_other": "{{count}} ਜਾਨਵਰਾਂ ਦਾ ਕੁੱਲ", + "ANIMALS_UNSPECIFIED_one": "{{count}} ਅਣਨਿਰਧਾਰਤ", + "ANIMALS_UNSPECIFIED_other": "{{count}} ਅਣਨਿਰਧਾਰਤ", + "BATCH_NAME": "ਬੈਚ ਦਾ ਨਾਮ", + "BATCH_NAME_PLACEHOLDER": "ਬੈਚ ਦਾ ਨਾਮ ਲਿਖੋ", + "BREED": "ਨਸਲ", + "BREED_PLACEHOLDER_DISABLED": "ਕਿਰਪਾ ਕਰਕੇ ਪਹਿਲਾਂ ਇੱਕ ਕਿਸਮ ਚੁਣੋ", + "CREATE_INDIVIDUAL_PROFILES": "ਵਿਅਕਤੀਗਤ ਜਾਨਵਰਾਂ ਦੇ ਪ੍ਰੋਫਾਈਲ ਬਣਾਓ", + "CREATE_INDIVIDUAL_PROFILES_TOOLTIP": "ਤੁਸੀਂ ਹਰ ਜਾਨਵਰ ਨੂੰ ਅਲੱਗ ਟਰੈਕ ਅਤੇ ਪ੍ਰਬੰਧਿਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ ਤਾਂ ਇਹ ਵਿਕਲਪ ਚੁਣੋ", + "EDIT_BASIC_INFO": "ਮੂਲ ਜਾਣਕਾਰੀ ਸੋਧੋ", + "GENERAL_DETAILS": "ਆਮ ਵੇਰਵੇ", + "GENERAL_DETAILS_BATCH": "ਬੈਚ ਦੇ ਆਮ ਵੇਰਵੇ", + "GROUP_NAME": "ਸਮੂਹ ਦਾ ਨਾਮ", + "GROUP_NAME_PLACEHOLDER": "ਸਮੂਹ ਦਾ ਨਾਮ ਲਿਖੋ", + "ORIGIN": "ਮੂਲ", + "ORIGIN_BATCH": "ਬੈਚ ਦਾ ਮੂਲ", + "OTHER_DETAILS": "ਹੋਰ ਵੇਰਵੇ", + "OTHER_DETAILS_BATCH": "ਬੈਚ ਦੇ ਹੋਰ ਵੇਰਵੇ", + "OUT_OF_COUNT_one": "{{count}} ਵਿੱਚੋਂ {{animalNumber}}", + "OUT_OF_COUNT_other": "{{count}} ਵਿੱਚੋਂ {{animalNumber}}", + "PLACEHOLDER": { + "BATCH_NAME": "ਬੈਚ ਦਾ ਨਾਮ ਲਿਖੋ", + "DAM": "ਮਾਂ ਦਾ ਨਾਮ ਲਿਖੋ", + "NAME": "ਨਾਮ ਲਿਖੋ", + "OTHER_DETAILS": "ਵੇਰਵਾ ਦਰਜ ਕਰੋ", + "OTHER_USE": "ਹੋਰ ਵਰਤੋਂ ਦਾ ਵੇਰਵਾ ਦਿਓ", + "PRICE": "ਇਸ ਦੀ ਕੀਮਤ ਕਿੰਨੀ ਸੀ?", + "SIRE": "ਪਿਤਾ ਦਾ ਨਾਮ ਲਿਖੋ", + "SUPPLIER": "ਸਪਲਾਇਰ ਦਾ ਨਾਮ ਲਿਖੋ", + "TAG_COLOUR": "ਟੈਗ ਦਾ ਰੰਗ ਕੀ ਹੈ?", + "TAG_NUMBER": "ਟੈਗ ਨੰਬਰ ਲਿਖੋ", + "TAG_TYPE": "ਟੈਗ ਦੀ ਕਿਸਮ ਕੀ ਹੈ?", + "TAG_TYPE_INFO": "ਕਿਰਪਾ ਕਰਕੇ ਆਪਣੇ ਟੈਗ ਦੀ ਕਿਸਮ ਵੇਰਵਾ ਕਰੋ" + }, + "REMOVE_CONFIRM": "ਕੀ ਤੁਸੀਂ ਵਾਕਈ ਹਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?", + "SELECT_SEXES": "ਲਿੰਗ ਚੁਣੋ", + "SEX_DETAIL": "ਲਿੰਗ ਦਾ ਵੇਰਵਾ", + "SEX_DETAIL_ERROR_one": "ਜਾਨਵਰਾਂ ਦੀ ਵੱਧ ਤੋਂ ਵੱਧ ਗਿਣਤੀ: {{count}}", + "SEX_DETAIL_ERROR_other": "ਜਾਨਵਰਾਂ ਦੀ ਵੱਧ ਤੋਂ ਵੱਧ ਗਿਣਤੀ: {{count}}", + "SEX_DETAIL_ERROR_POPOVER_one": "ਤੁਸੀਂ {{count}} ਤੋਂ ਵੱਧ ਜਾਨਵਰ ਨਹੀਂ ਰੱਖ ਸਕਦੇ", + "SEX_DETAIL_ERROR_POPOVER_other": "ਤੁਸੀਂ {{count}} ਤੋਂ ਵੱਧ ਜਾਨਵਰ ਨਹੀਂ ਰੱਖ ਸਕਦੇ", + "SPECIFY_SEX": "ਲਿੰਗ ਨਿਰਧਾਰਤ ਕਰੋ", + "SUMMARY": { + "ADD_MORE_DETAILS": "ਆਪਣੇ ਜਾਨਵਰਾਂ ਵਿੱਚ ਹੋਰ ਵੇਰਵੇ ਸ਼ਾਮਲ ਕਰੋ", + "ALL_DONE": "ਸਾਰਾ ਮੁਕੰਮਲ!", + "ANIMAL_SUMMARY_COUNT_one": "{{count}} ਵਿਅਕਤੀਗਤ ਜਾਨਵਰ", + "ANIMAL_SUMMARY_COUNT_other": "{{count}} ਵਿਅਕਤੀਗਤ ਜਾਨਵਰ", + "BATCH_SUMMARY_COUNT_one": "{{count}} ਬੈਚ", + "BATCH_SUMMARY_COUNT_other": "{{count}} ਬੈਚ", + "HERE_IS_SUMMARY": "ਇਹ ਰਹੀ ਤੁਹਾਡੇ ਸ਼ਾਮਲ ਕੀਤੇ ਜਾਨਵਰਾਂ ਦੀ ਸੰਖੇਪ ਜਾਣਕਾਰੀ:", + "MAIN": "ਤੁਸੀਂ ਆਪਣੇ ਸਟਾਕ ਵਿੱਚ {{animalCount}} {{and}} {{batchCount}} ਸਫਲਤਾਪੂਰਵਕ ਸ਼ਾਮਲ ਕੀਤੇ।" + }, + "TYPE": "ਕਿਸਮ", + "UNIQUE_DETAILS": "ਵਿਲੱਖਣ ਵੇਰਵੇ" + }, "ADD_FARM": { "ADDRESS_IS_REQUIRED": "ਪਤਾ ਲਾਜ਼ਮੀ ਹੈ", "DISABLE_GEO_LOCATION": "ਤੁਹਾਡੇ ਮੌਜੂਦਾ ਟਿਕਾਣੇ ਨੂੰ ਲੱਭਣ ਲਈ ਟਿਕਾਣਾ ਸੇਵਾਵਾਂ ਨੂੰ ਚਾਲੂ ਕੀਤਾ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ।", @@ -53,6 +117,7 @@ "ASSIGN_TASK": "ਕੰਮ ਸੌਂਪੋ", "ASSIGNEE": "ਸੌਂਪਣ ਵਾਲਾ", "CANCEL": "ਕਾਰਜ ਰਚਨਾ", + "CANT_FIND_INFO_TASK": "ਤੁਸੀਂ ਆਪਣੀਆਂ ਕਸਟਮ ਕੰਮ ਦੀਆਂ ਕਿਸਮਾਂ ਵੀ ਬਣਾ ਸਕਦੇ ਹੋ!", "CLEANING_VIEW": { "ESTIMATED_WATER": "ਅਨੁਮਾਨਿਤ ਪਾਣੀ ਦੀ ਵਰਤੋਂ", "IS_PERMITTED": "ਕੀ ਸਫ਼ਾਈ ਏਜੰਟ ਮਨਜ਼ੂਰ ਪਦਾਰਥਾਂ ਦੀ ਸੂਚੀ ਵਿੱਚ ਹੈ?", @@ -99,6 +164,7 @@ "IRRIGATION_VIEW": { "BRAND_TOOLTIP": "ਇਹ ਕੰਮ ਤੁਹਾਡੇ ਸਥਾਨ ਨੂੰ ਪਾਣੀ ਦੇਣ ਲਈ ਹੈ. ਜੇਕਰ ਤੁਸੀਂ ਸਿੰਚਾਈ ਲਗਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਇਸਦੀ ਬਜਾਏ ਫੀਲਡ ਵਰਕ ਟਾਸਕ ਬਣਾਓ।", "CALCULATE_WATER_USAGE": "ਪਾਣੀ ਦੀ ਵਰਤੋਂ ਦੀ ਗਣਨਾ ਕਰੋ", + "CALCULATE_WATER_USAGE_WARNING": "ਜੰਗਲੀ ਫਸਲਾਂ ਲਈ, ਗਹਿਰਾਈ ਦੁਆਰਾ ਪਾਣੀ ਦੀ ਵਰਤੋਂ ਦਾ ਅੰਦਾਜਾ ਉਪਲਬਧ ਨਹੀਂ ਹੈ.", "DEFAULT_APPLICATION_DEPTH": "ਇਸ ਟਿਕਾਣੇ ਲਈ ਡਿਫੌਲਟ ਐਪਲੀਕੇਸ਼ਨ ਡੂੰਘਾਈ ਵਜੋਂ ਸੈੱਟ ਕਰੋ", "DEFAULT_LOCATION_FLOW_RATE": "ਇਸ ਟਿਕਾਣੇ ਲਈ ਪੂਰਵ-ਨਿਰਧਾਰਤ ਵਹਾਅ ਦਰ ਵਜੋਂ ਸੈੱਟ ਕਰੋ", "DEPTH": "ਡੂੰਘਾਈ", @@ -135,9 +201,19 @@ }, "WHAT_TYPE_OF_IRRIGATION": "ਕਿਸ ਕਿਸਮ ਦੀ ਸਿੰਚਾਈ?" }, - "MANAGE_CUSTOM_TASKS": "ਕਸਟਮ ਕੰਮਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ", + "MANAGE_CUSTOM_TASKS": "ਆਪਣੇ ਕਸਟਮ ਕੰਮ ਪ੍ਰਬੰਧਿਤ ਕਰੋ", + "MOVEMENT_VIEW": { + "MOVEMENT_PURPOSE_LABEL": "ਇਸ ਚਲਹਾਅ ਦਾ ਮਕਸਦ ਕੀ ਹੈ?", + "MOVEMENT_PURPOSE_PLACEHOLDER": "ਇਸ ਚਲਹਾਅ ਲਈ ਮਕਸਦ ਚੁਣੋ", + "OTHER_PURPOSE_EXPLANATION_LABEL": "ਵਿਆਖਿਆ", + "OTHER_PURPOSE_EXPLANATION_PLACEHOLDER": "ਕਿਰਪਾ ਕਰਕੇ ਇਸ ਚਲਹਾਅ ਦਾ ਕਾਰਨ ਦਰਜ ਕਰੋ" + }, + "NEED_ANIMAL_LOCATION_MOVEMENT": "ਤੁਹਾਨੂੰ ਜਾਨਵਰਾਂ ਨੂੰ ਲਿਜਾਣ ਲਈ ਇੱਕ ਸਥਾਨ ਜਾਂ ਖੇਤਰ ਦੀ ਲੋੜ ਪਵੇਗੀ। ਨਕਸ਼ੇ 'ਤੇ ਜਾ ਕੇ ਜਾਨਵਰ ਸਥਾਨ ਬਣਾਓ।", "NEED_MANAGEMENT_PLAN": "ਵਾਢੀ ਦੇ ਕੰਮ ਜਾਂ ਟ੍ਰਾਂਸਪਲਾਂਟ ਦੇ ਕੰਮ ਨੂੰ ਨਿਯਤ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਤੁਹਾਨੂੰ ਇੱਕ ਕਿਰਿਆਸ਼ੀਲ ਜਾਂ ਯੋਜਨਾਬੱਧ ਫਸਲ ਯੋਜਨਾ ਦੀ ਲੋੜ ਪਵੇਗੀ। ਹੁਣੇ ਇੱਕ ਯੋਜਨਾ ਬਣਾਉਣ ਲਈ ਫਸਲ ਕੈਟਾਲਾਗ 'ਤੇ ਜਾਓ।", + "NO_ANIMAL_LOCATION": "ਜਾਨਵਰਾਂ ਲਈ ਕੌਈ ਯੋਗ ਸਥਾਨ ਨਹੀਂ ਹੈ", "NO_MANAGEMENT_PLAN": "ਕੋਈ ਯੋਗ ਫਸਲ ਯੋਜਨਾ ਨਹੀਂ", + "NOTES_LABEL": "ਇਸ ਕੰਮ ਨਾਲ ਸੰਬੰਧਤ ਕੁਝ ਵਿਸ਼ੇਸ਼ ਸ਼ਾਮਲ ਕਰਨਾ ਹੈ?", + "NOTES_PLACEHOLDER": "ਜਿੰਮੇਵਾਰ ਲਈ ਕੋਈ ਹਦਾਇਤਾਂ ਜਾਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਸ਼ਾਮਲ ਕਰੋ", "PEST_CONTROL_VIEW": { "BIOLOGICAL_CONTROL": "ਜੈਵਿਕ ਨਿਯੰਤਰਣ", "FLAME_WEEDING": "ਬਲਦੀ ਬੂਟੀ", @@ -196,11 +272,64 @@ "TASK": "ਕੰਮ", "TASK_NOTES_CHAR_LIMIT": "ਨੋਟਸ 10,000 ਅੱਖਰਾਂ ਤੋਂ ਘੱਟ ਹੋਣੇ ਚਾਹੀਦੇ ਹਨ", "TELL_US_ABOUT_YOUR_TASK_TYPE_ONE": "ਸਾਨੂੰ ਇਸ ਕੰਮ ਬਾਰੇ ਦੱਸੋ", + "THIS_TASK_IS_COMPLETED": "ਇਹ ਕੰਮ ਪਹਿਲਾਂ ਹੀ ਮੁਕੰਮਲ ਕੀਤਾ ਜਾ ਚੁੱਕਾ ਹੈ", + "THIS_TASK_IS_COMPLETED_EXPLANATION": "'ਸੇਵ' ਤੇ ਕਲਿਕ ਕਰਨ ਨਾਲ ਇਹ ਕੰਮ ਤੁਰੰਤ ਸੇਵ ਹੋ ਜਾਵੇਗਾ। ਇਸ ਤੋਂ ਬਾਅਦ ਤੁਹਾਨੂੰ ਇਸਨੂੰ ਪੂਰਾ ਕਰਨ ਲਈ ਕਿਹਾ ਜਾਵੇਗਾ।", "TRANSPLANT_METHOD": "ਟ੍ਰਾਂਸਪਲਾਂਟ ਵਿਧੀ", "WAGE_OVERRIDE": "ਤਨਖਾਹ ਓਵਰਰਾਈਡ", "WHAT_PLANTING_METHOD": "ਟ੍ਰਾਂਸਪਲਾਂਟ ਕਰਨ ਦਾ ਤਰੀਕਾ ਕੀ ਹੈ?", "WILD_CROP": "ਜੰਗਲੀ ਫਸਲ" }, + "ANIMAL": { + "ADD_MORE_BODY_TEXT": "ਕੀ ਤੁਹਾਡੇ ਕੋਲ ਕੋਈ ਹੋਰ ਜਾਨਵਰ ਦੀ ਕਿਸਮ ਜਾਂ ਵੱਖ-ਵੱਖ ਨਸਲ ਹੈ?", + "ADD_MORE_BUTTON": "ਹੋਰ ਜਾਨਵਰ ਸ਼ਾਮਲ ਕਰੋ", + "ANIMAL_BREED": "ਨਸਲ", + "ANIMAL_COUNT_one": "{{count}} ਜਾਨਵਰ", + "ANIMAL_COUNT_other": "{{count}} ਜਾਨਵਰ", + "ANIMAL_GROUPS": "ਸਮੂਹ", + "ANIMAL_ID": "ਪਛਾਣ ਨੰਬਰ ID", + "ANIMAL_IDENTIFICATION": "ਪਛਾਣ", + "ANIMAL_LOCATIONS": "ਸਥਾਨ", + "ANIMAL_SEXES": "ਲਿੰਗ", + "ANIMAL_TYPE": "ਕਿਸਮ", + "ATTRIBUTE": { + "ANIMAL_IMAGE": "ਜਾਨਵਰ ਦੀ ਤਸਵੀਰ", + "BATCH_IMAGE": "ਬੈਚ ਦੀ ਤਸਵੀਰ", + "BATCH_NAME": "ਬੈਚ ਦਾ ਨਾਮ", + "DAM": "ਮਾਂ", + "DATE_OF_BIRTH": "ਜਨਮ ਤਾਰੀਖ", + "LITEFARM_ID": "ਲਾਈਟਫਾਰਮ ਪਛਾਣ ਨੰਬਰ ID", + "ORGANIC_STATUS": "ਜੈਵਿਕ ਸਥਿਤੀ", + "OTHER_DETAILS_ANIMAL": "ਹੋਰ ਜਾਨਵਰਾਂ ਦੇ ਵੇਰਵੇ", + "OTHER_DETAILS_BATCH": "ਬੈਚ ਦੇ ਵੇਰਵੇ", + "OTHER_USE": "ਹੋਰ ਵਰਤੋਂ", + "SIRE": "ਪਿਤਾ", + "SUPPLIER": "ਸਪਲਾਇਰ", + "TAG_COLOUR": "ਟੈਗ ਦਾ ਰੰਗ", + "TAG_NUMBER": "ਟੈਗ ਨੰਬਰ", + "TAG_TYPE": "ਟੈਗ ਦੀ ਕਿਸਮ", + "WEANING_DATE": "ਛੁਟਕਾਰਾ ਤਾਰੀਖ" + }, + "BATCH": "ਬੈਚ", + "BETA_SPOTLIGHT_HEADING": "ਨਵੇਂ ਜਾਨਵਰਾਂ ਦੇ ਫੀਚਰ ਦਾ ਪਰਚੇ ਕਰਵਾਇਆ ਜਾ ਰਿਹਾ ਹੈ", + "EDIT_ANIMAL_FLOW": "ਸੋਧਣਾ", + "FILTER": { + "BATCHES": "ਬੈਚ", + "BATCHES_OR_INDIVIDUALS": "ਬੈਚ ਜਾਂ ਵਿਅਕਤੀਗਤ", + "FEMALE": "ਮਾਦਾ", + "INDIVIDUALS": "ਵਿਅਕਤੀਗਤ", + "MALE": "ਨਰ", + "TITLE": "ਜਾਨਵਰਾਂ ਨੂੰ ਫਿਲਟਰ ਕਰੋ" + }, + "REMOVE_ANIMAL": "ਜਾਨਵਰ ਹਟਾਓ", + "SEARCH_INVENTORY_PLACEHOLDER": "ਆਪਣੇ ਸਟਾਕ ਵਿੱਚ ਖੋਜ ਕਰੋ", + "SHOWING_RESULTS_WITH_COUNT_one": "{{count}} ਨਤੀਜਾ ਵੇਖਾਇਆ ਜਾ ਰਿਹਾ ਹੈ", + "SHOWING_RESULTS_WITH_COUNT_many": "{{count}} ਨਤੀਜੇ ਵੇਖਾਏ ਜਾ ਰਹੇ ਹਨ", + "SHOWING_RESULTS_WITH_COUNT_other": "{{count}} ਨਤੀਜੇ ਵੇਖਾਏ ਜਾ ਰਹੇ ਹਨ", + "TABS": { + "BASIC_INFO": "ਮੂਲ ਜਾਣਕਾਰੀ", + "TASKS": "ਕੰਮ" + } + }, "BED_PLAN": { "LENGTH_OF_BED": "ਬੇਡ ਦੀ ਲੰਬਾਈ", "NUMBER_0F_BEDS": "# ਬੇਡ", @@ -822,7 +951,7 @@ }, "TUTORIALS": "ਨਕਸ਼ਾ ਟਿਊਟੋਰਿਯਲ", "UNABLE_TO_RETIRE": { - "BODY": "ਤੁਸੀਂ ਸਿਰਫ਼ ਉਹਨਾਂ ਟਿਕਾਣਿਆਂ ਨੂੰ ਰਿਟਾਇਰ ਕਰ ਸਕਦੇ ਹੋ ਜਿਨ੍ਹਾਂ ਵਿੱਚ ਕੋਈ ਕਿਰਿਆਸ਼ੀਲ ਜਾਂ ਯੋਜਨਾਬੱਧ ਫਸਲਾਂ ਜਾਂ ਕਾਰਜ ਨਹੀਂ ਹਨ।", + "BODY": "ਤੁਸੀਂ ਸਿਰਫ਼ ਉਹ ਸਥਾਨ ਸੇਵਾ-ਨਿਵ੍ਰਿਤ ਕਰ ਸਕਦੇ ਹੋ ਜਿੱਥੇ ਕੋਈ ਸਰਗਰਮ ਜਾਂ ਯੋਜਿਤ ਫਸਲਾਂ, ਜਾਨਵਰ ਜਾਂ ਕੰਮ ਨਹੀਂ ਹਨ।", "TITLE": "ਰਿਟਾਇਰ ਹੋਣ ਵਿੱਚ ਅਸਮਰੱਥ" }, "WATER_VALVE": { @@ -853,13 +982,18 @@ } }, "FILE_SIZE_MODAL": { - "BODY": "ਫ਼ਾਈਲਾਂ 10MB ਤੋਂ ਵੱਡੀਆਂ ਨਹੀਂ ਹੋ ਸਕਦੀਆਂ।", + "BODY": "ਫਾਇਲਾਂ {{size}} MB ਤੋਂ ਵੱਡੀਆਂ ਨਹੀਂ ਹੋ ਸਕਦੀਆਂ।", "TITLE": "ਫ਼ਾਈਲ ਦਾ ਆਕਾਰ ਬਹੁਤ ਵੱਡਾ ਹੈ" }, "FILTER": { + "CLEAR": "ਸਾਫ ਕਰੋ", "CLEAR_ALL": "ਸਭ ਸਾਫ਼ ਕਰੋ", "CLEAR_ALL_FILTERS": "ਸਾਰੇ ਫਿਲਟਰ ਸਾਫ਼ ਕਰੋ", - "SELECT_ALL": "ਸਾਰਿਆ ਨੂੰ ਚੁਣੋ" + "SELECT_ALL": "ਸਾਰਿਆ ਨੂੰ ਚੁਣੋ", + "SELECTED_one": "{{count}} ਚੁਣਿਆ ਗਿਆ", + "SELECTED_other": "{{count}} ਚੁਣਿਆ ਗਿਆ", + "SHOWING_ALL": "ਸਾਰੇ ਵੇਖਾਏ ਜਾ ਰਹੇ ਹਨ", + "SHOWING_ALL_DEFAULT": "ਸਾਰੇ ਵੇਖਾਏ ਜਾ ਰਹੇ ਹਨ (ਮੂਲ ਰੂਪ ਵਿੱਚ)" }, "FINANCES": { "ACTUAL_REVENUE": { @@ -921,6 +1055,8 @@ "HELP": { "ATTACHMENT_LABEL": "ਸਕ੍ਰੀਨਸ਼ੌਟ ਜਾਂ ਫ਼ਾਈਲ ਅੱਪਲੋਡ ਕਰੋ", "EMAIL": "ਈਮੇਲ", + "FEEDBACK_INVITATION": "ਮਦਦ ਲਵੋ ਜਾਂ ਸਾਨੂੰ ਫੀਡਬੈਕ ਦਿਓ", + "SEND_US_FEEDBACK": "ਸਾਨੂੰ ਫੀਡਬੈਕ ਭੇਜੋ", "MESSAGE_LABEL": "ਸੁਨੇਹਾ", "OPTIONS": { "OTHER": "ਕੋਈ ਹੋਰ", @@ -930,7 +1066,6 @@ }, "PREFERRED_CONTACT": "ਪਸੰਦੀਦਾ ਸੰਪਰਕ ਵਿਧੀ", "REQUIRED_LABEL": "ਲੋੜੀਂਦਾ ਖੇਤਰ", - "TITLE": "ਮਦਦ ਲਈ ਬੇਨਤੀ ਕਰੋ", "TYPE_SUPPORT_LABEL": "ਸਹਾਇਤਾ ਦੀ ਕਿਸਮ", "TYPE_SUPPORT_PLACEHOLDER": "ਸਹਾਇਤਾ ਦੀ ਕਿਸਮ ਚੁਣੋ", "WHATSAPP": "ਵਟਸਐਪ", @@ -939,6 +1074,11 @@ "HOME": { "GREETING": "ਚੰਗਾ ਦਿਨ, " }, + "HOVERPILL": { + "PLUS_OTHERS_COUNT_one": "+ {{count}} ਹੋਰ", + "PLUS_OTHERS_COUNT_many": "+ {{count}} ਹੋਰ", + "PLUS_OTHERS_COUNT_other": "+ {{count}} ਹੋਰ" + }, "INSIGHTS": { "BIODIVERSITY": { "AMPHIBIANS": "ਐਮਫੀਬੀਅਨਸ", @@ -1260,6 +1400,10 @@ }, "MENU": { "ACTUAL_REVENUES": "ਅਸਲ ਆਮਦਨ", + "ANIMALS": "ਜਾਨਵਰ", + "ANIMALS_GROUPS": "ਸਮੂਹ", + "ANIMALS_INVENTORY": "ਸਟਾਕ", + "ANIMALS_LOCATION": "ਸਥਾਨ", "CERTIFICATIONS": "ਪ੍ਰਮਾਣੀਕਰਣ", "CROPS": "ਫਸਲਾਂ", "DOCUMENTS": "ਦਸਤਾਵੇਜ਼", @@ -1458,6 +1602,22 @@ "LITEFARM_UPDATED": "ਲਾਈਟਫਾਰਮ v{{version}} ਹੁਣ ਉਪਲਬਧ ਹੈ!", "NOTES": "ਰੀਲੀਜ਼ ਨੋਟਸ" }, + "REMOVE_ANIMALS": { + "CREATED_IN_ERROR": "ਗਲਤੀ ਵਿੱਚ ਬਣਾਇਆ ਗਿਆ", + "CULLED": "ਛਾਂਟਿਆ ਗਿਆ", + "EXPLANATION": "ਵਿਆਖਿਆ", + "MORE_DETAILS": "ਕੀ ਤੁਸੀਂ ਹੋਰ ਵੇਰਵੇ ਦੇਣੇ ਚਾਹੁੰਦੇ ਹੋ?", + "NATURAL_DEATH": "ਕੁਦਰਤੀ ਮੌਤ", + "REMOVAL_REASONS": "ਹਟਾਉਣ ਦੇ ਕਾਰਨ", + "REMOVE_ANIMALS": "ਜਾਨਵਰ ਹਟਾਓ", + "REMOVED_AND_ARCHIVED": "ਇਹ ਜਾਨਵਰ ਤੁਹਾਡੇ ਫਾਰਮ ਤੋਂ ਸਫਲਤਾਪੂਰਵਕ ਹਟਾਏ ਗਏ ਹਨ ਅਤੇ ਇਹ ਤੁਹਾਡੇ ਇਤਿਹਾਸਕ ਸਟਾਕ ਵਿੱਚ ਉਪਲਬਧ ਹੋਣਗੇ।", + "SLAUGHTERED_FOR_CONSUMPTION": "ਖਪਤ ਲਈ ਜਬਾਹ ਕੀਤਾ ਗਿਆ", + "SLAUGHTERED_FOR_SALE": "ਵਿਕਰੀ ਲਈ ਜਬਾਹ ਕੀਤਾ ਗਿਆ", + "SOLD": "ਵੇਚਿਆ ਗਿਆ", + "WHY": "ਸਾਨੂੰ ਦੱਸੋ ਕਿ ਤੁਸੀਂ ਇਹ ਜਾਨਵਰ ਕਿਉਂ ਹਟਾ ਰਹੇ ਹੋ", + "WILL_BE_ARCHIVED": "ਇਹ ਜਾਨਵਰ ਤੁਹਾਡੇ ਮੌਜੂਦਾ ਸਟਾਕ ਵਿੱਚੋਂ ਹਟਾ ਦਿੱਤੇ ਜਾਣਗੇ", + "WILL_BE_PERMANENTLY_REMOVED": "ਇਹ ਜਾਨਵਰ ਤੁਹਾਡੇ ਫਾਰਮ ਤੋਂ ਸਥਾਈ ਤੌਰ 'ਤੇ ਹਟਾਏ ਜਾਣਗੇ" + }, "REPEAT_PLAN": { "AFTER": "ਤੋਂ ਬਾਅਦ", "COMPLETION": "ਸੰਪੂਰਨਤਾ", @@ -1498,7 +1658,7 @@ }, "REQUEST_CONFIRMATION_MODAL": { "BUTTON": "ਸਮਝ ਗਿਆ", - "DESCRIPTION": "ਕੋਈ ਵਿਅਕਤੀ 48 ਘੰਟਿਆਂ ਦੇ ਅੰਦਰ ਸੰਪਰਕ ਵਿੱਚ ਹੋਵੇਗਾ।", + "DESCRIPTION": "ਕੋਈ ਜਲਦੀ ਹੀ ਤੁਹਾਡੇ ਨਾਲ ਸੰਪਰਕ ਕਰੇਗਾ।", "TITLE": "ਮਦਦ ਦੀ ਬੇਨਤੀ ਸਪੁਰਦ ਕੀਤੀ ਗਈ" }, "REVENUE": { @@ -1611,6 +1771,11 @@ "NO_RESULTS_FOR": "ਮਾਫ਼ ਕਰਨਾ, ਅਸੀਂ ਤੁਹਾਡੇ ਖੋਜ ਸ਼ਬਦ <1>'{{searchTerm}}' ਲਈ ਕੋਈ ਨਤੀਜਾ ਨਹੀਂ ਲੱਭ ਸਕੇ।", "ZERO": "0 ਨਤੀਜੇ" }, + "SECTION_HEADER": { + "ANIMALS_GROUPS": "ਜਾਨਵਰ ਸਮੂਹ", + "ANIMALS_INVENTORY": "ਜਾਨਵਰ ਸਟਾਕ", + "ANIMALS_LOCATION": "ਜਾਨਵਰ ਸਥਾਨ" + }, "SENSOR": { "BRAND": "ਬ੍ਰਾਂਡ", "BRAND_HELPTEXT": "ਉਹ ਬ੍ਰਾਂਡ ਜੋ ਲਾਈਟਫਾਰਮ ਨਾਲ ਏਕੀਕ੍ਰਿਤ ਹੋ ਸਕਦੇ ਹਨ ਹੇਠਾਂ ਦਿਖਾਏ ਗਏ ਹਨ। ਜੇਕਰ ਤੁਸੀਂ ਹੁਣ ਇਸ ਸੈਂਸਰ ਬ੍ਰਾਂਡ ਦੀ ਵਰਤੋਂ ਨਹੀਂ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਇਸ ਦੀ ਬਜਾਏ ਇਸ ਸੈਂਸਰ ਨੂੰ ਰਿਟਾਇਰ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ।", @@ -1768,6 +1933,7 @@ "LABOUR_ISSUE": "ਮਜ਼ਦੂਰ ਮੁੱਦਾ", "MACHINERY_ISSUE": "ਮਸ਼ੀਨਰੀ ਦਾ ਮੁੱਦਾ", "MARKET_PROBLEM": "ਮਾਰਕੀਟ ਸਮੱਸਿਆ", + "NO_ANIMALS": "ਸਵੈ-ਛੱਡਿਆ: ਇਸ ਕੰਮ ਲਈ ਕੋਈ ਜਾਨਵਰ ਨਹੀਂ", "OTHER": "ਕੋਈ ਹੋਰ", "SCHEDULING_ISSUE": "ਸਮਾਂ-ਸੂਚੀ ਸੰਬੰਧੀ ਸਮੱਸਿਆ", "WEATHER": "ਮੌਸਮ" @@ -1787,9 +1953,14 @@ "ADD_TASK": "ਇੱਕ ਕਾਰਜ ਬਣਾਓ", "ADD_TASK_FLOW": "ਕਾਰਜ ਰਚਨਾ", "AMOUNT_TO_ALLOCATE": "ਅਲਾਟ ਕਰਨ ਲਈ ਰਕਮ", + "ANIMALS": "ਪਸ਼ੂ", + "ANIMALS_AT_LEAST_ONE_TO_COMPLETE": "ਇਸ ਕੰਮ ਨੂੰ ਪੂਰਾ ਕਰਨ ਲਈ ਘੱਟੋ-ਘੱਟ ਇੱਕ ਪਸ਼ੂ ਚੁਣਨਾ ਜ਼ਰੂਰੀ ਹੈ। ਸਾਰੇ ਪਸ਼ੂਆਂ ਨੂੰ ਹਟਾਉਣ ਲਈ, ਬਦਲੇ ਵਿੱਚ ਕੰਮ ਛੱਡੋ।", + "ANIMAL_MOVING_TO_LOCATION": "ਇੱਥੇ ਲੈ ਜਾ ਰਿਹਾ ਹੈ:", + "ANIMAL_MOVEMENT_EXPANDING_SUMMARY_TITLE": "ਇਸ ਕੰਮ ਵਿੱਚ ਪਸ਼ੂ।", "CARD": { "MULTIPLE_CROPS": "ਕਈ ਫਸਲਾਂ", - "MULTIPLE_LOCATIONS": "ਕਈ ਸਥਾਨਾਂ" + "MULTIPLE_LOCATIONS": "ਕਈ ਸਥਾਨਾਂ", + "NO_LOCATION": "ਕੋਈ ਸਥਾਨ ਨਹੀਂ।" }, "COMPLETE": { "DATE": "ਮੁਕੰਮਲ ਹੋਣ ਦੀ ਮਿਤੀ", @@ -1845,6 +2016,7 @@ "HOW_WILL_HARVEST_BE_USED": "ਵਾਢੀ ਦੀ ਵਰਤੋਂ ਕਿਵੇਂ ਕੀਤੀ ਜਾਵੇਗੀ?", "IRRIGATION_LOCATION": "ਇੱਕ ਸਿੰਚਾਈ ਸਥਾਨ ਚੁਣੋ", "LOCATIONS": "ਸਥਾਨ", + "NO_LOCATIONS_FOR_TASK": "ਇਸ ਕੰਮ ਲਈ ਕੋਈ ਵਿਸ਼ੇਸ਼ ਸਥਾਨ ਦੀ ਲੋੜ ਨਹੀਂ ਹੈ।", "NO_TASKS_TO_DISPLAY": "ਪ੍ਰਦਰਸ਼ਿਤ ਕਰਨ ਲਈ ਕੋਈ ਕੰਮ ਨਹੀਂ ਹਨ।", "NO_WORK_DONE": "ਕੋਈ ਕੰਮ ਪੂਰਾ ਨਹੀਂ ਹੋਇਆ", "PAGE_TITLE": "ਕੰਮ", @@ -1853,6 +2025,7 @@ "QUANTITY_CANNOT_EXCEED": "ਵਰਤੇ ਗਏ ਵਾਢੀ ਦੀ ਮਾਤਰਾ ਨਿਰਧਾਰਤ ਕੀਤੀ ਰਕਮ ਤੋਂ ਵੱਧ ਨਹੀਂ ਹੋ ਸਕਦੀ", "RATE_THIS_TASK": "ਇਸ ਕੰਮ ਨੂੰ ਦਰਜਾ ਦਿਓ", "REMOVE_HARVEST_USE": "ਹਟਾਓ", + "SELECT_ANIMALS": "ਪਸ਼ੂ ਚੁਣੋ", "SELECT_DATE": "ਕੰਮ ਦੀ ਮਿਤੀ ਚੁਣੋ", "SELECT_TASK_LOCATIONS": "ਕੰਮ ਦੇ ਟਿਕਾਣੇ ਚੁਣੋ", "SELECT_WILD_CROP": "ਇਹ ਕੰਮ ਜੰਗਲੀ ਫਸਲ ਨੂੰ ਨਿਸ਼ਾਨਾ ਬਣਾਉਂਦਾ ਹੈ", @@ -1885,6 +2058,13 @@ "MAYBE_LATER": "ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਇਹ ਬਾਅਦ ਵਿੱਚ ਟਰਨਿਪ ਹੋ ਜਾਵੇ।", "UNKNOWN_RECORD": "ਅਗਿਆਤ ਰਿਕਾਰਡ" }, + "UPLOADER": { + "CHANGE_IMAGE": "ਤਸਵੀਰ ਬਦਲੋ", + "CLICK_TO_UPLOAD": "ਅੱਪਲੋਡ ਕਰਨ ਲਈ ਕਲਿਕ ਕਰੋ", + "DRAG_DROP": "ਜਾਂ ਖਿੱਚੋ ਅਤੇ ਛੱਡੋ", + "REMOVE_IMAGE": "ਤਸਵੀਰ ਹਟਾਓ", + "UPLOAD_IMAGE": "ਤਸਵੀਰ ਅੱਪਲੋਡ ਕਰੋ" + }, "WAGE": { "ERROR": "ਮਜ਼ਦੂਰੀ ਇੱਕ ਵੈਧ, ਗੈਰ-ਨੈਗੇਟਿਵ ਦਸ਼ਮਲਵ ਸੰਖਿਆ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ", "HOURLY_WAGE": "ਘੰਟਾਵਾਰ ਤਨਖਾਹ", @@ -1900,5 +2080,11 @@ }, "YEAR_SELECTOR": { "TITLE": "ਸਾਲ ਚੁਣੋ" + }, + "BADGE": { + "BETA": { + "TITLE": "ਬੀਟਾ", + "ANIMALS_CONTENT": "ਸਾਡੇ ਨਵੇਂ ਜਾਨਵਰ ਪ੍ਰਬੰਧਨ ਫੀਚਰ ਦੀ ਇੱਕ ਝਲਕ ਪ੍ਰਾਪਤ ਕਰੋ—ਹੁਣ ਬੀਟਾ ਵਿੱਚ। ਜਿਵੇਂ ਜਿਵੇਂ ਅਸੀਂ ਇਸ ਫੀਚਰ ਨੂੰ ਸੁਧਾਰਦੇ ਹਾਂ, ਤੁਹਾਡਾ ਫੀਡਬੈਕ ਬਹੁਤ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਕੋਈ ਵੀ ਬੱਗ ਜਾਂ ਸੁਝਾਅ ਸਾਂਝੇ ਕਰੋ ਜੋ ਤੁਹਾਨੂੰ ਮਿਲਦਾ ਹੈ। ਲਾਈਟਫਾਰਮ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰਨ ਲਈ ਅਸੀਂ ਤੁਹਾਡਾ ਧੰਨਵਾਦ ਕਰਦੇ ਹਾਂ। ਤੁਸੀਂ ਬੀਟਾ ਬਾਰੇ ਹੋਰ ਜਾਣ ਸਕਦੇ ਹੋ ਇੱਥੇ" + } } } diff --git a/packages/webapp/public/locales/pt/animal.json b/packages/webapp/public/locales/pt/animal.json new file mode 100644 index 0000000000..8cc1991089 --- /dev/null +++ b/packages/webapp/public/locales/pt/animal.json @@ -0,0 +1,69 @@ +{ + "BREED": { + "ANGUS": "Angus", + "CHAROLAIS": "Charolais", + "COBB_500": "Cobb 500", + "CORNISH_CROSS": "Cornish Cross", + "DUROC": "Duroc", + "HEREFORD": "Hareford", + "LANDRACE": "Landrace", + "LEGHORN": "Leghorn", + "PLYMOUTH_ROCK": "Plymouth Rock", + "RHODE_ISLAND_RED": "Rhode Island Red", + "ROSS_308": "Ross 308", + "YORKSHIRE_LARGE_WHITE": "Yorkshire Large White" + }, + "ORIGIN": { + "BORN_AT_FARM": "Nascido no sítio", + "BROUGHT_IN": "Trazido de" + }, + "PURPOSE": { + "GRAZING": "Pastejo", + "MILKING": "Ordenha", + "MANURE_MANAGEMENT": "Manejo de esterco", + "PEST_OR_DISEASE_CONTROL": "Controle de pragas e doenças", + "BREEDING": "Reprodução", + "FEEDING": "Alimentação", + "VETERINARY_CARE": "Cuidado veterinário", + "BIRTHING": "Parto", + "WEANING": "Desmame", + "TRANSPORTATION": "Transporte", + "BEHAVIORAL_AND_SOCIAL_MANAGEMENT": "Manejo comportamental e social", + "EXERCISE": "Exercício", + "QUARANTINE": "Quarentena", + "OTHER": "Outro" + }, + "SEX": { + "MALE": "Macho", + "FEMALE": "Fêmea" + }, + "TAG_COLOR": { + "BLUE": "Azul", + "GREEN": "Verde", + "ORANGE": "Laranja", + "RED": "Vermelho", + "WHITE": "Branco", + "YELLOW": "Amarelo" + }, + "TAG_TYPE": { + "EAR_TAG": "Etiqueta de orelha", + "LEG_BAND": "Faixa de perna" + }, + "TYPE": { + "CATTLE": "Gado", + "CHICKEN": "Galinha", + "PIGS": "Suíno" + }, + "USE": { + "MILK": "Leite", + "EGGS": "Ovos", + "FAT": "Gordura", + "MEAT": "Carne", + "ANIMAL_FIBERS_AND_SKINS": "Fibras e peles", + "LABOUR_AND_DRAFT": "Trabalho e Tração", + "BREEDING": "Reprodução", + "RECREATIONAL_OR_CULTURAL_USE": "Uso Recreativo ou Cultural", + "COMPANIONSHIP": "Companhia", + "OTHER": "Outro" + } +} diff --git a/packages/webapp/public/locales/pt/common.json b/packages/webapp/public/locales/pt/common.json index 338b083e85..09b5f57832 100644 --- a/packages/webapp/public/locales/pt/common.json +++ b/packages/webapp/public/locales/pt/common.json @@ -4,20 +4,36 @@ "ADD": "Adicionar", "ADD_ANOTHER_ITEM": "Adicionar outro item", "ADD_ITEM": "Adicionar item", + "ADD_TO_GROUP": "Adicionar ao grupo", + "AGE": "Idade", + "AGE_DAYS_COUNT_one": "{{count}}d", + "AGE_DAYS_COUNT_other": "{{count}}d", + "AGE_MONTHS_COUNT_one": "{{count}}m", + "AGE_MONTHS_COUNT_other": "{{count}}m", + "AGE_YEARS_COUNT_one": "{{count}}a", + "AGE_YEARS_COUNT_other": "{{count}}a", "ALL": "Tudo", "AMOUNT": "Valor", + "AND": "e", "APPLY": "Aplicar", "BACK": "Voltar", "CANCEL": "Cancelar", "CHANGE": "Mudar", "CHAR_LIMIT_ERROR": "Limite de {{value}} caracteres", + "CLEAR_ACTIVE_FILTERS": "Remover filtros ativos", + "CLEAR_SELECTION": "Limpar seleção", + "CLONE": "Duplicar", "CLOSE": "Fechar", "CONFIRM": "Confirmar", "CONTINUE": "Continuar", + "COUNT": "Quantidade", "CREATE": "Adicionar", + "CREATE_A_TASK": "Criar uma tarefa", "DATE": "Data", "DELETE": "Excluir", + "DO_NOT_KNOW": "Eu não sei", "DO_NOT_SHOW": "Não mostrar esta mensagem novamente", + "DONE": "Concluído", "EDIT": "Editar", "EDIT_DATE": "Editar data", "EDITING": "Editando...", @@ -28,6 +44,7 @@ "GO_BACK": "Voltar", "GOT_IT": "Feito!", "HERE": "aqui", + "INVALID_DATE": "Data inválida", "LOADING": "Carregando...", "MARK_ABANDON": "Abandonar", "MARK_COMPLETE": "Marcar completo", @@ -39,16 +56,23 @@ "NEEDS_PLAN": "É necessário um plano", "NEXT": "Próximo", "NO": "Não", + "NON_ORGANIC": "Não orgânico", + "NONE": "nenhum", "NOT_SURE": "Não tem certeza", "NOTES": "Notas", "OK": "Ok", "OPTIONAL": "(Opcional)", "OR": "ou", + "ORGANIC": "Orgânico", "OTHER": "Outro", "PAST": "Passado", "PLANNED": "Planejado", + "PREVIOUS": "Anterior", + "PRICE": "Preço", "PROCEED": "Continuar", + "PROPERTY_UNKNOWN": "{{property}} desconhecido", "QUANTITY": "Quantidade", + "REMOVE": "Remover", "REMOVE_ITEM": "Remover item", "REQUIRED": "Obrigatório", "RETIRE": "Remover", @@ -56,16 +80,29 @@ "SAVE_CHANGES": "Salvar mudanças", "SEARCH": "Buscar", "SELECT": "Selecionar", + "SELECT_ALL": "Selecionar tudo", + "SELECTED_COUNT": "{{count}} selecionado", + "SELECTED_COUNT_one": "{{count}} selecionado", + "SELECTED_COUNT_many": "{{count}} selecionado", + "SELECTED_COUNT_other": "{{count}} selecionado", + "SELECT_OR_ADD_YOUR_OWN": "Selecionar ou adicionar tipo personalizado", + "SET": "Aplicar", + "SHOWING_ALL": "Mostrando tudo", "SKIP": "Pular", "SORRY": "Desculpa", "SUBMIT": "Enviar", "SUBMITTING": "Enviando...", "THATS_FINE": "Está bom", "TODAY": "Hoje", + "TOTAL": "Total", + "TRANSITIONING": "Em transição", "TYPE": "Tipo", + "TYPES": "Tipos", + "UNKNOWN": "Desconhecido", "UPDATE": "Atualizar", "UPLOAD": "Carregar", "UPLOADING": "Carregando", + "USE": "Uso (s)", "WORD_LIMIT_ERROR": "Somente {{value}} caractéres podem ser exibidos", "YEAR": "Ano", "YES": "Sim", diff --git a/packages/webapp/public/locales/pt/message.json b/packages/webapp/public/locales/pt/message.json index 47bba91724..ce9ccc024d 100644 --- a/packages/webapp/public/locales/pt/message.json +++ b/packages/webapp/public/locales/pt/message.json @@ -1,4 +1,18 @@ { + "ANIMALS": { + "FAILED_CREATE_ANIMALS": "Falha ao criar animais", + "FAILED_CREATE_BATCHES": "Falha ao criar lotes", + "FAILED_REMOVE_ANIMALS": "Falha ao remover os animais selecionados", + "FAILED_REMOVE_BATCHES": "Falha ao remover lotes selecionados", + "FAILED_UPDATE_ANIMAL": "Falha ao atualizar o animal", + "FAILED_UPDATE_BATCH": "Falha ao atualizar lote", + "SUCCESS_CREATE_ANIMALS": "Animais criados com sucesso", + "SUCCESS_CREATE_BATCHES": "Lotes criados com sucesso", + "SUCCESS_REMOVE_ANIMALS": "Animais selecionados removidos com sucesso", + "SUCCESS_REMOVE_BATCHES": "Lotes selecionados removidos com sucesso", + "SUCCESS_UPDATE_ANIMAL": "Animal atualizado com sucesso", + "SUCCESS_UPDATE_BATCH": "Lote atualizado com sucesso" + }, "ASSIGN_TASK": { "ERROR": "Erro em atribuir as tarefas", "SUCCESS": "Tarefas foram atribuídas com sucesso" @@ -40,7 +54,9 @@ "ERROR": { "ADD": "Falha ao adicionar novas despesas", "DELETE": "Falha ao excluir despesas", - "UPDATE": "Falha ao atualizar despesas!" + "UPDATE": "Falha ao atualizar despesas!", + "EXPENSE_DELETED": "Essa despesa não existe mais", + "EXPENSE_TYPE_DELETED": "Esse tipo de despesa foi eliminado" }, "SUCCESS": { "ADD": "Novas despesas adicionadas com sucesso!", @@ -70,6 +86,11 @@ "UPDATE": "Informação da fazenda atualizada com sucesso!" } }, + "HELP_REQUEST": { + "ERROR": { + "SEND": "Algo deu errado ao enviar seu feedback. Por favor, tente novamente." + } + }, "LOG_HARVEST": { "ERROR": { "ADD_USE_TYPE": "Falha ao adicionar uso/destino de colheita personalizado", @@ -141,7 +162,8 @@ }, "REVENUE": { "ERROR": { - "EDIT": "Falha ao atualizar a receita" + "EDIT": "Falha ao atualizar a receita", + "REVENUE_TYPE_DELETED": "Esse tipo de receita foi eliminado" }, "SUCCESS": { "EDIT": "Receita atualizada com sucesso" @@ -163,7 +185,8 @@ "ERROR": { "ADD": "Falha ao adicionar venda", "DELETE": "Falha de excluir venda nova", - "UPDATE": "Falha de atualizar venda" + "UPDATE": "Falha de atualizar venda", + "SALE_DELETED": "Essa venda não existe mais" }, "SUCCESS": { "ADD": "Venda adicionada com sucesso", diff --git a/packages/webapp/public/locales/pt/task.json b/packages/webapp/public/locales/pt/task.json index 156d526cc9..3d86cfc173 100644 --- a/packages/webapp/public/locales/pt/task.json +++ b/packages/webapp/public/locales/pt/task.json @@ -10,20 +10,16 @@ "WEEDING": "Capina", "WASH_AND_PACK_TASK": "Lavar e empacotar", "PEST_CONTROL_TASK": "Controle de pragas", - "PEST_CONTROL_TASK_LOWER": "controle de pragas", "OTHER_TASK": "Outro", "BREAK_TASK": "Descanso", "SOIL_TASK": "Resultados da amostra de solo", "IRRIGATION_TASK": "Irrigar", - "IRRIGATION_TASK_LOWER": "irrigar", "TRANSPORT_TASK": "Transporte", "FIELD_WORK_TASK": "Trabalho de campo", - "FIELD_WORK_TASK_LOWER": "trabalho de campo", "PLANT_TASK": "Plantio", "TRANSPLANT_TASK": "Transplante", "SOCIAL_TASK": "Social", "CLEANING_TASK": "Limpar", - "CLEANING_TASK_LOWER": "limpar", "SOIL_AMENDMENT_TASK": "Adubação e correção de solo", - "SOIL_AMENDMENT_TASK_LOWER": "adubação e correção de solo" + "MOVEMENT_TASK": "Movimento" } diff --git a/packages/webapp/public/locales/pt/translation.json b/packages/webapp/public/locales/pt/translation.json index 4426a25883..75b13b8e0b 100644 --- a/packages/webapp/public/locales/pt/translation.json +++ b/packages/webapp/public/locales/pt/translation.json @@ -1,4 +1,68 @@ { + "ADD_ANIMAL": { + "ADD_ANIMALS": "Adicionar animais", + "ADD_ANIMALS_FLOW": "adição de animais", + "ADD_ANIMALS_TITLE": "Adicionar Animais", + "ADD_DETAILS_INFO": "Preencha os detalhes dos animais abaixo ou salve e continue mais tarde.", + "ADD_TO_INVENTORY": "Adicionar animais ao seu inventário", + "ANIMAL_BASICS": "Informações básicas sobre os animais", + "ANIMAL_DETAILS": "Detalhes sobre os animais", + "ANIMALS_TOTAL_one": "total de {{count}} animais", + "ANIMALS_TOTAL_other": "total de {{count}} animais", + "ANIMALS_UNSPECIFIED_one": "{{count}} não especificado", + "ANIMALS_UNSPECIFIED_other": "{{count}} não especificado", + "BATCH_NAME": "Nome do lote", + "BATCH_NAME_PLACEHOLDER": "Digite o nome do lote", + "BREED": "Raça", + "BREED_PLACEHOLDER_DISABLED": "Por favor, selecione um tipo primeiro", + "CREATE_INDIVIDUAL_PROFILES": "Criar perfis individuais de animais", + "CREATE_INDIVIDUAL_PROFILES_TOOLTIP": "Selecione esta opção se quiser acompanhar e gerenciar cada animal separadamente", + "EDIT_BASIC_INFO": "Editar informações básicas", + "GENERAL_DETAILS": "Detalhes gerais", + "GENERAL_DETAILS_BATCH": "Detalhes gerais do lote", + "GROUP_NAME": "Nome do grupo", + "GROUP_NAME_PLACEHOLDER": "Digite o nome do grupo", + "ORIGIN": "Origem", + "ORIGIN_BATCH": "Origem do lote", + "OTHER_DETAILS": "Outros detalhes", + "OTHER_DETAILS_BATCH": "Outros detalhes do lote", + "OUT_OF_COUNT_one": "{{animalNumber}} de {{count}}", + "OUT_OF_COUNT_other": "{{animalNumber}} de {{count}}", + "PLACEHOLDER": { + "BATCH_NAME": "Digite o nome do lote", + "DAM": "Digite uma matriz", + "NAME": "Digite um nome", + "OTHER_DETAILS": "Insira uma descrição", + "OTHER_USE": "Descreva o outro uso", + "PRICE": "Quanto isso custou?", + "SIRE": "Digite um reprodutor", + "SUPPLIER": "Digite um fornecedor", + "TAG_COLOUR": "De que cor é a etiqueta?", + "TAG_NUMBER": "Digite o número da etiqueta", + "TAG_TYPE": "Qual é o tipo da etiqueta?", + "TAG_TYPE_INFO": "Por favor, descreva seu tipo de etiqueta" + }, + "REMOVE_CONFIRM": "Realmente deseja eliminar?", + "SELECT_SEXES": "Selecione os sexos", + "SEX_DETAIL": "Sexo", + "SEX_DETAIL_ERROR_one": "Número máximo de animais: {{count}}", + "SEX_DETAIL_ERROR_other": "Número máximo de animais: {{count}}", + "SEX_DETAIL_ERROR_POPOVER_one": "Você não pode ter mais do que {{count}} animal", + "SEX_DETAIL_ERROR_POPOVER_other": "Você não pode ter mais do que {{count}} animais", + "SPECIFY_SEX": "Especifique o sexo", + "SUMMARY": { + "ADD_MORE_DETAILS": "Adicione mais detalhes aos seus animais", + "ALL_DONE": "Tudo pronto!", + "ANIMAL_SUMMARY_COUNT_one": "{{count}} animal individual", + "ANIMAL_SUMMARY_COUNT_other": "{{count}} animais individuais", + "BATCH_SUMMARY_COUNT_one": "{{count}} lote", + "BATCH_SUMMARY_COUNT_other": "{{count}} lotes", + "HERE_IS_SUMMARY": "Aqui está um resumo dos seus animais adicionados:", + "MAIN": "Você adicionou {{animalCount}} {{and}} {{batchCount}} ao seu inventário com sucesso." + }, + "TYPE": "Tipo", + "UNIQUE_DETAILS": "Detalhes únicos" + }, "ADD_FARM": { "ADDRESS_IS_REQUIRED": "É necessário informar um endereço", "DISABLE_GEO_LOCATION": "Os serviços de localização devem estar ativados para encontrar sua localização atual.", @@ -53,6 +117,7 @@ "ASSIGN_TASK": "Atribuir tarefa", "ASSIGNEE": "Responsável", "CANCEL": "criação de tarefa", + "CANT_FIND_INFO_TASK": "Você também pode criar seus tipos de tarefa personalizados!", "CLEANING_VIEW": { "ESTIMATED_WATER": "Uso estimado de água", "IS_PERMITTED": "O agente de limpeza está na lista de substâncias permitidas?", @@ -99,6 +164,7 @@ "IRRIGATION_VIEW": { "BRAND_TOOLTIP": "Esta tarefa é para regar seu cultivo. Se você deseja instalar a irrigação, crie uma tarefa de trabalho de campo.", "CALCULATE_WATER_USAGE": "Calcular uso de água", + "CALCULATE_WATER_USAGE_WARNING": "Para os cultivos silvestres, a estimativa do consumo de água pela profundidade não está disponível.", "DEFAULT_APPLICATION_DEPTH": "Definir como profundidade de aplicação padrão para esta área", "DEFAULT_LOCATION_FLOW_RATE": "Definir como vazão padrão para esta área", "DEPTH": "Profundidade", @@ -136,8 +202,18 @@ "WHAT_TYPE_OF_IRRIGATION": "Qual o tipo de irrigação?" }, "MANAGE_CUSTOM_TASKS": "Gerenciar tarefas personalizadas", + "MOVEMENT_VIEW": { + "MOVEMENT_PURPOSE_LABEL": "Qual é a finalidade deste movimento?", + "MOVEMENT_PURPOSE_PLACEHOLDER": "Selecione a finalidade deste movimento", + "OTHER_PURPOSE_EXPLANATION_LABEL": "Explicação", + "OTHER_PURPOSE_EXPLANATION_PLACEHOLDER": "Por favor, descreva a finalidade deste movimento" + }, + "NEED_ANIMAL_LOCATION_MOVEMENT": "Você precisará de uma localização ou área onde os animais podem ser movidos. Vá ao mapa para criar uma localização do animal.", "NEED_MANAGEMENT_PLAN": "Você precisará de um plano de cultivo ativo ou planejado antes de poder agendar uma tarefa de colheita ou tarefa de transplante. Vá para o catálogo de safras para criar um plano agora.", + "NO_ANIMAL_LOCATION": "Nenhum local elegível para animais", "NO_MANAGEMENT_PLAN": "Não há plano de cultivo de safra elegível", + "NOTES_LABEL": "Algo específico para adicionar relacionado a esta tarefa?", + "NOTES_PLACEHOLDER": "Adicione quaisquer instruções ou especificações para o responsável", "PEST_CONTROL_VIEW": { "BIOLOGICAL_CONTROL": "Controle biológico", "FLAME_WEEDING": "Capina com fogo", @@ -196,11 +272,64 @@ "TASK": "tarefa", "TASK_NOTES_CHAR_LIMIT": "As observações não podem exceder 10.000 caractéres", "TELL_US_ABOUT_YOUR_TASK_TYPE_ONE": "Conte-nos sobre esta tarefa", + "THIS_TASK_IS_COMPLETED": "Esta tarefa já foi concluída", + "THIS_TASK_IS_COMPLETED_EXPLANATION": "Ao clicar em \"Salvar\", esta tarefa será salva imediatamente. Em seguida, será solicitado que você a conclua.", "TRANSPLANT_METHOD": "Método de transplante", "WAGE_OVERRIDE": "Substituição de salário", "WHAT_PLANTING_METHOD": "Qual é o método de transplante?", "WILD_CROP": "Cultivos silvestres" }, + "ANIMAL": { + "ADD_MORE_BODY_TEXT": "Você tem outro tipo de animal ou uma raça diferente?", + "ADD_MORE_BUTTON": "Adicionar mais animais", + "ANIMAL_BREED": "Raça", + "ANIMAL_COUNT_one": "{{count}} animal", + "ANIMAL_COUNT_other": "{{count}} animais", + "ANIMAL_GROUPS": "Grupo", + "ANIMAL_ID": "ID", + "ANIMAL_IDENTIFICATION": "Identificação", + "ANIMAL_LOCATIONS": "Local", + "ANIMAL_SEXES": "Sexo", + "ANIMAL_TYPE": "Tipo", + "ATTRIBUTE": { + "ANIMAL_IMAGE": "Imagem do animal", + "BATCH_IMAGE": "Imagem do lote", + "BATCH_NAME": "Nome do lote", + "DAM": "Matriz", + "DATE_OF_BIRTH": "Data de nascimento", + "LITEFARM_ID": "LiteFarm ID", + "ORGANIC_STATUS": "Status de transição orgânica", + "OTHER_DETAILS_ANIMAL": "Outros detalhes sobre os animais", + "OTHER_DETAILS_BATCH": "Detalhes do lote", + "OTHER_USE": "Outro uso", + "SIRE": "Reprodutor", + "SUPPLIER": "Fornecedor", + "TAG_COLOUR": "Cor da etiqueta", + "TAG_NUMBER": "Número da etiqueta", + "TAG_TYPE": "Tipo de etiqueta", + "WEANING_DATE": "Data de desmame" + }, + "BATCH": "Lote", + "BETA_SPOTLIGHT_HEADING": "Apresentando o Novo Recurso de Animais", + "EDIT_ANIMAL_FLOW": "edição", + "FILTER": { + "BATCHES": "Lotes", + "BATCHES_OR_INDIVIDUALS": "Lotes ou Indivíduos", + "FEMALE": "Fêmea", + "INDIVIDUALS": "Indivíduos", + "MALE": "Macho", + "TITLE": "Filtrar animais" + }, + "REMOVE_ANIMAL": "Remover animais", + "SEARCH_INVENTORY_PLACEHOLDER": "Pesquise em seu inventário", + "SHOWING_RESULTS_WITH_COUNT_one": "Mostrando {{count}} resultado", + "SHOWING_RESULTS_WITH_COUNT_many": "Mostrando {{count}} resultado", + "SHOWING_RESULTS_WITH_COUNT_other": "Mostrando {{count}} resultados", + "TABS": { + "BASIC_INFO": "Informações básicas", + "TASKS": "Tarefas" + } + }, "BED_PLAN": { "LENGTH_OF_BED": "Comprimento dos canteiros ", "NUMBER_0F_BEDS": "Nº de canteiros", @@ -822,7 +951,7 @@ }, "TUTORIALS": "Tutoriais de mapas", "UNABLE_TO_RETIRE": { - "BODY": "Você só pode retirar locais que não tenham cultivos, tarefas ativas ou planejadas.", + "BODY": "Você só pode remover áreas que não tenham cultivos, tarefas ativas ou planejadas.", "TITLE": "Não é possível retirar" }, "WATER_VALVE": { @@ -853,13 +982,18 @@ } }, "FILE_SIZE_MODAL": { - "BODY": "Os arquivos não podem exceder 10 MB.", + "BODY": "Os arquivos não podem exceder {{size}} MB.", "TITLE": "Tamanho de arquivo muito grande" }, "FILTER": { + "CLEAR": "limpar", "CLEAR_ALL": "Limpar tudo", "CLEAR_ALL_FILTERS": "Remover todos os filtros", - "SELECT_ALL": "Selecionar tudo" + "SELECT_ALL": "Selecionar tudo", + "SELECTED_one": "{{count}} selecionado", + "SELECTED_other": "{{count}} selecionado", + "SHOWING_ALL": "Mostrando tudo", + "SHOWING_ALL_DEFAULT": "Mostrando Tudo (Padrão)" }, "FINANCES": { "ACTUAL_REVENUE": { @@ -921,6 +1055,8 @@ "HELP": { "ATTACHMENT_LABEL": "Carregar captura de tela ou arquivo", "EMAIL": "E-mail", + "FEEDBACK_INVITATION": "Obtenha ajuda ou nos dê a sua opinião", + "SEND_US_FEEDBACK": "Envie-nos sua opinião", "MESSAGE_LABEL": "Mensagem", "OPTIONS": { "OTHER": "Outro", @@ -930,7 +1066,6 @@ }, "PREFERRED_CONTACT": "Método de contato preferido", "REQUIRED_LABEL": "Campo Obrigatório", - "TITLE": "Solicite Ajuda", "TYPE_SUPPORT_LABEL": "Tipo de suporte", "TYPE_SUPPORT_PLACEHOLDER": "Escolha o tipo de suporte", "WHATSAPP": "WhatsApp", @@ -939,6 +1074,11 @@ "HOME": { "GREETING": "Bom dia, " }, + "HOVERPILL": { + "PLUS_OTHERS_COUNT_one": "+ {{count}} outro", + "PLUS_OTHERS_COUNT_many": "+ {{count}} outros", + "PLUS_OTHERS_COUNT_other": "+ {{count}} outros" + }, "INSIGHTS": { "BIODIVERSITY": { "AMPHIBIANS": "Anfíbios", @@ -1113,7 +1253,7 @@ "COMPLETE_DATE": "Fecha completada", "COMPLETE_PLAN": "Completar plano", "DATE_OF_CHANGE": "Data de alteração da situação", - "FUTURE_DATE_INVALID": "Pode não ser no futuro", + "FUTURE_DATE_INVALID": "Não pode ser no futuro", "NOTES_CHAR_LIMIT": "As observações não podem exceder 10.000 caractéres", "RATING": "Avaliar este plano de cultivo", "REASON": { @@ -1260,6 +1400,10 @@ }, "MENU": { "ACTUAL_REVENUES": "Receitas atuais", + "ANIMALS": "Animais", + "ANIMALS_GROUPS": "Grupos", + "ANIMALS_INVENTORY": "Inventário", + "ANIMALS_LOCATION": "Locais", "CERTIFICATIONS": "Certificações", "CROPS": "Cultivos", "DOCUMENTS": "Documentos", @@ -1458,6 +1602,22 @@ "LITEFARM_UPDATED": "LiteFarm v{{version}} já está disponível!", "NOTES": "Nota de lançamento" }, + "REMOVE_ANIMALS": { + "CREATED_IN_ERROR": "Criado por engano", + "CULLED": "Abatido", + "EXPLANATION": "Explicação", + "MORE_DETAILS": "Você quer fornecer mais detalhes?", + "NATURAL_DEATH": "Morte natural", + "REMOVAL_REASONS": "Motivos da remoção", + "REMOVE_ANIMALS": "Remover animais", + "REMOVED_AND_ARCHIVED": "Estes animais foram removidos com sucesso de seu sítio e estarão disponíveis no histórico do seu inventário.", + "SLAUGHTERED_FOR_CONSUMPTION": "Abatido para consumo", + "SLAUGHTERED_FOR_SALE": "Abatido para venda", + "SOLD": "Vendido", + "WHY": "Conte-nos por que você está removendo esses animais", + "WILL_BE_ARCHIVED": "Estes animais serão removidos do seu inventário ativo", + "WILL_BE_PERMANENTLY_REMOVED": "Estes animais serão permanentemente removidos de seu sítio" + }, "REPEAT_PLAN": { "AFTER": "Após", "COMPLETION": "conclusão", @@ -1498,7 +1658,7 @@ }, "REQUEST_CONFIRMATION_MODAL": { "BUTTON": "Entendi", - "DESCRIPTION": "Alguém entrará em contato em 48 horas.", + "DESCRIPTION": "Alguém entrará em contato em breve.", "TITLE": "Pedido de ajuda enviado" }, "REVENUE": { @@ -1611,6 +1771,11 @@ "NO_RESULTS_FOR": "Desculpe, não encontramos nenhum resultado para seu termo de pesquisa <1>'{{searchTerm}}'", "ZERO": "0 resultados" }, + "SECTION_HEADER": { + "ANIMALS_GROUPS": "Grupos de animais", + "ANIMALS_INVENTORY": "Inventário de animais", + "ANIMALS_LOCATION": "Localização dos animais" + }, "SENSOR": { "BRAND": "Marca", "BRAND_HELPTEXT": "As marcas com as quais o LiteFarm pode se integrar são mostradas abaixo. Se você não quiser mais usar esta marca de sensor, tente removê-lo.", @@ -1768,6 +1933,7 @@ "LABOUR_ISSUE": "Questão trabalhista", "MACHINERY_ISSUE": "Problema de maquinário", "MARKET_PROBLEM": "Problema na comercialização", + "NO_ANIMALS": "Auto-abandonado: Nenhum animal para esta tarefa", "OTHER": "Outro", "SCHEDULING_ISSUE": "Problema de planejamento", "WEATHER": "Clima" @@ -1787,9 +1953,14 @@ "ADD_TASK": "Criar tarefa", "ADD_TASK_FLOW": "criação de tarefa", "AMOUNT_TO_ALLOCATE": "Quantidade a ser alocada", + "ANIMALS": "Animais", + "ANIMALS_AT_LEAST_ONE_TO_COMPLETE": "Pelo menos um animal deve ser selecionado para concluir esta tarefa. Para remover todos os animais, abandone a tarefa.", + "ANIMAL_MOVING_TO_LOCATION": "Movendo para:", + "ANIMAL_MOVEMENT_EXPANDING_SUMMARY_TITLE": "Animais nesta tarefa", "CARD": { "MULTIPLE_CROPS": "Múltiplos cultivos", - "MULTIPLE_LOCATIONS": "Múltiplos locais" + "MULTIPLE_LOCATIONS": "Múltiplos locais", + "NO_LOCATION": "Sem localização" }, "COMPLETE": { "DATE": "Data de conclusão", @@ -1845,6 +2016,7 @@ "HOW_WILL_HARVEST_BE_USED": "Como a colheita vai ser utilizada?", "IRRIGATION_LOCATION": "Selecione uma área de irrigação", "LOCATIONS": "Local (is)", + "NO_LOCATIONS_FOR_TASK": "Não é necessária uma localização específica para essa tarefa", "NO_TASKS_TO_DISPLAY": "Não há tarefas para exibir.", "NO_WORK_DONE": "Nenhum trabalho foi concluído", "PAGE_TITLE": "Tarefas", @@ -1853,6 +2025,7 @@ "QUANTITY_CANNOT_EXCEED": "A quantidade de colheita usada não pode exceder a quantidade a ser alocada", "RATE_THIS_TASK": "Avalie esta tarefa", "REMOVE_HARVEST_USE": "Remover", + "SELECT_ANIMALS": "Selecione os animais", "SELECT_DATE": "Selecionar a data da tarefa", "SELECT_TASK_LOCATIONS": "Selecionar o(s) local(is) da tarefa", "SELECT_WILD_CROP": "Esta tarefa é para um cultivo silvestre", @@ -1885,6 +2058,13 @@ "MAYBE_LATER": "Talvez apareça mais tarde.", "UNKNOWN_RECORD": "Registro desconhecido" }, + "UPLOADER": { + "CHANGE_IMAGE": "Alterar imagem", + "CLICK_TO_UPLOAD": "Clique para enviar", + "DRAG_DROP": "ou arraste e solte", + "REMOVE_IMAGE": "Remover imagem", + "UPLOAD_IMAGE": "Enviar imagem" + }, "WAGE": { "ERROR": "Salário/vencimento precisa ser um número decimal válido não-negativo", "HOURLY_WAGE": "Salário por hora", @@ -1900,5 +2080,11 @@ }, "YEAR_SELECTOR": { "TITLE": "Selecione o ano" + }, + "BADGE": { + "BETA": { + "TITLE": "Beta", + "ANIMALS_CONTENT": "Dê uma olhada nas nossas novas funcionalidades de gestão de animais — agora na versão beta! Seu feedback é crucial à medida que melhoramos este recurso. Por favor, compartilhe quaisquer erros ou sugestões que você encontrar. Agradecemos sua ajuda para melhorar o LiteFarm! Aprenda mais sobre a versão beta aqui" + } } } diff --git a/packages/webapp/src/App.jsx b/packages/webapp/src/App.jsx index 0a0916042b..425bb01112 100644 --- a/packages/webapp/src/App.jsx +++ b/packages/webapp/src/App.jsx @@ -24,10 +24,12 @@ import { NotistackSnackbar } from './containers/Snackbar/NotistackSnackbar'; import { OfflineDetector } from './containers/hooks/useOfflineDetector/OfflineDetector'; import styles from './styles.module.scss'; import Routes from './routes'; +import { ANIMALS_URL } from './util/siteMapConstants'; function App() { const [isCompactSideMenu, setIsCompactSideMenu] = useState(false); - const FULL_WIDTH_ROUTES = ['/map']; + const [isFeedbackSurveyOpen, setFeedbackSurveyOpen] = useState(false); + const FULL_WIDTH_ROUTES = ['/map', ANIMALS_URL]; const isFullWidth = FULL_WIDTH_ROUTES.some((path) => matchPath(history.location.pathname, path)); return ( @@ -37,6 +39,8 @@ function App() { history={history} isCompactSideMenu={isCompactSideMenu} setIsCompactSideMenu={setIsCompactSideMenu} + isFeedbackSurveyOpen={isFeedbackSurveyOpen} + setFeedbackSurveyOpen={setFeedbackSurveyOpen} >
@@ -49,9 +53,14 @@ function App() { root: clsx(styles.root, isCompactSideMenu ? styles.isCompact : styles.isExpanded), containerRoot: styles[`containerRoot${isCompactSideMenu ? 'WithCompactMenu' : ''}`], }} - content={(key, message) => } + // https://notistack.com/features/customization#custom-component + Components={{ common: NotistackSnackbar }} > - +
diff --git a/packages/webapp/src/apiConfig.js b/packages/webapp/src/apiConfig.js index f22ec224e2..74e1ae1e92 100644 --- a/packages/webapp/src/apiConfig.js +++ b/packages/webapp/src/apiConfig.js @@ -74,6 +74,19 @@ export const alertsUrl = `${URI}/notification_user/subscribe`; export const notificationsUrl = `${URI}/notification_user`; export const clearAlertsUrl = `${URI}/notification_user/clear_alerts`; export const sensorUrl = `${URI}/sensor`; +export const animalsUrl = `${URI}/animals`; +export const animalBatchesUrl = `${URI}/animal_batches`; +export const customAnimalBreedsUrl = `${URI}/custom_animal_breeds`; +export const customAnimalTypesUrl = `${URI}/custom_animal_types`; +export const defaultAnimalBreedsUrl = `${URI}/default_animal_breeds`; +export const defaultAnimalTypesUrl = `${URI}/default_animal_types`; +export const animalSexesUrl = `${URI}/animal_sexes`; +export const animalIdentifierTypesUrl = `${URI}/animal_identifier_types`; +export const animalIdentifierColorsUrl = `${URI}/animal_identifier_colors`; +export const animalMovementPurposesUrl = `${URI}/animal_movement_purposes`; +export const animalOriginsUrl = `${URI}/animal_origins`; +export const animalUsesUrl = `${URI}/animal_uses`; +export const animalRemovalReasonsUrl = `${URI}/animal_removal_reasons`; export const soilAmendmentMethodsUrl = `${URI}/soil_amendment_methods`; export const soilAmendmentPurposesUrl = `${URI}/soil_amendment_purposes`; export const soilAmendmentFertiliserTypesUrl = `${URI}/soil_amendment_fertiliser_types`; @@ -122,6 +135,19 @@ export default { alertsUrl, notificationsUrl, sensorUrl, + animalsUrl, + animalBatchesUrl, + customAnimalBreedsUrl, + customAnimalTypesUrl, + defaultAnimalBreedsUrl, + defaultAnimalTypesUrl, + animalSexesUrl, + animalIdentifierTypesUrl, + animalIdentifierColorsUrl, + animalMovementPurposesUrl, + animalOriginsUrl, + animalUsesUrl, + animalRemovalReasonsUrl, soilAmendmentMethodsUrl, soilAmendmentPurposesUrl, soilAmendmentFertiliserTypesUrl, diff --git a/packages/webapp/src/assets/colors.scss b/packages/webapp/src/assets/colors.scss index 5c3b10c702..c62c92fc1f 100644 --- a/packages/webapp/src/assets/colors.scss +++ b/packages/webapp/src/assets/colors.scss @@ -14,6 +14,7 @@ --secondaryGreen800: #495c51; --secondaryGreen200: #c1e6d2; --secondaryGreen50: #f2faf5; + --yellow900: #6b4d00; --yellow700: #ffb800; --yellow400: #fed450; --yellow300: #fce38d; @@ -81,6 +82,7 @@ --Colors-Primary-Primary-teal-600: #308f85; --Colors-Primary-Primary-teal-700: #266f68; --Colors-Primary-Primary-teal-700-2: #028577; + --Colors-Primary-Primary-teal-800: #1d5650; --Colors-Primary-Primary-teal-900: #16423d; --Colors-Secondary-Secondary-green-50: #f2faf5; @@ -107,6 +109,8 @@ --Btn-primary-hover: #e8a700; --Btn-primary-disabled: #e7ebf2; + --Brand-Accents-colors-and-overlays-Accent-red: #eb6034; + --Colors-Accent-Accent-yellow-50: #fff8e6; --Colors-Accent-Accent-yellow-100: #ffe9b0; --Colors-Accent-Accent-yellow-400: #ffc633; diff --git a/packages/webapp/src/assets/images/Icon.svg b/packages/webapp/src/assets/images/Icon.svg new file mode 100644 index 0000000000..52fea2a774 --- /dev/null +++ b/packages/webapp/src/assets/images/Icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/webapp/src/assets/images/animals/add-animal.svg b/packages/webapp/src/assets/images/animals/add-animal.svg new file mode 100644 index 0000000000..41de7e2034 --- /dev/null +++ b/packages/webapp/src/assets/images/animals/add-animal.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/webapp/src/assets/images/animals/alpaca-icon.svg b/packages/webapp/src/assets/images/animals/alpaca-icon.svg new file mode 100644 index 0000000000..6dd8dfcd6e --- /dev/null +++ b/packages/webapp/src/assets/images/animals/alpaca-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/webapp/src/assets/images/animals/animal-photo-default.svg b/packages/webapp/src/assets/images/animals/animal-photo-default.svg new file mode 100644 index 0000000000..2663a96b7a --- /dev/null +++ b/packages/webapp/src/assets/images/animals/animal-photo-default.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/packages/webapp/src/assets/images/animals/batch-green.svg b/packages/webapp/src/assets/images/animals/batch-green.svg new file mode 100644 index 0000000000..41c507b25a --- /dev/null +++ b/packages/webapp/src/assets/images/animals/batch-green.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/packages/webapp/src/assets/images/animals/batch.svg b/packages/webapp/src/assets/images/animals/batch.svg new file mode 100644 index 0000000000..1137930866 --- /dev/null +++ b/packages/webapp/src/assets/images/animals/batch.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/packages/webapp/src/assets/images/animals/cattle-icon.svg b/packages/webapp/src/assets/images/animals/cattle-icon.svg new file mode 100644 index 0000000000..715097a2ac --- /dev/null +++ b/packages/webapp/src/assets/images/animals/cattle-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/webapp/src/assets/images/animals/chevron-down.svg b/packages/webapp/src/assets/images/animals/chevron-down.svg new file mode 100644 index 0000000000..805cbba5c7 --- /dev/null +++ b/packages/webapp/src/assets/images/animals/chevron-down.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/packages/webapp/src/assets/images/animals/chicken-icon.svg b/packages/webapp/src/assets/images/animals/chicken-icon.svg new file mode 100644 index 0000000000..e927adea99 --- /dev/null +++ b/packages/webapp/src/assets/images/animals/chicken-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/webapp/src/assets/images/animals/custom-animal-icon.svg b/packages/webapp/src/assets/images/animals/custom-animal-icon.svg new file mode 100644 index 0000000000..8f994b6d6d --- /dev/null +++ b/packages/webapp/src/assets/images/animals/custom-animal-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/webapp/src/assets/images/animals/goat-icon.svg b/packages/webapp/src/assets/images/animals/goat-icon.svg new file mode 100644 index 0000000000..acf052dde9 --- /dev/null +++ b/packages/webapp/src/assets/images/animals/goat-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/webapp/src/assets/images/animals/pig-icon.svg b/packages/webapp/src/assets/images/animals/pig-icon.svg new file mode 100644 index 0000000000..4451df56f1 --- /dev/null +++ b/packages/webapp/src/assets/images/animals/pig-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/webapp/src/assets/images/animals/rabbit-icon.svg b/packages/webapp/src/assets/images/animals/rabbit-icon.svg new file mode 100644 index 0000000000..80f64f68e6 --- /dev/null +++ b/packages/webapp/src/assets/images/animals/rabbit-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/webapp/src/assets/images/animals/relaxed-farmer.svg b/packages/webapp/src/assets/images/animals/relaxed-farmer.svg new file mode 100644 index 0000000000..8ba48f8e95 --- /dev/null +++ b/packages/webapp/src/assets/images/animals/relaxed-farmer.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/packages/webapp/src/assets/images/animals/remove-animal.svg b/packages/webapp/src/assets/images/animals/remove-animal.svg new file mode 100644 index 0000000000..75abcdc550 --- /dev/null +++ b/packages/webapp/src/assets/images/animals/remove-animal.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/packages/webapp/src/assets/images/animals/removed-animal-icon.svg b/packages/webapp/src/assets/images/animals/removed-animal-icon.svg new file mode 100644 index 0000000000..3a61d212e8 --- /dev/null +++ b/packages/webapp/src/assets/images/animals/removed-animal-icon.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/packages/webapp/src/assets/images/animals/sheep-icon.svg b/packages/webapp/src/assets/images/animals/sheep-icon.svg new file mode 100644 index 0000000000..31b63d26cc --- /dev/null +++ b/packages/webapp/src/assets/images/animals/sheep-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/webapp/src/assets/images/animals/trash_icon_new.svg b/packages/webapp/src/assets/images/animals/trash_icon_new.svg new file mode 100644 index 0000000000..c3f6e4ffd6 --- /dev/null +++ b/packages/webapp/src/assets/images/animals/trash_icon_new.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/packages/webapp/src/assets/images/arrow-down-circle.svg b/packages/webapp/src/assets/images/arrow-down-circle.svg new file mode 100644 index 0000000000..0d556e11a8 --- /dev/null +++ b/packages/webapp/src/assets/images/arrow-down-circle.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/packages/webapp/src/assets/images/buttons/chevron-left.svg b/packages/webapp/src/assets/images/buttons/chevron-left.svg new file mode 100644 index 0000000000..d800304752 --- /dev/null +++ b/packages/webapp/src/assets/images/buttons/chevron-left.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/webapp/src/assets/images/buttons/chevron-right.svg b/packages/webapp/src/assets/images/buttons/chevron-right.svg new file mode 100644 index 0000000000..9fb06938b6 --- /dev/null +++ b/packages/webapp/src/assets/images/buttons/chevron-right.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/webapp/src/assets/images/check-circle.svg b/packages/webapp/src/assets/images/check-circle.svg new file mode 100644 index 0000000000..6a42fcc190 --- /dev/null +++ b/packages/webapp/src/assets/images/check-circle.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/webapp/src/assets/images/checked-enabled.svg b/packages/webapp/src/assets/images/checked-enabled.svg index 6f3e8b00a8..0f3be83850 100644 --- a/packages/webapp/src/assets/images/checked-enabled.svg +++ b/packages/webapp/src/assets/images/checked-enabled.svg @@ -1,5 +1,4 @@ - - - - + + + diff --git a/packages/webapp/src/assets/images/chevron-down-2.svg b/packages/webapp/src/assets/images/chevron-down-2.svg new file mode 100644 index 0000000000..80b864dd69 --- /dev/null +++ b/packages/webapp/src/assets/images/chevron-down-2.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/webapp/src/assets/images/chevron-up.svg b/packages/webapp/src/assets/images/chevron-up.svg new file mode 100644 index 0000000000..809a3136d3 --- /dev/null +++ b/packages/webapp/src/assets/images/chevron-up.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/webapp/src/assets/images/clear-filters.svg b/packages/webapp/src/assets/images/clear-filters.svg new file mode 100644 index 0000000000..d06523f019 --- /dev/null +++ b/packages/webapp/src/assets/images/clear-filters.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/webapp/src/assets/images/clone.svg b/packages/webapp/src/assets/images/clone.svg new file mode 100644 index 0000000000..414abe4327 --- /dev/null +++ b/packages/webapp/src/assets/images/clone.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/packages/webapp/src/assets/images/create-task.svg b/packages/webapp/src/assets/images/create-task.svg new file mode 100644 index 0000000000..6c252b163a --- /dev/null +++ b/packages/webapp/src/assets/images/create-task.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/packages/webapp/src/assets/images/finance/Crop-icn.svg b/packages/webapp/src/assets/images/finance/Crop-icn.svg index c6c33edf37..59ba7abf24 100644 --- a/packages/webapp/src/assets/images/finance/Crop-icn.svg +++ b/packages/webapp/src/assets/images/finance/Crop-icn.svg @@ -1,18 +1,3 @@ - - - - - - - - - - - - - - - - - + + diff --git a/packages/webapp/src/assets/images/finance/Crop-sale-icn.svg b/packages/webapp/src/assets/images/finance/Crop-sale-icn.svg index ed87006184..3d264d9f85 100644 --- a/packages/webapp/src/assets/images/finance/Crop-sale-icn.svg +++ b/packages/webapp/src/assets/images/finance/Crop-sale-icn.svg @@ -1,11 +1,9 @@ - - - - - - - - - - + + + + + + + + diff --git a/packages/webapp/src/assets/images/finance/Custom-expense.svg b/packages/webapp/src/assets/images/finance/Custom-expense.svg index f426a20894..4d764c396e 100644 --- a/packages/webapp/src/assets/images/finance/Custom-expense.svg +++ b/packages/webapp/src/assets/images/finance/Custom-expense.svg @@ -1,8 +1,8 @@ - - - - - - - + + + + + + + diff --git a/packages/webapp/src/assets/images/finance/Custom-revenue.svg b/packages/webapp/src/assets/images/finance/Custom-revenue.svg index 6a9a2b38e2..20af9b8b66 100644 --- a/packages/webapp/src/assets/images/finance/Custom-revenue.svg +++ b/packages/webapp/src/assets/images/finance/Custom-revenue.svg @@ -1,8 +1,8 @@ - - - - - - - + + + + + + + diff --git a/packages/webapp/src/assets/images/finance/Equipment-icn.svg b/packages/webapp/src/assets/images/finance/Equipment-icn.svg index 8733222115..5965c252f6 100644 --- a/packages/webapp/src/assets/images/finance/Equipment-icn.svg +++ b/packages/webapp/src/assets/images/finance/Equipment-icn.svg @@ -1,8 +1,8 @@ - - - - - - - + + + + + + + diff --git a/packages/webapp/src/assets/images/finance/Expense-icn.svg b/packages/webapp/src/assets/images/finance/Expense-icn.svg index f4df725385..2c19d6df65 100644 --- a/packages/webapp/src/assets/images/finance/Expense-icn.svg +++ b/packages/webapp/src/assets/images/finance/Expense-icn.svg @@ -1,17 +1,4 @@ - - - - - - - - - - - - - - - - + + + diff --git a/packages/webapp/src/assets/images/finance/Fuel-icn.svg b/packages/webapp/src/assets/images/finance/Fuel-icn.svg index f62c9f9621..f26eb45401 100644 --- a/packages/webapp/src/assets/images/finance/Fuel-icn.svg +++ b/packages/webapp/src/assets/images/finance/Fuel-icn.svg @@ -1,7 +1,7 @@ - - - - - - + + + + + + diff --git a/packages/webapp/src/assets/images/finance/Infrastructure-icn.svg b/packages/webapp/src/assets/images/finance/Infrastructure-icn.svg index d304fbe333..3b1d17b90f 100644 --- a/packages/webapp/src/assets/images/finance/Infrastructure-icn.svg +++ b/packages/webapp/src/assets/images/finance/Infrastructure-icn.svg @@ -1,29 +1,29 @@ - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - + + diff --git a/packages/webapp/src/assets/images/finance/Labour-icn.svg b/packages/webapp/src/assets/images/finance/Labour-icn.svg index eab67d0ce6..552352dab3 100644 --- a/packages/webapp/src/assets/images/finance/Labour-icn.svg +++ b/packages/webapp/src/assets/images/finance/Labour-icn.svg @@ -1,11 +1,11 @@ - - - - - - - - - - + + + + + + + + + + diff --git a/packages/webapp/src/assets/images/finance/Land-icn.svg b/packages/webapp/src/assets/images/finance/Land-icn.svg index 43046e468d..1b9693160e 100644 --- a/packages/webapp/src/assets/images/finance/Land-icn.svg +++ b/packages/webapp/src/assets/images/finance/Land-icn.svg @@ -1,16 +1,16 @@ - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + diff --git a/packages/webapp/src/assets/images/finance/Machinery-icn.svg b/packages/webapp/src/assets/images/finance/Machinery-icn.svg index ca2690ade3..8428036224 100644 --- a/packages/webapp/src/assets/images/finance/Machinery-icn.svg +++ b/packages/webapp/src/assets/images/finance/Machinery-icn.svg @@ -1,19 +1,13 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/packages/webapp/src/assets/images/finance/Miscellaneous-icn.svg b/packages/webapp/src/assets/images/finance/Miscellaneous-icn.svg index 371b6326ba..5353c744c5 100644 --- a/packages/webapp/src/assets/images/finance/Miscellaneous-icn.svg +++ b/packages/webapp/src/assets/images/finance/Miscellaneous-icn.svg @@ -1,6 +1,6 @@ - - - - - + + + + + diff --git a/packages/webapp/src/assets/images/finance/Pest-icn.svg b/packages/webapp/src/assets/images/finance/Pest-icn.svg index 8245d31701..dd94113e45 100644 --- a/packages/webapp/src/assets/images/finance/Pest-icn.svg +++ b/packages/webapp/src/assets/images/finance/Pest-icn.svg @@ -1,7 +1,7 @@ - - - - - - + + + + + + diff --git a/packages/webapp/src/assets/images/finance/Profit-loss-icn-dark.svg b/packages/webapp/src/assets/images/finance/Profit-loss-icn-dark.svg deleted file mode 100644 index 524e1cac37..0000000000 --- a/packages/webapp/src/assets/images/finance/Profit-loss-icn-dark.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/packages/webapp/src/assets/images/finance/Profit-loss-icn-light.svg b/packages/webapp/src/assets/images/finance/Profit-loss-icn-light.svg deleted file mode 100644 index 32bdb8ebc3..0000000000 --- a/packages/webapp/src/assets/images/finance/Profit-loss-icn-light.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/packages/webapp/src/assets/images/finance/Profit-loss-icn-red-dark.svg b/packages/webapp/src/assets/images/finance/Profit-loss-icn-red-dark.svg deleted file mode 100644 index 9b379262bc..0000000000 --- a/packages/webapp/src/assets/images/finance/Profit-loss-icn-red-dark.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/packages/webapp/src/assets/images/finance/Profit-loss-icn-red-light.svg b/packages/webapp/src/assets/images/finance/Profit-loss-icn-red-light.svg deleted file mode 100644 index b0f556454b..0000000000 --- a/packages/webapp/src/assets/images/finance/Profit-loss-icn-red-light.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/packages/webapp/src/assets/images/finance/Profit-loss-icn.svg b/packages/webapp/src/assets/images/finance/Profit-loss-icn.svg new file mode 100644 index 0000000000..e87d88dc20 --- /dev/null +++ b/packages/webapp/src/assets/images/finance/Profit-loss-icn.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/webapp/src/assets/images/finance/Seeds-icn.svg b/packages/webapp/src/assets/images/finance/Seeds-icn.svg index 98f5c557fc..395c956aa5 100644 --- a/packages/webapp/src/assets/images/finance/Seeds-icn.svg +++ b/packages/webapp/src/assets/images/finance/Seeds-icn.svg @@ -1,5 +1,5 @@ - - - - + + + + diff --git a/packages/webapp/src/assets/images/finance/Services-icn.svg b/packages/webapp/src/assets/images/finance/Services-icn.svg index 158c5e0b2c..0737c6e73b 100644 --- a/packages/webapp/src/assets/images/finance/Services-icn.svg +++ b/packages/webapp/src/assets/images/finance/Services-icn.svg @@ -1,6 +1,6 @@ - - - - - + + + + + diff --git a/packages/webapp/src/assets/images/finance/Soil-amendment-icn.svg b/packages/webapp/src/assets/images/finance/Soil-amendment-icn.svg index 6d335fbc31..441f14b7f0 100644 --- a/packages/webapp/src/assets/images/finance/Soil-amendment-icn.svg +++ b/packages/webapp/src/assets/images/finance/Soil-amendment-icn.svg @@ -1,12 +1,12 @@ - - - - - - - - - - - + + + + + + + + + + + diff --git a/packages/webapp/src/assets/images/finance/Transportation-icn.svg b/packages/webapp/src/assets/images/finance/Transportation-icn.svg index 034a71a6a1..9835e42eeb 100644 --- a/packages/webapp/src/assets/images/finance/Transportation-icn.svg +++ b/packages/webapp/src/assets/images/finance/Transportation-icn.svg @@ -1,3 +1,3 @@ - - + + diff --git a/packages/webapp/src/assets/images/finance/Utilities-icn.svg b/packages/webapp/src/assets/images/finance/Utilities-icn.svg index 7995aa857d..5017c9a6ac 100644 --- a/packages/webapp/src/assets/images/finance/Utilities-icn.svg +++ b/packages/webapp/src/assets/images/finance/Utilities-icn.svg @@ -1,4 +1,4 @@ - - - + + + diff --git a/packages/webapp/src/assets/images/location.svg b/packages/webapp/src/assets/images/location.svg new file mode 100644 index 0000000000..9fdfe14dee --- /dev/null +++ b/packages/webapp/src/assets/images/location.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/packages/webapp/src/assets/images/lock-03.svg b/packages/webapp/src/assets/images/lock-03.svg new file mode 100644 index 0000000000..56a9ee4689 --- /dev/null +++ b/packages/webapp/src/assets/images/lock-03.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/packages/webapp/src/assets/images/minus-square.svg b/packages/webapp/src/assets/images/minus-square.svg new file mode 100644 index 0000000000..2ad72c5662 --- /dev/null +++ b/packages/webapp/src/assets/images/minus-square.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/webapp/src/assets/images/more-horizontal.svg b/packages/webapp/src/assets/images/more-horizontal.svg new file mode 100644 index 0000000000..8968d5a89b --- /dev/null +++ b/packages/webapp/src/assets/images/more-horizontal.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/webapp/src/assets/images/nav/animals.svg b/packages/webapp/src/assets/images/nav/animals.svg new file mode 100644 index 0000000000..b46060c1ba --- /dev/null +++ b/packages/webapp/src/assets/images/nav/animals.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/packages/webapp/src/assets/images/nav/crops.svg b/packages/webapp/src/assets/images/nav/crops.svg index e1d2544187..d97deaabe2 100644 --- a/packages/webapp/src/assets/images/nav/crops.svg +++ b/packages/webapp/src/assets/images/nav/crops.svg @@ -1,5 +1,9 @@ - - - - + + + + + + + + diff --git a/packages/webapp/src/assets/images/navbar/help.svg b/packages/webapp/src/assets/images/navbar/help.svg deleted file mode 100644 index 76b5db0498..0000000000 --- a/packages/webapp/src/assets/images/navbar/help.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/packages/webapp/src/assets/images/partially-checked.svg b/packages/webapp/src/assets/images/partially-checked.svg new file mode 100644 index 0000000000..006f5c78dc --- /dev/null +++ b/packages/webapp/src/assets/images/partially-checked.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/webapp/src/assets/images/plus-square.svg b/packages/webapp/src/assets/images/plus-square.svg new file mode 100644 index 0000000000..5defb620b4 --- /dev/null +++ b/packages/webapp/src/assets/images/plus-square.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/webapp/src/assets/images/send-icon.svg b/packages/webapp/src/assets/images/send-icon.svg new file mode 100644 index 0000000000..f11dd4de04 --- /dev/null +++ b/packages/webapp/src/assets/images/send-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/webapp/src/assets/images/stepper/active-dark.svg b/packages/webapp/src/assets/images/stepper/active-dark.svg new file mode 100644 index 0000000000..c62df6fefb --- /dev/null +++ b/packages/webapp/src/assets/images/stepper/active-dark.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/webapp/src/assets/images/stepper/active-light.svg b/packages/webapp/src/assets/images/stepper/active-light.svg new file mode 100644 index 0000000000..370eee18b2 --- /dev/null +++ b/packages/webapp/src/assets/images/stepper/active-light.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/webapp/src/assets/images/stepper/disabled-dark.svg b/packages/webapp/src/assets/images/stepper/disabled-dark.svg new file mode 100644 index 0000000000..3a7046aa95 --- /dev/null +++ b/packages/webapp/src/assets/images/stepper/disabled-dark.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/webapp/src/assets/images/stepper/disabled-light.svg b/packages/webapp/src/assets/images/stepper/disabled-light.svg new file mode 100644 index 0000000000..65c666203f --- /dev/null +++ b/packages/webapp/src/assets/images/stepper/disabled-light.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/webapp/src/assets/images/stepper/done-dark.svg b/packages/webapp/src/assets/images/stepper/done-dark.svg new file mode 100644 index 0000000000..aef21f8b62 --- /dev/null +++ b/packages/webapp/src/assets/images/stepper/done-dark.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/webapp/src/assets/images/stepper/done-light.svg b/packages/webapp/src/assets/images/stepper/done-light.svg new file mode 100644 index 0000000000..33f9d9d945 --- /dev/null +++ b/packages/webapp/src/assets/images/stepper/done-light.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/webapp/src/assets/images/task/Movement.svg b/packages/webapp/src/assets/images/task/Movement.svg new file mode 100644 index 0000000000..d1f62d130b --- /dev/null +++ b/packages/webapp/src/assets/images/task/Movement.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/packages/webapp/src/assets/images/unchecked-enabled.svg b/packages/webapp/src/assets/images/unchecked-enabled.svg index 6dc863e177..1f3af13a67 100644 --- a/packages/webapp/src/assets/images/unchecked-enabled.svg +++ b/packages/webapp/src/assets/images/unchecked-enabled.svg @@ -1,10 +1,3 @@ - - - - - - - - - + + diff --git a/packages/webapp/src/assets/images/unfold-circle.svg b/packages/webapp/src/assets/images/unfold-circle.svg new file mode 100644 index 0000000000..eff33d23f0 --- /dev/null +++ b/packages/webapp/src/assets/images/unfold-circle.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/packages/webapp/src/assets/images/warning.svg b/packages/webapp/src/assets/images/warning.svg index 417f493435..3ab043771e 100644 --- a/packages/webapp/src/assets/images/warning.svg +++ b/packages/webapp/src/assets/images/warning.svg @@ -3,11 +3,11 @@ + fill="currentColor"/> + fill="currentColor"/> + fill="currentColor"/> diff --git a/packages/webapp/src/assets/images/x-circle.svg b/packages/webapp/src/assets/images/x-circle.svg new file mode 100644 index 0000000000..ea3f3105d1 --- /dev/null +++ b/packages/webapp/src/assets/images/x-circle.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/webapp/src/assets/mixin.scss b/packages/webapp/src/assets/mixin.scss index 22605441af..88119d6087 100644 --- a/packages/webapp/src/assets/mixin.scss +++ b/packages/webapp/src/assets/mixin.scss @@ -53,6 +53,7 @@ } // Custom icons from figma use a variety of strokes and fills +// Does not work with multi-color icons or icons with background color (ex. BATCH) @mixin svgColorFill($newColor) { svg { path { diff --git a/packages/webapp/src/assets/variables.scss b/packages/webapp/src/assets/variables.scss index 7f0715bded..f3c5b88e37 100644 --- a/packages/webapp/src/assets/variables.scss +++ b/packages/webapp/src/assets/variables.scss @@ -6,6 +6,8 @@ --global-map-header-height: 48px; --global-side-menu-width: 188px; --global-compact-side-menu-width: 80px; + // 249px = 24px form padding + 41px form title and progress + 24px margin + 24px call to action + 16 px margin + 24px margin + 24 px padding + 48px button + 24 px padding + --global-multi-step-task-layout-aggregated-height: 249px; } @include xs-breakpoint { diff --git a/packages/webapp/src/components/ActionMenu/index.tsx b/packages/webapp/src/components/ActionMenu/index.tsx new file mode 100644 index 0000000000..8b08e83f76 --- /dev/null +++ b/packages/webapp/src/components/ActionMenu/index.tsx @@ -0,0 +1,75 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import { ReactNode } from 'react'; +import clsx from 'clsx'; +import TextButton from '../Form/Button/TextButton'; +import Icon, { IconName } from '../Icons'; +import styles from './styles.module.scss'; + +interface action { + label: string; + onClick: () => void; +} + +export interface iconAction extends action { + iconName: IconName; + visible: boolean; +} + +export interface ActionMenuProps { + headerLeftText?: string; + textActions?: action[]; + iconActions: iconAction[]; +} + +const ActionMenu = ({ headerLeftText, textActions = [], iconActions }: ActionMenuProps) => { + // If the className is not yet supported, ensure to add corresponding styles for the widths + // of the component and each iconGroup to the SCSS file. + const iconCountClassName = styles[`iconCount_${iconActions.length}`]; + + return ( +
+
+
{headerLeftText}
+
+ {textActions.map(({ label, onClick }) => { + return ( + + {label} + + ); + })} +
+
+
+ {iconActions.map(({ iconName, label, onClick, visible }) => { + return ( + visible && ( +
+ + + +
{label}
+
+ ) + ); + })} +
+
+ ); +}; + +export default ActionMenu; diff --git a/packages/webapp/src/components/ActionMenu/styles.module.scss b/packages/webapp/src/components/ActionMenu/styles.module.scss new file mode 100644 index 0000000000..acbac238c5 --- /dev/null +++ b/packages/webapp/src/components/ActionMenu/styles.module.scss @@ -0,0 +1,116 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ +@import '../../assets/mixin.scss'; + +@mixin calculate-icon-group-width($iconCount) { + // gap between iconGroup is 8px + width: calc((100% - 8px * (#{$iconCount} - 1)) / #{$iconCount}); +} + +.actionMenu { + font-family: 'Open Sans'; + + @include sm-breakpoint { + border-radius: 0 0 8px 8px; + overflow: hidden; + box-shadow: 0px 4px 4px 0px #00000040; + + &.iconCount_4 { + width: 424px; + } + } +} + +.header { + display: flex; + justify-content: space-between; + align-items: center; + height: 32px; + padding: 0 16px; + border-radius: 4px 4px 0px 0px; + font-weight: 700; + background-color: var(--Colors-Primary-Primary-teal-700); + border-bottom: 1px solid #ffffff1a; +} + +.textButtons { + display: flex; + gap: 16px; + + button { + color: var(--Btn-primary-pristine); + font-size: 14px; + font-weight: 700; + text-decoration: underline; + @include fontFamily(); + } +} + +.headerLeftText { + color: var(--Colors-Accent-Accent-yellow-50); + margin-right: 16px; +} + +.iconButtons { + display: flex; + justify-content: space-around; + gap: 8px; + padding: 8px 16px; + color: var(--Btn-primary-pristine); + background-color: var(--Colors-Primary-Primary-teal-900); +} + +.iconGroup { + text-align: center; + + &.iconCount_4 { + @include calculate-icon-group-width(4); + } + + button { + width: 40px; + height: 40px; + border-radius: 8px; + background: var(--Colors-Accent---singles-Icon-action); + box-shadow: 0px 2px 2px 0px #00000040; + + @media (hover: hover) { + &:hover { + background-color: var(--Colors-Secondary-Secondary-green-700); + + @include svgColorFill(var(--Btn-primary-hover)) + } + } + + &:active { + background-color: var(--Btn-primary-pristine); + + @include svgColorFill(var(--Colors-Secondary-Secondary-green-900)) + } + } +} + +.icon { + background: none; +} + +.iconLabel { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + width: 100%; + font-size: 12px; + text-align: center; +} diff --git a/packages/webapp/src/components/Animals/AddAnimalsDetails/index.tsx b/packages/webapp/src/components/Animals/AddAnimalsDetails/index.tsx new file mode 100644 index 0000000000..11f29eb2e3 --- /dev/null +++ b/packages/webapp/src/components/Animals/AddAnimalsDetails/index.tsx @@ -0,0 +1,113 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import { useTranslation } from 'react-i18next'; +import clsx from 'clsx'; +import GeneralDetails, { type GeneralDetailsProps } from '../DetailCards/General'; +import UniqueDetails, { type UniqueDetailsProps } from '../DetailCards/Unique'; +import OtherDetails, { type OtherDetailsProps } from '../DetailCards/Other'; +import Origin, { type OriginProps } from '../DetailCards/Origin'; +import ExpandableItem from '../../Expandable/ExpandableItem'; +import useExpandable from '../../Expandable/useExpandableItem'; +import { AnimalOrBatchKeys } from '../../../containers/Animals/types'; +import styles from './styles.module.scss'; + +enum sectionKeys { + GENERAL, + ORIGIN, + UNIQUE, + OTHER, +} + +export type AnimalDetailsProps = { + generalDetailProps: Omit; + uniqueDetailsProps: Omit; + otherDetailsProps: Omit; + originProps: Omit; + namePrefix?: string; +}; + +const AnimalDetails = ({ + generalDetailProps, + uniqueDetailsProps, + otherDetailsProps, + originProps, + namePrefix, +}: AnimalDetailsProps) => { + const { expandedIds, toggleExpanded } = useExpandable( + // @ts-ignore + { isSingleExpandable: true }, + ); + const { t } = useTranslation(['translation', 'common', 'animal']); + const commonProps = { t, namePrefix }; + + const sections = [ + { + key: sectionKeys.GENERAL, + title: t('ADD_ANIMAL.GENERAL_DETAILS'), + content: ( + + ), + }, + { + key: sectionKeys.UNIQUE, + title: t('ADD_ANIMAL.UNIQUE_DETAILS'), + content: , + }, + { + key: sectionKeys.OTHER, + title: t('ADD_ANIMAL.OTHER_DETAILS'), + content: ( + + ), + }, + { + key: sectionKeys.ORIGIN, + title: t('ADD_ANIMAL.ORIGIN'), + content: , + }, + ]; + + return ( +
+ {sections.map(({ key, title, content }) => { + const isExpanded = expandedIds.includes(key); + + return ( +
+ toggleExpanded(key)} + mainContent={title} + expandedContent={
{content}
} + /> +
+ ); + })} +
+ ); +}; + +export default AnimalDetails; diff --git a/packages/webapp/src/components/Animals/AddAnimalsDetails/styles.module.scss b/packages/webapp/src/components/Animals/AddAnimalsDetails/styles.module.scss new file mode 100644 index 0000000000..f057198ee9 --- /dev/null +++ b/packages/webapp/src/components/Animals/AddAnimalsDetails/styles.module.scss @@ -0,0 +1,38 @@ +/* +* Copyright 2024 LiteFarm.org +* This file is part of LiteFarm. +* +* LiteFarm is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* LiteFarm is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details, see . +*/ + +.section { + padding: 16px; + background: var(--White); + border-radius: 4px; + border: 1px solid var(--Colors-Neutral-Neutral-100); +} + +.expanded { + border: 1px solid var(--Form-focus); + box-shadow: 0px 0px 4px 0px var(--Colors-Neutral-Neutral-200); +} + +.expandedContentWrapper { + margin-top: 16px; +} + +.detailsWrapper { + display: flex; + flex-direction: column; + gap: 8px; + padding: 16px; + background: var(--White); +} diff --git a/packages/webapp/src/components/Animals/AddAnimalsForm/AnimalFormHeaderItem/index.tsx b/packages/webapp/src/components/Animals/AddAnimalsForm/AnimalFormHeaderItem/index.tsx new file mode 100644 index 0000000000..968a3c8e11 --- /dev/null +++ b/packages/webapp/src/components/Animals/AddAnimalsForm/AnimalFormHeaderItem/index.tsx @@ -0,0 +1,159 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import { useEffect, useState } from 'react'; +import clsx from 'clsx'; +import { useTheme } from '@mui/styles'; +import { useMediaQuery } from '@mui/material'; +import { useTranslation } from 'react-i18next'; +import styles from './styles.module.scss'; +import { IconLink, Main } from '../../../Typography'; +import Icon from '../../../Icons'; +import TextButton from '../../../Form/Button/TextButton'; +import { ReactComponent as TrashIcon } from '../../../../assets/images/animals/trash_icon_new.svg'; +import { AnimalTypeIconKey } from '../../../Icons/icons'; + +type AnimalFormHeaderItemProps = { + type: string; + breed?: string; + iconKey: AnimalTypeIconKey; + number: number; + totalCount: number; + showRemove?: boolean; + onRemove: () => void; + isExpanded: boolean; + count?: number; + isBatch: boolean; + sex?: string; +}; + +export const AnimalFormHeaderItem = ({ + type, + breed = '', + sex = '', + count, + iconKey, + number, + totalCount, + isBatch, + showRemove = true, + onRemove, + isExpanded, +}: AnimalFormHeaderItemProps) => { + const { t } = useTranslation(); + const [isRemoving, setIsRemoving] = useState(false); + + const theme = useTheme(); + const isMobile = useMediaQuery(theme.breakpoints.down('sm')); + + useEffect(() => { + if (!isExpanded) { + setIsRemoving(false); + } + }, [isExpanded]); + + return ( +
+
+ +
+
+ {type} + {(breed || sex) && ' - '} + {breed} {sex} + {!isMobile && isBatch && {count}} +
+ +
+ {isBatch ? `${t('ANIMAL.BATCH')}: ` : ''} + {t('ADD_ANIMAL.OUT_OF_COUNT', { animalNumber: number, count: totalCount })} + {isMobile && isBatch && {count}} +
+
+ ); +}; + +interface RemoveComponentProps { + showRemove: boolean; + isExpanded: boolean; + isRemoving: boolean; + setIsRemoving: React.Dispatch>; + onRemove: () => void; +} + +const RemoveComponent = ({ + showRemove, + isExpanded, + isRemoving, + setIsRemoving, + onRemove, +}: RemoveComponentProps) => { + const { t } = useTranslation(); + + const initiateRemoval = (e: React.MouseEvent) => { + e.stopPropagation(); // prevent triggering expand/collapse + setIsRemoving(true); + }; + + const cancelRemoval = (e: React.MouseEvent) => { + e.stopPropagation(); + setIsRemoving(false); + }; + + return ( +
+ {showRemove && isExpanded && !isRemoving && ( + } + isIconClickable + underlined={false} + > + {t('common:REMOVE')} + + )} + {isExpanded && showRemove && isRemoving && ( +
+
+ +
{t('ADD_ANIMAL.REMOVE_CONFIRM')}
+
+
+ + {t('common:YES')} + + + {t('common:NO')} + +
+
+ )} +
+ ); +}; diff --git a/packages/webapp/src/components/Animals/AddAnimalsForm/AnimalFormHeaderItem/styles.module.scss b/packages/webapp/src/components/Animals/AddAnimalsForm/AnimalFormHeaderItem/styles.module.scss new file mode 100644 index 0000000000..dac8aff8cd --- /dev/null +++ b/packages/webapp/src/components/Animals/AddAnimalsForm/AnimalFormHeaderItem/styles.module.scss @@ -0,0 +1,210 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +@import '../../../../assets/mixin'; + +// Set up desktop and mobile layout +.mainContent { + display: grid; + align-content: center; + align-items: center; + grid-column-gap: 8px; + + grid-template-areas: 'icon text remove count'; + grid-template-columns: auto auto minmax(0, 1fr) auto; + + @include xs-breakpoint { + grid-template-areas: + 'icon count remove' + 'icon text remove'; + grid-template-columns: auto 1fr auto; + } +} + +.iconWrapper { + grid-area: icon; +} + +.infoText { + grid-area: text; + + @include xs-breakpoint { + align-self: start; + } +} + +.count { + grid-area: count; + + @include xs-breakpoint { + align-self: end; + } +} + +.remove { + grid-area: remove; +} + +.hidden { + display: none; +} + +.spanAll { + // On desktop the active remove warning extends all the way to right + grid-column: 3 / -1; + + // On mobile the active remove warning covers the whole container AND the collapse icon + @include xs-breakpoint { + position: absolute; + top: 8px; + left: 0; + } +} + +/* --------------------------------- */ + +// Main component styles +.mainContent { + height: 64px; + background-color: var(--White); +} + +.icon { + @include svgColorFill(var(--Colors-Primary-Primary-teal-300)); + border-radius: 8px; + box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.07); +} + +.infoText { + font-size: 14px; + line-height: 24px; + + // Truncate type + breed + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.count { + color: var(--Colors-Primary-Primary-teal-700); + font-size: 14px; + font-weight: 600; + line-height: 18px; +} + +.countBadge { + padding: 4px; + border-radius: 2px; + background: var(--Colors-Accent---singles-Purple-light); + box-shadow: 1px 1px 0px 0px #fff; + + margin-left: 8px; + + color: var(--Colors-Accent---singles-Purple-full); + font-size: 12px; + font-weight: 700; +} + +/* --------------------------------- */ + +// Remove section styles +.remove { + width: 100%; + max-width: fit-content; + margin-left: auto; + + @include xs-breakpoint { + margin-right: 0; + max-width: none; + } +} + +.removeLink, +.inlineRemoveWarning, +.inlineButtonContainer, +.inlineIconText { + display: flex; + align-items: center; +} + +// IconLink +.removeLink { + span { + color: var(--Colors-Neutral-Neutral-900); + font-size: 14px; + padding-inline: 4px 16px; + } + + @include xs-breakpoint { + flex-direction: column; + padding: 4px; + + span { + padding-inline: 0px; + } + } +} + +.inlineRemoveWarning { + justify-content: space-between; + gap: 20px; + + padding: 8px; + border-radius: 4px; + background: #fff3f2; + + .trashIcon { + @include svgColorFill(var(--Colors-Accent---singles-Red-dark)); + background-color: transparent; + } +} + +.inlineIconText, +.inlineRemoveText { + // Truncate remove confirmation + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +.inlineRemoveText { + color: var(--Colors-Accent---singles-Red-dark); + font-size: 14px; +} + +.inlineButtonContainer { + gap: 16px; + + @include xs-breakpoint { + gap: 8px; + } +} + +.inlineButton { + padding: 4px 8px; + border-radius: 4px; + font-weight: 700; + line-height: 20px; +} + +.yesButton { + background: var(--Colors-Accent---singles-Red-full); + color: var(--Colors-Accent---singles-Red-light); +} + +.noButton { + background: #ffc1bf; + color: var(--Colors-Accent---singles-Red-dark); +} diff --git a/packages/webapp/src/components/Animals/AddAnimalsForm/MoreAnimalsCard.tsx b/packages/webapp/src/components/Animals/AddAnimalsForm/MoreAnimalsCard.tsx new file mode 100644 index 0000000000..9605ec943c --- /dev/null +++ b/packages/webapp/src/components/Animals/AddAnimalsForm/MoreAnimalsCard.tsx @@ -0,0 +1,51 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import clsx from 'clsx'; +import styles from './styles.module.scss'; +import { useTranslation } from 'react-i18next'; +import Icon, { Icons, IconProps } from '../../Icons'; +import Button from '../../Form/Button'; + +type MoreAnimalCardProps = { + className?: string; + onClick: () => void; +}; + +export const MoreAnimalsCard = ({ className, onClick }: MoreAnimalCardProps) => { + const { t } = useTranslation(); + + const iconDetails: IconProps[] = [ + { iconName: 'PIGS' }, + { iconName: 'CHICKEN' }, + { iconName: 'RABBIT' }, + { iconName: 'SHEEP' }, + { iconName: 'GOAT' }, + { iconName: 'MORE_HORIZONTAL' }, + ]; + + return ( +
+ +

{t('ANIMAL.ADD_MORE_BODY_TEXT')}

+ +
+ ); +}; + +export default MoreAnimalsCard; diff --git a/packages/webapp/src/components/Animals/AddAnimalsForm/styles.module.scss b/packages/webapp/src/components/Animals/AddAnimalsForm/styles.module.scss new file mode 100644 index 0000000000..fae4bc180c --- /dev/null +++ b/packages/webapp/src/components/Animals/AddAnimalsForm/styles.module.scss @@ -0,0 +1,53 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + @import '../../../assets/mixin.scss'; + +.card { + // Layout + display: flex; + padding: 24px 16px; + flex-direction: column; + justify-content: center; + align-items: center; + gap: 16px; + + // Style + border-radius: 4px; + border: 1px solid var(--Colors-Primary-Primary-teal-50); + background: var(--White); +} + +.animalIcons { + @include svgColorFill(var(--Colors-Primary-Primary-teal-600)) +} + +.addMoreText { + width: 304px; + color: var(--Colors-Neutral-Neutral-900); + text-align: center; + font-family: "Open Sans"; + font-size: 16px; + font-style: normal; + font-weight: 400; + line-height: normal; +} + +.addMoreButton { + text-decoration-color: var(--Colors-Primary-Primary-teal-600); +} + +button .buttonIcon { + background-color: transparent; +} \ No newline at end of file diff --git a/packages/webapp/src/components/Animals/AddAnimalsFormCard/AddAnimalsFormCard.tsx b/packages/webapp/src/components/Animals/AddAnimalsFormCard/AddAnimalsFormCard.tsx new file mode 100644 index 0000000000..8c4a10d583 --- /dev/null +++ b/packages/webapp/src/components/Animals/AddAnimalsFormCard/AddAnimalsFormCard.tsx @@ -0,0 +1,186 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import { v4 as uuidv4 } from 'uuid'; +import React, { useEffect } from 'react'; +import { Controller, get, useFormContext } from 'react-hook-form'; +import { useTranslation } from 'react-i18next'; +import NumberInput from '../../Form/NumberInput'; +import Checkbox from '../../Form/Checkbox'; +import SexDetails from '../../Form/SexDetails'; +import styles from './styles.module.scss'; +import Input from '../../Form/Input'; +import Card from '../../CardV2'; +import { Main } from '../../Typography'; +import SmallButton from '../../Form/Button/SmallButton'; +import { type Details as SexDetailsType } from '../../Form/SexDetails/SexDetailsPopover'; +import { BasicsFields } from '../../../containers/Animals/AddAnimals/types'; +import { + AnimalBreedSelect, + AnimalTypeSelect, + type AnimalBreedSelectProps, + type AnimalTypeSelectProps, +} from './AnimalSelect'; +import { hookFormMaxValidation, hookFormMinValidation } from '../../Form/hookformValidationUtils'; +import clsx from 'clsx'; +import { + ANIMAL_COUNT_LIMIT, + BATCH_COUNT_LIMIT, +} from '../../../containers/Animals/AddAnimals/utils'; + +type AddAnimalsFormCardProps = AnimalTypeSelectProps & + AnimalBreedSelectProps & { + sexDetailsOptions: SexDetailsType; + onIndividualProfilesCheck?: (isChecked: boolean) => void; + onRemoveButtonClick?: (e: React.MouseEvent) => void; + showRemoveButton?: boolean; + isActive?: boolean; + namePrefix?: string; + }; + +export default function AddAnimalsFormCard({ + typeOptions, + breedOptions, + sexDetailsOptions, + onTypeChange, + onIndividualProfilesCheck, + showRemoveButton, + onRemoveButtonClick, + isActive, + namePrefix = '', +}: AddAnimalsFormCardProps) { + const { + control, + watch, + register, + trigger, + getValues, + setValue, + resetField, + formState: { errors }, + } = useFormContext(); + + const { t } = useTranslation(); + const watchAnimalCount = watch(`${namePrefix}${BasicsFields.COUNT}`); + const watchAnimalType = watch(`${namePrefix}${BasicsFields.TYPE}`); + const shouldCreateIndividualProfiles = watch( + `${namePrefix}${BasicsFields.CREATE_INDIVIDUAL_PROFILES}`, + ); + + // Assign a unique identifier to each form card to track its associated details fields + const uuidFieldName = `${namePrefix}${BasicsFields.FIELD_ARRAY_ID}`; + + useEffect(() => { + if (!getValues(uuidFieldName)) { + setValue(uuidFieldName, uuidv4()); + } + }, []); + + const filteredBreeds = breedOptions.filter(({ type }) => type === watchAnimalType?.value); + + return ( + +
+
{t('ADD_ANIMAL.ADD_TO_INVENTORY')}
+ {showRemoveButton && } +
+ { + trigger(`${namePrefix}${BasicsFields.TYPE}`); + onTypeChange?.(option); + resetField(`${namePrefix}${BasicsFields.BREED}`, { defaultValue: null }); + }} + error={get(errors, `${namePrefix}${BasicsFields.TYPE}`)} + /> + { + trigger(`${namePrefix}${BasicsFields.BREED}`); + }} + error={get(errors, `${namePrefix}${BasicsFields.BREED}`)} + /> + +
+ trigger(`${namePrefix}${BasicsFields.COUNT}`)} + /> + { + if (!details) return true; + const total = details.reduce((prevCount, { count }) => prevCount + count, 0); + return total <= watchAnimalCount || 'Invalid sexDetails for count'; + }, + }} + render={({ field: { onChange, value } }) => ( + onChange(details)} + /> + )} + /> +
+ { + onIndividualProfilesCheck?.((e.target as HTMLInputElement).checked); + // Trigger validation after the change is reflected in the form state + setTimeout(() => { + trigger(`${namePrefix}${BasicsFields.COUNT}`); + }, 0); + }} + /> + {!shouldCreateIndividualProfiles && ( + // @ts-ignore + + )} +
+ ); +} diff --git a/packages/webapp/src/components/Animals/AddAnimalsFormCard/AnimalSelect.tsx b/packages/webapp/src/components/Animals/AddAnimalsFormCard/AnimalSelect.tsx new file mode 100644 index 0000000000..919306c36c --- /dev/null +++ b/packages/webapp/src/components/Animals/AddAnimalsFormCard/AnimalSelect.tsx @@ -0,0 +1,119 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import { Controller, FieldError, FieldValues, UseControllerProps } from 'react-hook-form'; +import { CreatableSelect } from '../../Form/ReactSelect'; +import { useTranslation } from 'react-i18next'; +import { RefObject } from 'react'; +import { GroupBase, SelectInstance, OptionsOrGroups } from 'react-select'; +import { Error } from '../../Typography'; + +export type Option = { + label: string; + value: string; + type?: string; +}; + +export type AnimalTypeSelectProps = { + typeOptions: OptionsOrGroups>; + onTypeChange?: (Option: Option | null) => void; + error?: FieldError; + isDisabled?: boolean; +}; + +export function AnimalTypeSelect({ + name, + control, + typeOptions, + onTypeChange, + error, + isDisabled = false, +}: AnimalTypeSelectProps & UseControllerProps) { + const { t } = useTranslation(); + return ( +
+ ( + { + onChange(option); + onTypeChange?.(option); + }} + value={value} + isDisabled={isDisabled} + isClearable={false} + /> + )} + /> + {error && {error.message}} +
+ ); +} + +export type AnimalBreedSelectProps = { + breedOptions: Option[]; + isTypeSelected?: boolean; + breedSelectRef?: RefObject; + isDisabled?: boolean; + error?: FieldError; + onBreedChange?: (Option: Option | null) => void; +}; + +export function AnimalBreedSelect({ + name, + control, + breedOptions, + isTypeSelected, + breedSelectRef, + isDisabled = false, + error, + onBreedChange, +}: AnimalBreedSelectProps & UseControllerProps) { + const { t } = useTranslation(); + return ( +
+ ( + { + onChange(option); + // @ts-ignore + onBreedChange?.(option); + }} + value={value || null} + isClearable={false} + /> + )} + /> + {error && {error.message}} +
+ ); +} diff --git a/packages/webapp/src/components/Animals/AddAnimalsFormCard/styles.module.scss b/packages/webapp/src/components/Animals/AddAnimalsFormCard/styles.module.scss new file mode 100644 index 0000000000..5ed2bbb4ea --- /dev/null +++ b/packages/webapp/src/components/Animals/AddAnimalsFormCard/styles.module.scss @@ -0,0 +1,49 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +@import '../../../assets/mixin'; + +.form { + display: flex; + flex-direction: column; + gap: 16px; + + &.extraBottomPadding { + padding-bottom: 108px; + } +} + +.formHeader { + display: flex; + justify-content: space-between; + gap: 8px; + + p { + @include truncateText(); + } +} + +.countAndSexDetailsWrapper { + display: flex; + align-items: start; + gap: 16px; +} + +.countInput { + flex-basis: 104px; + & + div { + flex: 1; + } +} diff --git a/packages/webapp/src/components/Animals/AddAnimalsSummaryCard/IconSummary/index.tsx b/packages/webapp/src/components/Animals/AddAnimalsSummaryCard/IconSummary/index.tsx new file mode 100644 index 0000000000..e45e46b894 --- /dev/null +++ b/packages/webapp/src/components/Animals/AddAnimalsSummaryCard/IconSummary/index.tsx @@ -0,0 +1,93 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import { useTranslation } from 'react-i18next'; +import styles from './styles.module.scss'; +import { Main } from '../../../Typography'; +import Icon from '../../../Icons'; +import type { AnimalSummary, BatchSummary, AnimalSexCountSummary } from '../types'; + +type IconSummaryProps = (AnimalSummary & { isBatch: false }) | (BatchSummary & { isBatch: true }); + +export const IconSummary = ({ + isBatch, + count, + sexDetails, + iconKey, + type, + breed = '', +}: IconSummaryProps) => { + return ( +
+
+ +
+
+
+ {type} + {breed && (isBatch ? ' - ' : ' ')} + {breed} + {!isBatch && ':'} +
+
+ {isBatch ? ( + + ) : ( + + )} +
+
+
+ ); +}; + +const BatchDetails = ({ count }: { count: number }) => { + const { t } = useTranslation(); + + return ( +
+
{t('ANIMAL.BATCH')}
+
+
{count}
+
+
+ ); +}; + +const AnimalDetails = ({ + sexDetails, + animalCount, +}: { + sexDetails: AnimalSexCountSummary; + animalCount: number; +}) => { + const { t } = useTranslation(); + const sexCountEntries = Object.entries(sexDetails); + + const renderSexCountEntries = () => { + return sexCountEntries.length + ? `(${sexCountEntries.map(([sex, count]) => `${count} ${sex}`).join(' / ')})` + : ''; + }; + + return ( +
+ {t('ANIMAL.ANIMAL_COUNT', { count: animalCount })} {renderSexCountEntries()} +
+ ); +}; diff --git a/packages/webapp/src/components/Animals/AddAnimalsSummaryCard/IconSummary/styles.module.scss b/packages/webapp/src/components/Animals/AddAnimalsSummaryCard/IconSummary/styles.module.scss new file mode 100644 index 0000000000..fba2c5b778 --- /dev/null +++ b/packages/webapp/src/components/Animals/AddAnimalsSummaryCard/IconSummary/styles.module.scss @@ -0,0 +1,69 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +@import '../../../../assets/mixin'; + +.iconContainer { + width: 40px; // width of the larger (batch) icon + display: flex; + justify-content: center; +} + +.animalIcon { + @include svgColorFill(var(--Colors-Primary-Primary-teal-300)); + border-radius: 8px; + box-shadow: 0px 1px 0px 0px var(--Colors-Neutral-Neutral-50); +} + +.summaryCard { + display: flex; + padding: 10px 16px; + align-items: center; + gap: 8px; + align-self: stretch; + + border-radius: 4px; + background: var(--White); +} + +.typeAndBreed, +.detailText { + color: var(--Colors-Primary-Primary-teal-900); + line-height: normal; + letter-spacing: -0.352px; +} + +.detailText { + font-weight: 700; +} + +.batchDetail { + display: flex; + gap: 8px; + align-items: center; +} + +.countBadge { + padding: 4px; + border-radius: 2px; + background: var(--Colors-Accent---singles-Purple-light); + + .countValue { + color: var(--Colors-Accent---singles-Purple-full); + font-size: 12px; + font-weight: 700; + line-height: normal; + } +} diff --git a/packages/webapp/src/components/Animals/AddAnimalsSummaryCard/index.tsx b/packages/webapp/src/components/Animals/AddAnimalsSummaryCard/index.tsx new file mode 100644 index 0000000000..7b75626069 --- /dev/null +++ b/packages/webapp/src/components/Animals/AddAnimalsSummaryCard/index.tsx @@ -0,0 +1,132 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import { useTranslation } from 'react-i18next'; +import styles from './styles.module.scss'; +import { Title, Main } from '../../Typography'; +import { ReactComponent as RelaxedFarmer } from '../../../assets/images/animals/relaxed-farmer.svg'; +import { ReactComponent as ChevronRight } from '../../../assets/images/buttons/chevron-right.svg'; +import Button from '../../Form/Button'; +import { IconSummary } from './IconSummary'; +import { AnimalSummary, BatchSummary } from './types'; +import { useMediaQuery, useTheme } from '@mui/material'; +import { isAnimalTypeIconKey } from '../../Icons/icons'; + +interface AddAnimalsSummaryCardProps { + onContinue: () => void; + animalsInfo?: AnimalSummary[]; + batchInfo?: BatchSummary[]; +} + +export const AddAnimalsSummaryCard = ({ + animalsInfo = [], + batchInfo = [], + onContinue, +}: AddAnimalsSummaryCardProps) => { + const { t } = useTranslation(); + const theme = useTheme(); + const isMobile = useMediaQuery(theme.breakpoints.down('sm')); + + const numberOfAnimals = animalsInfo.reduce((acc, animal) => { + return acc + animal.count; + }, 0); + const numberOfBatches = batchInfo.length; + + return ( + <> +
+
+
+ {t('ADD_ANIMAL.SUMMARY.ALL_DONE')} +
+ {t('ADD_ANIMAL.SUMMARY.MAIN', { + animalCount: numberOfAnimals + ? t('ADD_ANIMAL.SUMMARY.ANIMAL_SUMMARY_COUNT', { count: numberOfAnimals }) + : '', + and: numberOfAnimals && numberOfBatches ? t('common:AND') : '', + batchCount: numberOfBatches + ? t('ADD_ANIMAL.SUMMARY.BATCH_SUMMARY_COUNT', { count: numberOfBatches }) + : '', + })} +
+
{t('ADD_ANIMAL.SUMMARY.HERE_IS_SUMMARY')}
+
+ {!isMobile && ( + + )} +
+
+ +
+
+ {isMobile && ( + + )} + + ); +}; + +const IconSummaryAndButton = ({ + animalsInfo, + batchInfo, + onContinue, +}: { + animalsInfo: AnimalSummary[]; + batchInfo: BatchSummary[]; + onContinue: () => void; +}) => { + const { t } = useTranslation(); + + return ( +
+
+ {animalsInfo.map((animal, index) => { + return ( + + ); + })} + {batchInfo.map((batch, index) => ( + + ))} +
+ +
+ ); +}; diff --git a/packages/webapp/src/components/Animals/AddAnimalsSummaryCard/styles.module.scss b/packages/webapp/src/components/Animals/AddAnimalsSummaryCard/styles.module.scss new file mode 100644 index 0000000000..275c78710d --- /dev/null +++ b/packages/webapp/src/components/Animals/AddAnimalsSummaryCard/styles.module.scss @@ -0,0 +1,120 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +@import '../../../assets/mixin'; + +.container { + display: flex; + flex-direction: row; + justify-content: center; + align-items: flex-start; + gap: 10px; + + width: 100%; + padding: 32px 16px; + overflow: hidden; + + background-color: var(--White); + + @include md-breakpoint { + flex-direction: column; + align-items: center; + } + + @include xs-breakpoint { + border-bottom: 1px solid var(--Colors-Secondary-Secondary-green-100); + } +} + +.infoContainer { + padding-inline: 8px; + max-width: 342px; + + @include md-breakpoint { + order: 2; + } + + @include xs-breakpoint { + width: 100%; + max-width: none; + padding-inline: 24px; + } +} + +.textContainer { + padding-bottom: 50px; + + @include xs-breakpoint { + padding-bottom: 0; + } +} + +.title { + color: var(--Colors-Secondary-Secondary-green-900); + font-size: 24px; + font-weight: 700; + letter-spacing: -0.528px; +} + +.mainText { + color: var(--Colors-Secondary-Secondary-green-900); + letter-spacing: -0.352px; +} + +.imageContainer { + padding-top: 32px; + max-width: 488px; + overflow: hidden; + flex: 1; + + @include md-breakpoint { + order: 1; + } + + @include xs-breakpoint { + width: 100%; + } +} + +.farmer { + width: 100%; + height: 100%; +} + +.iconSummaryAndButtonContainer { + display: flex; + flex-direction: column; + gap: 50px; + + @include xs-breakpoint { + gap: 32px; + padding: 16px 24px; + background-color: var(--mainBackground); + } +} + +.iconSummaryContainer { + display: flex; + flex-direction: column; + gap: 8px; +} + +.button { + width: max-content; + + @include xs-breakpoint { + align-self: center; + } +} diff --git a/packages/webapp/src/components/Animals/AddAnimalsSummaryCard/types.ts b/packages/webapp/src/components/Animals/AddAnimalsSummaryCard/types.ts new file mode 100644 index 0000000000..b6dec1b1a3 --- /dev/null +++ b/packages/webapp/src/components/Animals/AddAnimalsSummaryCard/types.ts @@ -0,0 +1,36 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import { AnimalTypeIconKey } from '../../Icons/icons'; + +export interface AnimalSexCountSummary { + [key: string]: number | undefined; +} + +export interface AnimalSummary { + type: string; // Translated, to display in the card + breed?: string; + sexDetails: AnimalSexCountSummary; + iconKey: AnimalTypeIconKey; + count: number; +} + +export interface BatchSummary { + type: string; + breed?: string; + count: number; + sexDetails?: never; + iconKey?: never; +} diff --git a/packages/webapp/src/components/Animals/AddBatchDetails/index.tsx b/packages/webapp/src/components/Animals/AddBatchDetails/index.tsx new file mode 100644 index 0000000000..d3e46d4f6a --- /dev/null +++ b/packages/webapp/src/components/Animals/AddBatchDetails/index.tsx @@ -0,0 +1,101 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import { useTranslation } from 'react-i18next'; +import clsx from 'clsx'; +import GeneralDetails, { type GeneralDetailsProps } from '../DetailCards/General'; +import OtherDetails, { type OtherDetailsProps } from '../DetailCards/Other'; +import Origin, { type OriginProps } from '../DetailCards/Origin'; +import ExpandableItem from '../../Expandable/ExpandableItem'; +import useExpandable from '../../Expandable/useExpandableItem'; +import { AnimalOrBatchKeys } from '../../../containers/Animals/types'; +import styles from '../AddAnimalsDetails/styles.module.scss'; + +enum sectionKeys { + GENERAL, + ORIGIN, + OTHER, +} + +export type BatchDetailsProps = { + generalDetailProps: Omit; + otherDetailsProps: Omit; + originProps: Omit; + namePrefix?: string; +}; + +const BatchDetails = ({ + generalDetailProps, + otherDetailsProps, + originProps, + namePrefix, +}: BatchDetailsProps) => { + const { expandedIds, toggleExpanded } = useExpandable({ isSingleExpandable: true }); + const { t } = useTranslation(['translation', 'common', 'animal']); + const commonProps = { t, namePrefix }; + + const sections = [ + { + key: sectionKeys.GENERAL, + title: t('ADD_ANIMAL.GENERAL_DETAILS_BATCH'), + content: ( + + ), + }, + { + key: sectionKeys.OTHER, + title: t('ADD_ANIMAL.OTHER_DETAILS_BATCH'), + content: ( + + ), + }, + { + key: sectionKeys.ORIGIN, + title: t('ADD_ANIMAL.ORIGIN_BATCH'), + content: , + }, + ]; + + return ( +
+ {sections.map(({ key, title, content }) => { + const isExpanded = expandedIds.includes(key); + + return ( +
+ toggleExpanded(key)} + mainContent={title} + expandedContent={
{content}
} + /> +
+ ); + })} +
+ ); +}; + +export default BatchDetails; diff --git a/packages/webapp/src/components/Animals/AnimalBatchBasicInfo/index.tsx b/packages/webapp/src/components/Animals/AnimalBatchBasicInfo/index.tsx new file mode 100644 index 0000000000..d88916fec7 --- /dev/null +++ b/packages/webapp/src/components/Animals/AnimalBatchBasicInfo/index.tsx @@ -0,0 +1,57 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import styles from './styles.module.scss'; +import { AnimalOrBatchKeys } from '../../../containers/Animals/types'; +import { CommonDetailsProps } from '../../../containers/Animals/AddAnimals/types'; +import GeneralDetails, { + GeneralDetailsProps, +} from '../../../components/Animals/DetailCards/General'; +import UniqueDetails, { UniqueDetailsProps } from '../../../components/Animals/DetailCards/Unique'; +import Origin, { OriginProps } from '../../../components/Animals/DetailCards/Origin'; +import OtherDetails, { OtherDetailsProps } from '../../../components/Animals/DetailCards/Other'; + +interface AnimalBatchBasicInfoProps { + isAnimal: boolean; + generalDetailProps: GeneralDetailsProps; + uniqueDetailsProps: UniqueDetailsProps; + otherDetailsProps: OtherDetailsProps; + originProps: OriginProps; +} + +const AnimalBatchBasicInfo = ({ + isAnimal, + generalDetailProps, + uniqueDetailsProps, + otherDetailsProps, + originProps, +}: AnimalBatchBasicInfoProps) => { + return ( +
+ + {isAnimal && } + + +
+ ); +}; + +export default AnimalBatchBasicInfo; diff --git a/packages/webapp/src/components/Animals/AnimalBatchBasicInfo/styles.module.scss b/packages/webapp/src/components/Animals/AnimalBatchBasicInfo/styles.module.scss new file mode 100644 index 0000000000..f1a1dcadf0 --- /dev/null +++ b/packages/webapp/src/components/Animals/AnimalBatchBasicInfo/styles.module.scss @@ -0,0 +1,29 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +.container { + padding: 16px; + display: flex; + flex-direction: column; + gap: 24px; + background: var(--White); + + > div { + border-radius: 8px; + border: 1px solid var(--Colors-Neutral-Neutral-50, #f0f1f3); + background: var(--White, #fff); + box-shadow: 0px 2px 0px 0px rgba(0, 0, 0, 0.1); + } +} diff --git a/packages/webapp/src/components/Animals/AnimalSingleViewHeader/index.tsx b/packages/webapp/src/components/Animals/AnimalSingleViewHeader/index.tsx new file mode 100644 index 0000000000..65c53f2ab1 --- /dev/null +++ b/packages/webapp/src/components/Animals/AnimalSingleViewHeader/index.tsx @@ -0,0 +1,209 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import { ReactNode } from 'react'; +import { TFunction, useTranslation } from 'react-i18next'; +import clsx from 'clsx'; +import { useTheme } from '@mui/styles'; +import { useMediaQuery } from '@mui/material'; +import Icon, { IconName } from '../../Icons'; +import TextButton from '../../Form/Button/TextButton'; +import MeatballsMenu from '../../Menu/MeatballsMenu'; +import { getAge } from '../../../util/age'; +import { + Animal, + AnimalBatch, + CustomAnimalBreed, + CustomAnimalType, + DefaultAnimalBreed, + DefaultAnimalType, +} from '../../../store/api/types'; +import { + chooseAnimalBreedLabel, + chooseAnimalTypeLabel, +} from '../../../containers/Animals/Inventory/useAnimalInventory'; +import styles from './styles.module.scss'; + +type MenuItemProps = { iconName: IconName; text: string }; + +const MenuItem = ({ iconName, text }: MenuItemProps) => { + return ( +
+ + {text} +
+ ); +}; + +type AnimalImageWithCountProps = { + isCompactView: boolean; + photoUrl?: Animal['photo_url']; + count?: AnimalBatch['count']; +}; + +const AnimalImageWithCount = ({ isCompactView, photoUrl, count }: AnimalImageWithCountProps) => { + return ( +
+
+ {photoUrl ? : null} +
+ {count && {count}} +
+ ); +}; + +const Age = ({ birthDate, t }: { birthDate?: Animal['birth_date']; t: TFunction }) => ( +
+ {birthDate + ? getAge(new Date(birthDate)) + : t('common:PROPERTY_UNKNOWN', { property: t('common:AGE') })} +
+); + +const Location = ({ location, t }: { location?: string; t: TFunction }) => ( +
+ + {location || t('common:UNKNOWN')} +
+); + +type ContainerWithButtonsProps = { + children: ReactNode; + contentClassName?: string; + isCompactView?: boolean; + showMenu: boolean; + isEditing?: boolean; + options: { label: ReactNode; onClick: () => void }[]; + onBack: () => void; + t: TFunction; +}; + +const ContainerWithButtons = ({ + children, + contentClassName, + isCompactView, + showMenu = true, + isEditing, + options, + onBack, + t, +}: ContainerWithButtonsProps) => { + return ( +
+ + + +
{children}
+
+ {!isCompactView && isEditing ?
{t('common:EDITING')}
: null} + {showMenu && ( + + )} +
+
+ ); +}; + +export type AnimalSingleViewHeaderProps = { + showMenu: boolean; + isEditing?: boolean; + onEdit: () => void; + onRemove: () => void; + onBack: () => void; + animalOrBatch: Animal | AnimalBatch; + locationText?: string; + defaultTypes: DefaultAnimalType[]; + customTypes: CustomAnimalType[]; + defaultBreeds: DefaultAnimalBreed[]; + customBreeds: CustomAnimalBreed[]; +}; + +const AnimalSingleViewHeader = ({ + showMenu = true, + isEditing, + onEdit, + onRemove, + onBack, + animalOrBatch, + locationText, + defaultTypes, + customTypes, + defaultBreeds, + customBreeds, +}: AnimalSingleViewHeaderProps) => { + const { t } = useTranslation(); + const theme = useTheme(); + const isCompactView = useMediaQuery(theme.breakpoints.down('md')); + + const isAnimal = 'identifier' in animalOrBatch; + + const { name, birth_date, photo_url } = animalOrBatch; + + const typeString = chooseAnimalTypeLabel(animalOrBatch, defaultTypes, customTypes); + const breedString = chooseAnimalBreedLabel(animalOrBatch, defaultBreeds, customBreeds); + const typeAndBreedString = [typeString, breedString].filter(Boolean).join(' | '); + const nameAndID = [name, isAnimal ? animalOrBatch.identifier : ''].filter(Boolean).join(' | '); + const count = isAnimal ? undefined : animalOrBatch.count; + + const animalImageWithCount = ( + + ); + const age = ; + const location = ; + + const menuOptions = [ + { label: , onClick: onEdit }, + { label: , onClick: onRemove }, + ]; + + const commonProp = { t, showMenu, isEditing, isCompactView, options: menuOptions, onBack }; + + const renderCompactHeader = () => ( +
+ + {nameAndID} + +
+
+ {animalImageWithCount} + {age} +
+ {location} +
+
+ ); + + const renderDesktopHeader = () => ( + +
+ {animalImageWithCount} +
+
{nameAndID}
+
{typeAndBreedString}
+
+
+ {age} + {location} +
+ ); + + return isCompactView ? renderCompactHeader() : renderDesktopHeader(); +}; + +export default AnimalSingleViewHeader; diff --git a/packages/webapp/src/components/Animals/AnimalSingleViewHeader/styles.module.scss b/packages/webapp/src/components/Animals/AnimalSingleViewHeader/styles.module.scss new file mode 100644 index 0000000000..d6309987f8 --- /dev/null +++ b/packages/webapp/src/components/Animals/AnimalSingleViewHeader/styles.module.scss @@ -0,0 +1,229 @@ +/* +* Copyright 2024 LiteFarm.org +* This file is part of LiteFarm. +* +* LiteFarm is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* LiteFarm is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details, see . +*/ + +@import '../../../assets/mixin'; + +.containerWithButtons { + height: 80px; + padding: 8px 16px; + background: var(--Colors-Primary-Primary-teal-50); + box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.05); + + display: flex; + align-items: center; + + .backButton { + display: flex; + justify-content: center; + align-items: center; + flex-basis: 32px; + } + + .backButtonIcon { + background-color: transparent; + padding: 0; + } + + &.compactView { + height: 52px; + padding: 0 16px; + color: var(--White, #fff); + background-color: var(--Colors-Primary-Primary-teal-900); + + .backButton { + flex-basis: 24px; + } + + .backButtonIcon { + width: 24px; + height: 24px; + min-width: 24px; + min-height: 24px; + + path { + stroke-width: 2; + stroke: var(--Colors-Primary-Primary-teal-50); + } + } + } +} + +.content { + flex: 1; + @include truncateText(); +} + +.desktopContent { + display: flex; + align-items: center; + gap: 64px; +} + +.compactContent { + padding-left: 8px; +} + +.statusAndButton { + display: flex; + align-items: center; + gap: 8px; + padding-left: 16px; +} + +.editingStatusButton, +.editingStatusButton:disabled { + background: var(--Btn-primary-hover); + box-shadow: 1px 1px 0px 0px var(--Colors-Primary-Primary-teal-300); + + &:not(:active:enabled):not([aria-expanded='true']):hover:enabled { + background: var(--Btn-primary-hover); + box-shadow: 1px 1px 0px 0px var(--Colors-Primary-Primary-teal-300); + } +} + +.menuItem { + color: var(--Colors-Neutral-Neutral-500); + min-width: 210px; + letter-spacing: 0.4px; + display: flex; + gap: 4px; + align-items: center; +} + +.menuItemIcon { + padding: 0; + min-height: 24px; + min-width: 24px; + + svg { + width: 24px; + } + + path { + stroke: currentColor; + } +} + +.bold { + font-weight: 600; +} + +.animalImageWithCount { + position: relative; + margin: 0 32px; + + &.compactView { + margin: 0 16px; + } +} + +.animalImageWrapper { + width: 64px; + height: 64px; + overflow: hidden; + + border-radius: 16px; + border: 1px solid var(--Colors-Primary-Primary-teal-600); + background-color: var(--White, #fff); + box-shadow: 1px 1px 1px 0px rgba(102, 115, 138, 0.3); + background-image: url('../../../assets/images/animals/animal-photo-default.svg'); + background-repeat: no-repeat; + background-position: center; +} + +.animalImage { + width: 100%; +} + +.batchCount { + position: absolute; + left: 48px; + bottom: 8px; + + height: 24px; + min-width: 20px; + max-width: 44px; + padding: 4px; + border-radius: 2px; + background: var(--Colors-Accent---singles-Purple-light); + box-shadow: 1px 1px 0px 0px #fff; + + color: var(--Colors-Accent---singles-Purple-full); + font-size: 12px; + font-weight: 600; + text-align: center; + + /* Counts with more than five digits will be visually cut off */ + overflow: hidden; +} + +.desktopBasicInfo { + display: flex; + align-items: center; + + @include truncateText(); +} + +.nameAndType { + overflow: hidden; + + > div { + @include truncateText(); + } +} + +.mobileHeaderMain { + padding: 4px 16px 8px 16px; + background: var(--Colors-Primary-Primary-teal-50); + + display: flex; + align-items: center; + justify-content: space-between; +} + +.mobileMainHeaderLeft { + display: flex; + align-items: center; + + &.withCount { + gap: 12px; + } +} + +.location { + display: flex; + align-items: center; + white-space: nowrap; + gap: 4px; + + height: 32px; + padding: 8px 8px 8px 8px; + border-radius: 4px; + + line-height: normal; + letter-spacing: -0.368px; + + max-width: 140px; +} + +.locationIcon { + min-width: 100%; + padding: 0; + background-color: transparent; +} + +.locationText { + @include truncateText(); +} diff --git a/packages/webapp/src/components/Animals/DetailCards/General.tsx b/packages/webapp/src/components/Animals/DetailCards/General.tsx new file mode 100644 index 0000000000..2a22bad287 --- /dev/null +++ b/packages/webapp/src/components/Animals/DetailCards/General.tsx @@ -0,0 +1,243 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import { useEffect } from 'react'; +import { Controller, get, useFormContext } from 'react-hook-form'; +import clsx from 'clsx'; +import Input, { getInputErrors } from '../../Form/Input'; +import RadioGroup from '../../Form/RadioGroup'; +import ReactSelect from '../../Form/ReactSelect'; +import InputBaseLabel from '../../Form/InputBase/InputBaseLabel'; +import NumberInput from '../../Form/NumberInput'; +import SexDetails from '../../Form/SexDetails'; +import { type Details as SexDetailsType } from '../../Form/SexDetails/SexDetailsPopover'; +import { AnimalOrBatchKeys } from '../../../containers/Animals/types'; +import { + DetailsFields, + type Option, + type CommonDetailsProps, +} from '../../../containers/Animals/AddAnimals/types'; +import styles from './styles.module.scss'; +import { + hookFormMinValidation, + hookFormMaxCharsValidation, + hookFormMaxValidation, +} from '../../Form/hookformValidationUtils'; +import LockedInput from '../../Form/LockedInput'; +import { + AnimalTypeSelect, + Option as AnimalSelectOption, + AnimalBreedSelect, +} from '../AddAnimalsFormCard/AnimalSelect'; +import { parseUniqueDefaultId } from '../../../util/animal'; +import { BATCH_COUNT_LIMIT } from '../../../containers/Animals/AddAnimals/utils'; + +export type AnimalUseOptions = { + default_type_id: number | null; + uses: Option[DetailsFields.USE][]; +}[]; + +export type GeneralDetailsProps = CommonDetailsProps & { + sexOptions: Option[DetailsFields.SEX][]; + animalUseOptions: AnimalUseOptions; + animalOrBatch: AnimalOrBatchKeys; + sexDetailsOptions?: SexDetailsType; + typeOptions?: AnimalSelectOption[]; + breedOptions?: AnimalSelectOption[]; + onTypeChange?: (Option: AnimalSelectOption | null) => void; +}; + +const GeneralDetails = ({ + t, + sexOptions, + animalUseOptions, + animalOrBatch, + sexDetailsOptions, + namePrefix = '', + mode = 'add', + typeOptions = [], + onTypeChange, + breedOptions = [], +}: GeneralDetailsProps) => { + const { + control, + register, + trigger, + watch, + getValues, + resetField, + formState: { errors }, + } = useFormContext(); + + const watchBatchCount = watch(`${namePrefix}${DetailsFields.COUNT}`) || 0; + const watchedUse = watch(`${namePrefix}${DetailsFields.USE}`) as Option[DetailsFields.USE][]; + + const watchAnimalType = watch(`${namePrefix}${DetailsFields.TYPE}`); + const filteredBreeds = breedOptions.filter(({ type }) => type === watchAnimalType?.value); + + const filteredUses = watchAnimalType?.value + ? animalUseOptions.find( + ({ default_type_id }) => default_type_id === parseUniqueDefaultId(watchAnimalType?.value), + )?.uses + : animalUseOptions.find(({ default_type_id }) => default_type_id === null)?.uses; + + const isOtherUseSelected = !watchedUse ? false : watchedUse.some((use) => use.key === 'OTHER'); + + useEffect(() => { + // Prevent the error from persisting when returning from animal basics + trigger(`${namePrefix}${DetailsFields.COUNT}`); + }, []); + + const sexInputs = + animalOrBatch === AnimalOrBatchKeys.ANIMAL ? ( +
+ + {/* @ts-ignore */} + +
+ ) : ( +
+ trigger(`${namePrefix}${DetailsFields.COUNT}`)} + disabled={mode === 'readonly'} + /> + { + if (!details) return true; + const total = details.reduce((prevCount, { count }) => prevCount + count, 0); + return total <= watchBatchCount || 'Invalid sexDetails for count'; + }, + }} + render={({ field: { onChange, value } }) => ( + + )} + /> +
+ ); + + return ( +
+ {(mode === 'readonly' || mode === 'edit') && ( + <> + {/* @ts-ignore */} + + + )} + {animalOrBatch === AnimalOrBatchKeys.BATCH && ( + <> + {/* @ts-ignore */} + + + )} + { + trigger(`${namePrefix}${DetailsFields.TYPE}`); + onTypeChange?.(option); + resetField(`${namePrefix}${DetailsFields.BREED}`, { defaultValue: null }); + }} + error={get(errors, `${namePrefix}${DetailsFields.TYPE}`)} + isDisabled={mode !== 'edit'} + /> + + {sexInputs} + ( + + )} + /> + {isOtherUseSelected && ( + <> + {/* @ts-ignore */} + + + )} +
+ ); +}; + +export default GeneralDetails; diff --git a/packages/webapp/src/components/Animals/DetailCards/Origin.tsx b/packages/webapp/src/components/Animals/DetailCards/Origin.tsx new file mode 100644 index 0000000000..81d46e5f65 --- /dev/null +++ b/packages/webapp/src/components/Animals/DetailCards/Origin.tsx @@ -0,0 +1,188 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import React, { useMemo, useState } from 'react'; +import { useFormContext } from 'react-hook-form'; +import Input, { getInputErrors } from '../../Form/Input'; +import RadioGroup from '../../Form/RadioGroup'; +import { isNotInFuture } from '../../Form/Input/utils'; +import { + DetailsFields, + type Option, + type CommonDetailsProps, +} from '../../../containers/Animals/AddAnimals/types'; +import { AnimalOrigins } from '../../../containers/Animals/types'; +import styles from './styles.module.scss'; + +export type OriginProps = CommonDetailsProps & { + currency: string; + originOptions: Option[DetailsFields.ORIGIN][]; +}; + +const Origin = ({ t, currency, originOptions, namePrefix = '', mode = 'add' }: OriginProps) => { + const { + control, + register, + trigger, + watch, + clearErrors, + formState: { errors }, + } = useFormContext(); + const [isBirthDateValid, setIsBirthDateValid] = useState(true); + const [isBroughtInDateValid, setIsBroughtInDateValid] = useState(true); + + const watchedOrigin = watch(`${namePrefix}${DetailsFields.ORIGIN}`); + + const getOriginEnum = (watchedOrigin: number): AnimalOrigins => { + const originOption = originOptions.find((option) => option.value === watchedOrigin); + return AnimalOrigins[originOption?.key as keyof typeof AnimalOrigins]; + }; + + const origin = !watchedOrigin ? undefined : getOriginEnum(watchedOrigin); + + const fields = useMemo(() => { + return origin === AnimalOrigins.BROUGHT_IN ? ( + <> + {/* @ts-ignore */} + { + if (value === '' && isBroughtInDateValid) return true; + return !isNaN(new Date(value).valueOf()) + ? isNotInFuture(value) + : t('common:INVALID_DATE'); + }, + })} + onCleared={() => { + setIsBroughtInDateValid(true); + clearErrors(`${namePrefix}${DetailsFields.BROUGHT_IN_DATE}`); + }} + onKeyUp={(e: any) => { + setIsBroughtInDateValid(!e.target.validity.badInput); + }} + errors={getInputErrors(errors, `${namePrefix}${DetailsFields.BROUGHT_IN_DATE}`)} + optional + disabled={mode === 'readonly'} + /> + {/* @ts-ignore */} + + {/* @ts-ignore */} + + + ) : ( + <> + {/* @ts-ignore */} + + {/* @ts-ignore */} + + + ); + }, [origin, Object.entries(errors)]); + return ( +
+ {/* @ts-ignore */} + { + if (value === '' && isBirthDateValid) return true; + return !isNaN(new Date(value).valueOf()) + ? isNotInFuture(value) + : t('common:INVALID_DATE'); + }, + })} + onCleared={() => { + setIsBirthDateValid(true); + clearErrors(`${namePrefix}${DetailsFields.DATE_OF_BIRTH}`); + }} + onKeyUp={(e: React.ChangeEvent): void => { + setIsBirthDateValid(!e.target.validity.badInput); + }} + errors={getInputErrors(errors, `${namePrefix}${DetailsFields.DATE_OF_BIRTH}`)} + optional + disabled={mode === 'readonly'} + /> +
+ {/* @ts-ignore */} + +
+ {origin && fields} +
+ ); +}; + +export default Origin; diff --git a/packages/webapp/src/components/Animals/DetailCards/Other.tsx b/packages/webapp/src/components/Animals/DetailCards/Other.tsx new file mode 100644 index 0000000000..30ecfeac15 --- /dev/null +++ b/packages/webapp/src/components/Animals/DetailCards/Other.tsx @@ -0,0 +1,129 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import { useEffect } from 'react'; +import { Controller, useController, useFormContext } from 'react-hook-form'; +import ReactSelect from '../../Form/ReactSelect'; +import Input from '../../Form/Input'; +import InputAutoSize from '../../Form/InputAutoSize'; +import ImagePicker from '../../ImagePicker'; +import { GetOnFileUpload } from '../../ImagePicker/useImagePickerUpload'; +import { AnimalOrBatchKeys } from '../../../containers/Animals/types'; +import styles from './styles.module.scss'; +import { + DetailsFields, + type Option, + type CommonDetailsProps, +} from '../../../containers/Animals/AddAnimals/types'; + +export type OtherDetailsProps = CommonDetailsProps & { + organicStatusOptions: Option[DetailsFields.ORGANIC_STATUS][]; + animalOrBatch: AnimalOrBatchKeys; + imageUploadTargetRoute: string; + getOnFileUpload: GetOnFileUpload; +}; + +const OtherDetails = ({ + t, + organicStatusOptions, + animalOrBatch, + namePrefix = '', + imageUploadTargetRoute, + getOnFileUpload, + mode = 'add', +}: OtherDetailsProps) => { + const { + control, + register, + getValues, + setValue, + resetField, + formState: { errors }, + } = useFormContext(); + + const { field } = useController({ control, name: `${namePrefix}${DetailsFields.ANIMAL_IMAGE}` }); + + const handleSelectImage = (imageUrl: string) => { + field.onChange(imageUrl); + }; + + const handleRemoveImage = () => { + resetField(`${namePrefix}${DetailsFields.ANIMAL_IMAGE}`, { defaultValue: '' }); + }; + + const onFileUpload = getOnFileUpload(imageUploadTargetRoute, handleSelectImage); + + // Set default value for organic status + useEffect(() => { + if (!getValues(`${namePrefix}${DetailsFields.ORGANIC_STATUS}`)) { + setValue( + `${namePrefix}${DetailsFields.ORGANIC_STATUS}`, + organicStatusOptions.find(({ value }) => value === 'Non-Organic'), + ); + } + }, []); + + return ( +
+ {animalOrBatch === AnimalOrBatchKeys.ANIMAL && ( + <> + {/* @ts-ignore */} + + + )} + ( + + )} + /> + {/* @ts-ignore */} + + {(!!field.value || mode !== 'readonly') && ( + + )} +
+ ); +}; + +export default OtherDetails; diff --git a/packages/webapp/src/components/Animals/DetailCards/Unique.tsx b/packages/webapp/src/components/Animals/DetailCards/Unique.tsx new file mode 100644 index 0000000000..31ee226c0a --- /dev/null +++ b/packages/webapp/src/components/Animals/DetailCards/Unique.tsx @@ -0,0 +1,128 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import { Controller, useFormContext } from 'react-hook-form'; +import styles from './styles.module.scss'; +import ReactSelect from '../../Form/ReactSelect'; +import Input, { getInputErrors } from '../../Form/Input'; +import { + DetailsFields, + type Option, + type CommonDetailsProps, +} from '../../../containers/Animals/AddAnimals/types'; + +export type UniqueDetailsProps = CommonDetailsProps & { + tagTypeOptions: Option[DetailsFields.TAG_TYPE][]; + tagColorOptions: Option[DetailsFields.TAG_COLOR][]; +}; + +const UniqueDetails = ({ + t, + tagTypeOptions, + tagColorOptions, + namePrefix = '', + mode = 'add', +}: UniqueDetailsProps) => { + const { + control, + register, + trigger, + watch, + formState: { errors }, + } = useFormContext(); + + const watchedTagType = watch(`${namePrefix}${DetailsFields.TAG_TYPE}`); + const shouldShowTagTypeInput = watchedTagType?.key === 'OTHER'; + + return ( +
+ {/* @ts-ignore */} + + {/* @ts-ignore */} + + ( + + )} + /> + ( + + )} + /> + {shouldShowTagTypeInput && ( + <> + {/* @ts-ignore */} + + + )} +
+ ); +}; + +export default UniqueDetails; diff --git a/packages/webapp/src/components/Animals/DetailCards/styles.module.scss b/packages/webapp/src/components/Animals/DetailCards/styles.module.scss new file mode 100644 index 0000000000..ffa1edc3ee --- /dev/null +++ b/packages/webapp/src/components/Animals/DetailCards/styles.module.scss @@ -0,0 +1,39 @@ +/* +* Copyright 2024 LiteFarm.org +* This file is part of LiteFarm. +* +* LiteFarm is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* LiteFarm is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details, see . +*/ + +.sectionWrapper { + display: flex; + flex-direction: column; + gap: 8px; + padding: 16px; + background: var(--White); +} + +.sectionWrapper.edit { + gap: 16px; // increase gap in edit mode to accomodate Clear on selects +} + +.countAndSexDetailsWrapper { + display: flex; + align-items: start; + gap: 16px; +} + +.countInput { + flex-basis: 104px; + & + div { + flex: 1; + } +} diff --git a/packages/webapp/src/components/Animals/FixedHeaderContainer/index.tsx b/packages/webapp/src/components/Animals/FixedHeaderContainer/index.tsx new file mode 100644 index 0000000000..b267c398ac --- /dev/null +++ b/packages/webapp/src/components/Animals/FixedHeaderContainer/index.tsx @@ -0,0 +1,134 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import React, { + ReactElement, + ReactNode, + RefObject, + useLayoutEffect, + useMemo, + useRef, + useState, +} from 'react'; +import { matchPath } from 'react-router-dom'; +import clsx from 'clsx'; +import { Paper } from '@mui/material'; +import history from '../../../history'; +import { ADD_ANIMALS_URL } from '../../../util/siteMapConstants'; +import styles from './styles.module.scss'; + +const PAPER_BORDER = 2; + +const CONTENT_FULL_WIDTH_ROUTES = [ADD_ANIMALS_URL]; + +export enum ContainerKind { + OVERFLOW, + PAPER, +} + +type FixedHeaderContainerProps = { + kind?: ContainerKind; + header: ReactNode; + children: ReactNode; + classes?: { + paper?: string; + divWrapper?: string; + wrapper?: string; + }; +}; + +type WrapperProps = Pick & { + hasMaxWidth: boolean; +}; +type PaperWrapperProps = WrapperProps & { paperRef: RefObject | null }; + +const PaperWrapper = ({ children, paperRef, classes = {}, hasMaxWidth }: PaperWrapperProps) => ( + + {children} + +); + +const DivWrapper = ({ children, classes = {}, hasMaxWidth }: WrapperProps) => ( +
+
+ {children} +
+
+); + +const FixedHeaderContainer = ({ + header, + children, + classes = {}, + kind = ContainerKind.OVERFLOW, +}: FixedHeaderContainerProps) => { + const [paperHeightInPx, setPaperHeightInPx] = useState(null); + const paperRef = useRef(null); + const isFullWidth = CONTENT_FULL_WIDTH_ROUTES.some((path) => + matchPath(history.location.pathname, path), + ); + + useLayoutEffect(() => { + if (kind === ContainerKind.OVERFLOW) { + return; + } + + const paperObserver = new ResizeObserver(() => { + setPaperHeightInPx(paperRef.current?.offsetHeight || null); + }); + + if (paperRef.current) { + paperObserver.observe(paperRef.current); + } + + return () => { + paperObserver.disconnect(); + }; + }, []); + + const childrenWithProps = useMemo(() => { + if (kind === ContainerKind.OVERFLOW) { + return children; + } + + // Provide the 'containerHeight' prop to children components, + // allowing them to adjust their layout based on the height of the container. + return React.Children.map(children, (child) => { + if (React.isValidElement(child)) { + return React.cloneElement(child as ReactElement, { + containerHeight: paperHeightInPx ? paperHeightInPx - PAPER_BORDER : null, + }); + } + return child; + }); + }, [children, paperHeightInPx]); + + const Wrapper = kind === ContainerKind.OVERFLOW ? DivWrapper : PaperWrapper; + + return ( +
+ {header} + + {childrenWithProps} + +
+ ); +}; + +export default FixedHeaderContainer; diff --git a/packages/webapp/src/components/Animals/FixedHeaderContainer/styles.module.scss b/packages/webapp/src/components/Animals/FixedHeaderContainer/styles.module.scss new file mode 100644 index 0000000000..3ad3a048ac --- /dev/null +++ b/packages/webapp/src/components/Animals/FixedHeaderContainer/styles.module.scss @@ -0,0 +1,56 @@ +/* +* Copyright 2024 LiteFarm.org +* This file is part of LiteFarm. +* +* LiteFarm is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* LiteFarm is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details, see . +*/ + +@import '../../../assets/mixin.scss'; + +.wrapper { + height: calc(100vh - var(--global-navbar-height)); + max-width: 100vw; + display: flex; + flex-direction: column; +} + +.paper { + width: 100%; + overflow-y: auto; + border: none; + border-radius: 0; + box-shadow: none; + flex: 1; + + &.hasMaxWidth { + max-width: 1024px; + } + + @include lg-breakpoint { + margin: 16px auto; + border-radius: 8px; + border: 1px solid var(--Colors-Primary-Primary-teal-50); + } +} + +.overflowStyle { + display: flex; + justify-content: center; + overflow-y: scroll; +} + +.childrenWrapper { + width: 100%; + + &.hasMaxWidth { + max-width: 1024px; + } +} diff --git a/packages/webapp/src/components/Animals/Inventory/index.tsx b/packages/webapp/src/components/Animals/Inventory/index.tsx new file mode 100644 index 0000000000..2030deaa44 --- /dev/null +++ b/packages/webapp/src/components/Animals/Inventory/index.tsx @@ -0,0 +1,179 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ +import { ChangeEvent } from 'react'; +import { History } from 'history'; +import Table from '../../../components/Table'; +import PureSearchBarWithBackdrop from '../../PopupFilter/PureSearchWithBackdrop'; +import NoSearchResults from '../../../components/Card/NoSearchResults'; +import ClearFiltersButton, { + ClearFiltersButtonType, +} from '../../../components/Button/ClearFiltersButton'; +import type { AnimalInventoryItem } from '../../../containers/Animals/Inventory/useAnimalInventory'; +import AnimalsFilter from '../../../containers/Animals/AnimalsFilter'; +import FloatingActionButton from '../../Button/FloatingActionButton'; +import { TableV2Column, TableKind } from '../../Table/types'; +import type { Dispatch, SetStateAction } from 'react'; +import styles from './styles.module.scss'; +import clsx from 'clsx'; +import { useTranslation } from 'react-i18next'; +import { ADD_ANIMALS_URL } from '../../../util/siteMapConstants'; +import { animalDescendingComparator } from '../../../util/sort'; + +export type SearchProps = { + searchString: string | null | undefined; + setSearchString: Dispatch>; + placeHolderText: string; + searchResultsText: string; +}; + +export type PureAnimalInventoryProps = { + filteredInventory: AnimalInventoryItem[]; + animalsColumns: TableV2Column[]; + zIndexBase: number; + isDesktop: boolean; + searchProps: SearchProps; + onSelectInventory: (event: ChangeEvent, row: AnimalInventoryItem) => void; + handleSelectAllClick: (event: ChangeEvent) => void; + onRowClick?: (event: ChangeEvent, row: AnimalInventoryItem) => void; + selectedIds: string[]; + totalInventoryCount: number; + isFilterActive: boolean; + clearFilters: () => void; + isLoading: boolean; + containerHeight?: number; + history: History; + tableMaxHeight?: number; + tableSpacerRowHeight: number; + showInventorySelection?: boolean; + showSearchBarAndFilter?: boolean; + alternatingRowColor?: boolean; + showTableHeader: boolean; + showActionFloaterButton: boolean; + extraRowSpacing?: boolean; + hideNoResultsBlock?: boolean; +}; + +const PureAnimalInventory = ({ + filteredInventory, + animalsColumns, + zIndexBase, + isDesktop, + searchProps, + onSelectInventory, + handleSelectAllClick, + selectedIds, + onRowClick, + totalInventoryCount, + isFilterActive, + clearFilters, + isLoading, + history, + tableMaxHeight, + tableSpacerRowHeight, + showInventorySelection = true, + showSearchBarAndFilter = true, + alternatingRowColor = true, + showTableHeader, + showActionFloaterButton, + extraRowSpacing, + hideNoResultsBlock, +}: PureAnimalInventoryProps) => { + const { t } = useTranslation(); + + const { searchString, setSearchString, placeHolderText, searchResultsText } = searchProps; + const hasSearchResults = filteredInventory.length !== 0; + + return isLoading ? null : ( + <> + {showSearchBarAndFilter && ( +
+ setSearchString(e.target.value)} + isSearchActive={!!searchString} + placeholderText={placeHolderText} + zIndexBase={zIndexBase} + isDesktop={isDesktop} + className={clsx(isDesktop ? styles.searchBarDesktop : styles.searchBar)} + /> + +
+ {searchResultsText} +
+
+ +
+
+ )} +
+ {!totalInventoryCount || hasSearchResults || hideNoResultsBlock ? ( + + ) : ( + + )} + + {showActionFloaterButton && ( +
+ history.push(ADD_ANIMALS_URL)} + aria-label={t('ADD_ANIMAL.ADD_ANIMALS')} + /> +
+ )} + + ); +}; + +export default PureAnimalInventory; diff --git a/packages/webapp/src/components/Animals/Inventory/styles.module.scss b/packages/webapp/src/components/Animals/Inventory/styles.module.scss new file mode 100644 index 0000000000..de61a155b1 --- /dev/null +++ b/packages/webapp/src/components/Animals/Inventory/styles.module.scss @@ -0,0 +1,88 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +.noSearchResults { + margin-top: 24px; +} + +.noSearchResultsDesktop { + margin-top: 40px; +} + +.searchBarDesktop { + width: 240px; +} + +.searchBar { + flex: 1; +} + +.searchAndFilterCommon { + display: flex; +} + +.searchAndFilterDesktop { + align-items: center; + gap: 8px; + margin-bottom: 16px; +} + +.searchAndFilter { + flex-wrap: wrap; + gap: 4px; + padding: 8px 16px 8px 16px; + background-color: var(--Colors-Primary-Primary-teal-50); + width: 100%; +} + +.searchResultsDesktop { + margin-left: 8px; +} + +.searchResults { + text-align: center; + flex-basis: 100%; + order: 4; +} + +.searchResultsText { + &.filterActive { + color: var(--Colors-Primary-Primary-teal-400); + } +} + +.clearButtonWrapperDesktop { + flex: 1; + display: flex; + justify-content: end; +} + +.tableWrapper { + overflow-y: scroll; +} + +.tableWrapperCommon { + flex: 1; +} + +.headerClass { + background-color: var(--tableV2Header); +} + +.ctaButtonWrapper { + position: fixed; + bottom: 16px; + right: 16px; +} diff --git a/packages/webapp/src/components/Animals/RemoveAnimalsModal/index.tsx b/packages/webapp/src/components/Animals/RemoveAnimalsModal/index.tsx new file mode 100644 index 0000000000..ae1f3b3c17 --- /dev/null +++ b/packages/webapp/src/components/Animals/RemoveAnimalsModal/index.tsx @@ -0,0 +1,234 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ +import { useMemo } from 'react'; +import Drawer from '../../Drawer'; +import Button from '../../Form/Button'; +import ReactSelect from '../../Form/ReactSelect'; +import styles from './styles.module.scss'; +import { Controller, useForm, SubmitHandler } from 'react-hook-form'; +import { useTheme, useMediaQuery } from '@mui/material'; +import clsx from 'clsx'; +import Input, { getInputErrors } from '../../Form/Input'; +import { ReactComponent as WarningIcon } from '../../../assets/images/warning.svg'; +import { ReactComponent as CheckIcon } from '../../../assets/images/check-circle.svg'; +import { useTranslation } from 'react-i18next'; +import { getLocalDateInYYYYDDMM } from '../../../util/date'; +import { useGetAnimalRemovalReasonsQuery } from '../../../store/api/apiSlice'; +import type { AnimalRemovalReasonKeys } from '../../../store/api/types'; + +const REASON = 'reason'; +const EXPLANATION = 'explanation'; +const DATE = 'date'; + +export type FormFields = { + [REASON]: number; + [EXPLANATION]: string; + [DATE]: string; +}; + +// Does not exist in the backend table +const CREATED_IN_ERROR = 'CREATED_IN_ERROR'; +export const CREATED_IN_ERROR_ID = 100; // arbitrary; use any unused number except 0 + +type RemovalReasonsEnum = { + [K in AnimalRemovalReasonKeys]: number; +} & { [CREATED_IN_ERROR]: number }; + +type RemovalOption = { label: string; value: number }; + +type RemoveAnimalsModalProps = { + isOpen: boolean; + onClose: () => void; + onConfirm: SubmitHandler; + showSuccessMessage: boolean; + hideDeleteOption?: boolean; +}; + +export default function RemoveAnimalsModal(props: RemoveAnimalsModalProps) { + const { + register, + handleSubmit, + control, + watch, + formState: { errors, isValid }, + } = useForm({ + mode: 'onChange', + defaultValues: { [DATE]: getLocalDateInYYYYDDMM() }, + shouldUnregister: true, + }); + const { t } = useTranslation(); + const theme = useTheme(); + const isMobile = useMediaQuery(theme.breakpoints.down('sm')); + + const { data: apiAnimalRemovalReasons = [] } = useGetAnimalRemovalReasonsQuery(); + + const RemovalReasons = useMemo(() => { + const ReasonsEnum: { [key: string]: number } = { [CREATED_IN_ERROR]: CREATED_IN_ERROR_ID }; + + apiAnimalRemovalReasons.forEach((reason) => { + ReasonsEnum[reason.key] = reason.id; + }); + + return ReasonsEnum as RemovalReasonsEnum; + }, [apiAnimalRemovalReasons]); + + const options: RemovalOption[] = [ + { + label: t('REMOVE_ANIMALS.SOLD'), + value: RemovalReasons.SOLD, + }, + { + label: t('REMOVE_ANIMALS.SLAUGHTERED_FOR_SALE'), + value: RemovalReasons.SLAUGHTERED_FOR_SALE, + }, + { + label: t('REMOVE_ANIMALS.SLAUGHTERED_FOR_CONSUMPTION'), + value: RemovalReasons.SLAUGHTERED_FOR_CONSUMPTION, + }, + { + label: t('REMOVE_ANIMALS.NATURAL_DEATH'), + value: RemovalReasons.NATURAL_DEATH, + }, + { + label: t('REMOVE_ANIMALS.CULLED'), + value: RemovalReasons.CULLED, + }, + { + label: t('common:OTHER'), + value: RemovalReasons.OTHER, + }, + ...(props.hideDeleteOption + ? [] + : [ + { + label: t('REMOVE_ANIMALS.CREATED_IN_ERROR'), + value: RemovalReasons.CREATED_IN_ERROR, + }, + ]), + ]; + + const selectedOption = watch(REASON); + const isCreatedInError = (value: number) => value === RemovalReasons.CREATED_IN_ERROR; + + return ( + <> + {/* @ts-ignore */} + + {props.showSuccessMessage ? ( +
+
+ +
+

{t('REMOVE_ANIMALS.REMOVED_AND_ARCHIVED')}

+
+ ) : ( +
+ {isMobile ? ( +
+ {t('REMOVE_ANIMALS.WHY')} + {options.map(({ label, value }) => ( + + ))} +
+ ) : ( + ( + value === field.value)} + onChange={(option) => field.onChange(option?.value)} + className={styles.reactSelect} + classNames={{ + option: ({ data: { value } }) => + clsx( + styles.dropDownOption, + isCreatedInError(value) + ? styles.dropDownOptionRed + : styles.dropDownOptionGreen, + ), + placeholder: ({ isFocused }) => (isFocused ? styles.placeholderHidden : ''), + valueContainer: (state) => + isCreatedInError(state.getValue()[0]?.value) ? styles.textRed : '', + }} + /> + )} + /> + )} + + {!isCreatedInError(selectedOption) && ( + /* @ts-ignore */ + + )} + + {!!selectedOption && + (isCreatedInError(selectedOption) ? ( +
+ +

{t('REMOVE_ANIMALS.WILL_BE_PERMANENTLY_REMOVED')}

+
+ ) : ( + <> + {/*@ts-ignore*/} + +

{t('REMOVE_ANIMALS.WILL_BE_ARCHIVED')}

+ + ))} + +
+ + +
+ + )} +
+ + ); +} diff --git a/packages/webapp/src/components/Animals/RemoveAnimalsModal/styles.module.scss b/packages/webapp/src/components/Animals/RemoveAnimalsModal/styles.module.scss new file mode 100644 index 0000000000..7299ee4ce5 --- /dev/null +++ b/packages/webapp/src/components/Animals/RemoveAnimalsModal/styles.module.scss @@ -0,0 +1,147 @@ +/* +* Copyright 2024 LiteFarm.org +* This file is part of LiteFarm. +* +* LiteFarm is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* LiteFarm is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details, see . +*/ + +form > * { + margin-top: 24px; + + &:first-child { + margin-top: 0; + } +} + +fieldset { + all: unset; + width: 100%; +} + +.mobileOption { + display: flex; + cursor: pointer; + margin-top: 4px; + height: 40px; + + input { + appearance: none; + } + + &Label { + height: 100%; + width: 100%; + border-radius: 8px; + padding: 8px 16px; + } + + &LabelGreen { + border: 1px solid var(--Colors-Primary-Primary-teal-600); + color: var(--Colors-Primary-Primary-teal-600); + } + + &LabelRed { + @extend .textRed; + border: 1px solid var(--Colors-Accent---singles-Red-light); + } +} + +input:checked { + + .mobileOptionLabelGreen { + font-weight: 700; + background-color: var(--Colors-Secondary-Secondary-green-100); + } + + .mobileOptionLabelRed { + @extend .textRed; + border-color: var(--Colors-Accent---singles-Red-full); + background-color: var(--Colors-Accent---singles-Red-light); + font-weight: 700; + } +} + +.dropDownOption { + padding: 8px 32px; +} + +.dropDownOptionGreen { + color: var(--Colors-Primary-Primary-teal-600); +} + +.dropDownOptionRed { + @extend .textRed; + + &:hover { + background-color: var(--Colors-Accent---singles-Red-light); + } +} + +.reactSelect:focus-within { + border-radius: 4px; + box-shadow: 0px 0px 4px 0px rgba(0, 0, 0, 0.25); +} + +.textRed { + color: var(--Colors-Accent---singles-Red-full); +} + +.archivedMessage { + text-align: center; + color: var(--Colors-Neutral-Neutral-600); +} + +.removalMessage { + display: flex; + flex-direction: column; + gap: 8px; + justify-content: center; + align-items: center; + background-color: var(--grey100); + padding: 8px 16px; + border: 1px solid var(--brown700); + border-radius: 4px; + + svg { + color: var(--brown700); + } + + p { + width: 264px; + text-align: center; + } +} + +.successMessage { + display: flex; + justify-content: center; + align-items: center; + gap: 8px; + + svg { + color: var(--Colors-Neutral-Neutral-600); + } + p { + font-weight: 600; + color: var(--Colors-Neutral-Neutral-900); + } +} + +.buttonWrapper { + display: flex; + gap: 1rem; + + button { + flex: 1; + } +} + +.placeholderHidden { + color: transparent; +} diff --git a/packages/webapp/src/components/Badge/index.tsx b/packages/webapp/src/components/Badge/index.tsx new file mode 100644 index 0000000000..19f69b4e23 --- /dev/null +++ b/packages/webapp/src/components/Badge/index.tsx @@ -0,0 +1,121 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import React, { useState } from 'react'; +import { Tooltip, ClickAwayListener, IconButton, tooltipClasses } from '@mui/material'; +import InfoOutlinedIcon from '@mui/icons-material/InfoOutlined'; +import styles from './styles.module.scss'; +import clsx from 'clsx'; + +// Define the Props +export interface BadgeProps { + title: string; + content?: string | React.ReactElement; + showIcon?: boolean; + isMenuItem?: boolean; + position?: 'left' | 'right'; + id?: string; + classes?: { + iconButton: string; + }; +} + +const Badge: React.FC = ({ + title, + content = '', + showIcon = true, + isMenuItem = false, + position, + id, + classes, +}) => { + const [open, setOpen] = useState(false); + const [focus, setFocus] = useState(false); + + const handleTooltipClick = (awayClicked?: boolean) => { + if (awayClicked) { + setOpen(false); + setFocus(false); + } else { + setOpen((prevState) => { + setFocus(!prevState); + return !prevState; + }); + } + }; + + const tooltipContent = ( +
e.stopPropagation()} + onTouchEnd={(e) => e.stopPropagation()} + className={styles.tooltip} + > + {content} +
+ ); + const slotProps = { + tooltip: { + sx: { + backgroundColor: '#fff', + p: 0, + m: 0, + }, + }, + popper: { + sx: { + [`&.${tooltipClasses.popper}[data-popper-placement*="bottom"] .${tooltipClasses.tooltip}`]: + { + marginTop: '2px', + }, + }, + }, + }; + + return ( + handleTooltipClick(true)}> + + { + if (showIcon) { + e.stopPropagation(); + handleTooltipClick(); + } + }} // Toggle on click for both desktop and mobile + > + {title} {showIcon && } + + + + ); +}; + +export default Badge; diff --git a/packages/webapp/src/components/Badge/styles.module.scss b/packages/webapp/src/components/Badge/styles.module.scss new file mode 100644 index 0000000000..88ad1a92df --- /dev/null +++ b/packages/webapp/src/components/Badge/styles.module.scss @@ -0,0 +1,78 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +@import '../../assets/mixin.scss'; + +.tooltip { + color: #000; + border-radius: 4px; + font-size: 14px; + padding: 16px; + border: 1px solid var(--Colors-Neutral-Neutral-50); + box-shadow: 0px 4px 12px 0px #00000040; + z-index: 10; +} + +.badge { + color: var(--Colors-Accent-Accent-yellow-600); + background: #fffbf2; + border-radius: 16px; + height: 24px; + font-size: 14px; + padding: 5px 4px 5px 6px; + > svg { + margin-left: 3px; + } + &:hover { + background: #ffeab2; + color: var(--Colors-Accent-Accent-yellow-700); + } + &.focus { + background: var(--Colors-Accent-Accent-yellow-500); + color: var(--Colors-Accent-Accent-yellow-50); + border-radius: 8px 8px 4px 4px !important; + } + + &.menuItem { + height: 12px; + font-size: 11px; + padding: 6px; + position: absolute; + left: 50px; + top: 8px; + border-radius: 16px; + &:hover { + color: var(--Colors-Accent-Accent-yellow-600); + background: #fffbf2; + border-radius: 16px !important; + } + + @include xs-breakpoint { + height: 16px; + position: relative; + font-size: 14px; + top: initial; + left: initial; + padding: 6px; + margin-right: 6px; + } + } +} +.rightPosition { + margin-left: 10px; +} +.leftPosition { + margin-right: 10px; +} diff --git a/packages/webapp/src/components/Button/ClearFiltersButton/index.tsx b/packages/webapp/src/components/Button/ClearFiltersButton/index.tsx new file mode 100644 index 0000000000..bb9987a9e5 --- /dev/null +++ b/packages/webapp/src/components/Button/ClearFiltersButton/index.tsx @@ -0,0 +1,52 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import { useTranslation } from 'react-i18next'; +import TextButton from '../../Form/Button/TextButton'; +import { ReactComponent as ClearFilterIcon } from '../../../assets/images/clear-filters.svg'; +import styles from './styles.module.scss'; + +export enum ClearFiltersButtonType { + ICON = 'icon', + TEXT = 'text', +} + +export type ClearFiltersButtonProps = { + type: ClearFiltersButtonType; + onClick: () => void; + isFilterActive: boolean; +}; + +const ClearFiltersButton = ({ type, onClick, isFilterActive }: ClearFiltersButtonProps) => { + const { t } = useTranslation(); + const isIconType = type === ClearFiltersButtonType.ICON; + + if (!isFilterActive) { + return null; + } + + return ( + + + + {isIconType ? null : ( + {t('common:CLEAR_ACTIVE_FILTERS')} + )} + + + ); +}; + +export default ClearFiltersButton; diff --git a/packages/webapp/src/components/Button/ClearFiltersButton/styles.module.scss b/packages/webapp/src/components/Button/ClearFiltersButton/styles.module.scss new file mode 100644 index 0000000000..646e1be302 --- /dev/null +++ b/packages/webapp/src/components/Button/ClearFiltersButton/styles.module.scss @@ -0,0 +1,52 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +.text { + font-family: "Open Sans", "SansSerif", sans-serif; + font-size: 12px; + color: var(--Colors-Accent---singles-Blue-full); +} + +.iconButton { + width: 48px; + height: 48px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + border: solid 1px var(--Colors-Accent---singles-Blue-full); + border-radius: 4px; + background-color: var(--Colors-Accent---singles-Blue-light); + + svg { + width: 30px; + height: 30px; + padding-left: 4px; + + path { + stroke: var(--Colors-Accent---singles-Blue-full); + + &:nth-child(2) { + fill: var(--Colors-Accent---singles-Blue-full); + } + } + } +} + +.textButton { + display: flex; + align-items: center; + gap: 2px; +} diff --git a/packages/webapp/src/components/Button/FloatingActionButton/styles.module.scss b/packages/webapp/src/components/Button/FloatingActionButton/styles.module.scss index 0c2740d63f..04d90e1af6 100644 --- a/packages/webapp/src/components/Button/FloatingActionButton/styles.module.scss +++ b/packages/webapp/src/components/Button/FloatingActionButton/styles.module.scss @@ -15,21 +15,23 @@ .floatingActionButton { position: relative; + z-index: 100; - &[aria-expanded="true"] { - background-color: #E3B000; - } @media (hover: hover) { &:hover { - background-color: #E3B000; + background-color: var(--Btn-primary-hover); } } + &[aria-expanded='true'] { + background-color: var(--yellow700); + } &.add { - &::before, &::after { - content: ""; + &::before, + &::after { + content: ''; position: absolute; - background-color: #634D00; + background-color: var(--yellow900); transition: 0.5s; } @@ -47,17 +49,22 @@ height: 4px; } - &[aria-expanded="true"] { - &::before, &::after { - background-color: #fff; - } - } @media (hover: hover) { &:hover { - &::before, &::after { + &::before, + &::after { background-color: #fff; } } } + + &[aria-expanded='true'] { + box-shadow: 0px 0px 4px 0px rgba(0, 0, 0, 0.25); + + &::before, + &::after { + background-color: var(--yellow900); + } + } } } diff --git a/packages/webapp/src/components/CardV2/index.tsx b/packages/webapp/src/components/CardV2/index.tsx new file mode 100644 index 0000000000..483b569d86 --- /dev/null +++ b/packages/webapp/src/components/CardV2/index.tsx @@ -0,0 +1,40 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import { ComponentPropsWithoutRef, ElementType, ReactNode } from 'react'; +import styles from './styles.module.scss'; +import clsx from 'clsx'; + +type CardProps = ComponentPropsWithoutRef & { + as?: T; + isActive?: boolean; + className?: string; + children: ReactNode; +}; + +export default function Card({ + as, + isActive, + children, + className, + ...props +}: CardProps) { + const TagName = as || 'div'; + return ( + + {children} + + ); +} diff --git a/packages/webapp/src/components/CardV2/styles.module.scss b/packages/webapp/src/components/CardV2/styles.module.scss new file mode 100644 index 0000000000..63027c48cc --- /dev/null +++ b/packages/webapp/src/components/CardV2/styles.module.scss @@ -0,0 +1,27 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +.card { + border-radius: 4px; + background-color: var(--White); + padding: 24px; + border: 1px solid var(--Colors-Primary-Primary-teal-50); + box-shadow: 0px 2px 2px 0px rgba(0, 0, 0, 0.05); +} + +.active { + border: 1px solid var(--teal500); + box-shadow: 0px 0px 4px 0px var(--Colors-Neutral-Neutral-200); +} diff --git a/packages/webapp/src/components/CardWithStatus/ManagementPlanCard/ManagementPlanCard.jsx b/packages/webapp/src/components/CardWithStatus/ManagementPlanCard/ManagementPlanCard.jsx index c5e34594b8..7543d6f2cd 100644 --- a/packages/webapp/src/components/CardWithStatus/ManagementPlanCard/ManagementPlanCard.jsx +++ b/packages/webapp/src/components/CardWithStatus/ManagementPlanCard/ManagementPlanCard.jsx @@ -46,7 +46,7 @@ export function ManagementPlanCard({ style={style} status={status} label={t(`MANAGEMENT_PLAN.STATUS.${managementPlanStatusTranslateKey[status]}`)} - classes={{ ...classes, card: { padding: '12px', ...classes.card } }} + classes={{ ...classes, card: { padding: '12px', minHeight: '150px', ...classes.card } }} onClick={onClick} score={score} > diff --git a/packages/webapp/src/components/CreateUserAccount/index.jsx b/packages/webapp/src/components/CreateUserAccount/index.jsx index 68b8642d19..a8eb66b9cc 100644 --- a/packages/webapp/src/components/CreateUserAccount/index.jsx +++ b/packages/webapp/src/components/CreateUserAccount/index.jsx @@ -107,6 +107,9 @@ export default function PureCreateUserAccount({ onSignUp, email, onGoBack, isNot label={t('CREATE_USER.FULL_NAME')} placeholder={'e.g. Juan Perez'} hookFormRegister={register(NAME, { required: true })} + onBlur={(e) => { + e.target.value = e.target.value.trim(); + }} /> { - if (persistedFormData.crop_management_plan.seed_date) { + if (persistedFormData.crop_management_plan?.seed_date) { const currentDate = getDateInputFormat(new Date()); const newAge = getDateDifference( persistedFormData.crop_management_plan.seed_date, @@ -99,6 +99,7 @@ export default function PurePlantedAlready({ } else if (!cropVariety.can_be_cover_crop) { setValue(FOR_COVER, false); } + history.push(submitPath, location?.state); }; const onGoBack = () => history.back(); diff --git a/packages/webapp/src/components/Drawer/index.jsx b/packages/webapp/src/components/Drawer/index.jsx deleted file mode 100644 index 3ca3c6a2a6..0000000000 --- a/packages/webapp/src/components/Drawer/index.jsx +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (c) 2023 LiteFarm.org - * This file is part of LiteFarm. - * - * LiteFarm is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * LiteFarm is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details, see . - */ - -import clsx from 'clsx'; -import PropTypes from 'prop-types'; -import ModalComponent from '../Modals/ModalComponent/v2'; -import styles from './style.module.scss'; -import { IconButton, useMediaQuery, useTheme } from '@mui/material'; -import { Close } from '@mui/icons-material'; - -const Drawer = ({ - title, - isOpen, - onClose, - children, - buttonGroup, - classes = { - modal: '', - drawer: '', - backdrop: '', - header: '', - content: '', - }, - fullHeight, - responsiveModal = true, -}) => { - const theme = useTheme(); - const isDesktop = useMediaQuery(theme.breakpoints.up('sm')); - - return isDesktop && responsiveModal ? ( - isOpen && ( - -
{children}
-
- ) - ) : ( - <> -
-
-
-
{title}
- - - -
-
- {children} {buttonGroup} -
-
- - ); -}; - -Drawer.prototype = { - title: PropTypes.string, - isOpen: PropTypes.func, - onClose: PropTypes.func, - children: PropTypes.node, - className: PropTypes.string, - buttonGroup: PropTypes.node, -}; - -export default Drawer; diff --git a/packages/webapp/src/components/Drawer/index.tsx b/packages/webapp/src/components/Drawer/index.tsx new file mode 100644 index 0000000000..d5905a1c15 --- /dev/null +++ b/packages/webapp/src/components/Drawer/index.tsx @@ -0,0 +1,113 @@ +/* + * Copyright (c) 2023 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import clsx from 'clsx'; +import ModalComponent from '../Modals/ModalComponent/v2'; +import styles from './style.module.scss'; +import { IconButton, useMediaQuery, useTheme } from '@mui/material'; +import { Close } from '@mui/icons-material'; + +export enum DesktopDrawerVariants { + DRAWER = 'drawer', + SIDE_DRAWER = 'sideDrawer', + MODAL = 'modal', +} + +interface DrawerProps { + title: NonNullable; + isOpen: boolean; + onClose: () => void; + children: React.ReactNode; + buttonGroup?: React.ReactNode; + fullHeight?: boolean; + desktopVariant?: DesktopDrawerVariants; + addBackdrop?: boolean; + classes?: { + modal?: string; + drawerBackdrop?: string; + drawerHeader?: string; + drawerContent?: string; + drawerContainer?: string; + }; +} + +const Drawer = ({ + title, + isOpen, + onClose, + children, + buttonGroup, + classes = { + modal: '', + drawerBackdrop: '', + drawerHeader: '', + drawerContent: '', + drawerContainer: '', + }, + fullHeight, + desktopVariant = DesktopDrawerVariants.MODAL, + addBackdrop = true, +}: DrawerProps) => { + const theme = useTheme(); + const isDesktop = useMediaQuery(theme.breakpoints.up('sm')); + + return isDesktop && desktopVariant === DesktopDrawerVariants.MODAL && isOpen ? ( + +
{children}
+
+ ) : ( + <> + {addBackdrop && ( +
+ )} +
+
+
{title}
+ + + +
+
+ {children} {buttonGroup} +
+
+ + ); +}; + +export default Drawer; diff --git a/packages/webapp/src/components/Drawer/style.module.scss b/packages/webapp/src/components/Drawer/style.module.scss index 86b3092950..70ca08d905 100644 --- a/packages/webapp/src/components/Drawer/style.module.scss +++ b/packages/webapp/src/components/Drawer/style.module.scss @@ -23,6 +23,7 @@ opacity: 0; visibility: hidden; z-index: 1109; + &.openC { opacity: 1; visibility: visible; @@ -31,25 +32,17 @@ } .drawer { + max-height: 100%; display: flex; flex-direction: column; position: fixed; - bottom: -100%; - left: 0; - right: 0; - transition: bottom 0.2s ease-in-out; - background-color: white; + transition: all 0.2s ease-in-out; + background-color: var(--White); border-top-left-radius: 10px; - border-top-right-radius: 10px; padding: 16px; - margin: auto; z-index: 1110; box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.25); - &.openD { - bottom: 0; - } - &.fullHeight { height: 100%; @@ -60,6 +53,30 @@ } } +.bottomDrawer { + bottom: -100%; + left: 0; + right: 0; + border-top-right-radius: 10px; + margin: auto; + + &.openD { + bottom: 0; + } +} + +.sideDrawer { + top: var(--global-navbar-height); + max-height: calc(100vh - var(--global-navbar-height)); + right: -100%; + border-bottom-left-radius: 10px; + width: 416px; + + &.openD { + right: 0; + } +} + .header { display: flex; justify-content: space-between; @@ -73,7 +90,6 @@ } .drawerContent { - max-height: 60vh; overflow-y: auto; margin: 0 -16px; padding: 16px; diff --git a/packages/webapp/src/components/EditCropVariety/index.jsx b/packages/webapp/src/components/EditCropVariety/index.jsx index 7add75c1e5..944f4370e0 100644 --- a/packages/webapp/src/components/EditCropVariety/index.jsx +++ b/packages/webapp/src/components/EditCropVariety/index.jsx @@ -3,7 +3,7 @@ import React, { useState } from 'react'; import PropTypes from 'prop-types'; import { useTranslation } from 'react-i18next'; import { Label } from '../Typography'; -import Input, { integerOnKeyDown } from '../Form/Input'; +import Input, { getInputErrors, integerOnKeyDown } from '../Form/Input'; import styles from './styles.module.scss'; import Radio from '../Form/Radio'; import Form from '../Form'; @@ -14,6 +14,20 @@ import Infoi from '../Tooltip/Infoi'; import Leaf from '../../assets/images/farmMapFilter/Leaf.svg'; import Spinner from '../Spinner'; +const FIELD_NAMES = { + COMMON_NAME: 'crop_variety_name', + VARIETAL: 'crop_varietal', + CULTIVAR: 'crop_cultivar', + SUPPLIER: 'supplier', + LIFE_CYCLE: 'lifecycle', + CROP_VARIETY_PHOTO_URL: 'crop_variety_photo_url', + CERTIFIED_ORGANIC: 'organic', + COMMERCIAL_AVAILABILITY: 'searched', + GENETICALLY_ENGINEERED: 'genetically_engineered', + TREATED: 'treated', + HS_CODE_ID: 'hs_code_id', +}; + export default function PureEditCropVariety({ onSubmit, onError, @@ -33,54 +47,38 @@ export default function PureEditCropVariety({ mode: 'onChange', shouldUnregister: true, defaultValues: { - crop_variety_photo_url: - cropVariety.crop_variety_photo_url || + ...Object.values(FIELD_NAMES).reduce((values, fieldName) => { + values[fieldName] = cropVariety[fieldName]; + return values; + }, {}), + [FIELD_NAMES.CROP_VARIETY_PHOTO_URL]: + cropVariety[FIELD_NAMES.CROP_VARIETY_PHOTO_URL] || cropVariety.crop_photo_url || `https://${ import.meta.env.VITE_DO_BUCKET_NAME }.nyc3.digitaloceanspaces.com//default_crop/v2/default.webp`, - ...(({ - crop_variety_name, - supplier, - lifecycle, - organic, - treated, - genetically_engineered, - searched, - hs_code_id, - }) => ({ - crop_variety_name, - supplier, - lifecycle, - organic, - treated, - genetically_engineered, - searched, - hs_code_id, - }))(cropVariety), }, }); - const VARIETY = 'crop_variety_name'; - const SUPPLIER = 'supplier'; - const LIFE_CYCLE = 'lifecycle'; - const CROP_VARIETY_PHOTO_URL = 'crop_variety_photo_url'; - - const CERTIFIED_ORGANIC = 'organic'; - const COMMERCIAL_AVAILABILITY = 'searched'; - const GENETIC_EGINEERED = 'genetically_engineered'; - const TREATED = 'treated'; - const HS_CODE_ID = 'hs_code_id'; - const disabled = !isValid; - const varietyRegister = register(VARIETY, { required: true }); - const supplierRegister = register(SUPPLIER, { required: isSeekingCert ? true : false }); - const lifeCycleRegister = register(LIFE_CYCLE, { required: true }); - const imageUrlRegister = register(CROP_VARIETY_PHOTO_URL, { required: true }); + const commonNameRegister = register(FIELD_NAMES.COMMON_NAME, { required: true }); + const supplierRegister = register(FIELD_NAMES.SUPPLIER, { + required: isSeekingCert ? true : false, + }); + const lifeCycleRegister = register(FIELD_NAMES.LIFE_CYCLE, { required: true }); + const imageUrlRegister = register(FIELD_NAMES.CROP_VARIETY_PHOTO_URL, { required: true }); + const varietalRegister = register(FIELD_NAMES.VARIETAL, { + maxLength: { value: 255, message: t('FORM_VALIDATION.OVER_255_CHARS') }, + required: false, + }); + const cultivarRegister = register(FIELD_NAMES.CULTIVAR, { + maxLength: { value: 255, message: t('FORM_VALIDATION.OVER_255_CHARS') }, + required: false, + }); - const crop_variety_photo_url = watch(CROP_VARIETY_PHOTO_URL); - const organic = watch(CERTIFIED_ORGANIC); + const crop_variety_photo_url = watch(FIELD_NAMES.CROP_VARIETY_PHOTO_URL); + const organic = watch(FIELD_NAMES.CERTIFIED_ORGANIC); const cropTranslationKey = cropVariety.crop_translation_key; const cropNameLabel = cropTranslationKey ? t(`crop:${cropTranslationKey}`) @@ -143,12 +141,30 @@ export default function PureEditCropVariety({ + + - {organic === false && ( @@ -212,7 +228,7 @@ export default function PureEditCropVariety({
@@ -226,7 +242,7 @@ export default function PureEditCropVariety({ @@ -236,7 +252,12 @@ export default function PureEditCropVariety({
- + )} {organic === true && ( @@ -248,7 +269,12 @@ export default function PureEditCropVariety({ - + )} @@ -256,7 +282,7 @@ export default function PureEditCropVariety({ { if (!iconClickOnly) { @@ -49,31 +52,48 @@ export default function ExpandableItem({ const id = `expanded-content-${itemKey}`; return ( - <> +
-
- {mainContent} -
- {icons[isExpanded ? 'up' : 'down']} +
+ {mainContent} +
+
+ {icons[isExpanded ? 'up' : 'down']} +
+ {pillBody && leftCollapseIcon && }
{expandedContent} - +
); } @@ -81,10 +101,16 @@ ExpandableItem.propTypes = { isExpanded: PropTypes.bool, onClick: PropTypes.func, mainContent: PropTypes.node, + pillBody: PropTypes.string, expandedContent: PropTypes.node, iconClickOnly: PropTypes.bool, classes: PropTypes.shape({ + container: PropTypes.string, + alwaysVisibleContent: PropTypes.string, + expandedContainer: PropTypes.string, + expandedMainContentWithIcon: PropTypes.string, mainContentWithIcon: PropTypes.string, + mainContentWrapper: PropTypes.string, icon: PropTypes.string, }), key: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), diff --git a/packages/webapp/src/components/Expandable/styles.module.scss b/packages/webapp/src/components/Expandable/styles.module.scss index e2096c02d0..9c0d18555d 100644 --- a/packages/webapp/src/components/Expandable/styles.module.scss +++ b/packages/webapp/src/components/Expandable/styles.module.scss @@ -1,5 +1,5 @@ /* - * Copyright 2023 LiteFarm.org + * Copyright 2023-2024 LiteFarm.org * This file is part of LiteFarm. * * LiteFarm is free software: you can redistribute it and/or modify @@ -12,8 +12,9 @@ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details, see . */ - - .mainContentWithIcon { +@import '@assets/mixin.scss'; + +.mainContentWithIcon { display: flex; } @@ -32,3 +33,48 @@ .iconWrapper { height: 24px; } + +.mainContentWrapper.leftCollapse { + order: 1; +} + +.pill { + height: 24px; + padding: 8px 16px; + background: var(--Colors-Neutral-Neutral-50); + color: var(--Colors-Neutral-Neutral-600); + width: 100%; + justify-content: center; + @include lg-breakpoint { + width: unset; + } +} + +.pillAlwaysVisibleContent { + max-height: 56px; + padding: 0 16px; + @include lg-breakpoint { + align-items: center; + gap: 8px; + display: flex; + } +} + +.pillMainContentWrapper { + width: auto; + gap: 8px; + @include lg-breakpoint { + display: flex; + } +} + +.pillMainContentWithIcon { + text-align: center; + gap: 8px; + justify-content: center; + margin-bottom: 8px; + + @include lg-breakpoint { + margin-bottom: 0px; + } +} \ No newline at end of file diff --git a/packages/webapp/src/components/Filter/FilterDate/index.jsx b/packages/webapp/src/components/Filter/FilterDate/index.jsx index 11be5e7cd9..f38564619e 100644 --- a/packages/webapp/src/components/Filter/FilterDate/index.jsx +++ b/packages/webapp/src/components/Filter/FilterDate/index.jsx @@ -1,16 +1,23 @@ +/* + * Copyright (c) 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + import React, { useEffect, useState } from 'react'; import PropTypes from 'prop-types'; import Input from '../../Form/Input'; -export function FilterDate({ - defaultValue, - filterKey, - onChange, - subject, - filterRef, - shouldReset, - props, -}) { +export function FilterDate({ defaultValue, onChange, subject, shouldReset, props }) { const [date, setDate] = useState(defaultValue ?? ''); useEffect(() => { @@ -18,15 +25,10 @@ export function FilterDate({ setDate(''); } }, [shouldReset]); - useEffect(() => { - if (filterRef?.current) { - filterRef.current[filterKey] = date || undefined; - } - }, [date]); const handleDateChange = (e) => { setDate(e.target.value); - onChange?.(e); + onChange(e.target.value); }; return ( @@ -34,9 +36,13 @@ export function FilterDate({ ); } -FilterDate.prototype = { +FilterDate.propTypes = { label: PropTypes.string, selected: PropTypes.bool, removable: PropTypes.bool, shouldReset: PropTypes.number, + defaultValue: PropTypes.string, + onChange: PropTypes.func, + subject: PropTypes.string, + props: PropTypes.object, }; diff --git a/packages/webapp/src/components/Filter/FilterDateRange/index.jsx b/packages/webapp/src/components/Filter/FilterDateRange/index.jsx index e9330ee5b3..ad73408a40 100644 --- a/packages/webapp/src/components/Filter/FilterDateRange/index.jsx +++ b/packages/webapp/src/components/Filter/FilterDateRange/index.jsx @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + import clsx from 'clsx'; import PropTypes from 'prop-types'; import { useEffect, useState } from 'react'; @@ -12,62 +27,72 @@ export function FilterDateRange({ defaultToDate, onDirty, subject, - filterRef, shouldReset, style, className, + onChange, }) { const [fromDate, setFromDate] = useState(defaultFromDate ?? ''); const [toDate, setToDate] = useState(defaultToDate ?? ''); + useEffect(() => { if (shouldReset) { setFromDate(''); setToDate(''); } }, [shouldReset]); - useEffect(() => { - if (filterRef?.current) { - filterRef.current.FROM_DATE = fromDate || undefined; - } - }, [fromDate]); - useEffect(() => { - if (filterRef?.current) { - filterRef.current.TO_DATE = toDate || undefined; - } - }, [toDate]); + const [showDateFilter, setShowDateFilter] = useState(!!(defaultFromDate || defaultToDate)); const onSwitchClick = () => { setDirty?.(); + let fromDate; + let toDate; if (showDateFilter) { onDirty?.(); setShowDateFilter(false); - setFromDate(''); - setToDate(''); } else { setShowDateFilter(true); - setFromDate(() => { - if (defaultFromDate) return defaultFromDate; - if (!defaultToDate) return getDateInputFormat(); - }); - setToDate(() => { - if (defaultToDate) return defaultToDate; - if (!defaultFromDate) { - const toDate = new Date(); - toDate.setDate(toDate.getDate() + 7); - return getDateInputFormat(toDate); - } - }); + if (defaultFromDate) { + fromDate = defaultFromDate; + } else if (!defaultToDate) { + fromDate = getDateInputFormat(); + } + if (defaultToDate) { + toDate = defaultToDate; + } else if (!defaultFromDate) { + const date = new Date(); + date.setDate(date.getDate() + 7); + toDate = getDateInputFormat(date); + } } + setFromDate(fromDate ?? ''); + setToDate(toDate ?? ''); + const filterState = { + fromDate, + toDate, + }; + onChange(filterState); }; const handleFromDateChange = (e) => { setFromDate(e.target.value); + const filterState = { + fromDate: e.target.value || undefined, + toDate, + }; + onChange(filterState); setDirty?.(); }; const handleToDateChange = (e) => { setToDate(e.target.value); + const filterState = { + fromDate, + toDate: e.target.value || undefined, + }; + onChange(filterState); setDirty?.(); }; + return (
@@ -89,10 +114,17 @@ export function FilterDateRange({ ); } -FilterDateRange.prototype = { +FilterDateRange.propTypes = { label: PropTypes.string, selected: PropTypes.bool, removable: PropTypes.bool, shouldReset: PropTypes.number, className: PropTypes.string, + setDirty: PropTypes.func, + defaultFromDate: PropTypes.string, + defaultToDate: PropTypes.string, + onDirty: PropTypes.func, + subject: PropTypes.string, + style: PropTypes.object, + onChange: PropTypes.func, }; diff --git a/packages/webapp/src/components/Filter/FilterDateRange/styles.module.scss b/packages/webapp/src/components/Filter/FilterDateRange/styles.module.scss index 6a915c5bfd..9fd180ea46 100644 --- a/packages/webapp/src/components/Filter/FilterDateRange/styles.module.scss +++ b/packages/webapp/src/components/Filter/FilterDateRange/styles.module.scss @@ -1,5 +1,5 @@ /* - * Copyright 2023 LiteFarm.org + * Copyright 2023, 2024 LiteFarm.org * This file is part of LiteFarm. * * LiteFarm is free software: you can redistribute it and/or modify diff --git a/packages/webapp/src/components/Filter/FilterGroup/index.jsx b/packages/webapp/src/components/Filter/FilterGroup/index.tsx similarity index 56% rename from packages/webapp/src/components/Filter/FilterGroup/index.jsx rename to packages/webapp/src/components/Filter/FilterGroup/index.tsx index 13e575f64a..c40ed5e7a6 100644 --- a/packages/webapp/src/components/Filter/FilterGroup/index.jsx +++ b/packages/webapp/src/components/Filter/FilterGroup/index.tsx @@ -1,5 +1,5 @@ /* - * Copyright 2023 LiteFarm.org + * Copyright 2023, 2024 LiteFarm.org * This file is part of LiteFarm. * * LiteFarm is free software: you can redistribute it and/or modify @@ -17,28 +17,26 @@ import clsx from 'clsx'; import PropTypes from 'prop-types'; import { FilterDate } from '../FilterDate'; import { FilterDateRange } from '../FilterDateRange'; -import { FilterMultiSelect } from '../FilterMultiSelect'; -import FilterPillSelect from '../FilterPillSelect'; -import { DATE, DATE_RANGE, PILL_SELECT, SEARCHABLE_MULTI_SELECT } from '../filterTypes'; import styles from './styles.module.scss'; +import type { ContainerOnChangeCallback, FilterState } from '../../../containers/Filter/types'; +import { FilterType, type ComponentFilter } from '../types'; +import { FilterMultiSelectV2 } from '../FilterMultiSelectV2'; -const FilterItem = ({ filter, showIndividualFilterControls, ...props }) => { - if ((filter.type === PILL_SELECT || !filter.type) && filter.options.length > 0) { - return ( - - ); - } else if (filter.type === DATE_RANGE) { +type ComponentOnChangeCallback = (filterState: FilterState) => void; + +export interface FilterItemProps { + filter: ComponentFilter; + onChange: ComponentOnChangeCallback; + shouldReset?: number; + showIndividualFilterControls?: boolean; +} + +const FilterItem = ({ filter, showIndividualFilterControls, ...props }: FilterItemProps) => { + if (filter.type === FilterType.DATE_RANGE) { return ; - } else if (filter.type === SEARCHABLE_MULTI_SELECT) { + } else if (filter.type === FilterType.SEARCHABLE_MULTI_SELECT) { return ( - { {...props} /> ); - } else if (filter.type === DATE) { + } else if (filter.type === FilterType.DATE) { return ; + } else { + return null; } }; +interface FilterGroupProps { + filters: ComponentFilter[]; + onChange: ContainerOnChangeCallback; + filterContainerClassName?: string; + shouldReset?: number; + showIndividualFilterControls?: boolean; +} + const FilterGroup = ({ filters, - filterRef, filterContainerClassName, onChange, shouldReset, showIndividualFilterControls = false, -}) => { - return filters.map((filter) => { - return ( -
- onChange(filter.filterKey, filterState)} - shouldReset={shouldReset} - showIndividualFilterControls={showIndividualFilterControls} - /> -
- ); - }); +}: FilterGroupProps) => { + return ( + <> + {filters.map((filter) => { + return ( +
+ onChange(filter.filterKey, filterState)} + shouldReset={shouldReset} + showIndividualFilterControls={showIndividualFilterControls} + /> +
+ ); + })} + + ); }; FilterGroup.propTypes = { @@ -91,9 +101,6 @@ FilterGroup.propTypes = { ), }), ).isRequired, - filterRef: PropTypes.shape({ - current: PropTypes.shape({ active: PropTypes.bool, label: PropTypes.string }), - }).isRequired, filterContainerClassName: PropTypes.string, onChange: PropTypes.func, shouldReset: PropTypes.number, diff --git a/packages/webapp/src/components/Filter/FilterMultiSelect/index.jsx b/packages/webapp/src/components/Filter/FilterMultiSelect/index.tsx similarity index 56% rename from packages/webapp/src/components/Filter/FilterMultiSelect/index.jsx rename to packages/webapp/src/components/Filter/FilterMultiSelect/index.tsx index 03f9e250f7..3cba41347f 100644 --- a/packages/webapp/src/components/Filter/FilterMultiSelect/index.jsx +++ b/packages/webapp/src/components/Filter/FilterMultiSelect/index.tsx @@ -3,6 +3,17 @@ import PropTypes from 'prop-types'; import { useEffect, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import ReactSelect from '../../Form/ReactSelect'; +import { ComponentFilter } from '../types'; +import { ReduxFilterEntity, FilterState } from '../../../containers/Filter/types'; +import type { FilterItemProps } from '../FilterGroup'; + +interface FilterMultiSelectProps extends ComponentFilter { + filterRef: React.RefObject; + style?: React.CSSProperties; + shouldReset?: number; + onChange?: FilterItemProps['onChange']; + className?: string; +} export const FilterMultiSelect = ({ subject, @@ -13,7 +24,7 @@ export const FilterMultiSelect = ({ options = [], onChange, className, -}) => { +}: FilterMultiSelectProps) => { const { t } = useTranslation(['common']); const defaultValue = useMemo(() => { @@ -22,7 +33,7 @@ export const FilterMultiSelect = ({ const [value, setValue] = useState(defaultValue); const defaultFilterState = useMemo(() => { - return options.reduce((defaultFilterState, option) => { + return options.reduce((defaultFilterState: FilterState, option) => { defaultFilterState[option.value] = { active: false, label: option.label, @@ -32,37 +43,44 @@ export const FilterMultiSelect = ({ }, []); useEffect(() => { - if (shouldReset) { - setValue([]); - } - }, [shouldReset]); - - useEffect(() => { - filterRef.current[filterKey] = produce(defaultFilterState, (defaultFilterState) => { + filterRef.current![filterKey] = produce(defaultFilterState, (defaultFilterState) => { for (const option of value) { defaultFilterState[option.value].active = true; } }); }, [value]); + useEffect(() => { + if (shouldReset) { + setValue([]); + } + }, [shouldReset]); + return ( { - setValue(value); - onChange?.(value); + onChange={(value): void => { + setValue([...value]); + filterRef.current![filterKey] = produce(defaultFilterState, (defaultFilterState) => { + for (const option of value) { + defaultFilterState[option.value].active = true; + } + }); + + onChange?.(filterRef.current![filterKey]); }} isMulti + isSearchable className={className} /> ); }; -FilterMultiSelect.prototype = { +FilterMultiSelect.propTypes = { subject: PropTypes.string, options: PropTypes.array, filterKey: PropTypes.string, diff --git a/packages/webapp/src/components/Filter/FilterMultiSelectV2/index.tsx b/packages/webapp/src/components/Filter/FilterMultiSelectV2/index.tsx new file mode 100644 index 0000000000..3bd8e848c1 --- /dev/null +++ b/packages/webapp/src/components/Filter/FilterMultiSelectV2/index.tsx @@ -0,0 +1,249 @@ +/* + * Copyright (c) 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import { MouseEvent, useEffect, useLayoutEffect, useMemo, useRef } from 'react'; +import Select, { + ClearIndicatorProps, + components, + MenuListProps, + MultiValue, + MultiValueRemoveProps, + OptionProps, +} from 'react-select'; +import { ComponentFilter, ComponentFilterOption } from '../types'; +import { useState } from 'react'; +import { ReactComponent as XCircle } from '../../../assets/images/x-circle.svg'; +import { useTranslation } from 'react-i18next'; +import TextButton from '../../Form/Button/TextButton'; +import styles from './styles.module.scss'; +import Checkbox from '../../Form/Checkbox'; +import produce from 'immer'; +import { FilterItemProps } from '../FilterGroup'; +import { Label } from '../../Typography'; +import clsx from 'clsx'; + +interface FilterMultiSelectProps extends ComponentFilter { + onChange?: FilterItemProps['onChange']; + isDisabled?: boolean; +} + +const MultiValueRemove = (props: MultiValueRemoveProps) => ( + + + +); + +const ClearIndicator = (props: ClearIndicatorProps) => { + const { getValue } = props; + const value = getValue(); + const { t } = useTranslation(); + + return ( + <> + + {t('FILTER.SELECTED', { count: value.length })} - + + + {t('FILTER.CLEAR')} + + + ); +}; + +const Option = (props: OptionProps) => { + const { label, isSelected, selectOption, data } = props; + + const onClick = (e: MouseEvent) => { + selectOption(data); + e.stopPropagation(); + e.preventDefault(); + }; + + return ( + + + + + + ); +}; + +const MenuList = (props: MenuListProps) => { + const { children, getValue, hasValue, options } = props; + const { t } = useTranslation(); + const partiallyChecked = hasValue && getValue().length !== options.length; + const allChecked = getValue().length === options.length; + + return ( + +
+ +
+ {children} +
+ ); +}; + +export const FilterMultiSelectV2 = ({ + subject, + options, + onChange, + isDisabled, + shouldReset, +}: FilterMultiSelectProps) => { + const { t } = useTranslation(); + const [value, setValue] = useState(() => options.filter((option) => option.default)); + const [isMenuOpen, setIsMenuOpen] = useState(false); + const ref = useRef(null); + const hiddenCountRef = useRef(null); + + useEffect(() => { + if (shouldReset) { + setValue([]); + } + }, [shouldReset]); + + const sortedOptions = useMemo(() => { + const sorted = [...options].sort((a, b) => { + const isSelected = (option: ComponentFilterOption) => + value.some((item) => item.label === option.label); + return Number(isSelected(b)) - Number(isSelected(a)) || a.label.localeCompare(b.label); + }); + return sorted; + }, [options, value]); + + const defaultFilterState = useMemo(() => { + return options.reduce( + (defaultFilterState: Record, option) => { + defaultFilterState[option.value] = { + active: false, + label: option.label, + }; + return defaultFilterState; + }, + {}, + ); + }, []); + + const handleChange = (updatedValue: MultiValue) => { + setValue([...updatedValue].sort((a, b) => a.label.localeCompare(b.label))); + onChange?.( + produce(defaultFilterState, (defaultFilterState) => { + for (const option of updatedValue) { + defaultFilterState[option.value].active = true; + } + }), + ); + }; + + // Every time there will be a re-render, do re-calculation to show hidden pills count + useLayoutEffect(() => { + // Remove previous hidden pills count + hiddenCountRef.current?.remove(); + + // Find pill elements and container element + const pillElements = ref.current?.getElementsByClassName(styles.multiValue); + const valueContainer = ref.current?.getElementsByClassName(styles.valueContainer)?.[0]; + + if (pillElements && valueContainer) { + // Add spacing to account for the space the hidden pills count will take once added + valueContainer.classList.add(styles.hiddenPillsCountSpacing); + + const pillElementsArr = Array.from(pillElements) as HTMLElement[]; + + // Un-hide previosuly hidden pills + pillElementsArr.forEach((el) => el.classList.remove(styles.hiddenPill)); + + // Calculate where the top of the first pill is situated + const baseOffset = pillElementsArr[0]?.offsetTop; + // Calculate how many pills have their top border below that base (how many are in a new line) + const hiddenCount = pillElementsArr.filter((el) => el.offsetTop > baseOffset).length; + // Get last pill in first line + const lastVisiblePillIndex = pillElementsArr.length - hiddenCount - 1; + + pillElementsArr.forEach((el, index) => { + if (index === lastVisiblePillIndex && hiddenCount > 0) { + // Add hidden pills count next to last pill in first line + const newHiddenCountEl = document.createElement('p'); + newHiddenCountEl.textContent = `+${hiddenCount}`; + hiddenCountRef.current = newHiddenCountEl; + el.insertAdjacentElement('afterend', newHiddenCountEl); + } + if (index > lastVisiblePillIndex) { + // Hide overflowing pills + el.classList.add(styles.hiddenPill); + } + }); + + // Remove extra spacing + valueContainer.classList.remove(styles.hiddenPillsCountSpacing); + } + }); + + return ( +
+ +
{ @@ -49,7 +50,7 @@ const getColumns = (mobileView, currencySymbol, titleLabel, amountLabel) => [ align: 'right', format: (d) => currencySymbol + Math.abs(d.amount).toFixed(2), columnProps: { - style: { width: '100px', paddingRight: `${mobileView ? 9 : 75}px` }, + style: { width: '150px', paddingRight: `${mobileView ? 9 : 75}px` }, }, }, ]; @@ -64,6 +65,7 @@ export default function GeneralTransactionTable({ data, currencySymbol, mobileVi return (
{activeTab === tabsEnum.EMPLOYEE && ( - )} {activeTab === tabsEnum.TASKS && ( - . */ import clsx from 'clsx'; -import { ReactComponent as CropSaleIcon } from '../../../../assets/images/finance/transaction/Crop-sale-icn.svg'; -import { ReactComponent as CustomTypeIcon } from '../../../../assets/images/finance/transaction/Custom-revenue.svg'; -import { ReactComponent as EquipIcon } from '../../../../assets/images/finance/transaction/Equipment-icn.svg'; -import { ReactComponent as SoilAmendmentIcon } from '../../../../assets/images/finance/transaction/Soil-amendment-icn.svg'; -import { ReactComponent as PestIcon } from '../../../../assets/images/finance/transaction/Pest-icn.svg'; -import { ReactComponent as FuelIcon } from '../../../../assets/images/finance/transaction/Fuel-icn.svg'; -import { ReactComponent as MachineIcon } from '../../../../assets/images/finance/transaction/Machinery-icn.svg'; -import { ReactComponent as SeedIcon } from '../../../../assets/images/finance/transaction/Seeds-icn.svg'; -import { ReactComponent as OtherIcon } from '../../../../assets/images/finance/transaction/Custom-expense.svg'; -import { ReactComponent as LandIcon } from '../../../../assets/images/finance/transaction/Land-icn.svg'; -import { ReactComponent as MiscellaneousIcon } from '../../../../assets/images/finance/transaction/Miscellaneous-icn.svg'; -import { ReactComponent as UtilitiesIcon } from '../../../../assets/images/finance/transaction/Utilities-icn.svg'; -import { ReactComponent as LabourIcon } from '../../../../assets/images/finance/transaction/Labour-icn.svg'; -import { ReactComponent as InfrastructureIcon } from '../../../../assets/images/finance/transaction/Infrastructure-icn.svg'; -import { ReactComponent as TransportationIcon } from '../../../../assets/images/finance/transaction/Transportation-icn.svg'; -import { ReactComponent as ServicesIcon } from '../../../../assets/images/finance/transaction/Services-icn.svg'; import { formatAmount } from '../../../../containers/Finances/util'; import commonStyles from '../styles.module.scss'; import styles from './styles.module.scss'; - -const revenueTypeIcons = { - CROP_SALE: , - CUSTOM: , -}; - -const expenseTypeIcons = { - EQUIPMENT: , - SOIL_AMENDMENT: , - PEST_CONTROL: , - FUEL: , - MACHINERY: , - SEEDS_AND_PLANTS: , - OTHER: , - LAND: , - MISCELLANEOUS: , - UTILITIES: , - LABOUR: , - INFRASTRUCTURE: , - TRANSPORTATION: , - SERVICES: , -}; - -const icons = { ...revenueTypeIcons, ...expenseTypeIcons }; +import Icon from '../../../Icons'; export default function TransactionItem({ iconKey, transaction, type, amount, currencySymbol }) { return (
-
{icons[iconKey]}
+
{transaction}
{type}
diff --git a/packages/webapp/src/components/Finances/Transaction/Mobile/styles.module.scss b/packages/webapp/src/components/Finances/Transaction/Mobile/styles.module.scss index 9fa11c7657..357e7e9be6 100644 --- a/packages/webapp/src/components/Finances/Transaction/Mobile/styles.module.scss +++ b/packages/webapp/src/components/Finances/Transaction/Mobile/styles.module.scss @@ -13,6 +13,8 @@ * GNU General Public License for more details, see . */ + @import '../../../../assets/mixin.scss'; + // TransactionList .transactionList { margin-bottom: 85px; @@ -28,7 +30,7 @@ } .expandableItem { - padding: 12px 0; + padding: 12px 4px; align-items: center; } @@ -69,6 +71,7 @@ .mainContentLeft { display: flex; + align-items: center; gap: 4px; width: calc(100% - 100px); } @@ -91,3 +94,10 @@ overflow: hidden; text-overflow: ellipsis; } + +.expandableItemIcon { + background: var(--teal100); + width: 32px; + height: 32px; + @include svgColorFill(#95ADA9); +} diff --git a/packages/webapp/src/components/FloatingContainer/index.tsx b/packages/webapp/src/components/FloatingContainer/index.tsx new file mode 100644 index 0000000000..fb35a1682b --- /dev/null +++ b/packages/webapp/src/components/FloatingContainer/index.tsx @@ -0,0 +1,47 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import clsx from 'clsx'; +import styles from './styles.module.scss'; + +type CSSLength = `${number}px` | `${number}%` | `${number}vw` | `${number}vh` | 'auto'; + +interface FloatingContainerProps { + isCompactSideMenu: boolean; + children: React.ReactNode; + distanceFromBottom?: CSSLength; +} + +const FloatingContainer = ({ + isCompactSideMenu, + children, + distanceFromBottom, +}: FloatingContainerProps) => { + return ( +
+ {children} +
+ ); +}; + +export default FloatingContainer; diff --git a/packages/webapp/src/components/FloatingContainer/styles.module.scss b/packages/webapp/src/components/FloatingContainer/styles.module.scss new file mode 100644 index 0000000000..88ddc6be9b --- /dev/null +++ b/packages/webapp/src/components/FloatingContainer/styles.module.scss @@ -0,0 +1,44 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +@import '../../assets/mixin.scss'; + +.container { + position: fixed; + left: 50%; + transform: translateX(-50%); + z-index: 101; // position above FloatingButtonMenu + + --bottom-offset: 16px; + + // desktop + @include sm-breakpoint { + &.withCompactSideMenu { + margin-left: calc(var(--global-compact-side-menu-width) / 2); + } + &.withExpandedSideMenu { + margin-left: calc(var(--global-side-menu-width) / 2); + } + bottom: var(--bottom-offset); + } + + // mobile + @include xs-breakpoint { + width: 100%; + bottom: 0; + left: 0; + transform: none; + } +} diff --git a/packages/webapp/src/components/Form/Button/TextButton.tsx b/packages/webapp/src/components/Form/Button/TextButton.tsx index 8846228786..3455ebee1a 100644 --- a/packages/webapp/src/components/Form/Button/TextButton.tsx +++ b/packages/webapp/src/components/Form/Button/TextButton.tsx @@ -1,5 +1,5 @@ /* - * Copyright 2023 LiteFarm.org + * Copyright 2023, 2024 LiteFarm.org * This file is part of LiteFarm. * * LiteFarm is free software: you can redistribute it and/or modify @@ -12,7 +12,7 @@ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details, see . */ -import { ReactNode } from 'react'; +import { MouseEventHandler, ReactNode } from 'react'; import clsx from 'clsx'; import styles from './button.module.scss'; @@ -20,7 +20,7 @@ type ButtonProps = { children?: ReactNode | string; disabled?: boolean; className?: string; - onClick?(): void; + onClick?(e: React.MouseEvent): void; type?: 'button' | 'submit' | 'reset'; inputRef?: any; }; diff --git a/packages/webapp/src/components/Form/Button/button.module.scss b/packages/webapp/src/components/Form/Button/button.module.scss index 14006f269e..5cb23d02b5 100644 --- a/packages/webapp/src/components/Form/Button/button.module.scss +++ b/packages/webapp/src/components/Form/Button/button.module.scss @@ -28,7 +28,7 @@ --active-background: var(--Colors-Accent-Accent-yellow-500); --active-color: var(--Colors-Accent-Accent-yellow-900); - --focus-border: 2px solid var(--Colors-Accent-Accent-yellow-600); + --focus-outline: 2px solid var(--Colors-Accent-Accent-yellow-600); } .btn.secondary { @@ -42,6 +42,8 @@ --active-border: 1px solid var(--Colors-Neutral-Neutral-900); --active-color: var(--Colors-Neutral-Neutral-900); + + --focus-border: 1px solid var(--Colors-Neutral-Neutral-200); } .btn.secondary-2 { @@ -71,7 +73,7 @@ --active-background: var(--Colors-Accent-Accent-yellow-700); --active-color: var(--Colors-Accent-Accent-yellow-100); - --focus-border: 2px solid var(--Colors-Accent-Accent-yellow-600); + --focus-outline: 2px solid var(--Colors-Accent-Accent-yellow-600); --focus-box-shadow: none; } @@ -148,6 +150,7 @@ border: var(--hover-border); box-shadow: var(--hover-box-shadow); color: var(--hover-color); + outline: none; } .btn:hover:enabled svg path { @@ -192,7 +195,8 @@ } .btn:focus { - outline: none; + outline: var(--focus-outline); + outline-offset: -2px; border: var(--focus-border); box-shadow: var(--focus-box-shadow); } @@ -208,6 +212,11 @@ gap: 4px; } +.md { + min-height: 40px; + padding: 8px 16px; +} + .textButton { background-color: transparent; border: none; diff --git a/packages/webapp/src/components/Form/Button/index.tsx b/packages/webapp/src/components/Form/Button/index.tsx index d70cf3b38b..557d7c7865 100644 --- a/packages/webapp/src/components/Form/Button/index.tsx +++ b/packages/webapp/src/components/Form/Button/index.tsx @@ -17,10 +17,11 @@ import React, { ReactNode } from 'react'; import styles from './button.module.scss'; import clsx from 'clsx'; -type ButtonProps = { +export type ButtonProps = { color?: 'primary' | 'secondary' | 'secondary-2' | 'secondary-cta' | 'warning' | 'error' | 'none'; children?: ReactNode; sm?: boolean; + md?: boolean; disabled?: boolean; fullLength?: boolean; className?: string; @@ -34,6 +35,7 @@ const Button = ({ color = 'primary', children = 'Button', sm, + md, disabled = false, fullLength = false, className, @@ -49,6 +51,7 @@ const Button = ({ styles.btn, color && styles[color], sm && styles.sm, + md && styles.md, fullLength && styles.fullLength, className, )} diff --git a/packages/webapp/src/components/Form/Checkbox/checkbox.module.scss b/packages/webapp/src/components/Form/Checkbox/checkbox.module.scss index 7af695cdeb..e4405fa965 100644 --- a/packages/webapp/src/components/Form/Checkbox/checkbox.module.scss +++ b/packages/webapp/src/components/Form/Checkbox/checkbox.module.scss @@ -1,17 +1,50 @@ +/* + * Copyright (c) 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + @import '../../../assets/mixin'; + .container { display: flex; - gap: 7px; + align-items: center; + gap: 16px; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; + + &:hover input:not(:checked):not(:disabled) { + ~ .label { + color: var(--Colors-Neutral-Neutral-900); + } + + ~ svg { + box-shadow: 0px 0px 0px 4px var(--Colors-Primary-Primary-teal-300); + border-radius: 2px; + background-color: var(--Colors-Primary-Primary-teal-300); + + rect { + stroke: var(--Colors-Primary-Primary-teal-100); + } + } + } } .label { - transform: translate(0, -3px); flex: 1; + color: var(--Colors-Neutral-Neutral-500); } .smallLabel { @@ -27,63 +60,45 @@ width: 0; } -/* Create a custom Checkbox */ -.checkmark { - position: relative; - height: 18px; - width: 18px; - background-color: var(--bgInputListTile); - border: solid 2px var(--grey600); - border-radius: 2px; -} -// Change the color of the Checkbox -/* When the Checkbox is checked, add a green background */ -.container input:checked ~ .checkmark { - background-color: var(--teal700); - border: none; -} - -/* Create the checkmark/indicator (hidden when not checked) */ -.checkmark:after { - content: ''; - position: absolute; +.checked { display: none; } -/* Show the checkmark when checked */ -.container input:checked ~ .checkmark:after { - display: block; +.container input:checked { + ~ .checked { + display: block; + } + + ~ .unchecked { + display: none; + } + + ~ .label { + color: var(--Colors-Neutral-Neutral-900); + } } -/* Style the checkmark/indicator */ -.container .checkmark:after { - left: 5px; - width: 7px; - height: 13px; - border: solid white; - border-width: 0 2px 2px 0; - -webkit-transform: rotate(45deg); - -ms-transform: rotate(45deg); - transform: rotate(45deg); +.container.shouldBoldSelected input:checked { + ~ .label { + font-weight: 600; + } } .disabled { cursor: auto; -} -.disabled .checkmark { - background-color: var(--grey200); - border: solid 2px var(--grey400); + .label { + color: var(--Colors-Neutral-Neutral-100); + } + + svg { + rect, + path { + stroke: var(--Colors-Neutral-Neutral-100); + } + } } .error { margin-top: 0; } - -.container input[disabled] ~ .label { - color: var(--grey600); -} - -.container input[disabled]:checked ~ .checkmark:after { - border-color: var(--teal500); -} diff --git a/packages/webapp/src/components/Form/Checkbox/index.jsx b/packages/webapp/src/components/Form/Checkbox/index.jsx deleted file mode 100644 index 57cb233e9f..0000000000 --- a/packages/webapp/src/components/Form/Checkbox/index.jsx +++ /dev/null @@ -1,82 +0,0 @@ -import React from 'react'; -import styles from './checkbox.module.scss'; -import clsx from 'clsx'; -import PropTypes from 'prop-types'; -import { Error, Main } from '../../Typography'; - -const Checkbox = ({ - label = 'label', - disabled = false, - classes = {}, - children, - style, - onChange, - onBlur, - hookFormRegister, - errors, - sm, - tooltipContent = undefined, - ...props -}) => { - const name = hookFormRegister?.name ?? props?.name; - return ( - - ); -}; - -Checkbox.propTypes = { - label: PropTypes.string, - disabled: PropTypes.bool, - classes: PropTypes.exact({ - checkbox: PropTypes.object, - label: PropTypes.object, - container: PropTypes.object, - error: PropTypes.object, - }), - hookFormRegister: PropTypes.exact({ - ref: PropTypes.func, - onChange: PropTypes.func, - onBlur: PropTypes.func, - name: PropTypes.string, - }), - onChange: PropTypes.func, - onBlur: PropTypes.func, - sm: PropTypes.bool, - children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]), -}; - -export default Checkbox; diff --git a/packages/webapp/src/components/Form/Checkbox/index.tsx b/packages/webapp/src/components/Form/Checkbox/index.tsx new file mode 100644 index 0000000000..ca04c9ac5b --- /dev/null +++ b/packages/webapp/src/components/Form/Checkbox/index.tsx @@ -0,0 +1,111 @@ +/* + * Copyright (c) 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import React, { PropsWithChildren, ReactEventHandler } from 'react'; +import styles from './checkbox.module.scss'; +import { UseFormRegisterReturn } from 'react-hook-form'; +import clsx from 'clsx'; +import { Error, Main } from '../../Typography'; +import { ReactComponent as PartiallyChecked } from '../../../assets/images/partially-checked.svg'; +import { ReactComponent as UncheckedEnabled } from '../../../assets/images/unchecked-enabled.svg'; +import { ReactComponent as CheckedEnabled } from '../../../assets/images/checked-enabled.svg'; + +interface CheckboxProps extends React.InputHTMLAttributes { + name?: string; + label?: string; + disabled?: boolean; + classes?: { + checkbox?: object; + label?: object; + container?: object; + error?: object; + }; + style?: object; + hookFormRegister?: UseFormRegisterReturn; + onChange?: ReactEventHandler; + onBlur?: ReactEventHandler; + sm?: boolean; + partiallyChecked?: boolean; + shouldBoldSelected?: boolean; + tooltipContent?: string; + errors?: string; +} + +const Checkbox = ({ + label = 'label', + disabled = false, + classes = {}, + children, + style, + onChange, + onBlur, + hookFormRegister, + errors, + sm, + tooltipContent = undefined, + partiallyChecked = false, + shouldBoldSelected = true, + ...props +}: PropsWithChildren) => { + const name = hookFormRegister?.name ?? props?.name; + return ( + + ); +}; + +export default Checkbox; diff --git a/packages/webapp/src/components/Form/ContextForm/WithPageTitle.tsx b/packages/webapp/src/components/Form/ContextForm/WithPageTitle.tsx new file mode 100644 index 0000000000..f5d32b46fc --- /dev/null +++ b/packages/webapp/src/components/Form/ContextForm/WithPageTitle.tsx @@ -0,0 +1,70 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import { useState, useMemo, ReactNode } from 'react'; +import { ClickAwayListener } from '@mui/material'; +import Layout from '../../Layout'; +import MultiStepPageTitle from '../../PageTitle/MultiStepPageTitle'; + +interface WithPageTitleProps { + children: ReactNode; + steps: { formContent: ReactNode; title: string }[]; + activeStepIndex: number; + cancelModalTitle: string; + onGoBack: () => void; + onCancel: () => void; +} + +export const WithPageTitle = ({ + children, + steps, + activeStepIndex, + cancelModalTitle, + onGoBack, + onCancel, +}: WithPageTitleProps) => { + const [showConfirmCancelModal, setShowConfirmCancelModal] = useState(false); + + const progressBarValue = useMemo( + () => (100 / (steps.length + 1)) * (activeStepIndex + 1), + [steps, activeStepIndex], + ); + + const onClickAway = () => { + setShowConfirmCancelModal(true); + }; + + const title = steps[activeStepIndex].title; + + return ( + +
+ + {/* @ts-ignore */} + + {children} + +
+
+ ); +}; diff --git a/packages/webapp/src/components/Form/ContextForm/WithStepperProgressBar.tsx b/packages/webapp/src/components/Form/ContextForm/WithStepperProgressBar.tsx new file mode 100644 index 0000000000..14aeefc977 --- /dev/null +++ b/packages/webapp/src/components/Form/ContextForm/WithStepperProgressBar.tsx @@ -0,0 +1,203 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import { ReactNode, useEffect, useState } from 'react'; +import { + UseFormHandleSubmit, + FieldValues, + FormState, + UseFormReset, + UseFormGetValues, +} from 'react-hook-form'; +import { History } from 'history'; +import StepperProgressBar, { StepperProgressBarProps } from '../../StepperProgressBar'; +import FloatingContainer from '../../FloatingContainer'; +import FormNavigationButtons from '../FormNavigationButtons'; +import FixedHeaderContainer from '../../Animals/FixedHeaderContainer'; +import CancelFlowModal from '../../Modals/CancelFlowModal'; +import styles from './styles.module.scss'; + +interface WithStepperProgressBarProps { + children: ReactNode; + history: History; + steps: { formContent: ReactNode; title: string }[]; + activeStepIndex: number; + cancelModalTitle: string; + isCompactSideMenu: boolean; + hasSummaryWithinForm: boolean; + stepperProgressBarConfig?: { + isMobile?: boolean; + isDarkMode?: boolean; + }; + stepperProgressBarTitle?: ReactNode; + onSave: ( + data: FieldValues, + onSuccess: () => void, + setFormResultData?: (data: any) => void, + ) => void; + onGoBack: () => void; + onCancel: () => void; + onGoForward: () => void; + reset: UseFormReset; + getValues: UseFormGetValues; + formState: FormState; + handleSubmit: UseFormHandleSubmit; + setFormResultData: (data: any) => void; + isEditing?: boolean; + setIsEditing?: React.Dispatch>; + showCancelFlow?: boolean; + setShowCancelFlow?: React.Dispatch>; +} + +export const WithStepperProgressBar = ({ + children, + history, + steps, + activeStepIndex, + cancelModalTitle, + isCompactSideMenu, + hasSummaryWithinForm, + stepperProgressBarConfig = {}, + stepperProgressBarTitle, + onSave, + onGoBack, + onCancel, + onGoForward, + handleSubmit, + reset, + getValues, + formState: { isValid, isDirty }, + setFormResultData, + isEditing, + setIsEditing, + showCancelFlow, + setShowCancelFlow, +}: WithStepperProgressBarProps) => { + const [transition, setTransition] = useState<{ unblock?: () => void; retry?: () => void }>({ + unblock: undefined, + retry: undefined, + }); + const [isSaving, setIsSaving] = useState(false); + + const isSummaryPage = hasSummaryWithinForm && activeStepIndex === steps.length - 1; + const isSingleStep = steps.length === 1; + + // Block the page transition + // https://github.com/remix-run/history/blob/dev/docs/blocking-transitions.md + useEffect(() => { + if (isSummaryPage || !isDirty) { + return; + } + const unblock = history.block((tx) => { + setTransition({ unblock, retry: tx.retry }); + }); + + return () => unblock(); + }, [isSummaryPage, isDirty, history]); + + const isFinalStep = + (!hasSummaryWithinForm && activeStepIndex === steps.length - 1) || + (hasSummaryWithinForm && activeStepIndex === steps.length - 2); + + const shouldShowFormNavigationButtons = !isSummaryPage && isEditing; + + const onSuccess = () => { + reset(getValues()); + setIsEditing?.(false); + + if (hasSummaryWithinForm) { + onGoForward(); + } + }; + + const onContinue = async () => { + if (isFinalStep) { + setIsSaving(true); + await handleSubmit((data: FieldValues) => onSave(data, onSuccess, setFormResultData))(); + setIsSaving(false); + return; + } + onGoForward(); + }; + + const handleCancel = () => { + try { + transition.unblock?.(); + transition.retry?.(); + } catch (e) { + console.error(`Error during canceling ${cancelModalTitle}: ${e}`); + } + reset(); + setIsEditing?.(false); + setShowCancelFlow?.(false); + }; + + const handleDismissModal = () => { + setTransition({ unblock: undefined, retry: undefined }); + setShowCancelFlow?.(false); + }; + + return ( + title)} + activeStep={activeStepIndex} + > +
{children}
+ {shouldShowFormNavigationButtons && ( + + + + )} + {(transition.unblock || showCancelFlow) && ( + + )} +
+ ); +}; + +type StepperProgressBarWrapperProps = StepperProgressBarProps & { + children: ReactNode; + isSingleStep: boolean; +}; + +const StepperProgressBarWrapper = ({ + children, + isSingleStep, + ...stepperProgressBarProps +}: StepperProgressBarWrapperProps) => { + if (isSingleStep) { + return <>{children}; + } + + return ( + }> + {children} + + ); +}; diff --git a/packages/webapp/src/components/Form/ContextForm/index.tsx b/packages/webapp/src/components/Form/ContextForm/index.tsx new file mode 100644 index 0000000000..9b9cdae4fb --- /dev/null +++ b/packages/webapp/src/components/Form/ContextForm/index.tsx @@ -0,0 +1,124 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import { useState, useMemo } from 'react'; +import { FormProvider, useForm } from 'react-hook-form'; +import { WithPageTitle } from './WithPageTitle'; +import { WithStepperProgressBar } from './WithStepperProgressBar'; + +export enum Variant { + PAGE_TITLE = 'page_title', + STEPPER_PROGRESS_BAR = 'stepper_progress_bar', +} + +const COMPONENTS = { + [Variant.PAGE_TITLE]: (props: any) => , + [Variant.STEPPER_PROGRESS_BAR]: (props: any) => , +}; + +interface ContextFormProps { + history: any; // mocking in Storybook prevents more specific type + getSteps: (data?: any) => any; + defaultFormValues: any; + variant?: Variant; + isEditing?: boolean; + setIsEditing?: React.Dispatch>; + [key: string]: any; +} + +export const ContextForm = ({ + history, + getSteps, + defaultFormValues, + variant = Variant.PAGE_TITLE, + isEditing = true, + setIsEditing, + ...props +}: ContextFormProps) => { + const [activeStepIndex, setActiveStepIndex] = useState(0); + const [formData, setFormData] = useState({}); + const [formResultData, setFormResultData] = useState(); + const [showCancelFlow, setShowCancelFlow] = useState(false); + + const form = useForm({ + mode: 'onBlur', + defaultValues: defaultFormValues, + }); + + const steps = useMemo(() => getSteps(formData), [getSteps, formData]); + + const storeFormData = () => { + const values = form.getValues(); + setFormData({ ...formData, ...values }); + }; + + const onGoBack = () => { + if (activeStepIndex === 0) { + onCancel(); + return; + } + storeFormData(); + setActiveStepIndex(activeStepIndex - 1); + }; + + const onGoForward = () => { + storeFormData(); + setActiveStepIndex(activeStepIndex + 1); + }; + + const onCancel = () => { + if (setIsEditing) { + if (form.formState.isDirty) { + setShowCancelFlow(true); + } else { + setIsEditing?.(false); + } + return; + } + history.back(); + }; + + const { FormContent } = steps[activeStepIndex]; + + const Component = COMPONENTS[variant]; + + return ( + + + + + + ); +}; diff --git a/packages/webapp/src/components/Form/ContextForm/styles.module.scss b/packages/webapp/src/components/Form/ContextForm/styles.module.scss new file mode 100644 index 0000000000..15d2f2bfef --- /dev/null +++ b/packages/webapp/src/components/Form/ContextForm/styles.module.scss @@ -0,0 +1,24 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +@import '../../../assets/mixin.scss'; + +.contentWrapper { + padding-bottom: 88px; // button height 72px + button top 16px + + @include sm-breakpoint { + padding-bottom: 104px; // button height 72px + button top 16px + button bottom 16px + } +} diff --git a/packages/webapp/src/components/Form/DropDownButton/index.jsx b/packages/webapp/src/components/Form/DropDownButton/index.jsx index 04e00738f4..bbca6d8953 100644 --- a/packages/webapp/src/components/Form/DropDownButton/index.jsx +++ b/packages/webapp/src/components/Form/DropDownButton/index.jsx @@ -28,6 +28,8 @@ export default function DropdownButton({ Menu, type, classes: propClasses = {}, + menuPositionOffset, + disabled = false, }) { const classes = useStyles(); const [isOpen, setOpen] = useState(defaultOpen); @@ -53,6 +55,7 @@ export default function DropdownButton({ autoFocusItem: isOpen, id: 'composition-menu', 'aria-labelledby': 'composition-button', + onCloseMenu: () => setOpen(false), }; return ( @@ -63,9 +66,10 @@ export default function DropdownButton({ inputRef={anchorRef} className={clsx(type && styles[type], propClasses.button)} id="composition-button" - aria-controls={open ? 'composition-menu' : undefined} - aria-expanded={open ? 'true' : undefined} + aria-controls={isOpen ? 'composition-menu' : undefined} + aria-expanded={isOpen ? 'true' : undefined} aria-haspopup="true" + disabled={disabled} > {children} {!noIcon && ( @@ -82,6 +86,12 @@ export default function DropdownButton({ role={undefined} disablePortal className={classes.popper} + // https://popper.js.org/docs/v2/modifiers/offset/#offset-1 + modifiers={ + menuPositionOffset + ? [{ name: 'offset', options: { offset: menuPositionOffset } }] + : undefined + } > @@ -110,7 +120,7 @@ DropdownButton.propTypes = { onClick: PropTypes.func, }), ), - children: PropTypes.string, + children: PropTypes.node, defaultOpen: PropTypes.bool, noIcon: PropTypes.bool, Menu: PropTypes.elementType, @@ -118,4 +128,5 @@ DropdownButton.propTypes = { classes: PropTypes.shape({ button: PropTypes.string, }), + menuPositionOffset: PropTypes.arrayOf(PropTypes.number), }; diff --git a/packages/webapp/src/components/Form/FilePickerWrapper/index.tsx b/packages/webapp/src/components/Form/FilePickerWrapper/index.tsx index 0a4bf6b449..e727150a60 100644 --- a/packages/webapp/src/components/Form/FilePickerWrapper/index.tsx +++ b/packages/webapp/src/components/Form/FilePickerWrapper/index.tsx @@ -53,5 +53,5 @@ PureFilePickerWrapper.propTypes = { style: PropTypes.object, onChange: PropTypes.func, children: PropTypes.node, - className: PropTypes.object, + className: PropTypes.string, }; diff --git a/packages/webapp/src/components/Form/FormNavigationButtons/index.tsx b/packages/webapp/src/components/Form/FormNavigationButtons/index.tsx new file mode 100644 index 0000000000..da397a7313 --- /dev/null +++ b/packages/webapp/src/components/Form/FormNavigationButtons/index.tsx @@ -0,0 +1,88 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import React from 'react'; +import clsx from 'clsx'; +import { useTranslation } from 'react-i18next'; +import Button from '../Button'; +import styles from './styles.module.scss'; +import { ReactComponent as ChevronRight } from '../../../assets/images/buttons/chevron-right.svg'; + +export interface FormNavigationButtonsProps { + isFirstStep?: boolean; + isFinalStep?: boolean; + isDisabled?: boolean; + contextualContent?: React.ReactNode | string; + informationalText?: string; + onCancel: () => void; + onContinue: () => void; + onPrevious?: () => void; +} + +const FormNavigationButtons = ({ + isFirstStep = false, + isFinalStep = false, + isDisabled = false, + contextualContent, + informationalText, + onCancel, + onContinue, + onPrevious, +}: FormNavigationButtonsProps) => { + const { t } = useTranslation(); + + return ( +
+ {contextualContent &&
{contextualContent}
} +
+ + {onPrevious && ( + + )} + +
+ {informationalText &&
{informationalText}
} +
+ ); +}; + +export default FormNavigationButtons; diff --git a/packages/webapp/src/components/Form/FormNavigationButtons/styles.module.scss b/packages/webapp/src/components/Form/FormNavigationButtons/styles.module.scss new file mode 100644 index 0000000000..068b38799d --- /dev/null +++ b/packages/webapp/src/components/Form/FormNavigationButtons/styles.module.scss @@ -0,0 +1,75 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +@import '../../../assets/mixin.scss'; + +.container { + display: flex; + flex-flow: column nowrap; + align-items: center; + justify-content: center; + + padding: 16px 32px; + border-radius: 16px; + background: var(--White); + box-shadow: 0px 2px 4px 0px rgba(43, 48, 58, 0.1); + + font-size: 12px; + font-style: normal; + line-height: 20px; + + // desktop (floating) + @include sm-breakpoint { + width: 380px; + } + + // mobile (drawer) + @include xs-breakpoint { + border-radius: 0px 0px 16px 16px; + box-shadow: 0px -2px 4px 0px rgba(102, 115, 138, 0.1); + } +} + +.buttonContainer { + width: 100%; + display: flex; + align-items: center; + justify-content: center; + gap: 16px; + padding-block: 4px; +} + +.button { + svg { + width: 16px; + height: 16px; + } +} + +.informationalText { + color: var(--Colors-Neutral-Neutral-400); + margin-bottom: -8px; +} + +.contextualContent { + color: var(--Colors-Accent---singles-Brown-full); + margin-top: -8px; +} + +/* This logic requires passing bold text in a tag, which +is consistent with our previous use of the Trans component. */ +.contextualContent *:not(b) { + font-weight: 300; +} diff --git a/packages/webapp/src/components/Form/Input/index.jsx b/packages/webapp/src/components/Form/Input/index.jsx index 35e6bdce5e..ab8837602c 100644 --- a/packages/webapp/src/components/Form/Input/index.jsx +++ b/packages/webapp/src/components/Form/Input/index.jsx @@ -48,6 +48,8 @@ const Input = ({ currency, stepper = false, className = '', + trigger, + onCleared, ...props }) => { const { t } = useTranslation(['translation', 'common']); @@ -71,7 +73,10 @@ const Input = ({ input.current.value = ''; onChange?.({ target: input.current }); hookFormRegister?.onChange({ target: input.current }); + // Manually trigger validation against the new value '' + trigger?.(name); setShowError(false); + onCleared?.(); }; const onKeyDown = ['number', 'decimal'].includes(type) ? numberOnKeyDown : undefined; @@ -277,6 +282,8 @@ Input.propTypes = { min: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), placeholder: PropTypes.string, className: PropTypes.string, + trigger: PropTypes.func, + onCleared: PropTypes.func, }; export default Input; diff --git a/packages/webapp/src/components/Form/InputAutoSize/index.jsx b/packages/webapp/src/components/Form/InputAutoSize/index.jsx index e29d1233e7..af59af8530 100644 --- a/packages/webapp/src/components/Form/InputAutoSize/index.jsx +++ b/packages/webapp/src/components/Form/InputAutoSize/index.jsx @@ -57,7 +57,7 @@ export default function InputAutoSize({ hookFormRegister?.onBlur(e); }} disabled={disabled} - placeholder={!disabled && placeholder} + placeholder={disabled ? '' : placeholder} {...props} /> {errors ? {errors} : null} diff --git a/packages/webapp/src/components/Form/LockedInput/index.tsx b/packages/webapp/src/components/Form/LockedInput/index.tsx new file mode 100644 index 0000000000..5d29e5950a --- /dev/null +++ b/packages/webapp/src/components/Form/LockedInput/index.tsx @@ -0,0 +1,36 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import InputBase, { type InputBaseSharedProps } from '../InputBase'; +import { FieldValues } from 'react-hook-form'; +import Icon from '../../Icons'; +import clsx from 'clsx'; +import styles from './styles.module.scss'; + +export type LockedInputProps = InputBaseSharedProps & { className?: string }; + +export default function LockedInput({ + className, + ...props +}: LockedInputProps) { + return ( + } + /> + ); +} diff --git a/packages/webapp/src/components/Form/LockedInput/styles.module.scss b/packages/webapp/src/components/Form/LockedInput/styles.module.scss new file mode 100644 index 0000000000..d1ef6da5e8 --- /dev/null +++ b/packages/webapp/src/components/Form/LockedInput/styles.module.scss @@ -0,0 +1,3 @@ +.icon { + background-color: transparent +} \ No newline at end of file diff --git a/packages/webapp/src/components/Form/NumberInput/NumberInputStepper.tsx b/packages/webapp/src/components/Form/NumberInput/NumberInputStepper.tsx index 7ebf8d2d34..115dc09b41 100644 --- a/packages/webapp/src/components/Form/NumberInput/NumberInputStepper.tsx +++ b/packages/webapp/src/components/Form/NumberInput/NumberInputStepper.tsx @@ -14,8 +14,8 @@ */ import styles from './stepper.module.scss'; -import { ReactComponent as IncrementIcon } from '../../../assets/images/number-input-increment.svg'; -import { ReactComponent as DecrementIcon } from '../../../assets/images/number-input-decrement.svg'; +import { ReactComponent as IncrementIcon } from '../../../assets/images/chevron-up.svg'; +import { ReactComponent as DecrementIcon } from '../../../assets/images/chevron-down-2.svg'; import { ComponentPropsWithoutRef, PropsWithChildren } from 'react'; import clsx from 'clsx'; diff --git a/packages/webapp/src/components/Form/NumberInput/index.tsx b/packages/webapp/src/components/Form/NumberInput/index.tsx index 3e2333d2e0..ee5c4314bf 100644 --- a/packages/webapp/src/components/Form/NumberInput/index.tsx +++ b/packages/webapp/src/components/Form/NumberInput/index.tsx @@ -61,7 +61,7 @@ export default function NumberInput({ }: NumberInputProps) { const { field, fieldState, formState } = useController({ name, control, rules, defaultValue }); const { inputProps, reset, numericValue, increment, decrement } = useNumberInput({ - initialValue: get(formState.defaultValues, name) || defaultValue, + initialValue: field.value || get(formState.defaultValues, name) || defaultValue, allowDecimal, decimalDigits, locale, diff --git a/packages/webapp/src/components/Form/ReactSelect/CreatableSelect.tsx b/packages/webapp/src/components/Form/ReactSelect/CreatableSelect.tsx index bb3871b351..a74c230a74 100644 --- a/packages/webapp/src/components/Form/ReactSelect/CreatableSelect.tsx +++ b/packages/webapp/src/components/Form/ReactSelect/CreatableSelect.tsx @@ -22,6 +22,19 @@ import { useTranslation } from 'react-i18next'; import { ClearIndicator, MultiValueRemove, MenuOpenDropdownIndicator } from './components'; import scss from './styles.module.scss'; +const upperCaseTrim = (a: String) => { + return a.toUpperCase().trim(); +}; + +/** + * Check for duplicate or matching strings - (same as backend util) + * TODO: consider localeCompare() or not caring about case sensitivity + **/ + +export const compareUpperCaseTrim = (a: String, b: String) => { + return upperCaseTrim(a) === upperCaseTrim(b); +}; + type CreatableSelectProps< Option = unknown, IsMulti extends boolean = false, @@ -54,9 +67,19 @@ const CreatableSelect = React.forwardRef((props, ref) => { optional, components, createPromptText = t('common:CREATE'), - placeholder = t('common:SELECT') + '...', + placeholder = t('common:SELECT_OR_ADD_YOUR_OWN'), + options, ...restProps } = props; + const isValidNewOption = (inputValue: string) => { + return ( + inputValue.trim().length > 0 && + !options?.some((opt) => { + // @ts-ignore + return compareUpperCaseTrim(opt?.label, inputValue); + }) + ); + }; return (
@@ -75,6 +98,7 @@ const CreatableSelect = React.forwardRef((props, ref) => { isClearable placeholder={placeholder} formatCreateLabel={(userInput) => `${createPromptText} "${userInput}"`} + isValidNewOption={isValidNewOption} styles={{ ...(baseStyles as any), ...styles, @@ -86,6 +110,7 @@ const CreatableSelect = React.forwardRef((props, ref) => { ...components, }} ref={ref} + options={options} {...restProps} />
diff --git a/packages/webapp/src/components/Form/ReactSelect/styles.ts b/packages/webapp/src/components/Form/ReactSelect/styles.ts index 41f5fea634..05e000e418 100644 --- a/packages/webapp/src/components/Form/ReactSelect/styles.ts +++ b/packages/webapp/src/components/Form/ReactSelect/styles.ts @@ -19,7 +19,7 @@ import { colors } from '../../../assets/theme'; export const styles: StylesConfig = { option: (provided, state) => ({ ...provided, - backgroundColor: 'white', + backgroundColor: state.isFocused ? 'var(--Colors-Secondary-Secondary-green-100)' : 'white', '&:hover': { backgroundColor: 'var(--Colors-Secondary-Secondary-green-100)', }, @@ -98,7 +98,7 @@ export const styles: StylesConfig = { fontFamily: '"Open Sans", "SansSerif", serif, "Manjari"', }), - multiValueRemove: (provided) => ({ + multiValueRemove: (provided, state) => ({ ...provided, color: 'white', cursor: 'pointer', @@ -107,6 +107,7 @@ export const styles: StylesConfig = { backgroundColor: 'transparent', color: 'white', }, + display: state.isDisabled ? 'none' : 'flex', }), multiValueLabel: (provided) => ({ @@ -116,10 +117,10 @@ export const styles: StylesConfig = { color: 'white', padding: 0, }), - multiValue: (provided) => ({ + multiValue: (provided, state) => ({ ...provided, borderRadius: '32px', - padding: '0 4px 0 12px', + padding: state.isDisabled ? '0 18px 0 12px' : '0 4px 0 12px', border: '1px solid var(--teal700)', fontWeight: 600, backgroundColor: colors.teal600, @@ -139,9 +140,10 @@ export const styles: StylesConfig = { ...provided, alignItems: 'flex-start', }), - dropdownIndicator: (provided) => ({ + dropdownIndicator: (provided, state) => ({ ...provided, paddingTop: '14px', + display: state.isDisabled ? 'none' : 'block', }), menuPortal: (base) => ({ ...base, zIndex: 9999 }), container: (provided, state) => ({ diff --git a/packages/webapp/src/components/Form/SexDetails/SexDetailsCount/index.tsx b/packages/webapp/src/components/Form/SexDetails/SexDetailsCount/index.tsx new file mode 100644 index 0000000000..2473c3a04e --- /dev/null +++ b/packages/webapp/src/components/Form/SexDetails/SexDetailsCount/index.tsx @@ -0,0 +1,68 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import { Text } from '../../../Typography'; +import { Info } from '../../../Typography'; +import { Error } from '../../../Typography'; +import { Details } from '../SexDetailsPopover'; +import SexDetailsCountInput from '../SexDetailsCountInput'; +import styles from './styles.module.scss'; +import { useTranslation } from 'react-i18next'; + +type SexDetailsCountProps = { + maxCount: number; + details: Details; + total: number; + unspecified: number; + onCountChange: (countId: Details[0]['id'], count: number) => void; +}; + +export default function SexDetailsCount({ + details, + maxCount, + total, + unspecified, + onCountChange, +}: SexDetailsCountProps) { + const { t } = useTranslation(); + return ( +
+
+ {details.map(({ id, label, count }) => ( + onCountChange(id, count)} + /> + ))} +
+
+ + {t('ADD_ANIMAL.ANIMALS_TOTAL', { count: maxCount })} + + + {t('ADD_ANIMAL.ANIMALS_UNSPECIFIED', { count: Math.max(unspecified, 0) })} + + {total > maxCount && ( + + {t('ADD_ANIMAL.SEX_DETAIL_ERROR_POPOVER', { count: maxCount })} + + )} +
+
+ ); +} diff --git a/packages/webapp/src/components/Form/SexDetails/SexDetailsCount/styles.module.scss b/packages/webapp/src/components/Form/SexDetails/SexDetailsCount/styles.module.scss new file mode 100644 index 0000000000..864e39d87b --- /dev/null +++ b/packages/webapp/src/components/Form/SexDetails/SexDetailsCount/styles.module.scss @@ -0,0 +1,41 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +.container { + padding: 8px; + border-radius: 8px; +} + +.countInputs { + display: flex; + flex-direction: column; + gap: 4px; +} + +.helpText { + margin-top: 16px; + text-align: right; + font-size: 14px; + + &Unspecified { + color: var(--Colors-Neutral-Neutral-300); + margin-right: 16px; + } + + &Total { + color: var(--Colors-Neutral-Neutral-900); + font-weight: 700; + } +} diff --git a/packages/webapp/src/components/Form/SexDetails/SexDetailsCountInput/index.tsx b/packages/webapp/src/components/Form/SexDetails/SexDetailsCountInput/index.tsx new file mode 100644 index 0000000000..5c39790168 --- /dev/null +++ b/packages/webapp/src/components/Form/SexDetails/SexDetailsCountInput/index.tsx @@ -0,0 +1,73 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import InputBase from '../../InputBase'; +import { NumberInputStepperButton } from '../../NumberInput/NumberInputStepper'; +import useNumberInput from '../../NumberInput/useNumberInput'; +import styles from './styles.module.scss'; +import { ReactComponent as PlusSquareIcon } from '../../../../assets/images/plus-square.svg'; +import { ReactComponent as MinusSquareIcon } from '../../../../assets/images/minus-square.svg'; + +type SexDetailsCountInputProps = { + label: string; + initialCount: number; + max: number; + onCountChange?: (count: number) => void; +}; + +export default function SexDetailsCountInput({ + label, + max, + onCountChange, + initialCount, +}: SexDetailsCountInputProps) { + const { increment, decrement, inputProps, numericValue } = useNumberInput({ + initialValue: initialCount, + max, + clampOnBlur: false, + useGrouping: false, + allowDecimal: false, + onChange: (num) => onCountChange?.(isNaN(num) ? 0 : num), + }); + + return ( +
+
{label}
+ + + + } + rightSection={ + + + + } + {...inputProps} + /> +
+ ); +} diff --git a/packages/webapp/src/components/Form/SexDetails/SexDetailsCountInput/styles.module.scss b/packages/webapp/src/components/Form/SexDetails/SexDetailsCountInput/styles.module.scss new file mode 100644 index 0000000000..4a4b60e287 --- /dev/null +++ b/packages/webapp/src/components/Form/SexDetails/SexDetailsCountInput/styles.module.scss @@ -0,0 +1,40 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +.container { + display: flex; + align-items: center; +} + +.label { + min-width: 72px; + padding-left: 8px; +} + +.countInput { + width: 100%; + text-align: center; + font-weight: 700; + color: var(--Colors-Neutral-Neutral-600); +} + +.stepperBtn { + display: flex; + justify-content: center; + align-items: center; + &:disabled { + color: var(--Colors-Neutral-Neutral-100); + } +} diff --git a/packages/webapp/src/components/Form/SexDetails/SexDetailsPopover/index.tsx b/packages/webapp/src/components/Form/SexDetails/SexDetailsPopover/index.tsx new file mode 100644 index 0000000000..55832b36a4 --- /dev/null +++ b/packages/webapp/src/components/Form/SexDetails/SexDetailsPopover/index.tsx @@ -0,0 +1,91 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import { Popover, useMediaQuery, useTheme } from '@mui/material'; +import Drawer from '../../../Drawer'; +import Button from '../../Button'; +import SexDetailsCount from '../SexDetailsCount'; +import styles from './styles.module.scss'; +import { useTranslation } from 'react-i18next'; + +export type Details = { + id: number; + label: string; + count: number; +}[]; + +type SexDetailsPopoverProps = { + anchor: HTMLElement; + details: Details; + maxCount: number; + total: number; + unspecified: number; + onConfirm: (details: Details) => void; + onCountChange: (countId: Details[0]['id'], count: number) => void; + onCancel: () => void; +}; + +export default function SexDetailsPopover({ + anchor, + details, + maxCount, + total, + unspecified, + onConfirm, + onCountChange, + onCancel, +}: SexDetailsPopoverProps) { + const theme = useTheme(); + const isMobile = useMediaQuery(theme.breakpoints.down('sm')); + const { t } = useTranslation(); + + return isMobile ? ( + + +
+ + +
+
+ ) : ( + onConfirm(details)} + > + + + ); +} diff --git a/packages/webapp/src/components/Form/SexDetails/SexDetailsPopover/styles.module.scss b/packages/webapp/src/components/Form/SexDetails/SexDetailsPopover/styles.module.scss new file mode 100644 index 0000000000..b6d6e23fe8 --- /dev/null +++ b/packages/webapp/src/components/Form/SexDetails/SexDetailsPopover/styles.module.scss @@ -0,0 +1,26 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +.buttonWrapper { + display: flex; + justify-content: center; + gap: 16px; + margin-top: 16px; + padding: 8px 16px 0 16px; + + & > * { + flex: 1; + } +} diff --git a/packages/webapp/src/components/Form/SexDetails/index.tsx b/packages/webapp/src/components/Form/SexDetails/index.tsx new file mode 100644 index 0000000000..1bbc2da848 --- /dev/null +++ b/packages/webapp/src/components/Form/SexDetails/index.tsx @@ -0,0 +1,119 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +import { useMemo, useState } from 'react'; +import SexDetailsPopover, { Details } from './SexDetailsPopover'; +import InputBase from '../InputBase'; +import styles from './styles.module.scss'; +import { ReactComponent as ChevronDown } from '../../../assets/images/chevron-down-2.svg'; +import { useTranslation } from 'react-i18next'; +import TextButton from '../Button/TextButton'; + +type SexDetailsProps = { + initialDetails: Details; + maxCount: number; + onConfirm: (d: Details) => void; + onCancel?: () => void; + isDisabled?: boolean; +}; + +const initialize = (details: Details) => () => structuredClone(details) as Details; + +export default function SexDetails({ + maxCount, + initialDetails, + onCancel, + onConfirm, + isDisabled = false, +}: SexDetailsProps) { + const [anchor, setAnchor] = useState(null); + const [details, setDetails] = useState(initialize(initialDetails)); + const total = details.reduce((prevCount, { count }) => prevCount + count, 0); + const unspecified = maxCount - total; + const isPopoverOpen = !!anchor; + const { t } = useTranslation(); + + const handleCancel = () => { + setAnchor(null); + setDetails(initialize(initialDetails)); + onCancel?.(); + }; + + const handleConfirm = (details: Details) => { + setAnchor(null); + onConfirm(details); + }; + + const handleCountChange = (id: Details[0]['id'], count: number) => + setDetails( + details.map((detail) => { + if (detail.id === id) detail.count = count; + return detail; + }), + ); + + // memoizing ensures this readonly input does not update while user is editing the popover + const anchorInput = useMemo( + () => ( + maxCount ? t('ADD_ANIMAL.SEX_DETAIL_ERROR', { count: maxCount }) : undefined} + showResetIcon={false} + rightSection={} + disabled={isDisabled} + mainSection={ + {} : (e) => setAnchor(e.currentTarget)} + className={styles.button} + disabled={isDisabled} + > + {!total ? ( + + {t('ADD_ANIMAL.SPECIFY_SEX')} + + ) : ( + details.map(({ id, label, count }) => ( + + {label} + {count} + + )) + )} + + } + /> + ), + [isPopoverOpen, maxCount, isDisabled], + ); + + return ( + <> + {anchorInput} + {isPopoverOpen && ( + + )} + + ); +} diff --git a/packages/webapp/src/components/Form/SexDetails/styles.module.scss b/packages/webapp/src/components/Form/SexDetails/styles.module.scss new file mode 100644 index 0000000000..949e00ed41 --- /dev/null +++ b/packages/webapp/src/components/Form/SexDetails/styles.module.scss @@ -0,0 +1,52 @@ +/* + * Copyright 2024 LiteFarm.org + * This file is part of LiteFarm. + * + * LiteFarm is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LiteFarm is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details, see . + */ + +// unstyled button +.button { + all: unset; + height: 100%; + width: 100%; + cursor: default; + + & > :last-child .count::after { + display: none; + } +} + +.count { + font-weight: 700; + + &::before { + content: ': '; + } + &::after { + content: '-'; + margin: 0 8px; + } +} + +.placeholder { + color: var(--Colors-Neutral-Neutral-200); + font-weight: 400; +} + +.placeholderDark { + color: var(--Colors-Neutral-Neutral-900); + font-weight: 700; +} + +.chevronDownIcon { + color: var(--Colors-Neutral-Neutral-500); +} diff --git a/packages/webapp/src/components/Form/Switch/index.tsx b/packages/webapp/src/components/Form/Switch/index.tsx index 88339f8280..0a94a2b889 100644 --- a/packages/webapp/src/components/Form/Switch/index.tsx +++ b/packages/webapp/src/components/Form/Switch/index.tsx @@ -25,7 +25,11 @@ interface SwitchProps { label?: ReactNode | string; leftLabel?: ReactNode | string; isToggleVariant?: boolean; + hideInnerText?: boolean; disabled?: boolean; + classes?: { + container?: string; + }; } const Switch = ({ @@ -34,13 +38,15 @@ const Switch = ({ label, leftLabel, isToggleVariant, + hideInnerText, disabled, + classes, ...props }: SwitchProps) => { const { t } = useTranslation(); return ( -
+
{leftLabel &&
{leftLabel}
}