diff --git a/.github/scripts/release-server-tag.sh b/.github/scripts/release-server-tag.sh index c4c89421..c7a55700 100644 --- a/.github/scripts/release-server-tag.sh +++ b/.github/scripts/release-server-tag.sh @@ -1,7 +1,7 @@ #!/usr/bin/bash # root directory is in root of this project # -output="graspit-reporters/packages/graspit-commons/.version" +output="handshake-nodejs-reporters/packages/common-handshakes/.version" if [ -f "$output" ] ; then rm "$output" diff --git a/.github/workflows/dashboard-test.yml b/.github/workflows/dashboard-test.yml deleted file mode 100644 index 8da2e1d8..00000000 --- a/.github/workflows/dashboard-test.yml +++ /dev/null @@ -1,47 +0,0 @@ -name: 'sanity-e2e' - -on: - push: - branches: - - "nodejs-reporters" - -permissions: - contents: write - -jobs: - test: - name: Test Dashboard - runs-on: 'macos-latest' - permissions: write-all - - steps: - - name: Checkout code - uses: actions/checkout@v3 - - - name: Use Node.js - uses: actions/setup-node@v3 - with: - node-version: 20.9.0 - - - name: Setup Turbo Repo - working-directory: ./graspit-reporters - run: npm install && npm run build - - - name: Download required for Dashboard - working-directory: ./graspit-reporters/packages/graspit-dashboard - run: npm install - - - name: Install Test Related Packages for mocha - working-directory: ./graspit-reporters/apps/test-wdio-mocha - run: npm install - - - name: Install Test Related Packages for cucumber - working-directory: ./graspit-reporters/apps/test-wdio-cucumber - run: npm install - - - name: patch & export results - working-directory: ./graspit-reporters - run: | - sudo npm run sanity - sudo npx graspit patch ../TestResults - sudo npx graspit export ../TestResults --out ../TestReports \ No newline at end of file diff --git a/.github/workflows/deploy-nodejs-reporters.yml b/.github/workflows/deploy-nodejs-reporters.yml new file mode 100644 index 00000000..c42eba1a --- /dev/null +++ b/.github/workflows/deploy-nodejs-reporters.yml @@ -0,0 +1,55 @@ +name: 'deploy-nodejs-reporters' + +on: + push: + branches: + - "nodejs-reporters" + paths: + - '**.js' + - '**.ts' + - '**deploy-nodejs-reporters.yml' # for testing this workflow + +permissions: + contents: write + +jobs: + test: + name: Test Dashboard + runs-on: 'macos-latest' + permissions: write-all + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Use Node.js + uses: actions/setup-node@v3 + with: + node-version: 20.9.0 + + - name: Setup Turbo Repo and conduct sanity test + working-directory: ./handshake-nodejs-reporters + run: npm install && npm run build && sudo npm run sanity + + - name: Download required for Dashboard + working-directory: ./handshake-nodejs-reporters/packages/handshake-dashboard + run: npm install + + - name: exporting results + working-directory: ./handshake-nodejs-reporters + run: | + sudo npx handshake export ../TestResults --out ../TestReports + + - name: Create Release Pull Request + uses: changesets/action@v1 + with: + cwd: ./handshake-nodejs-reporters + publish: npx changeset publish + title: "version handshake-nodejs-reporters" + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + + - name: Publish the package if required + if: steps.changesets.outputs.published == 'true' + run: echo 'published packages' \ No newline at end of file diff --git a/.github/workflows/server-build.yml b/.github/workflows/server-build.yml index 0b8c4195..7a1c308c 100644 --- a/.github/workflows/server-build.yml +++ b/.github/workflows/server-build.yml @@ -109,10 +109,10 @@ jobs: id: release with: files: dist/**/* - body: ":rocket: Bump graspit-server version to `${{ steps.version.outputs.VERSION }}`" + body: ":rocket: Bump Handshake-server version to `${{ steps.version.outputs.VERSION }}`" prerelease: true tag_name: ${{ steps.version.outputs.VERSION }} - name: "Graspit - ${{ steps.version.outputs.VERSION }}" + name: "Handshake ๐Ÿค - ${{ steps.version.outputs.VERSION }}" generate_release_notes: true - name: Post Release Post @@ -128,7 +128,7 @@ jobs: title: "Bump Server Build" labels: "Automated,Server-build" reviewers: "RahulARanger" - body: ":rocket: Bumped graspit-server version to `${{ steps.version.outputs.VERSION }}`.
+ body: ":rocket: Bumped handshake-server version to `${{ steps.version.outputs.VERSION }}`.
:magic_wand: Make sure to edit this [release](${{ steps.release.outputs.url }}) once done." base: "nodejs-reporters" assignees: "RahulARanger" diff --git a/.gitignore b/.gitignore index 78575793..824f87c5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ # dependencies -graspit-dashboard/.next/* +handshake-dashboard/.next/* dist/* **/out/* **/node_modules/* @@ -45,9 +45,6 @@ venv/* **/dist/** **/build/** check.py -graspit-reporters/packages/graspit-dashboard/public/antd.min.css -graspit-reporters/packages/graspit-dashboard/src/styles/antd.min.css - # Production /build @@ -55,4 +52,7 @@ graspit-reporters/packages/graspit-dashboard/src/styles/antd.min.css # Misc .DS_Store -graspit-reporters/packages/graspit-commons/bin +handshake-nodejs-reporters/packages/common-handshakes/bin +handshake-nodejs-reporters/Jest-Results +handshake-nodejs-reporters/packages/handshake-dashboard/src/styles/antd.min.css +/handshake-nodejs-reporters/packages/handshake-dashboard/test-export.ps1 diff --git a/.idea/GraspIt.iml b/.idea/Handshake.iml similarity index 83% rename from .idea/GraspIt.iml rename to .idea/Handshake.iml index dd8f7211..7f3a6eef 100644 --- a/.idea/GraspIt.iml +++ b/.idea/Handshake.iml @@ -2,6 +2,7 @@ + @@ -10,7 +11,7 @@ - + diff --git a/.idea/misc.xml b/.idea/misc.xml index f7002428..93855d38 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -7,5 +7,5 @@ - + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml index d9fc97e5..6188599f 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,7 +2,7 @@ - + \ No newline at end of file diff --git a/README.md b/README.md index 7fa57697..a6586f57 100644 --- a/README.md +++ b/README.md @@ -1,30 +1,22 @@ -# Grasp-it +# Handshake ๐Ÿค +_A Modern Test Reporter_ -Utilizes the data collected from the test execution does some processing and then displays it in the Dashboard. +Processes the data collected from the test execution and then generates a modern Dashboard. -## Architecture +## Getting Started -- we initiate the Grasp-it-dashboard - - this step would be skipped if these below steps were done previously, Note: it would be not skipped if it finds a new version of the dashboard - - Copy the dashboard from `src` - - downloads all the required npm modules - - creates a new `TeStReSuLtS.db` -- And then we start the framework -- Past that we collect all the Test suites, sessions, test cases, we name this routes under the prefix: "register" -- After the registration, we collect the details pertaining to the end result of the registered entity -- Now we make sure to fill the calculated cells in some records that were added, this is to save the time while generating the report. -- we export the results past the test completion, while this is an optional step, which could be configured at the plugin level, but it has to done at some point in order to generate a report. +### Nodejs-Reporters + +#### WebdriverIO + +[WebdriverIO](https://webdriver.io/) is a Next-gen browser and mobile automation test framework for Node.js + +with the help of customer [reporter](https://webdriver.io/docs/customreporter/) and [service](https://webdriver.io/docs/customservices), we would be able to collect the results generated through its project. + +1. Install Packages: `npm install wdio-handshake-reporter` ## Plans ### Test Reports -- Adding Attachments - Dynamic Report - JIRA Reporter - -### wdio-py-reporter -- Support Cucumber framework -- Dynamic Report - -### Note -* https://python-poetry.org/docs/basic-usage/#using-your-virtual-environment \ No newline at end of file diff --git a/__test__/conftest.py b/__test__/conftest.py new file mode 100644 index 00000000..e8817e89 --- /dev/null +++ b/__test__/conftest.py @@ -0,0 +1,65 @@ +import platform +import subprocess + +from pytest import fixture, mark +from pathlib import Path +from handshake.services.DBService.shared import db_path as shared_db_path +from tortoise.connection import connections +from handshake.services.DBService.models.enums import ConfigKeys + +pytestmark = mark.asyncio + +testNames = "pyTestForOurProject" + + +@fixture() +def root_dir(): + return Path(__file__).parent.parent / "TestResults" + + +@fixture() +def db_path(root_dir): + return shared_db_path(root_dir) + + +@fixture() +def dist(root_dir): + return root_dir.parent / "dist" + + +@fixture() +def dist_name(): + return ( + f"handshake-{platform.system()}.exe" + if platform.system() == "Windows" + else f"handshake-{platform.system()}" + ) + + +@fixture() +def init_db(root_dir): + return lambda: subprocess.call(f'handshake config "{root_dir}"', shell=True) + + +@fixture +async def get_v3_connection(scripts): + connection = connections.get("default") + + # assuming we are at v4 + await connection.execute_script((scripts / "revert-v4.sql").read_text()) + await connection.execute_query( + "UPDATE CONFIGBASE set value = '3' where key = ?", (ConfigKeys.version,) + ) + + return connection + + +@fixture +def scripts(): + return ( + Path(__file__).parent.parent + / "handshake" + / "services" + / "DBService" + / "scripts" + ) diff --git a/__test__/test_regression/conftest.py b/__test__/test_regression/conftest.py index 1d2a350f..3048c8a5 100644 --- a/__test__/test_regression/conftest.py +++ b/__test__/test_regression/conftest.py @@ -1,36 +1,10 @@ -from pytest import fixture, mark -from pathlib import Path -from graspit.services.DBService.shared import db_path as shared_db_path -from graspit.services.DBService.lifecycle import init_tortoise_orm, close_connection -from graspit.services.DBService.models import RunBase, SessionBase +from pytest import fixture +from handshake.services.DBService.lifecycle import init_tortoise_orm, close_connection +from handshake.services.DBService.models import RunBase, SessionBase from datetime import datetime, timedelta -from subprocess import call from sanic_testing.testing import SanicASGITestClient -from graspit.services.Endpoints.core import service_provider - -pytestmark = mark.asyncio - -testNames = "pyTestForOurProject" - - -@fixture() -def root_dir(): - return Path(__file__).parent.parent.parent / "TestResults" - - -@fixture() -def db_path(root_dir): - return shared_db_path(root_dir) - - -@fixture() -def patch(root_dir): - return lambda: call(f'graspit patch "{root_dir}"', shell=True) - - -@fixture() -def init_db(root_dir): - return lambda: call(f'graspit config "{root_dir}"', shell=True) +from handshake.services.Endpoints.core import service_provider +from __test__.conftest import testNames @fixture(autouse=True) diff --git a/__test__/test_regression/test_patch_jobs/conftest.py b/__test__/test_regression/test_patch_jobs/conftest.py index 5c9f757b..5d5a1e9e 100644 --- a/__test__/test_regression/test_patch_jobs/conftest.py +++ b/__test__/test_regression/test_patch_jobs/conftest.py @@ -1,7 +1,7 @@ from pytest import fixture -from graspit.services.DBService.models import SuiteBase, TestConfigBase, SessionBase -from graspit.services.DBService.models.enums import SuiteType, Status, AttachmentType -from graspit.services.SchedularService.register import register_patch_suite +from handshake.services.DBService.models import SuiteBase, TestConfigBase, SessionBase +from handshake.services.DBService.models.enums import SuiteType, Status, AttachmentType +from handshake.services.SchedularService.register import register_patch_suite import datetime from asyncio import sleep @@ -97,11 +97,12 @@ async def helper_create_test_config( ) -async def helper_create_session(test_id: str): +async def helper_create_session(test_id: str, entityName="sample"): await sleep(0.0025) started = datetime.datetime.utcnow() return await SessionBase.create( started=started, + entityName=entityName, test_id=test_id, ended=started + datetime.timedelta(milliseconds=24), ) diff --git a/graspit/services/CommandLine/__init__.py b/__test__/test_regression/test_patch_jobs/test_migration/__init__.py similarity index 100% rename from graspit/services/CommandLine/__init__.py rename to __test__/test_regression/test_patch_jobs/test_migration/__init__.py diff --git a/__test__/test_regression/test_patch_jobs/test_migration/conftest.py b/__test__/test_regression/test_patch_jobs/test_migration/conftest.py new file mode 100644 index 00000000..ad60fb2f --- /dev/null +++ b/__test__/test_regression/test_patch_jobs/test_migration/conftest.py @@ -0,0 +1,42 @@ +import shutil +import time + +from pytest import fixture +from pathlib import Path + +from __test__.test_regression.conftest import testNames +from handshake.services.DBService.shared import db_path as shared_db_path +from handshake.services.DBService.lifecycle import init_tortoise_orm, close_connection +from handshake.services.DBService.models import RunBase + + +@fixture() +def root_dir(): + return Path(__file__).parent.parent.parent.parent.parent / "TestMigration" + + +@fixture() +def db_path(root_dir): + return shared_db_path(root_dir) + + +@fixture(autouse=True) +async def clean_close(db_path, init_db, root_dir): + if root_dir.exists(): + shutil.rmtree(root_dir) + + root_dir.mkdir() + + if not db_path.exists(): + init_db() + + await init_tortoise_orm(db_path) + yield + + # deleting sample test runs + await RunBase.filter(projectName=testNames).all().delete() + await close_connection() + time.sleep(1) + + if root_dir.exists(): + shutil.rmtree(root_dir) diff --git a/__test__/test_regression/test_patch_jobs/test_migration/test_scripts.py b/__test__/test_regression/test_patch_jobs/test_migration/test_scripts.py new file mode 100644 index 00000000..27b72365 --- /dev/null +++ b/__test__/test_regression/test_patch_jobs/test_migration/test_scripts.py @@ -0,0 +1,52 @@ +import tortoise +from handshake.services.DBService.models import ConfigBase, SessionBase +from handshake.services.DBService.models.enums import ConfigKeys +from handshake.services.DBService.migrator import migration +from subprocess import run, PIPE + + +async def assertEntityNameType(connection, expected): + info = await connection.execute_query("PRAGMA table_info('SessionBase');") + + found = False + for row in info[1]: + if row["name"] == "entityName": + found = True + assert row["type"] == expected + assert found, "entityName not found" + + +class TestMigrationScripts: + async def test_bump_v3( + self, get_v3_connection, scripts, sample_test_run, create_session, db_path + ): + connection = tortoise.connections.get("default") + test_run = await sample_test_run + + version = await ConfigBase.filter(key=ConfigKeys.version).first() + assert int(version.value) == 3 + + for _ in range(3): + await create_session(entityName="chrome", test_id=test_run.testID) + + script = scripts / "bump-v3.sql" + assert script.exists() + await assertEntityNameType(connection, "varchar(10)") + + assert not migration(db_path), "Migration failed" + + await assertEntityNameType(connection, "varchar(30)") + + version = await ConfigBase.filter(key=ConfigKeys.version).first() + assert int(version.value) == 4 + + entities = await SessionBase.all().values_list("entityName", flat=True) + assert len(entities) == 3 + + for entity in entities: + assert entity == "chrome", "Data changed" + + async def test_version_command(self, root_dir): + result = run(f'handshake db-version "{root_dir}"', shell=True, stderr=PIPE) + assert result.returncode == 0 + assert "Currently at: v4." in result.stderr.decode() diff --git a/__test__/test_regression/test_patch_jobs/test_patch_jobs.py b/__test__/test_regression/test_patch_jobs/test_patch_jobs.py index ea817df8..9f7d3cb9 100644 --- a/__test__/test_regression/test_patch_jobs/test_patch_jobs.py +++ b/__test__/test_regression/test_patch_jobs/test_patch_jobs.py @@ -1,15 +1,15 @@ from pytest import mark -from graspit.services.DBService.models import ( +from handshake.services.DBService.models import ( SuiteBase, RollupBase, RunBase, SessionBase, RetriedBase, ) -from graspit.services.DBService.models.enums import Status, AttachmentType -from graspit.services.SchedularService.modifySuites import patchTestSuite -from graspit.services.SchedularService.completeTestRun import patchTestRun -from graspit.services.SchedularService.register import ( +from handshake.services.DBService.models.enums import Status, AttachmentType +from handshake.services.SchedularService.modifySuites import patchTestSuite +from handshake.services.SchedularService.completeTestRun import patchTestRun +from handshake.services.SchedularService.register import ( register_patch_suite, register_patch_test_run, ) diff --git a/__test__/test_regression/test_save_endpoints.py b/__test__/test_regression/test_save_endpoints.py index 62272e30..ed89fb33 100644 --- a/__test__/test_regression/test_save_endpoints.py +++ b/__test__/test_regression/test_save_endpoints.py @@ -1,8 +1,9 @@ import datetime +import json from typing import Coroutine, Any from pytest import mark -from graspit.services.DBService.models import RunBase, SessionBase, SuiteBase -from graspit.services.DBService.models.enums import SuiteType, Status +from handshake.services.DBService.models import RunBase, SessionBase, SuiteBase +from handshake.services.DBService.models.enums import SuiteType, Status from sanic import Sanic @@ -36,8 +37,10 @@ async def test_we_have_pydantic_in_place(self, client, sample_test_run, app): "sessionID", } - assert len(result) == len(required) - for missing in result: + reasons = json.loads(result["reason"]) + assert len(reasons) == len(required) + + for missing in reasons: assert missing["type"] == "missing" assert missing["loc"][0] in required assert missing["msg"] == "Field required" diff --git a/__test__/test_regression/test_utils.py b/__test__/test_regression/test_utils.py index c7fff060..f4db0146 100644 --- a/__test__/test_regression/test_utils.py +++ b/__test__/test_regression/test_utils.py @@ -1,10 +1,10 @@ import pathlib -from graspit.services.SchedularService.completeTestRun import ( +from handshake.services.SchedularService.completeTestRun import ( simplify_file_paths, fetch_key_from_status, ) -from graspit.services.DBService.models.config_base import ConfigKeys, ConfigBase -from graspit.services.SchedularService.modifySuites import Status +from handshake.services.DBService.models.config_base import ConfigKeys, ConfigBase +from handshake.services.SchedularService.modifySuites import Status from pathlib import Path from tempfile import mkdtemp from shutil import rmtree @@ -108,12 +108,18 @@ def test_status_from_values(): @mark.usefixtures("clean_close") class TestSetConfigCommand: - async def test_set_config_with_one_para(self, root_dir, force=None): - result = run( - f'graspit config "{root_dir}" -mr 3', - cwd=force if force else root_dir, - shell=True, - ) + async def test_set_config_with_one_para(self, root_dir, force=None, max_runs=3): + if force is None: + result = run( + f'handshake config "{root_dir}" -mr {max_runs}', + cwd=root_dir, + shell=True, + ) + else: + result = run( + [force, "config", str(root_dir), "-mr", f"{max_runs}"], + cwd=root_dir, + ) assert result.returncode == 0 config_record = await ConfigBase.filter(key=ConfigKeys.maxRuns).first() - assert int(config_record.value) == 3 + assert int(config_record.value) == max_runs diff --git a/__test__/test_sanity/conftest.py b/__test__/test_sanity/conftest.py index 34dafdc1..8d263210 100644 --- a/__test__/test_sanity/conftest.py +++ b/__test__/test_sanity/conftest.py @@ -1,42 +1,13 @@ -from pytest import fixture, mark -from pathlib import Path -from graspit.services.DBService.shared import db_path as shared_db_path -from graspit.services.DBService.lifecycle import init_tortoise_orm, close_connection -from graspit.services.DBService.models import RunBase, SessionBase -from datetime import datetime, timedelta +from pytest import fixture +from handshake.services.DBService.lifecycle import init_tortoise_orm, close_connection +from handshake.services.DBService.models import RunBase from subprocess import call -from sanic_testing.testing import SanicASGITestClient -from graspit.services.Endpoints.core import service_provider - - -pytestmark = mark.asyncio - -testNames = "pyTestForOurProject" - - -@fixture() -def root_dir(): - return Path(__file__).parent.parent.parent / "TestResults" - - -@fixture() -def db_path(root_dir): - return shared_db_path(root_dir) - - -@fixture() -def dist(root_dir): - return root_dir.parent / "dist" - - -@fixture() -def patch(root_dir, dist): - return lambda: call(f'graspit patch "{root_dir}"', shell=True, cwd=dist) +from __test__.conftest import testNames @fixture() -def init_db(root_dir, dist): - return lambda: call(f'graspit config "{root_dir}"', shell=True, cwd=dist) +def patch(root_dir, dist, dist_name): + return lambda: call(f'{dist_name} patch "{root_dir}"', shell=True, cwd=dist) @fixture(autouse=True) diff --git a/__test__/test_sanity/test_cli.py b/__test__/test_sanity/test_cli.py index 10b1c8f9..f9641cd3 100644 --- a/__test__/test_sanity/test_cli.py +++ b/__test__/test_sanity/test_cli.py @@ -1,5 +1,7 @@ import platform - +from handshake.services.DBService.models import ConfigBase +from handshake.services.DBService.models.enums import ConfigKeys +from subprocess import run from pytest import mark from __test__.test_regression.test_utils import TestSetConfigCommand @@ -8,19 +10,33 @@ class TestCli: def test_dist_existence(self, dist): path = dist - target = platform.system() if target == "Windows": - path /= f"graspit-{target}.exe" + path /= f"handshake-{target}.exe" elif target == "Linux" or target == "Darwin": - path /= f"graspit-{target}" + path /= f"handshake-{target}" else: assert False, f"{target} is not supported" assert path.exists() is True, "Exe was not found" - async def test_set_config_with_one_para(self, root_dir, dist): + async def test_set_config_with_one_para(self, root_dir, dist, dist_name): return await TestSetConfigCommand().test_set_config_with_one_para( - root_dir, dist + root_dir, dist / dist_name, 30 ) + + +class TestMigration: + async def test_migration(self, dist_name, root_dir, dist, get_v3_connection): + version = await ConfigBase.filter(key=ConfigKeys.version).first() + assert int(version.value) == 3 + + result = run( + [dist / dist_name, "migrate", root_dir.name], + cwd=root_dir.parent, + ) + assert result.returncode == 0 + + version = await ConfigBase.filter(key=ConfigKeys.version).first() + assert int(version.value) == 4 diff --git a/graspit-reporters/README.md b/graspit-reporters/README.md deleted file mode 100644 index bc389a06..00000000 --- a/graspit-reporters/README.md +++ /dev/null @@ -1,81 +0,0 @@ -# Turborepo starter - -This is an official starter Turborepo. - -## Using this example - -Run the following command: - -```sh -npx create-turbo@latest -``` - -## What's inside? - -This Turborepo includes the following packages/apps: - -### Apps and Packages - -- `docs`: a [Next.js](https://nextjs.org/) app -- `web`: another [Next.js](https://nextjs.org/) app -- `ui`: a stub React component library shared by both `web` and `docs` applications -- `eslint-config-custom`: `eslint` configurations (includes `eslint-config-next` and `eslint-config-prettier`) -- `tsconfig`: `tsconfig.json`s used throughout the monorepo - -Each package/app is 100% [TypeScript](https://www.typescriptlang.org/). - -### Utilities - -This Turborepo has some additional tools already setup for you: - -- [TypeScript](https://www.typescriptlang.org/) for static type checking -- [ESLint](https://eslint.org/) for code linting -- [Prettier](https://prettier.io) for code formatting - -### Build - -To build all apps and packages, run the following command: - -``` -cd my-turborepo -pnpm build -``` - -### Develop - -To develop all apps and packages, run the following command: - -``` -cd my-turborepo -pnpm dev -``` - -### Remote Caching - -Turborepo can use a technique known as [Remote Caching](https://turbo.build/repo/docs/core-concepts/remote-caching) to share cache artifacts across machines, enabling you to share build caches with your team and CI/CD pipelines. - -By default, Turborepo will cache locally. To enable Remote Caching you will need an account with Vercel. If you don't have an account you can [create one](https://vercel.com/signup), then enter the following commands: - -``` -cd my-turborepo -npx turbo login -``` - -This will authenticate the Turborepo CLI with your [Vercel account](https://vercel.com/docs/concepts/personal-accounts/overview). - -Next, you can link your Turborepo to your Remote Cache by running the following command from the root of your Turborepo: - -``` -npx turbo link -``` - -## Useful Links - -Learn more about the power of Turborepo: - -- [Tasks](https://turbo.build/repo/docs/core-concepts/monorepos/running-tasks) -- [Caching](https://turbo.build/repo/docs/core-concepts/caching) -- [Remote Caching](https://turbo.build/repo/docs/core-concepts/remote-caching) -- [Filtering](https://turbo.build/repo/docs/core-concepts/monorepos/filtering) -- [Configuration Options](https://turbo.build/repo/docs/reference/configuration) -- [CLI Usage](https://turbo.build/repo/docs/reference/command-line-reference) diff --git a/graspit-reporters/apps/graspit-docs/pages/components/preview.tsx b/graspit-reporters/apps/graspit-docs/pages/components/preview.tsx deleted file mode 100644 index 6a7d7169..00000000 --- a/graspit-reporters/apps/graspit-docs/pages/components/preview.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import GalleryOfImages, { - CardForAImage, -} from "graspit/src/components/utils/ImagesWithThumbnails"; -import type { Attachment } from "graspit/src/types/testEntityRelated"; - -import type { ReactNode } from "react"; -import React from "react"; - -export default function PreviewForMotivation(props: { - images: Array<{ title: string; url: string }>; -}): ReactNode { - const imagesToAttachments: Attachment[] = props.images.map((image) => ({ - attachmentValue: JSON.stringify({ - title: image.title, - value: image.url, - }), - description: "", - entity_id: "", - type: "CUSTOM", - })); - - return ( - - {imagesToAttachments.map((image, index) => ( - - ))} - - ); -} diff --git a/graspit-reporters/apps/graspit-docs/pages/server.mdx b/graspit-reporters/apps/graspit-docs/pages/server.mdx deleted file mode 100644 index aa7979a1..00000000 --- a/graspit-reporters/apps/graspit-docs/pages/server.mdx +++ /dev/null @@ -1,68 +0,0 @@ -import SetupSteps from "pages/components/setupSteps"; -import Alert from "antd/lib/alert/Alert"; -import Tag from "antd/lib/tag/index"; -import Space from "antd/lib/space/index"; - -<> - - Important - Python - - - - -## Getting Started: - -In this step, we would be setting up python venv in our project, if you have python **3.11** installed, you can skip the jump to second step. -This particular step is required regardless of the test framework used. - -- Install [Python 3.11](https://www.python.org/downloads/release/python-3110/) - -- Move to the root directory, and execute this command `python -m venv venv` - - - -- After the venv creation, create a file `requirements.txt` - - ```text filename="requirements.txt" - graspit>=0.8.1 - ``` - - - -- Activate the venv, If in **windows**, `venv\Scripts\activate`, else On **Unix or MacOS**, run: `source venv/bin/activate` - -- Now Install packages through: `pip install -r requiremnts.txt` - -- `graspit --help` - you would see the below text (may not be exact) as the output. - - ```cmd - Usage: graspit [OPTIONS] COMMAND [ARGS]... - Options: - --help Show this message and exit. - Commands: - display - export - patch - run-app - ``` - -## Past Setup - -Now that we have setup graspit package on python, -Please download [PyPI Assistant](https://marketplace.visualstudio.com/items?itemName=twixes.pypi-assistant), a VSCode Extension, or similar one in your IDE. so we can update to the latest version. - -That's all for this step. - -## Reference - -- [Invoking Python](https://docs.python.org/3.11/tutorial/interpreter.html#invoking-the-interpreter) -- [Creating Venv](https://docs.python.org/3.11/library/venv.html#creating-virtual-environments) -- [Invoking Venv](https://docs.python.org/3.11/library/venv.html#creating-virtual-environments) diff --git a/graspit-reporters/apps/test-wdio-cucumber/package.json b/graspit-reporters/apps/test-wdio-cucumber/package.json deleted file mode 100644 index 3e9ad071..00000000 --- a/graspit-reporters/apps/test-wdio-cucumber/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "test-wdio-cucumber", - "version": "1.0.0", - "private": true, - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", - "sanity": "wdio run ./wdio.conf.js" - }, - "author": "", - "license": "ISC", - "description": "", - "devDependencies": { - "@wdio/cucumber-framework": "^8.24.4", - "@wdio/local-runner": "^8.24.4", - "@wdio/spec-reporter": "^8.24.2" - }, - "dependencies": { - "@wdio/cli": "^8.24.4", - "wdio-graspit-reporter": "^3.4.4" - } -} diff --git a/graspit-reporters/packages/graspit-commons/.version b/graspit-reporters/packages/graspit-commons/.version deleted file mode 100644 index ed4bd1a4..00000000 --- a/graspit-reporters/packages/graspit-commons/.version +++ /dev/null @@ -1 +0,0 @@ -[{"url":"https://api.github.com/repos/RahulARanger/graspit/releases/assets/138078032","id":138078032,"node_id":"RA_kwDOKgpJeM4IOudQ","name":"graspit-Darwin","label":"","content_type":"application/octet-stream","state":"uploaded","size":17639248,"download_count":0,"created_at":"2023-11-29T18:57:26Z","updated_at":"2023-11-29T18:57:27Z","browser_download_url":"https://github.com/RahulARanger/graspit/releases/download/0.12.6/graspit-Darwin"},{"url":"https://api.github.com/repos/RahulARanger/graspit/releases/assets/138078030","id":138078030,"node_id":"RA_kwDOKgpJeM4IOudO","name":"graspit-Linux","label":"","content_type":"application/octet-stream","state":"uploaded","size":31709912,"download_count":0,"created_at":"2023-11-29T18:57:26Z","updated_at":"2023-11-29T18:57:28Z","browser_download_url":"https://github.com/RahulARanger/graspit/releases/download/0.12.6/graspit-Linux"},{"url":"https://api.github.com/repos/RahulARanger/graspit/releases/assets/138078031","id":138078031,"node_id":"RA_kwDOKgpJeM4IOudP","name":"graspit-Windows.exe","label":"","content_type":"application/octet-stream","state":"uploaded","size":17044766,"download_count":0,"created_at":"2023-11-29T18:57:26Z","updated_at":"2023-11-29T18:57:27Z","browser_download_url":"https://github.com/RahulARanger/graspit/releases/download/0.12.6/graspit-Windows.exe"}] diff --git a/graspit-reporters/packages/graspit-commons/CHANGELOG.md b/graspit-reporters/packages/graspit-commons/CHANGELOG.md deleted file mode 100644 index 5e37c20b..00000000 --- a/graspit-reporters/packages/graspit-commons/CHANGELOG.md +++ /dev/null @@ -1,291 +0,0 @@ -# graspit-commons - -## 3.4.4 - -### Patch Changes - -- Updated dependencies - - graspit@3.4.4 - -## 3.4.3 - -### Patch Changes - -- Updated dependencies - - graspit@3.4.3 - -## 3.4.2 - -### Patch Changes - -- Updated dependencies - - graspit@3.4.2 - -## 3.4.1 - -### Patch Changes - -- Updated dependencies - - graspit@3.4.1 - -## 3.4.0 - -### Patch Changes - -- Updated dependencies - - graspit@3.4.0 - -## 3.3.1 - -### Patch Changes - -- Updated dependencies - - graspit@3.3.1 - -## 3.3.0 - -### Minor Changes - -- feat: migrated to echarts - -### Patch Changes - -- Updated dependencies - - graspit@3.3.0 - -## 3.2.0 - -### Minor Changes - -- added support for links and assertions - -### Patch Changes - -- Updated dependencies - - graspit@3.2.0 - -## 3.1.6 - -### Patch Changes - -- handled permission and attached links -- Updated dependencies - - graspit@3.1.6 - -## 2.1.18 - -### Patch Changes - -- Updated dependencies - - graspit@3.1.5 - -## 2.1.17 - -### Patch Changes - -- Updated dependencies - - graspit@3.1.4 - -## 2.1.16 - -### Patch Changes - -- support server-build 0.12.4 -- Updated dependencies - - graspit@3.1.3 - -## 2.1.15 - -### Patch Changes - -- support server patch for exporting results -- Updated dependencies - - graspit@3.1.2 - -## 2.1.14 - -### Patch Changes - -- patched required things - -## 2.1.13 - -### Patch Changes - -- script for feeding exe args - -## 2.1.12 - -### Patch Changes - -- edit for the feed.cjs - -## 2.1.11 - -### Patch Changes - -- added feeder script for the exe file - -## 2.1.10 - -### Patch Changes - -- fix: test items - -## 2.1.9 - -### Patch Changes - -- fix: relative path in preinstall script - -## 2.1.8 - -### Patch Changes - -- fix the script for preinstall - -## 2.1.7 - -### Patch Changes - -- fix the path for preinstall script - -## 2.1.6 - -### Patch Changes - -- removed files part - -## 2.1.5 - -### Patch Changes - -- fix files - -## 2.1.4 - -### Patch Changes - -- preinstall -> postinstallation of build - -## 2.1.3 - -### Patch Changes - -- download file path - -## 2.1.2 - -### Patch Changes - -- fix installatiom - -## 2.1.1 - -### Patch Changes - -- bump package version -- Updated dependencies - - graspit@3.1.1 - -## 2.1.0 - -### Minor Changes - -- test e2e - -### Patch Changes - -- Updated dependencies - - graspit@3.1.0 - -## 1.5.0 - -### Minor Changes - -- e02741a: added some helper functions for registering and marking session or test entity - -### Patch Changes - -- a526144: Revamped wdio-graspit-reporter, reusing the helper function from graspit-commons - -## 1.4.3 - -### Patch Changes - -- 0fb98cf: Moved some of the common methods from wdio-graspit-reporter to graspit-commons, add tests for graspit-commons and planned a custom report for jest. - -## 1.4.1 - -### Patch Changes - -- updated dependant packages, skipping mark session if the session id is undefined which would happen if a spec file was missed [observed in webdriverio] - -## 1.4.0 - -### Minor Changes - -- renamed browser to entity in the sessionbase, made changes to replicate the same on UI side and we have moved sending the details reg. session from register to mark in webdriverio - -### Patch Changes - -- Updated dependencies - - graspit@2.2.0 - -## 1.3.2 - -### Patch Changes - -- Registering a test case which was skipped expliclity, minor improvements for the dashboard -- Updated dependencies - - graspit@2.1.0 - -## 1.3.1 - -### Patch Changes - -- e6055a0: Revert the line in package.json for graspit package - -## 1.3.0 - -### Minor Changes - -- Added cross env way of activating venv created - -### Patch Changes - -- Updated dependencies - - graspit@2.0.1 - -## 1.2.0 - -### Minor Changes - -- Added Export Command for the graspit dashboard now we do not lint the export files at the time of export and also do not generate the css file on production, this can save some time for report generation. - -### Patch Changes - -- Updated dependencies - - graspit@2.0.0 - -## 1.1.0 - -### Minor Changes - -- Improved the Import paths and types for the reporter for webdriverio - -### Patch Changes - -- Updated dependencies - - graspit@1.1.0 - -## 1.0.0 - -### Major Changes - -- Merged tsconfig with graspit-commons and moved certain methods to graspit commons so we can avoid replicating few things for creating a nodejs based plugins - -### Patch Changes - -- Updated dependencies - - graspit@1.0.0 diff --git a/graspit-reporters/packages/graspit-commons/downloadBuild.cjs b/graspit-reporters/packages/graspit-commons/downloadBuild.cjs deleted file mode 100644 index 5cb7a47c..00000000 --- a/graspit-reporters/packages/graspit-commons/downloadBuild.cjs +++ /dev/null @@ -1,60 +0,0 @@ -const { - createWriteStream, readFileSync, chmodSync, mkdirSync, existsSync, -} = require('node:fs'); -const superagent = require('superagent'); -const { platform } = require('node:os'); -const { exit } = require('node:process'); -const { join, dirname } = require('node:path'); - -/** - * @typedef {{url: string; - * id: number; name: 'Windows.exe' | 'Darwin'; - * label: string; content_type: string; state: 'uploaded'; size: number; download_count: number; -* created_at: string; -* updated_at: string; -* browser_download_url: string;}} Asset - * @type {Record} - */ -const versionFromNames = {}; - -const root = join(dirname(__filename), 'bin'); - -if (!existsSync(root)) { - mkdirSync(root); -} - -(JSON.parse(readFileSync(join(dirname(__filename), '.version')).toString())).forEach( - (dist) => { versionFromNames[dist.name] = dist; }, -); - -let interest; -let exeName = 'graspit'; - -switch (platform()) { - case 'win32': { - interest = 'graspit-Windows.exe'; - exeName = 'graspit.exe'; // removing .exe makes its unusable - break; - } - case 'darwin': { - interest = 'graspit-Darwin'; - break; - } - case 'linux': { - interest = 'graspit-Linux'; - break; - } - default: { - console.warn(`yet to supported for: ${platform()}`); - exit(0); - } -} - -const exe = join(root, exeName); -const stream = createWriteStream(exe); - -superagent - .get(versionFromNames[interest].browser_download_url) - .pipe(stream).on('close', () => { - if (!exe.endsWith('.exe')) chmodSync(exe, 755); - }); diff --git a/graspit-reporters/packages/graspit-commons/feed.cjs b/graspit-reporters/packages/graspit-commons/feed.cjs deleted file mode 100644 index 521a610f..00000000 --- a/graspit-reporters/packages/graspit-commons/feed.cjs +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env node -const { spawnSync } = require('child_process'); -const { join } = require('path'); -const { platform } = require('os'); - -const args = process.argv.slice(2); -const executable = platform() === 'win32' ? 'graspit.exe' : 'graspit'; -spawnSync(join(__dirname, 'bin', executable), args, { stdio: 'inherit', env: process.env }); diff --git a/graspit-reporters/packages/graspit-commons/jest.config.cjs b/graspit-reporters/packages/graspit-commons/jest.config.cjs deleted file mode 100644 index 03c56d3a..00000000 --- a/graspit-reporters/packages/graspit-commons/jest.config.cjs +++ /dev/null @@ -1,41 +0,0 @@ -/** @type {import('ts-jest').JestConfigWithTsJest} */ -module.exports = { - preset: 'ts-jest', - testEnvironment: 'node', - // All imported modules in your tests should be mocked automatically - // automock: false, - - // Stop running tests after `n` failures - // bail: 0, - - // The directory where Jest should store its cached dependency information - // cacheDirectory: "C:\\Users\\Rahul\\AppData\\Local\\Temp\\jest", - - // Automatically clear mock calls, instances, contexts and results before every test - clearMocks: true, - - // Indicates whether the coverage information should be collected while executing the test - collectCoverage: true, - - // An array of glob patterns indicating a set of files for which coverage - // information should be collected - // collectCoverageFrom: undefined, - - // The directory where Jest should output its coverage files - coverageDirectory: 'coverage', - // [...] - extensionsToTreatAsEsm: ['.ts'], - moduleNameMapper: { - '^(\\.{1,2}/.*)\\.js$': '$1', - }, - transform: { - // '^.+\\.[tj]sx?$' to process js/ts with `ts-jest` - // '^.+\\.m?[tj]sx?$' to process js/ts/mjs/mts with `ts-jest` - '^.+\\.tsx?$': [ - 'ts-jest', - { - useESM: true, - }, - ], - }, -}; diff --git a/graspit-reporters/packages/graspit-commons/package.json b/graspit-reporters/packages/graspit-commons/package.json deleted file mode 100644 index 5b1e9d48..00000000 --- a/graspit-reporters/packages/graspit-commons/package.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "graspit-commons", - "version": "3.4.4", - "types": "./dist/index.d.ts", - "main": "./dist/index.cjs", - "module": "./dist/index.js", - "type": "module", - "private": false, - "license": "MIT", - "readme": "../../README.md", - "description": "This package has some common functions or constants required for interacting with graspit-server", - "bin": { - "graspit": "./feed.cjs" - }, - "scripts": { - "lint": "eslint src/**", - "test": "jest", - "build": "rimraf -g ./dist && tsup src/index.ts --format esm,cjs --dts", - "install": "node ./downloadBuild.cjs" - }, - "dependencies": { - "async-lock": "^1.4.0", - "cross-env": "^7.0.3", - "graspit": "3.4.4", - "log4js": "^6.9.1", - "superagent": "^8.1.2" - }, - "devDependencies": { - "@jest/globals": "^29.7.0", - "@tsconfig/node18": "^18.2.2", - "@types/async-lock": "^1.4.2", - "@types/jest": "^29.5.10", - "@types/mocha": "^10.0.6", - "@types/node": "^20.10.0", - "@types/superagent": "^4.1.24", - "@types/supertest": "^2.0.16", - "babel-jest": "^29.7.0", - "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "typescript": "^5.3.2" - } -} diff --git a/graspit-reporters/packages/graspit-commons/src/dialPad.ts b/graspit-reporters/packages/graspit-commons/src/dialPad.ts deleted file mode 100644 index f45744a1..00000000 --- a/graspit-reporters/packages/graspit-commons/src/dialPad.ts +++ /dev/null @@ -1,19 +0,0 @@ -export default class DialPad { - port: number; - - exePath?: string; - - constructor(port: number, exePath?:string) { this.port = port; this.exePath = exePath; } - - get url(): string { - return `http://127.0.0.1:${this.port}`; - } - - get saveUrl(): string { - return `${this.url}/save`; - } - - get writeUrl(): string { - return `${this.url}/write`; - } -} diff --git a/graspit-reporters/packages/graspit-commons/src/reporter.ts b/graspit-reporters/packages/graspit-commons/src/reporter.ts deleted file mode 100644 index 93f65aa6..00000000 --- a/graspit-reporters/packages/graspit-commons/src/reporter.ts +++ /dev/null @@ -1,266 +0,0 @@ -import AsyncLock from 'async-lock'; -import log4js from 'log4js'; -import superagent from 'superagent'; -import DialPad from './dialPad'; -import { - RegisterSession, - MarkTestEntity, MarkTestSession, RegisterTestEntity, Assertion, -} from './payload'; - -const logger = log4js.getLogger('graspit-commons'); - -log4js.configure({ - appenders: { console: { type: 'console' } }, - categories: { default: { appenders: ['console'], level: 'info' } }, -}); - -export type IdMappedType = Record & { session?: string }; - -export class ReporterDialPad extends DialPad { - idMapped: IdMappedType = {}; - - lockString = 'common-lock'; - - lock: AsyncLock; - - constructor(port: number, timeout?:number) { - super(port); - this.lock = new AsyncLock({ - timeout: 60e3, - maxExecutionTime: timeout ?? 60e3, - maxPending: 1000, - }); - } - - get registerSession(): string { - return `${this.saveUrl}/registerSession`; - } - - get registerSuite(): string { - return `${this.saveUrl}/registerSuite`; - } - - get updateSuite(): string { - return `${this.saveUrl}/updateSuite`; - } - - get updateSession(): string { - return `${this.saveUrl}/updateSession`; - } - - get addAttachmentForEntity(): string { - return `${this.saveUrl}/addAttachmentForEntity`; - } - - get writeAttachmentForEntity(): string { - return `${this.writeUrl}/addAttachmentForEntity`; - } - - feed( - feedURL: string, - feedJSON: object | null, - keyToBeStored?: null | string, - dynamicKeys?: () => object, - ) { - this.lock.acquire( - this.lockString, - async () => { - if (keyToBeStored !== 'session' - && this.idMapped.session === undefined) { - logger.warn( - '๐Ÿ’” We cannot send requests for any register / mark requests before registering a session', - ); - } - const payload = feedJSON || (dynamicKeys ? dynamicKeys() : {}); - logger.info( - `๐Ÿ“  Faxing, ${feedURL} with payload ๐Ÿ“ƒ: ${JSON.stringify( - payload, - )}`, - ); - await superagent.put(feedURL) - .send(JSON.stringify(payload)) - .on('response', (result) => { - const { text, ok } = result; - if (!ok) { - logger.error( - `Server rejected the request ๐Ÿ™… sent through ${feedURL} with payload ๐Ÿ“ƒ: ${JSON.stringify( - feedJSON, - )} and attached a note: ${text}`, - ); - return; - } - - logger.info(`Server accepted ๐Ÿ™† the request and attached a note: ${text}`); - if (keyToBeStored) { - logger.info( - `Storing received response key [${keyToBeStored}] ๐Ÿซ™ as ${text}`, - ); - this.idMapped[keyToBeStored] = String(text); - } - }); - }, - ).catch((reason) => { - logger.error( - `๐Ÿ’” Failed to send or read the request send through URL: ${feedURL} with payload ๐Ÿ“ƒ: ${JSON.stringify( - feedJSON, - )} because of ${reason?.message ?? reason}`, - ); - }); - } - - requestRegisterSession(sessionPayload: RegisterSession) { - this.feed(this.registerSession, sessionPayload, 'session'); - } - - requestRegisterTestEntity( - entityID: string, - payload: RegisterTestEntity | (() => RegisterTestEntity), - ) { - const isCallable = typeof payload === 'function'; - this.feed( - this.registerSuite, - isCallable ? null : payload, - entityID, - isCallable ? payload : undefined, - ); - } - - markTestEntity(entityID: string, payload: MarkTestEntity | (() => MarkTestEntity)) { - const isCallable = typeof payload === 'function'; - this.feed( - this.updateSuite, - isCallable ? null : payload, - entityID, - isCallable ? payload : undefined, - ); - } - - markTestSession(entityID: string, payload: MarkTestSession | (() => MarkTestSession)) { - const isCallable = typeof payload === 'function'; - this.feed( - this.updateSession, - isCallable ? null : payload, - entityID, - isCallable ? payload : undefined, - ); - } - - async attachScreenshot( - title: string, - content: string, // can be base64 encoded string - entity_id: string, - description?:string, - ) { - if (!entity_id) { - logger.warn('๐Ÿ˜• Skipping!, we have not attached a screenshot for unknown entity'); - return false; - } - const payload = JSON.stringify({ - description, - title, - value: content, - type: 'PNG', - entityID: entity_id, - }); - - const resp = await superagent - .put(this.writeAttachmentForEntity) - .send(payload) - .on('response', (result) => { - if (result.ok) { - logger.info(`๐Ÿ“ธ Attached a screenshot [PNG], id: ${result.text} for: ${entity_id}`); - } else { - logger.error(`๐Ÿ’” Failed to attach screenshot for ${entity_id}, because of ${result?.text}`); - } - }); - - return resp.text; - } - - async addDescription( - content: string, - entity_id: string, - ) { - if (!entity_id) { - logger.warn('๐Ÿ˜• Skipping!, we have not added a description for unknown entity'); - return false; - } - const payload = JSON.stringify({ - value: content, - type: 'DESC', - entityID: entity_id, - }); - - const resp = await superagent - .put(this.addAttachmentForEntity) - .send(payload) - .on('response', (result) => { - if (result.ok) { - logger.info(`๐Ÿ‘ Added Description for ${entity_id}`); - } else { - logger.error(`๐Ÿ’” Failed to add description for ${entity_id}, because of ${result?.text}`); - } - }); - - return resp?.ok; - } - - async addLink( - url: string, - title: string, - entity_id: string, - ) { - if (!entity_id) { - logger.warn('๐Ÿ˜• Skipping!, we have not added a link for unknown entity'); - return false; - } - const payload = JSON.stringify({ - title, - value: url, - type: 'LINK', - entityID: entity_id, - }); - - const resp = await superagent - .put(this.addAttachmentForEntity) - .send(payload) - .on('response', (result) => { - if (result.ok) { - logger.info(`Attached a ๐Ÿ”— Link for ${entity_id}`); - } else { - logger.error(`๐Ÿ’” Failed to attach a link: ${url} for ${entity_id}, because of ${result?.text}`); - } - }); - - return resp?.ok; - } - - async addAssertion( - assertion: Assertion, - entity_id: string, - ) { - if (!entity_id) { - logger.warn('๐Ÿ˜• Skipping!, we have not added a link for unknown entity'); - return false; - } - const payload = JSON.stringify({ - type: 'ASSERT', - value: JSON.stringify(assertion), - entityID: entity_id, - title: assertion.matcherName, - }); - - const resp = await superagent - .put(this.addAttachmentForEntity) - .send(payload) - .on('response', (result) => { - if (result.ok) { - logger.info(`Added an ๐Ÿงช assertion: ${assertion.matcherName} for ${entity_id}`); - } else { - logger.error(`๐Ÿ’” Failed to attach an assertion; ${assertion.matcherName} for ${entity_id}, because of ${result?.text}`); - } - }); - - return resp?.ok; - } -} diff --git a/graspit-reporters/packages/graspit-commons/tests/graspit.test.ts b/graspit-reporters/packages/graspit-commons/tests/graspit.test.ts deleted file mode 100644 index 2142c043..00000000 --- a/graspit-reporters/packages/graspit-commons/tests/graspit.test.ts +++ /dev/null @@ -1,228 +0,0 @@ -import { - describe, - expect, - beforeAll, - test, - afterAll, - jest, -} from '@jest/globals'; -import { type ChildProcess } from 'node:child_process'; -import { - setTimeout, - setInterval, - clearTimeout, - clearInterval, -} from 'node:timers'; -import { existsSync, rmSync } from 'node:fs'; -import { join, dirname } from 'node:path'; -import { ReporterDialPad, ServiceDialPad } from '../src'; - -const port = 6969; -const root = dirname(dirname(dirname(process.cwd()))); -const service = new ServiceDialPad(port); -describe('Asserting the scenario when the server was not started yet', () => { - jest.setTimeout(3e3); - - it('ping now', async () => { - await expect(await service.ping()).toBe(false); - }); - - it('expect for failure message when the server has not started yet.', async () => { - // so when this throws error, you will go forward. - await expect(async () => service.waitUntilItsReady(1e3)).rejects.toThrow('Not able to connect with graspit-server within'); - }); -}); - -// HERE our aim is to test the common service and any helper functions provided -// we assume that if a valid request is sent to the graspit server -// it would do what it was supposed to -// (like saving to db or adding relevant task or calculate some info). - -describe('verifying if we are able to start graspit server', () => { - jest.setTimeout(10e3); - const testResults = join(root, 'jest-init-tests'); - const results = join(root, 'test-jest-reports'); - let pyProcess: ChildProcess; - - // for terminating the server if things do downhill - async function safeSide() { - await service.terminateServer(); - if (existsSync(testResults)) { - rmSync(testResults, { - recursive: true, - retryDelay: 200, - maxRetries: 3, - }); - } - if (existsSync(results)) { - rmSync(results, { - recursive: true, - retryDelay: 200, - maxRetries: 3, - }); - } - } - - afterAll(safeSide); - process.on('exit', safeSide); - - // starting the python service - beforeAll(async () => { - expect(service.exePath).not.toBeUndefined(); - - pyProcess = service.startService('jest-test', testResults, root); - expect(service.pyProcess).not.toBeUndefined(); - - await service.waitUntilItsReady(); - }); - - describe('Verifying the functionality of the service', () => { - test('test the save url', () => { - expect(service.saveUrl).toEqual(`http://127.0.0.1:${port}/save`); - }); - - test("assert the process's pid", () => { - expect(typeof pyProcess.pid).toBe('number'); - }); - - test('valid ping', async () => { - await expect(await service.ping()).toBeTruthy(); - }); - - test('testing the presence of the database', () => { - expect(existsSync(testResults)).toBeTruthy(); - expect( - existsSync(join(testResults, 'TeStReSuLtS.db')), - ).toBeTruthy(); - }); - }); - - describe('Verifying the functionality of the reporter', () => { - const reporter = new ReporterDialPad(port, 10e3); - const testKey = 'dummy-test'; - - async function waitForLock(key: string) { - await new Promise((resolve, reject) => { - let timer: NodeJS.Timeout; - - const bomb = setTimeout(() => { - clearInterval(timer); - reject(new Error('Failed to register session in time')); - }, 10e3); - - timer = setInterval(async () => { - const isOnline = reporter.idMapped[key]?.length > 0; - if (isOnline) { - clearTimeout(bomb); - clearInterval(timer); - resolve({}); - } - }, 3e3); - }); - } - - test('verifying the save url for the reporter', () => { - expect(reporter.saveUrl).toBe(`http://127.0.0.1:${port}/save`); - }); - - test('verifying endpoint for registering session', async () => { - expect(reporter.idMapped.session).toBeUndefined(); - reporter.requestRegisterSession({ - retried: 0, - started: new Date().toISOString(), - specs: ['test.spec.ts'], - }); - expect(reporter.idMapped.session).toBeUndefined(); - expect(reporter.lock.isBusy()).toBeTruthy(); - await waitForLock('session'); - - expect(reporter.lock.isBusy()).toBeFalsy(); - }); - test('creating dummy test', async () => { - expect(reporter.idMapped[testKey]).toBeUndefined(); - reporter.requestRegisterTestEntity(testKey, { - title: 'sample-test', - description: 'dummy-test', - suiteType: 'TEST', - parent: '', - session_id: reporter.idMapped.session as string, - file: 'test.spec.ts', - started: new Date().toISOString(), - retried: 0, - tags: [], - }); - - await waitForLock(testKey); - - expect(reporter.idMapped[testKey]).not.toBeUndefined(); - }); - - test.failing( - 'test for acceptance of ISO string for date-time not UTC ones', - async () => { - const failedKey = `${testKey}-failed`; - reporter.feed( - reporter.registerSuite, - { - title: 'sample-test', - description: 'dummy-test', - suiteType: 'TEST', - parent: '', - retried: 0, - started: new Date().toUTCString(), - session_id: reporter.idMapped.session, - file: 'test.spec.ts', - standing: 'PENDING', - tags: [], - }, - failedKey, - ); - await waitForLock(failedKey); - }, - ); - - test('verifying additional Requests if no entity id was provided', async () => { - expect(await reporter.addDescription('test-description', '')).toBe( - false, - ); - expect( - await reporter.attachScreenshot('test-attach', '', '', ''), - ).toBe(false); - }); - - test('verifying additional Requests if entity id was provided', async () => { - expect( - await reporter.addDescription( - 'test-description', - reporter.idMapped[testKey], - ), - ).toBe(true); - const raw = 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQW7H8AAAAwUlEQVR42mL8/9/v1n7mJ6yoaGhq...'; - const attachmentId = (await reporter.attachScreenshot( - 'test-attach', - raw, - reporter.idMapped[testKey], - 'test-description', - )) as string; - expect(attachmentId.length).toBeGreaterThan(2); - }); - }); - - describe('verifying report generation', () => { - it('test mark test completion', async () => { - await service.markTestRunCompletion(); - // aim is to not observe if this request fails / passes - // but to check if it doesn't fail due to server termination - // because we are expecting server to be online even at this point - }); - it('skipping the patch would also skip the report generation', () => { - service.generateReport(testResults, root, results, 2, true); - expect(existsSync(results)).toBe(false); - }); - - it('test patch only', () => { - service.generateReport(testResults, root, undefined, 1, false, 1e3); - expect(existsSync(results)).toBe(false); - }); - }); -}); diff --git a/graspit-reporters/packages/graspit-dashboard/CHANGELOG.md b/graspit-reporters/packages/graspit-dashboard/CHANGELOG.md deleted file mode 100644 index 736a03a2..00000000 --- a/graspit-reporters/packages/graspit-dashboard/CHANGELOG.md +++ /dev/null @@ -1,181 +0,0 @@ -# graspit - -## 3.4.4 - -### Patch Changes - -- fixed styling issues - -## 3.4.3 - -### Patch Changes - -- fix chart folder name - -## 3.4.2 - -### Patch Changes - -- fix: eslint issues - -## 3.4.1 - -### Patch Changes - -- build before publish - -## 3.4.0 - -### Minor Changes - -- refractor: eslint fixes - -## 3.3.1 - -### Patch Changes - -- fix type issues in gantt charts - -## 3.3.0 - -### Minor Changes - -- feat: migrated to echarts - -## 3.2.0 - -### Minor Changes - -- added support for links and assertions - -## 3.1.6 - -### Patch Changes - -- handled permission and attached links - -## 3.1.5 - -### Patch Changes - -- added built antd script - -## 3.1.4 - -### Patch Changes - -- fix: query for fetching related runs, sorted it - -## 3.1.3 - -### Patch Changes - -- support server-build 0.12.4 - -## 3.1.2 - -### Patch Changes - -- support server patch for exporting results - -## 3.1.1 - -### Patch Changes - -- bump package version - -## 3.1.0 - -### Minor Changes - -- test e2e - -## 3.0.6 - -### Patch Changes - -- planned tests for graspit installation - -## 3.0.5 - -### Patch Changes - -- fix the way we would name the downloaded executable for windows - -## 3.0.4 - -### Patch Changes - -- take 4 for package installation - -## 3.0.3 - -### Patch Changes - -- take 3 for installation test - -## 3.0.2 - -### Patch Changes - -- Minor Patch for pre-build installation - -## 3.0.1 - -### Patch Changes - -- ignoring the build - -## 3.0.0 - -### Major Changes - -- working on the release - -## 2.2.2 - -### Patch Changes - -- replaced the sv icons with the png ones - -## 2.2.1 - -### Patch Changes - -- updated dependant packages, skipping mark session if the session id is undefined which would happen if a spec file was missed [observed in webdriverio] - -## 2.2.0 - -### Minor Changes - -- renamed browser to entity in the sessionbase, made changes to replicate the same on UI side and we have moved sending the details reg. session from register to mark in webdriverio - -## 2.1.0 - -### Minor Changes - -- Registering a test case which was skipped expliclity, minor improvements for the dashboard - -## 2.0.1 - -### Patch Changes - -- Added cross env way of activating venv created - -## 2.0.0 - -### Major Changes - -- Added Export Command for the graspit dashboard now we do not lint the export files at the time of export and also do not generate the css file on production, this can save some time for report generation. - -## 1.1.0 - -### Minor Changes - -- Improved the Import paths and types for the reporter for webdriverio - -## 1.0.0 - -### Major Changes - -- Merged tsconfig with graspit-commons and moved certain methods to graspit commons so we can avoid replicating few things for creating a nodejs based plugins diff --git a/graspit-reporters/packages/graspit-dashboard/public/favicon.ico b/graspit-reporters/packages/graspit-dashboard/public/favicon.ico deleted file mode 100644 index 718d6fea..00000000 Binary files a/graspit-reporters/packages/graspit-dashboard/public/favicon.ico and /dev/null differ diff --git a/graspit-reporters/packages/graspit-dashboard/src/styles/globals.css b/graspit-reporters/packages/graspit-dashboard/src/styles/globals.css deleted file mode 100644 index 1ce87bd3..00000000 --- a/graspit-reporters/packages/graspit-dashboard/src/styles/globals.css +++ /dev/null @@ -1,55 +0,0 @@ -@import url('./antd.min.css'); - -:root { - --card-color: #121212; - --background-color: #262626; - color-scheme: dark; - --bg: oklch(35% 0.3 var(--hue)); - --text: oklch(85% 0.1 var(--hue)); - --shadow: oklch(25% 0.2 var(--hue)); - --highlight: oklch(98% 0.05 var(--hue)); -} - -* { - box-sizing: border-box; - padding: 0; - margin: 0; -} - -::selection { - color: lightyellow; - background-color: orangered; -} - -::-moz-selection { - color: lightyellow; - background-color: orangered; -} -::-webkit-scrollbar-track { - -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); - border-radius: 10px; - background-color: transparent; -} - -div#__next, -main, -html, -body { - max-width: 100vw; - height: 100%; - overflow: hidden; -} -/* div.ant-tabs { - background-image: radial-gradient(rgb(236, 236, 236) 1px, transparent 0); - background-size: 20px 20px; - background-position: -19px -19px; -} */ - -::-webkit-scrollbar { - width: 6px; /* Width of the scrollbar track */ -} - -::-webkit-scrollbar-thumb { - background-color: #888; /* Color of the scrollbar thumb */ - border-radius: 6px; /* Rounded corners for the thumb */ -} diff --git a/graspit-reporters/packages/graspit-dashboard/src/styles/highChartExternal.module.css b/graspit-reporters/packages/graspit-dashboard/src/styles/highChartExternal.module.css deleted file mode 100644 index 9d2b58dd..00000000 --- a/graspit-reporters/packages/graspit-dashboard/src/styles/highChartExternal.module.css +++ /dev/null @@ -1 +0,0 @@ -@import url(https://code.highcharts.com/7.0.0/css/themes/dark-unica.css); diff --git a/graspit-reporters/packages/graspit-dashboard/test-export.ps1 b/graspit-reporters/packages/graspit-dashboard/test-export.ps1 deleted file mode 100644 index 540626f4..00000000 --- a/graspit-reporters/packages/graspit-dashboard/test-export.ps1 +++ /dev/null @@ -1 +0,0 @@ -python -m http.server -d ./dist \ No newline at end of file diff --git a/graspit-reporters/packages/wdio-graspit-reporter/package.json b/graspit-reporters/packages/wdio-graspit-reporter/package.json deleted file mode 100644 index 5a8bcce5..00000000 --- a/graspit-reporters/packages/wdio-graspit-reporter/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "wdio-graspit-reporter", - "version": "3.4.4", - "types": "./dist/index.d.ts", - "main": "./dist/index.cjs", - "module": "./dist/index.js", - "type": "module", - "private": false, - "license": "MIT", - "readme": "../../README.md", - "description": "This package is a reporter that sends the test data from your webdriverIO test run to your local graspit server which is then displayed by our graspit-dashboard", - "scripts": { - "lint": "eslint src/**", - "build": "rimraf -g ./dist && tsup src/index.ts --format esm,cjs --dts && node build.cjs" - }, - "dependencies": { - "@wdio/reporter": "^8.24.2", - "@wdio/types": "^8.24.2", - "log4js": "^6.9.1", - "superagent": "^8.1.2", - "graspit-commons": "3.4.4" - }, - "devDependencies": { - "@types/async-lock": "^1.4.2", - "@types/superagent": "^4.1.24", - "@types/node": "^20.10.0" - } -} diff --git a/graspit-reporters/packages/wdio-graspit-reporter/src/index.ts b/graspit-reporters/packages/wdio-graspit-reporter/src/index.ts deleted file mode 100644 index 33583d4f..00000000 --- a/graspit-reporters/packages/wdio-graspit-reporter/src/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -import GraspItService from './service'; -import GraspItReporter from './reporter'; - -export default GraspItReporter; -export * from './types'; -export const launcher = GraspItService; -export * from './helpers'; diff --git a/graspit/services/CommandLine/migrate.py b/graspit/services/CommandLine/migrate.py deleted file mode 100644 index 62676641..00000000 --- a/graspit/services/CommandLine/migrate.py +++ /dev/null @@ -1,15 +0,0 @@ -# @handle_cli.group() -# def db_version(): -# pass - - -# @db_version.command() -# @argument("path", nargs=1, type=C_Path(exists=True, dir_okay=True), required=True) -# def check(path: str): -# return check_version(db_path(Path(path))) -# -# -# @db_version.command() -# @argument("path", nargs=1, type=C_Path(exists=True, dir_okay=True), required=True) -# def migrate(path: str): -# return initiate_migration(db_path(Path(path))) diff --git a/graspit/services/DBService/__init__.py b/graspit/services/DBService/__init__.py deleted file mode 100644 index ec399c4f..00000000 --- a/graspit/services/DBService/__init__.py +++ /dev/null @@ -1 +0,0 @@ -DB_VERSION = 3 diff --git a/graspit/services/DBService/migration.py b/graspit/services/DBService/migration.py deleted file mode 100644 index b1e04d20..00000000 --- a/graspit/services/DBService/migration.py +++ /dev/null @@ -1,16 +0,0 @@ -from sqlite3.dbapi2 import Connection - - -# 2 -def revert_v3(connection: Connection): - connection.executescript( - "ALTER TABLE sessionbase DELETE COLUMN previous;" - "ALTER TABLE suitebase DELETE COLUMN previous;" - ) - - -def v3(connection: Connection): - connection.executescript( - "ALTER TABLE sessionbase ADD COLUMN previous TEXT;" - "ALTER TABLE suitebase ADD COLUMN previous TEXT;" - ) diff --git a/graspit/services/DBService/migrator.py b/graspit/services/DBService/migrator.py deleted file mode 100644 index 412ced50..00000000 --- a/graspit/services/DBService/migrator.py +++ /dev/null @@ -1,102 +0,0 @@ -from sqlite3 import connect -from graspit.services.DBService import DB_VERSION -from sqlite3.dbapi2 import Connection -from typing import Optional, Tuple -from pathlib import Path -from loguru import logger - - -def check_version( - path: Path, connection: Optional[Connection] = None -) -> Tuple[Optional[str], Connection]: - connection = connection if connection else connect(path) - query = "select value from configbase where key = 'VERSION'" - - result = connection.execute(query).fetchone() - - if not result: - logger.warning( - "Could not find the version, please either the delete the DB or raise an issue if required." - ) - else: - satisfied = int(result[0]) == DB_VERSION - logger.log( - "INFO" if satisfied else "WARNING", - "Found version: v{} and required is v{}", - result[0], - DB_VERSION, - ) - if not satisfied: - logger.warning( - "Requires migration, Please run 'graspit db-version migrate'" - ) - return result[0] if result else result, connection - - -def initiate_migration(path: Path, aim=DB_VERSION): - connection = connect(path) - - while True: - _actual_version, _ = check_version(path, connection) - if not _actual_version: - return - - actual_version = int(_actual_version) - if actual_version == aim: - logger.info("Migration completed") - break - - logger.warning( - "Starting Migration as we found the version to be of v{} but required is v{}", - actual_version, - DB_VERSION, - ) - new_version = actual_version + (-1 if aim < actual_version else 1) - - result = ( - revert(connection, new_version) - if aim < actual_version - else bump(connection, new_version) - ) - if result: - return - - connection.execute( - "update configbase set value = ? where key = 'VERSION'", (new_version,) - ) - connection.commit() - - logger.info( - "Migration is successful from v{} to v{}", actual_version, new_version - ) - - connection.close() - - -# def revert(connection: Connection, new_version: int) -> bool: -# match new_version: -# case 1: -# revert_v2(connection) -# -# case _: -# logger.error( -# "Could not revert, Found the version: v{} but this is not a valid version", -# new_version, -# ) -# return True -# -# return False -# -# -# def bump(connection: Connection, new_version: int) -> bool: -# match new_version: -# case 2: -# v2(connection) -# -# case _: -# logger.error( -# "Could not bump version, Found the version: v{} but this is not a valid version", -# new_version, -# ) -# return True -# return False diff --git a/graspit/services/DBService/models/config_base.py b/graspit/services/DBService/models/config_base.py deleted file mode 100644 index e20dbf57..00000000 --- a/graspit/services/DBService/models/config_base.py +++ /dev/null @@ -1,44 +0,0 @@ -from tortoise.models import Model -from graspit.services.SchedularService.constants import JobType -from graspit.services.DBService.models.enums import ConfigKeys -from tortoise.fields import ( - IntField, - CharEnumField, - CharField, - TextField, - UUIDField, -) - - -class JobBase(Model): - table = "JobBase" - jobID = CharEnumField( - JobType, null=False, description="Type of job we would like to run" - ) - interval = IntField( - null=True, - default=10, - description="Interval configured for the job triggered in intervals (s)", - ) - instances = IntField( - null=True, - default=1, - description="Number of parallel instances to run jobs triggered in intervals", - ) - name = CharField(max_length=30, description="Any name you wanted to use for a job") - - -class ConfigBase(Model): - key = CharEnumField( - ConfigKeys, pk=True, null=False, description="Type of job we would like to run" - ) - value = TextField(null=False, description="Handling type is upto us") - - -class ExportBase(Model): - ticketID = UUIDField(pk=True) - maxTestRuns = IntField( - null=True, - default=10, - description="Number of test runs to export [recent ones are picked]", - ) diff --git a/graspit/services/Endpoints/core.py b/graspit/services/Endpoints/core.py deleted file mode 100644 index 773fcdcc..00000000 --- a/graspit/services/Endpoints/core.py +++ /dev/null @@ -1,17 +0,0 @@ -from graspit.services.Endpoints.internalEndpoints import one_liners -from graspit.services.DBService.getThings import get_service -from graspit.services.DBService.shared import app_name -from graspit.services.Endpoints.blueprints.coreEndpoints import service -from graspit.services.Endpoints.blueprints.writeServices import writeServices -from graspit.services.Endpoints.errorHandling import handle_validation_error -from sanic import Sanic -from pydantic import ValidationError - -service_provider = Sanic(app_name) -service_provider.config.TOUCHUP = False -service_provider.blueprint(one_liners) -service_provider.blueprint(service) -service_provider.blueprint(writeServices) -service_provider.blueprint(get_service) - -service_provider.error_handler.add(ValidationError, handle_validation_error) diff --git a/graspit-reporters/.changeset/README.md b/handshake-nodejs-reporters/.changeset/README.md similarity index 100% rename from graspit-reporters/.changeset/README.md rename to handshake-nodejs-reporters/.changeset/README.md diff --git a/graspit-reporters/.changeset/config.json b/handshake-nodejs-reporters/.changeset/config.json similarity index 76% rename from graspit-reporters/.changeset/config.json rename to handshake-nodejs-reporters/.changeset/config.json index b7d3b650..cf7c1dda 100644 --- a/graspit-reporters/.changeset/config.json +++ b/handshake-nodejs-reporters/.changeset/config.json @@ -3,7 +3,7 @@ "changelog": "@changesets/cli/changelog", "commit": false, "fixed": [], - "linked": [["wdio-graspit-reporter", "graspit-commons", "graspit"]], + "linked": [["wdio-handshake-reporter", "common-handshakes", "handshake-dashboard"]], "access": "public", "baseBranch": "master", "updateInternalDependencies": "patch", diff --git a/graspit-reporters/.gitignore b/handshake-nodejs-reporters/.gitignore similarity index 100% rename from graspit-reporters/.gitignore rename to handshake-nodejs-reporters/.gitignore diff --git a/graspit-reporters/.npmrc b/handshake-nodejs-reporters/.npmrc similarity index 100% rename from graspit-reporters/.npmrc rename to handshake-nodejs-reporters/.npmrc diff --git a/graspit-reporters/apps/graspit-docs/.eslintrc b/handshake-nodejs-reporters/apps/graspit-docs/.eslintrc similarity index 100% rename from graspit-reporters/apps/graspit-docs/.eslintrc rename to handshake-nodejs-reporters/apps/graspit-docs/.eslintrc diff --git a/graspit-reporters/apps/graspit-docs/.vscode/launch.json b/handshake-nodejs-reporters/apps/graspit-docs/.vscode/launch.json similarity index 100% rename from graspit-reporters/apps/graspit-docs/.vscode/launch.json rename to handshake-nodejs-reporters/apps/graspit-docs/.vscode/launch.json diff --git a/graspit-reporters/apps/graspit-docs/.vscode/settings.json b/handshake-nodejs-reporters/apps/graspit-docs/.vscode/settings.json similarity index 91% rename from graspit-reporters/apps/graspit-docs/.vscode/settings.json rename to handshake-nodejs-reporters/apps/graspit-docs/.vscode/settings.json index bbeb3917..6ded02ce 100644 --- a/graspit-reporters/apps/graspit-docs/.vscode/settings.json +++ b/handshake-nodejs-reporters/apps/graspit-docs/.vscode/settings.json @@ -8,7 +8,7 @@ "eslint.lintTask.enable": true, "eslint.enable": true, "editor.codeActionsOnSave": { - "source.fixAll": true + "source.fixAll": "explicit" }, "eslint.validate": ["typescript"] } diff --git a/graspit-reporters/apps/graspit-docs/next-env.d.ts b/handshake-nodejs-reporters/apps/graspit-docs/next-env.d.ts similarity index 100% rename from graspit-reporters/apps/graspit-docs/next-env.d.ts rename to handshake-nodejs-reporters/apps/graspit-docs/next-env.d.ts diff --git a/graspit-reporters/apps/graspit-docs/next.config.js b/handshake-nodejs-reporters/apps/graspit-docs/next.config.js similarity index 88% rename from graspit-reporters/apps/graspit-docs/next.config.js rename to handshake-nodejs-reporters/apps/graspit-docs/next.config.js index 20b097fb..c809d8d7 100644 --- a/graspit-reporters/apps/graspit-docs/next.config.js +++ b/handshake-nodejs-reporters/apps/graspit-docs/next.config.js @@ -6,7 +6,7 @@ const withNextra = require('nextra')({ /** @type {import('next').NextConfig} */ const nextConfig = { - transpilePackages: ['graspit'], + transpilePackages: ['handshake'], typescript: { tsconfigPath: "./tsconfig.json" } diff --git a/graspit-reporters/apps/graspit-docs/package.json b/handshake-nodejs-reporters/apps/graspit-docs/package.json similarity index 73% rename from graspit-reporters/apps/graspit-docs/package.json rename to handshake-nodejs-reporters/apps/graspit-docs/package.json index 6896782a..d128eca1 100644 --- a/graspit-reporters/apps/graspit-docs/package.json +++ b/handshake-nodejs-reporters/apps/graspit-docs/package.json @@ -13,21 +13,21 @@ "author": "", "license": "ISC", "dependencies": { - "@mdx-js/loader": "^2.3.0", - "@mdx-js/react": "^2.3.0", - "@next/mdx": "^13.5.4", - "antd": "^5.9.4", - "graspit": "*", - "highcharts": "^11.1.0", + "@mdx-js/loader": "^3.0.0", + "@mdx-js/react": "^3.0.0", + "@next/mdx": "^14.0.3", + "antd": "^5.11.5", + "graspit": "3.4.6", + "highcharts": "^11.2.0", "highcharts-react-official": "^3.2.1", - "next": "^13.5.4", + "next": "^14.0.3", "nextra": "^2.13.2", "nextra-theme-docs": "^2.13.2", "react": "^18.2.0", "react-dom": "^18.2.0" }, "devDependencies": { - "@types/mdx": "^2.0.8", + "@types/mdx": "^2.0.10", "eslint-plugin-mdx": "^2.2.0" } } diff --git a/graspit-reporters/apps/graspit-docs/pages/Advanced/_meta.json b/handshake-nodejs-reporters/apps/graspit-docs/pages/Advanced/_meta.json similarity index 100% rename from graspit-reporters/apps/graspit-docs/pages/Advanced/_meta.json rename to handshake-nodejs-reporters/apps/graspit-docs/pages/Advanced/_meta.json diff --git a/graspit-reporters/apps/graspit-docs/pages/Advanced/configuration.mdx b/handshake-nodejs-reporters/apps/graspit-docs/pages/Advanced/configuration.mdx similarity index 100% rename from graspit-reporters/apps/graspit-docs/pages/Advanced/configuration.mdx rename to handshake-nodejs-reporters/apps/graspit-docs/pages/Advanced/configuration.mdx diff --git a/graspit-reporters/apps/graspit-docs/pages/Contribution/_meta.json b/handshake-nodejs-reporters/apps/graspit-docs/pages/Contribution/_meta.json similarity index 100% rename from graspit-reporters/apps/graspit-docs/pages/Contribution/_meta.json rename to handshake-nodejs-reporters/apps/graspit-docs/pages/Contribution/_meta.json diff --git a/graspit-reporters/apps/graspit-docs/pages/Contribution/branches.mdx b/handshake-nodejs-reporters/apps/graspit-docs/pages/Contribution/branches.mdx similarity index 100% rename from graspit-reporters/apps/graspit-docs/pages/Contribution/branches.mdx rename to handshake-nodejs-reporters/apps/graspit-docs/pages/Contribution/branches.mdx diff --git a/graspit-reporters/apps/graspit-docs/pages/Contribution/monorepo.mdx b/handshake-nodejs-reporters/apps/graspit-docs/pages/Contribution/monorepo.mdx similarity index 100% rename from graspit-reporters/apps/graspit-docs/pages/Contribution/monorepo.mdx rename to handshake-nodejs-reporters/apps/graspit-docs/pages/Contribution/monorepo.mdx diff --git a/graspit-reporters/apps/graspit-docs/pages/Supported/_meta.json b/handshake-nodejs-reporters/apps/graspit-docs/pages/Supported/_meta.json similarity index 100% rename from graspit-reporters/apps/graspit-docs/pages/Supported/_meta.json rename to handshake-nodejs-reporters/apps/graspit-docs/pages/Supported/_meta.json diff --git a/graspit-reporters/apps/graspit-docs/pages/Supported/webdriverio.mdx b/handshake-nodejs-reporters/apps/graspit-docs/pages/Supported/webdriverio.mdx similarity index 100% rename from graspit-reporters/apps/graspit-docs/pages/Supported/webdriverio.mdx rename to handshake-nodejs-reporters/apps/graspit-docs/pages/Supported/webdriverio.mdx diff --git a/graspit-reporters/apps/graspit-docs/pages/_app.tsx b/handshake-nodejs-reporters/apps/graspit-docs/pages/_app.tsx similarity index 100% rename from graspit-reporters/apps/graspit-docs/pages/_app.tsx rename to handshake-nodejs-reporters/apps/graspit-docs/pages/_app.tsx diff --git a/graspit-reporters/apps/graspit-docs/pages/_meta.json b/handshake-nodejs-reporters/apps/graspit-docs/pages/_meta.json similarity index 88% rename from graspit-reporters/apps/graspit-docs/pages/_meta.json rename to handshake-nodejs-reporters/apps/graspit-docs/pages/_meta.json index 3a575f9e..e839f965 100644 --- a/graspit-reporters/apps/graspit-docs/pages/_meta.json +++ b/handshake-nodejs-reporters/apps/graspit-docs/pages/_meta.json @@ -1,6 +1,6 @@ { "index": "Introduction", - "server": "", + "check": "", "plugins": "", "dashboard": "", "Advanced": "", diff --git a/handshake-nodejs-reporters/apps/graspit-docs/pages/check.mdx b/handshake-nodejs-reporters/apps/graspit-docs/pages/check.mdx new file mode 100644 index 00000000..2cc6c379 --- /dev/null +++ b/handshake-nodejs-reporters/apps/graspit-docs/pages/check.mdx @@ -0,0 +1,17 @@ +import SetupSteps from "pages/components/setupSteps"; +import Alert from "antd/lib/alert/Alert"; +import Tag from "antd/lib/tag/index"; +import Space from "antd/lib/space/index"; + +<> + + Important + Pre-requisite + + + + +## Intro + +**Graspit** relies on the executable released on [graspit repo](https://github.com/RahulARanger/graspit/releases). +It might have covered your system too. but do let us know if you face any problems. diff --git a/graspit-reporters/apps/graspit-docs/pages/components/branch.tsx b/handshake-nodejs-reporters/apps/graspit-docs/pages/components/branch.tsx similarity index 96% rename from graspit-reporters/apps/graspit-docs/pages/components/branch.tsx rename to handshake-nodejs-reporters/apps/graspit-docs/pages/components/branch.tsx index 4da979c2..e6f8865b 100644 --- a/graspit-reporters/apps/graspit-docs/pages/components/branch.tsx +++ b/handshake-nodejs-reporters/apps/graspit-docs/pages/components/branch.tsx @@ -31,7 +31,7 @@ export default function BranchStructure() { events: { click: function (event: PointClickEventObject) { window.open( - `https://github.com/RahulARanger/graspit/tree/${event.point.options.id}`, + `https://github.com/RahulARanger/handshake/tree/${event.point.options.id}`, "_blank" ); }, diff --git a/handshake-nodejs-reporters/apps/graspit-docs/pages/components/preview.tsx b/handshake-nodejs-reporters/apps/graspit-docs/pages/components/preview.tsx new file mode 100644 index 00000000..e0f345f7 --- /dev/null +++ b/handshake-nodejs-reporters/apps/graspit-docs/pages/components/preview.tsx @@ -0,0 +1,23 @@ +import GalleryOfImages, { + CardForAImage, +} from "graspit/src/components/utils/images-with-thumbnails"; + +import type { ReactNode } from "react"; +import React from "react"; + +export default function PreviewForMotivation(props: { + images: Array<{ title: string; url: string }>; +}): ReactNode { + return ( + + {props.images.map((image, index) => ( + + ))} + + ); +} diff --git a/graspit-reporters/apps/graspit-docs/pages/components/setupSteps.tsx b/handshake-nodejs-reporters/apps/graspit-docs/pages/components/setupSteps.tsx similarity index 77% rename from graspit-reporters/apps/graspit-docs/pages/components/setupSteps.tsx rename to handshake-nodejs-reporters/apps/graspit-docs/pages/components/setupSteps.tsx index d0b2d33b..5680b4ca 100644 --- a/graspit-reporters/apps/graspit-docs/pages/components/setupSteps.tsx +++ b/handshake-nodejs-reporters/apps/graspit-docs/pages/components/setupSteps.tsx @@ -4,11 +4,8 @@ import Link from "antd/lib/typography/Link"; function stepStatus(forThis: number, current?: number) { if (current == null) return "wait"; - return current === forThis - ? "process" - : current < forThis - ? "wait" - : "finish"; + if (current === forThis) return "process"; + return current < forThis ? "wait" : "finish"; } export default function SetupSteps(props: { current?: number }) { @@ -18,8 +15,9 @@ export default function SetupSteps(props: { current?: number }) { current={props.current} items={[ { - title: Graspit Server, - description: "Downloading Python & graspit package", + title: Check, + description: + "Check if there's direct reporter available for your framework", status: stepStatus(0, props.current), }, { diff --git a/graspit-reporters/apps/graspit-docs/pages/dashboard.mdx b/handshake-nodejs-reporters/apps/graspit-docs/pages/dashboard.mdx similarity index 100% rename from graspit-reporters/apps/graspit-docs/pages/dashboard.mdx rename to handshake-nodejs-reporters/apps/graspit-docs/pages/dashboard.mdx diff --git a/graspit-reporters/apps/graspit-docs/pages/index.mdx b/handshake-nodejs-reporters/apps/graspit-docs/pages/index.mdx similarity index 52% rename from graspit-reporters/apps/graspit-docs/pages/index.mdx rename to handshake-nodejs-reporters/apps/graspit-docs/pages/index.mdx index f750ae4a..62c52245 100644 --- a/graspit-reporters/apps/graspit-docs/pages/index.mdx +++ b/handshake-nodejs-reporters/apps/graspit-docs/pages/index.mdx @@ -1,23 +1,12 @@ import SetupSteps from "pages/components/setupSteps"; -import PreviewForMotivation from "pages/components/Preview"; +import PreviewForMotivation from "pages/components/preview"; # Welcome to Graspit -**Graspit** offers a service for saving your test results and creating a dashboard. -This dashboard is generated using Next.js and Ant Design (antd), -while our Python server, spun by Sanic, handles the storage and management of your test data. -Your test results are stored in an SQLite3 database, and the dashboard is a static export of our Next.js project. - -## Quick Start - -For Getting Started with the setup, we could shorten it with three steps, please go through them one by one. - - +**Graspit** makes it easy for you by saving your test results and creating a user-friendly dashboard. ## Gallery -Some of the Screenshots from Dashboard - diff --git a/graspit-reporters/apps/graspit-docs/pages/plugins.mdx b/handshake-nodejs-reporters/apps/graspit-docs/pages/plugins.mdx similarity index 100% rename from graspit-reporters/apps/graspit-docs/pages/plugins.mdx rename to handshake-nodejs-reporters/apps/graspit-docs/pages/plugins.mdx diff --git a/graspit-reporters/apps/graspit-docs/pages/plugins/_meta.json b/handshake-nodejs-reporters/apps/graspit-docs/pages/plugins/_meta.json similarity index 100% rename from graspit-reporters/apps/graspit-docs/pages/plugins/_meta.json rename to handshake-nodejs-reporters/apps/graspit-docs/pages/plugins/_meta.json diff --git a/graspit-reporters/apps/graspit-docs/pages/plugins/webdriverio.mdx b/handshake-nodejs-reporters/apps/graspit-docs/pages/plugins/webdriverio.mdx similarity index 100% rename from graspit-reporters/apps/graspit-docs/pages/plugins/webdriverio.mdx rename to handshake-nodejs-reporters/apps/graspit-docs/pages/plugins/webdriverio.mdx diff --git a/graspit-reporters/apps/graspit-docs/public/db.png b/handshake-nodejs-reporters/apps/graspit-docs/public/db.png similarity index 100% rename from graspit-reporters/apps/graspit-docs/public/db.png rename to handshake-nodejs-reporters/apps/graspit-docs/public/db.png diff --git a/graspit-reporters/apps/graspit-docs/public/grid.png b/handshake-nodejs-reporters/apps/graspit-docs/public/grid.png similarity index 100% rename from graspit-reporters/apps/graspit-docs/public/grid.png rename to handshake-nodejs-reporters/apps/graspit-docs/public/grid.png diff --git a/graspit-reporters/apps/graspit-docs/public/overview.png b/handshake-nodejs-reporters/apps/graspit-docs/public/overview.png similarity index 100% rename from graspit-reporters/apps/graspit-docs/public/overview.png rename to handshake-nodejs-reporters/apps/graspit-docs/public/overview.png diff --git a/graspit-reporters/apps/graspit-docs/theme.config.jsx b/handshake-nodejs-reporters/apps/graspit-docs/theme.config.jsx similarity index 51% rename from graspit-reporters/apps/graspit-docs/theme.config.jsx rename to handshake-nodejs-reporters/apps/graspit-docs/theme.config.jsx index 75341481..3036a6d0 100644 --- a/graspit-reporters/apps/graspit-docs/theme.config.jsx +++ b/handshake-nodejs-reporters/apps/graspit-docs/theme.config.jsx @@ -1,9 +1,9 @@ import React from "react" export default { - logo: Graspit, + logo: Handshake, project: { - link: 'https://github.com/RahulARanger/graspit' + link: 'https://github.com/RahulARanger/handshake' } // ... other theme options } \ No newline at end of file diff --git a/graspit-reporters/apps/graspit-docs/tsconfig.json b/handshake-nodejs-reporters/apps/graspit-docs/tsconfig.json similarity index 86% rename from graspit-reporters/apps/graspit-docs/tsconfig.json rename to handshake-nodejs-reporters/apps/graspit-docs/tsconfig.json index 5d9cdc6d..3e35fd55 100644 --- a/graspit-reporters/apps/graspit-docs/tsconfig.json +++ b/handshake-nodejs-reporters/apps/graspit-docs/tsconfig.json @@ -16,6 +16,6 @@ "jsx": "preserve", "rootDir": "pages" }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", "graspit/src"], + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", "handshake/src"], "exclude": ["node_modules"] } diff --git a/graspit-reporters/apps/test-wdio-cucumber/.vscode/settings.json b/handshake-nodejs-reporters/apps/test-wdio-cucumber/.vscode/settings.json similarity index 100% rename from graspit-reporters/apps/test-wdio-cucumber/.vscode/settings.json rename to handshake-nodejs-reporters/apps/test-wdio-cucumber/.vscode/settings.json diff --git a/graspit-reporters/apps/test-wdio-mocha/babel.config.js b/handshake-nodejs-reporters/apps/test-wdio-cucumber/babel.config.js similarity index 81% rename from graspit-reporters/apps/test-wdio-mocha/babel.config.js rename to handshake-nodejs-reporters/apps/test-wdio-cucumber/babel.config.js index e0412d22..64ebb4d6 100644 --- a/graspit-reporters/apps/test-wdio-mocha/babel.config.js +++ b/handshake-nodejs-reporters/apps/test-wdio-cucumber/babel.config.js @@ -4,7 +4,7 @@ module.exports = { "@babel/preset-env", { "targets": { - "node": 18 + "node": "current" } } ] diff --git a/graspit-reporters/apps/test-wdio-cucumber/features/login.feature b/handshake-nodejs-reporters/apps/test-wdio-cucumber/features/login.feature similarity index 100% rename from graspit-reporters/apps/test-wdio-cucumber/features/login.feature rename to handshake-nodejs-reporters/apps/test-wdio-cucumber/features/login.feature diff --git a/graspit-reporters/apps/test-wdio-cucumber/features/pageobjects/login.page.js b/handshake-nodejs-reporters/apps/test-wdio-cucumber/features/pageobjects/login.page.ts similarity index 71% rename from graspit-reporters/apps/test-wdio-cucumber/features/pageobjects/login.page.js rename to handshake-nodejs-reporters/apps/test-wdio-cucumber/features/pageobjects/login.page.ts index cbba788c..6ea47aed 100644 --- a/graspit-reporters/apps/test-wdio-cucumber/features/pageobjects/login.page.js +++ b/handshake-nodejs-reporters/apps/test-wdio-cucumber/features/pageobjects/login.page.ts @@ -1,5 +1,5 @@ -const { $ } = require('@wdio/globals') -const Page = require('./page'); +import { $ } from '@wdio/globals' +import Page from './page.js'; /** * sub page containing specific selectors and methods for a specific page @@ -8,15 +8,15 @@ class LoginPage extends Page { /** * define selectors using getter methods */ - get inputUsername () { + public get inputUsername () { return $('#username'); } - get inputPassword () { + public get inputPassword () { return $('#password'); } - get btnSubmit () { + public get btnSubmit () { return $('button[type="submit"]'); } @@ -24,7 +24,7 @@ class LoginPage extends Page { * a method to encapsule automation code to interact with the page * e.g. to login using username and password */ - async login (username, password) { + public async login (username: string, password: string) { await this.inputUsername.setValue(username); await this.inputPassword.setValue(password); await this.btnSubmit.click(); @@ -33,9 +33,9 @@ class LoginPage extends Page { /** * overwrite specific options to adapt it to page object */ - open () { + public open () { return super.open('login'); } } -module.exports = new LoginPage(); +export default new LoginPage(); diff --git a/graspit-reporters/apps/test-wdio-cucumber/features/pageobjects/page.js b/handshake-nodejs-reporters/apps/test-wdio-cucumber/features/pageobjects/page.ts similarity index 75% rename from graspit-reporters/apps/test-wdio-cucumber/features/pageobjects/page.js rename to handshake-nodejs-reporters/apps/test-wdio-cucumber/features/pageobjects/page.ts index e522bd00..6a20f1ce 100644 --- a/graspit-reporters/apps/test-wdio-cucumber/features/pageobjects/page.js +++ b/handshake-nodejs-reporters/apps/test-wdio-cucumber/features/pageobjects/page.ts @@ -1,15 +1,15 @@ -const { browser } = require('@wdio/globals') +import { browser } from '@wdio/globals' /** * main page object containing all methods, selectors and functionality * that is shared across all page objects */ -module.exports = class Page { +export default class Page { /** * Opens a sub page of the page * @param path path of the sub page (e.g. /path/to/page.html) */ - open (path) { + public open (path: string) { return browser.url(`https://the-internet.herokuapp.com/${path}`) } } diff --git a/graspit-reporters/apps/test-wdio-cucumber/features/pageobjects/secure.page.js b/handshake-nodejs-reporters/apps/test-wdio-cucumber/features/pageobjects/secure.page.ts similarity index 62% rename from graspit-reporters/apps/test-wdio-cucumber/features/pageobjects/secure.page.js rename to handshake-nodejs-reporters/apps/test-wdio-cucumber/features/pageobjects/secure.page.ts index 27d16269..3db02f43 100644 --- a/graspit-reporters/apps/test-wdio-cucumber/features/pageobjects/secure.page.js +++ b/handshake-nodejs-reporters/apps/test-wdio-cucumber/features/pageobjects/secure.page.ts @@ -1,5 +1,5 @@ -const { $ } = require('@wdio/globals') -const Page = require('./page'); +import { $ } from '@wdio/globals' +import Page from './page.js'; /** * sub page containing specific selectors and methods for a specific page @@ -8,9 +8,9 @@ class SecurePage extends Page { /** * define selectors using getter methods */ - get flashAlert () { + public get flashAlert () { return $('#flash'); } } -module.exports = new SecurePage(); +export default new SecurePage(); diff --git a/graspit-reporters/apps/test-wdio-cucumber/features/step-definitions/steps.js b/handshake-nodejs-reporters/apps/test-wdio-cucumber/features/step-definitions/steps.ts similarity index 66% rename from graspit-reporters/apps/test-wdio-cucumber/features/step-definitions/steps.js rename to handshake-nodejs-reporters/apps/test-wdio-cucumber/features/step-definitions/steps.ts index 1a9767aa..dee4ebfa 100644 --- a/graspit-reporters/apps/test-wdio-cucumber/features/step-definitions/steps.js +++ b/handshake-nodejs-reporters/apps/test-wdio-cucumber/features/step-definitions/steps.ts @@ -1,8 +1,8 @@ -const { Given, When, Then } = require('@wdio/cucumber-framework'); -const { expect, $ } = require('@wdio/globals') +import { Given, When, Then } from '@wdio/cucumber-framework'; +import { expect, $ } from '@wdio/globals' -const LoginPage = require('../pageobjects/login.page'); -const SecurePage = require('../pageobjects/secure.page'); +import LoginPage from '../pageobjects/login.page.js'; +import SecurePage from '../pageobjects/secure.page.js'; const pages = { login: LoginPage diff --git a/handshake-nodejs-reporters/apps/test-wdio-cucumber/package.json b/handshake-nodejs-reporters/apps/test-wdio-cucumber/package.json new file mode 100644 index 00000000..8ebf1c81 --- /dev/null +++ b/handshake-nodejs-reporters/apps/test-wdio-cucumber/package.json @@ -0,0 +1,24 @@ +{ + "name": "test-wdio-cucumber", + "version": "1.0.0", + "private": true, + "type": "module", + "scripts": { + "wdio": "npx wdio run ./wdio.conf.ts", + "sanity": "cross-env SANITY=true npm run wdio" + }, + "author": "", + "license": "ISC", + "description": "", + "devDependencies": { + "@wdio/cucumber-framework": "^8.26.2", + "@wdio/local-runner": "^8.26.2", + "@wdio/spec-reporter": "^8.26.2", + "ts-node": "^10.9.2", + "typescript": "^5.3.3" + }, + "dependencies": { + "@wdio/cli": "^8.26.2", + "wdio-handshake-reporter": "0.3.2" + } +} diff --git a/handshake-nodejs-reporters/apps/test-wdio-cucumber/tsconfig.json b/handshake-nodejs-reporters/apps/test-wdio-cucumber/tsconfig.json new file mode 100644 index 00000000..f6adda0a --- /dev/null +++ b/handshake-nodejs-reporters/apps/test-wdio-cucumber/tsconfig.json @@ -0,0 +1,30 @@ +{ + "compilerOptions": { + "moduleResolution": "node", + "module": "ESNext", + "target": "es2022", + "lib": [ + "es2022", + "dom" + ], + "types": [ + "node", + "@wdio/globals/types", + "expect-webdriverio", + "@wdio/cucumber-framework" + ], + "skipLibCheck": true, + "noEmit": true, + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": [ + "test", + "wdio.conf.ts" + ] +} \ No newline at end of file diff --git a/graspit-reporters/apps/test-wdio-cucumber/wdio.conf.js b/handshake-nodejs-reporters/apps/test-wdio-cucumber/wdio.conf.js similarity index 100% rename from graspit-reporters/apps/test-wdio-cucumber/wdio.conf.js rename to handshake-nodejs-reporters/apps/test-wdio-cucumber/wdio.conf.js diff --git a/handshake-nodejs-reporters/apps/test-wdio-cucumber/wdio.conf.ts b/handshake-nodejs-reporters/apps/test-wdio-cucumber/wdio.conf.ts new file mode 100644 index 00000000..e4257e52 --- /dev/null +++ b/handshake-nodejs-reporters/apps/test-wdio-cucumber/wdio.conf.ts @@ -0,0 +1,359 @@ +import type { Options } from "@wdio/types"; +import { join, dirname } from "node:path"; +import { attachReporter } from "wdio-handshake-reporter"; + +const options: Options.Testrunner = { + // + // ==================== + // Runner Configuration + // ==================== + // WebdriverIO supports running e2e tests as well as unit and component tests. + runner: "local", + autoCompileOpts: { + autoCompile: true, + tsNodeOpts: { + project: "./tsconfig.json", + transpileOnly: true, + }, + }, + + // + // ================== + // Specify Test Files + // ================== + // Define which test specs should run. The pattern is relative to the directory + // of the configuration file being run. + // + // The specs are defined as an array of spec files (optionally using wildcards + // that will be expanded). The test for each spec file will be run in a separate + // worker process. In order to have a group of spec files run in the same worker + // process simply enclose them in an array within the specs array. + // + // If you are calling `wdio` from an NPM script (see https://docs.npmjs.com/cli/run-script), + // then the current working directory is where your `package.json` resides, so `wdio` + // will be called from there. + // + specs: ["./features/**/*.feature"], + // Patterns to exclude. + exclude: [ + // 'path/to/excluded/files' + ], + // + // ============ + // Capabilities + // ============ + // Define your capabilities here. WebdriverIO can run multiple capabilities at the same + // time. Depending on the number of capabilities, WebdriverIO launches several test + // sessions. Within your capabilities you can overwrite the spec and exclude options in + // order to group specific specs to a specific capability. + // + // First, you can define how many instances should be started at the same time. Let's + // say you have 3 different capabilities (Chrome, Firefox, and Safari) and you have + // set maxInstances to 1; wdio will spawn 3 processes. Therefore, if you have 10 spec + // files and you set maxInstances to 10, all spec files will get tested at the same time + // and 30 processes will get spawned. The property handles how many capabilities + // from the same test should run tests. + // + maxInstances: 10, + // + // If you have trouble getting all important capabilities together, check out the + // Sauce Labs platform configurator - a great tool to configure your capabilities: + // https://saucelabs.com/platform/platform-configurator + // + capabilities: [ + { + browserName: "chrome", + "goog:chromeOptions": { + args: ["headless", "disable-gpu"], + }, + }, + ], + + // + // =================== + // Test Configurations + // =================== + // Define all options that are relevant for the WebdriverIO instance here + // + // Level of logging verbosity: trace | debug | info | warn | error | silent + logLevel: "info", + // + // Set specific log levels per logger + // loggers: + // - webdriver, webdriverio + // - @wdio/browserstack-service, @wdio/devtools-service, @wdio/sauce-service + // - @wdio/mocha-framework, @wdio/jasmine-framework + // - @wdio/local-runner + // - @wdio/sumologic-reporter + // - @wdio/cli, @wdio/config, @wdio/utils + // Level of logging verbosity: trace | debug | info | warn | error | silent + // logLevels: { + // webdriver: 'info', + // '@wdio/appium-service': 'info' + // }, + // + // If you only want to run your tests until a specific amount of tests have failed use + // bail (default is 0 - don't bail, run all tests). + bail: 0, + // + // Set a base URL in order to shorten url command calls. If your `url` parameter starts + // with `/`, the base url gets prepended, not including the path portion of your baseUrl. + // If your `url` parameter starts without a scheme or `/` (like `some/path`), the base url + // gets prepended directly. + baseUrl: "http://localhost", + // + // Default timeout for all waitFor* commands. + waitforTimeout: 10000, + // + // Default timeout in milliseconds for request + // if browser driver or grid doesn't send response + connectionRetryTimeout: 120000, + // + // Default request retries count + connectionRetryCount: 3, + // + // Test runner services + // Services take over a specific job you don't want to take care of. They enhance + // your test setup with almost no effort. Unlike plugins, they don't add new + // commands. Instead, they hook themselves up into the test process. + // services: [], + // + // Framework you want to run your specs with. + // The following are supported: Mocha, Jasmine, and Cucumber + // see also: https://webdriver.io/docs/frameworks + // + // Make sure you have the wdio adapter package for the specific framework installed + // before running any tests. + framework: "cucumber", + + // + // The number of times to retry the entire specfile when it fails as a whole + // specFileRetries: 1, + // + // Delay in seconds between the spec file retry attempts + // specFileRetriesDelay: 0, + // + // Whether or not retried spec files should be retried immediately or deferred to the end of the queue + // specFileRetriesDeferred: false, + // + // Test reporter for stdout. + // The only one supported by default is 'dot' + // see also: https://webdriver.io/docs/dot-reporter + reporters: ["spec"], + + // If you are using Cucumber you need to specify the location of your step definitions. + cucumberOpts: { + // (file/dir) require files before executing features + require: ["./features/step-definitions/steps.ts"], + // show full backtrace for errors + backtrace: false, + // ("extension:module") require files with the given EXTENSION after requiring MODULE (repeatable) + requireModule: [], + // invoke formatters without executing steps + dryRun: false, + // abort the run on first failure + failFast: false, + // hide step definition snippets for pending steps + snippets: true, + // hide source uris + source: true, + // fail if there are any undefined or pending steps + strict: false, + // (expression) only execute the features or scenarios with tags matching the expression + tagExpression: "", + // timeout for step definitions + timeout: 60000, + // Enable this config to treat undefined definitions as warnings. + ignoreUndefinedDefinitions: false, + }, + + // + // ===== + // Hooks + // ===== + // WebdriverIO provides several hooks you can use to interfere with the test process in order to enhance + // it and to build services around it. You can either apply a single function or an array of + // methods to it. If one of them returns with a promise, WebdriverIO will wait until that promise got + // resolved to continue. + /** + * Gets executed once before all workers get launched. + * @param {object} config wdio configuration object + * @param {Array.} capabilities list of capabilities details + */ + // onPrepare: function (config, capabilities) { + // }, + /** + * Gets executed before a worker process is spawned and can be used to initialize specific service + * for that worker as well as modify runtime environments in an async fashion. + * @param {string} cid capability id (e.g 0-0) + * @param {object} caps object containing capabilities for session that will be spawn in the worker + * @param {object} specs specs to be run in the worker process + * @param {object} args object that will be merged with the main configuration once worker is initialized + * @param {object} execArgv list of string arguments passed to the worker process + */ + // onWorkerStart: function (cid, caps, specs, args, execArgv) { + // }, + /** + * Gets executed just after a worker process has exited. + * @param {string} cid capability id (e.g 0-0) + * @param {number} exitCode 0 - success, 1 - fail + * @param {object} specs specs to be run in the worker process + * @param {number} retries number of retries used + */ + // onWorkerEnd: function (cid, exitCode, specs, retries) { + // }, + /** + * Gets executed just before initialising the webdriver session and test framework. It allows you + * to manipulate configurations depending on the capability or spec. + * @param {object} config wdio configuration object + * @param {Array.} capabilities list of capabilities details + * @param {Array.} specs List of spec file paths that are to be run + * @param {string} cid worker id (e.g. 0-0) + */ + // beforeSession: function (config, capabilities, specs, cid) { + // }, + /** + * Gets executed before test execution begins. At this point you can access to all global + * variables like `browser`. It is the perfect place to define custom commands. + * @param {Array.} capabilities list of capabilities details + * @param {Array.} specs List of spec file paths that are to be run + * @param {object} browser instance of created browser/device session + */ + // before: function (capabilities, specs) { + // }, + /** + * Runs before a WebdriverIO command gets executed. + * @param {string} commandName hook command name + * @param {Array} args arguments that command would receive + */ + // beforeCommand: function (commandName, args) { + // }, + /** + * Cucumber Hooks + * + * Runs before a Cucumber Feature. + * @param {string} uri path to feature file + * @param {GherkinDocument.IFeature} feature Cucumber feature object + */ + // beforeFeature: function (uri, feature) { + // }, + /** + * + * Runs before a Cucumber Scenario. + * @param {ITestCaseHookParameter} world world object containing information on pickle and test step + * @param {object} context Cucumber World object + */ + // beforeScenario: function (world, context) { + // }, + /** + * + * Runs before a Cucumber Step. + * @param {Pickle.IPickleStep} step step data + * @param {IPickle} scenario scenario pickle + * @param {object} context Cucumber World object + */ + // beforeStep: function (step, scenario, context) { + // }, + /** + * + * Runs after a Cucumber Step. + * @param {Pickle.IPickleStep} step step data + * @param {IPickle} scenario scenario pickle + * @param {object} result results object containing scenario results + * @param {boolean} result.passed true if scenario has passed + * @param {string} result.error error stack if scenario failed + * @param {number} result.duration duration of scenario in milliseconds + * @param {object} context Cucumber World object + */ + // afterStep: function (step, scenario, result, context) { + // }, + /** + * + * Runs after a Cucumber Scenario. + * @param {ITestCaseHookParameter} world world object containing information on pickle and test step + * @param {object} result results object containing scenario results + * @param {boolean} result.passed true if scenario has passed + * @param {string} result.error error stack if scenario failed + * @param {number} result.duration duration of scenario in milliseconds + * @param {object} context Cucumber World object + */ + // afterScenario: function (world, result, context) { + // }, + /** + * + * Runs after a Cucumber Feature. + * @param {string} uri path to feature file + * @param {GherkinDocument.IFeature} feature Cucumber feature object + */ + // afterFeature: function (uri, feature) { + // }, + + /** + * Runs after a WebdriverIO command gets executed + * @param {string} commandName hook command name + * @param {Array} args arguments that command would receive + * @param {number} result 0 - command success, 1 - command error + * @param {object} error error object if any + */ + // afterCommand: function (commandName, args, result, error) { + // }, + /** + * Gets executed after all tests are done. You still have access to all global variables from + * the test. + * @param {number} result 0 - test pass, 1 - test fail + * @param {Array.} capabilities list of capabilities details + * @param {Array.} specs List of spec file paths that ran + */ + // after: function (result, capabilities, specs) { + // }, + /** + * Gets executed right after terminating the webdriver session. + * @param {object} config wdio configuration object + * @param {Array.} capabilities list of capabilities details + * @param {Array.} specs List of spec file paths that ran + */ + // afterSession: function (config, capabilities, specs) { + // }, + /** + * Gets executed after all workers got shut down and the process is about to exit. An error + * thrown in the onComplete hook will result in the test run failing. + * @param {object} exitCode 0 - success, 1 - fail + * @param {object} config wdio configuration object + * @param {Array.} capabilities list of capabilities details + * @param {} results object containing test results + */ + // onComplete: function(exitCode, config, capabilities, results) { + // }, + /** + * Gets executed when a refresh happens. + * @param {string} oldSessionId session ID of the old session + * @param {string} newSessionId session ID of the new session + */ + // onReload: function(oldSessionId, newSessionId) { + // } + /** + * Hook that gets executed before a WebdriverIO assertion happens. + * @param {object} params information about the assertion to be executed + */ + // beforeAssertion: function(params) { + // } + /** + * Hook that gets executed after a WebdriverIO assertion happened. + * @param {object} params information about the assertion that was executed, including its results + */ + // afterAssertion: function(params) { + // } +}; +const root = dirname(dirname(dirname(process.cwd()))); + +export const config = attachReporter(options, { + collectionName: "TestResults", + port: 6969, + timeout: 360e3, + root, + addScreenshots: true, + export: { + out: process.env.SANITY ? undefined : join(root, "TestReports"), + }, + testConfig: { projectName: "WDIO:Cucumber" }, +}); diff --git a/graspit-reporters/apps/test-wdio-mocha/.vscode/settings.json b/handshake-nodejs-reporters/apps/test-wdio-mocha/.vscode/settings.json similarity index 100% rename from graspit-reporters/apps/test-wdio-mocha/.vscode/settings.json rename to handshake-nodejs-reporters/apps/test-wdio-mocha/.vscode/settings.json diff --git a/graspit-reporters/apps/test-wdio-cucumber/babel.config.js b/handshake-nodejs-reporters/apps/test-wdio-mocha/babel.config.js similarity index 100% rename from graspit-reporters/apps/test-wdio-cucumber/babel.config.js rename to handshake-nodejs-reporters/apps/test-wdio-mocha/babel.config.js diff --git a/graspit-reporters/apps/test-wdio-mocha/package.json b/handshake-nodejs-reporters/apps/test-wdio-mocha/package.json similarity index 63% rename from graspit-reporters/apps/test-wdio-mocha/package.json rename to handshake-nodejs-reporters/apps/test-wdio-mocha/package.json index 595a0354..b2cf952d 100644 --- a/graspit-reporters/apps/test-wdio-mocha/package.json +++ b/handshake-nodejs-reporters/apps/test-wdio-mocha/package.json @@ -8,18 +8,18 @@ "scripts": { "test": "npm run test:mocha", "test:mocha": "npx wdio run ./wdio.conf.js", - "test:mocha:sanity": "cross-env SANITY=true npx wdio run ./wdio.conf.js --spec test-mocha/specs/test.e2e.js", + "test:mocha:sanity": "cross-env SANITY=true npx wdio run ./wdio.conf.js --exclude test-mocha/specs/package-version.e2e.js", "sanity": "npm run test:mocha:sanity" }, "author": "", "license": "ISC", "dependencies": { - "@wdio/cli": "^8.24.5", - "@wdio/local-runner": "^8.24.5", - "@wdio/mocha-framework": "^8.24.5", - "@wdio/spec-reporter": "^8.24.2", - "ts-node": "^10.9.1", - "wdio-graspit-reporter": "3.4.4" + "@wdio/cli": "^8.26.1", + "@wdio/local-runner": "^8.26.1", + "@wdio/mocha-framework": "^8.24.12", + "@wdio/spec-reporter": "^8.24.12", + "ts-node": "^10.9.2", + "wdio-handshake-reporter": "0.3.2" }, "devDependencies": { "cross-env": "^7.0.3" diff --git a/graspit-reporters/apps/test-wdio-mocha/test-mocha/pageobjects/login.page.js b/handshake-nodejs-reporters/apps/test-wdio-mocha/test-mocha/pageobjects/login.page.js similarity index 100% rename from graspit-reporters/apps/test-wdio-mocha/test-mocha/pageobjects/login.page.js rename to handshake-nodejs-reporters/apps/test-wdio-mocha/test-mocha/pageobjects/login.page.js diff --git a/graspit-reporters/apps/test-wdio-mocha/test-mocha/pageobjects/page.js b/handshake-nodejs-reporters/apps/test-wdio-mocha/test-mocha/pageobjects/page.js similarity index 100% rename from graspit-reporters/apps/test-wdio-mocha/test-mocha/pageobjects/page.js rename to handshake-nodejs-reporters/apps/test-wdio-mocha/test-mocha/pageobjects/page.js diff --git a/graspit-reporters/apps/test-wdio-mocha/test-mocha/pageobjects/secure.page.js b/handshake-nodejs-reporters/apps/test-wdio-mocha/test-mocha/pageobjects/secure.page.js similarity index 100% rename from graspit-reporters/apps/test-wdio-mocha/test-mocha/pageobjects/secure.page.js rename to handshake-nodejs-reporters/apps/test-wdio-mocha/test-mocha/pageobjects/secure.page.js diff --git a/graspit-reporters/apps/test-wdio-mocha/test-mocha/specs/package-version.e2e.js b/handshake-nodejs-reporters/apps/test-wdio-mocha/test-mocha/specs/package-version.e2e.js similarity index 97% rename from graspit-reporters/apps/test-wdio-mocha/test-mocha/specs/package-version.e2e.js rename to handshake-nodejs-reporters/apps/test-wdio-mocha/test-mocha/specs/package-version.e2e.js index dc284acf..5c007180 100644 --- a/graspit-reporters/apps/test-wdio-mocha/test-mocha/specs/package-version.e2e.js +++ b/handshake-nodejs-reporters/apps/test-wdio-mocha/test-mocha/specs/package-version.e2e.js @@ -2,7 +2,7 @@ import { readFileSync } from "node:fs" import { Key } from "webdriverio" import { join } from "node:path" import { browser, $, expect } from "@wdio/globals" -import { addDescription, addLink } from "wdio-graspit-reporter" +import { addDescription, addLink } from "wdio-handshake-reporter" describe("Verifying the versions of the project's dependencies", async function () { /** diff --git a/graspit-reporters/apps/test-wdio-mocha/test-mocha/specs/test.e2e.js b/handshake-nodejs-reporters/apps/test-wdio-mocha/test-mocha/specs/test.e2e.js similarity index 100% rename from graspit-reporters/apps/test-wdio-mocha/test-mocha/specs/test.e2e.js rename to handshake-nodejs-reporters/apps/test-wdio-mocha/test-mocha/specs/test.e2e.js diff --git a/graspit-reporters/apps/test-wdio-mocha/wdio.conf.js b/handshake-nodejs-reporters/apps/test-wdio-mocha/wdio.conf.js similarity index 95% rename from graspit-reporters/apps/test-wdio-mocha/wdio.conf.js rename to handshake-nodejs-reporters/apps/test-wdio-mocha/wdio.conf.js index 1d0ad7d6..0229edd5 100644 --- a/graspit-reporters/apps/test-wdio-mocha/wdio.conf.js +++ b/handshake-nodejs-reporters/apps/test-wdio-mocha/wdio.conf.js @@ -1,5 +1,5 @@ import { join, dirname } from 'node:path'; -import { attachReporter } from "wdio-graspit-reporter" +import { attachReporter } from "wdio-handshake-reporter" // eslint-disable-next-line import/prefer-default-export const metaConfig = { diff --git a/graspit-reporters/package-lock.json b/handshake-nodejs-reporters/package-lock.json similarity index 87% rename from graspit-reporters/package-lock.json rename to handshake-nodejs-reporters/package-lock.json index 9a2dc7cb..4c424533 100644 --- a/graspit-reporters/package-lock.json +++ b/handshake-nodejs-reporters/package-lock.json @@ -1,54 +1,66 @@ { - "name": "graspit-reporters", + "name": "handshake-reporters", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "graspit-reporters", + "name": "handshake-reporters", "workspaces": [ "apps/*", "packages/*" ], - "dependencies": { - "log4js": "^6.9.1" - }, "devDependencies": { "@changesets/cli": "^2.27.1", - "@typescript-eslint/eslint-plugin": "^6.13.1", - "@typescript-eslint/parser": "^6.13.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^6.14.0", + "@typescript-eslint/parser": "^6.14.0", + "eslint": "^8.56.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-airbnb-typescript": "^17.1.0", "eslint-plugin-unicorn": "^49.0.0", - "prettier": "^3.1.0", - "rimraf": "^5.0.5", + "prettier": "^3.1.1", "tsconfig": "7.0.0", "tsup": "^8.0.1", - "turbo": "^1.10.16" + "turbo": "^1.11.2" } }, "apps/graspit-docs": { "version": "1.0.0", "license": "ISC", "dependencies": { - "@mdx-js/loader": "^2.3.0", - "@mdx-js/react": "^2.3.0", - "@next/mdx": "^13.5.4", - "antd": "^5.9.4", - "graspit": "*", - "highcharts": "^11.1.0", + "@mdx-js/loader": "^3.0.0", + "@mdx-js/react": "^3.0.0", + "@next/mdx": "^14.0.3", + "antd": "^5.11.5", + "graspit": "3.4.6", + "highcharts": "^11.2.0", "highcharts-react-official": "^3.2.1", - "next": "^13.5.4", + "next": "^14.0.3", "nextra": "^2.13.2", "nextra-theme-docs": "^2.13.2", "react": "^18.2.0", "react-dom": "^18.2.0" }, "devDependencies": { - "@types/mdx": "^2.0.8", + "@types/mdx": "^2.0.10", "eslint-plugin-mdx": "^2.2.0" } }, + "apps/graspit-docs/node_modules/@mdx-js/react": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.0.0.tgz", + "integrity": "sha512-nDctevR9KyYFyV+m+/+S4cpzCWHqj+iHDHq3QrsWezcC+B17uZdIWgCguESUkwFhM3n/56KxWVE3V6EokrmONQ==", + "dependencies": { + "@types/mdx": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@types/react": ">=16", + "react": ">=16" + } + }, "apps/test-commons": { "version": "1.0.0", "extraneous": true, @@ -73,6 +85,7 @@ }, "apps/test-mocha": { "version": "1.0.0", + "extraneous": true, "license": "ISC", "dependencies": { "@wdio/cli": "^8.24.5", @@ -90,13 +103,30 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@wdio/cli": "^8.24.4", - "wdio-graspit-reporter": "^3.3.1" + "@wdio/cli": "^8.26.2", + "wdio-handshake-reporter": "0.3.0" + }, + "devDependencies": { + "@wdio/cucumber-framework": "^8.26.2", + "@wdio/local-runner": "^8.26.2", + "@wdio/spec-reporter": "^8.26.2", + "ts-node": "^10.9.2", + "typescript": "^5.3.3" + } + }, + "apps/test-wdio-mocha": { + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@wdio/cli": "^8.26.1", + "@wdio/local-runner": "^8.26.1", + "@wdio/mocha-framework": "^8.24.12", + "@wdio/spec-reporter": "^8.24.12", + "ts-node": "^10.9.2", + "wdio-handshake-reporter": "0.3.0" }, "devDependencies": { - "@wdio/cucumber-framework": "^8.24.4", - "@wdio/local-runner": "^8.24.4", - "@wdio/spec-reporter": "^8.24.2" + "cross-env": "^7.0.3" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -130,15 +160,15 @@ } }, "node_modules/@ant-design/cssinjs": { - "version": "1.17.5", - "resolved": "https://registry.npmjs.org/@ant-design/cssinjs/-/cssinjs-1.17.5.tgz", - "integrity": "sha512-Ed2rruHMxZTVYGPec6QBZkrh00Df5K1FAufmBpONai5iGYxoxIkg1sRD8YdCw0NvPRAa4r1nJP5LbwICGHzGiQ==", + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/@ant-design/cssinjs/-/cssinjs-1.18.1.tgz", + "integrity": "sha512-1JURAPrsjK1GwpqByTq3bJ7nF7lbMKDZpehqeR2n8/IR5O58/W1U4VcOeaw5ZyTHri3tEMcom7dyP2tvxpW54g==", "dependencies": { "@babel/runtime": "^7.11.1", "@emotion/hash": "^0.8.0", "@emotion/unitless": "^0.7.5", "classnames": "^2.3.1", - "csstype": "^3.0.10", + "csstype": "3.1.2", "rc-util": "^5.35.0", "stylis": "^4.0.13" }, @@ -211,11 +241,11 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dependencies": { - "@babel/highlight": "^7.22.13", + "@babel/highlight": "^7.23.4", "chalk": "^2.4.2" }, "engines": { @@ -223,30 +253,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz", - "integrity": "sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz", - "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.6.tgz", + "integrity": "sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@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/helpers": "^7.23.2", - "@babel/parser": "^7.23.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.6", + "@babel/parser": "^7.23.6", "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.2", - "@babel/types": "^7.23.0", + "@babel/traverse": "^7.23.6", + "@babel/types": "^7.23.6", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -271,12 +301,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", - "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", "dev": true, "dependencies": { - "@babel/types": "^7.23.0", + "@babel/types": "^7.23.6", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -285,15 +315,39 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-compilation-targets": { + "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, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { "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==", + "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, "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -310,6 +364,80 @@ "semver": "bin/semver.js" } }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.6.tgz", + "integrity": "sha512-cBXU1vZni/CpGF29iTu4YRbOZt3Wat6zCoMDxRF1MayiEc4URxOj31tT65HUM0CRpMowA3HCJaAOVOUnMf96cw==", + "dev": true, + "dependencies": { + "@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.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@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/@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, + "bin": { + "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, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.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, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz", + "integrity": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, "node_modules/@babel/helper-environment-visitor": { "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", @@ -344,6 +472,18 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "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", @@ -357,9 +497,9 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", - "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", @@ -375,6 +515,18 @@ "@babel/core": "^7.0.0" } }, + "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, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, "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", @@ -384,6 +536,40 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "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", @@ -396,6 +582,18 @@ "node": ">=6.9.0" } }, + "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, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, "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", @@ -409,9 +607,9 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "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" @@ -426,32 +624,46 @@ } }, "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==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" + }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", - "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.6.tgz", + "integrity": "sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==", "dev": true, "dependencies": { "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.2", - "@babel/types": "^7.23.0" + "@babel/traverse": "^7.23.6", + "@babel/types": "^7.23.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dependencies": { "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", @@ -462,9 +674,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", + "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" @@ -473,6 +685,66 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.23.3", + "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.23.3.tgz", + "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", + "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz", + "integrity": "sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "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", @@ -509,22 +781,25 @@ "@babel/core": "^7.0.0-0" } }, - "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==", + "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, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-json-strings": { + "node_modules/@babel/plugin-syntax-dynamic-import": { "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==", + "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, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -533,49 +808,52 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", - "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", + "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, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-plugin-utils": "^7.8.3" }, "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==", + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", + "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", + "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-numeric-separator": { + "node_modules/@babel/plugin-syntax-import-meta": { "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==", + "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, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" @@ -584,10 +862,73 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { + "node_modules/@babel/plugin-syntax-json-strings": { "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==", + "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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", + "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "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, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -620,6 +961,21 @@ "@babel/core": "^7.0.0-0" } }, + "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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "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", @@ -636,9 +992,9 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", - "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", + "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -650,2255 +1006,4277 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/runtime": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", - "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", + "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, "dependencies": { - "regenerator-runtime": "^0.14.0" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", + "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/traverse": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", - "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.4.tgz", + "integrity": "sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw==", "dev": true, "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.1.0", - "globals": "^11.1.0" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/plugin-syntax-async-generators": "^7.8.4" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/types": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", - "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", + "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "node_modules/@braintree/sanitize-url": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz", - "integrity": "sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==" - }, - "node_modules/@changesets/apply-release-plan": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-7.0.0.tgz", - "integrity": "sha512-vfi69JR416qC9hWmFGSxj7N6wA5J222XNBmezSVATPWDVPIF7gkd4d8CpbEbXmRWbVrkoli3oerGS6dcL/BGsQ==", + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", + "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", "dev": true, "dependencies": { - "@babel/runtime": "^7.20.1", - "@changesets/config": "^3.0.0", - "@changesets/get-version-range-type": "^0.4.0", - "@changesets/git": "^3.0.0", - "@changesets/types": "^6.0.0", - "@manypkg/get-packages": "^1.1.3", - "detect-indent": "^6.0.0", - "fs-extra": "^7.0.1", - "lodash.startcase": "^4.4.0", - "outdent": "^0.5.0", - "prettier": "^2.7.1", - "resolve-from": "^5.0.0", - "semver": "^7.5.3" + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@changesets/apply-release-plan/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/plugin-transform-block-scoping": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", + "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", "dev": true, - "bin": { - "prettier": "bin-prettier.js" + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": ">=10.13.0" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@changesets/assemble-release-plan": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-6.0.0.tgz", - "integrity": "sha512-4QG7NuisAjisbW4hkLCmGW2lRYdPrKzro+fCtZaILX+3zdUELSvYjpL4GTv0E4aM9Mef3PuIQp89VmHJ4y2bfw==", + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", + "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", "dev": true, "dependencies": { - "@babel/runtime": "^7.20.1", - "@changesets/errors": "^0.2.0", - "@changesets/get-dependents-graph": "^2.0.0", - "@changesets/types": "^6.0.0", - "@manypkg/get-packages": "^1.1.3", - "semver": "^7.5.3" + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@changesets/changelog-git": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@changesets/changelog-git/-/changelog-git-0.2.0.tgz", - "integrity": "sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==", + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", + "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", "dev": true, "dependencies": { - "@changesets/types": "^6.0.0" + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" } }, - "node_modules/@changesets/cli": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@changesets/cli/-/cli-2.27.1.tgz", - "integrity": "sha512-iJ91xlvRnnrJnELTp4eJJEOPjgpF3NOh4qeQehM6Ugiz9gJPRZ2t+TsXun6E3AMN4hScZKjqVXl0TX+C7AB3ZQ==", + "node_modules/@babel/plugin-transform-classes": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.5.tgz", + "integrity": "sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==", "dev": true, "dependencies": { - "@babel/runtime": "^7.20.1", - "@changesets/apply-release-plan": "^7.0.0", - "@changesets/assemble-release-plan": "^6.0.0", - "@changesets/changelog-git": "^0.2.0", - "@changesets/config": "^3.0.0", - "@changesets/errors": "^0.2.0", - "@changesets/get-dependents-graph": "^2.0.0", - "@changesets/get-release-plan": "^4.0.0", - "@changesets/git": "^3.0.0", - "@changesets/logger": "^0.1.0", - "@changesets/pre": "^2.0.0", - "@changesets/read": "^0.6.0", - "@changesets/types": "^6.0.0", - "@changesets/write": "^0.3.0", - "@manypkg/get-packages": "^1.1.3", - "@types/semver": "^7.5.0", - "ansi-colors": "^4.1.3", - "chalk": "^2.1.0", - "ci-info": "^3.7.0", - "enquirer": "^2.3.0", - "external-editor": "^3.1.0", - "fs-extra": "^7.0.1", - "human-id": "^1.0.2", - "meow": "^6.0.0", - "outdent": "^0.5.0", - "p-limit": "^2.2.0", - "preferred-pm": "^3.0.0", - "resolve-from": "^5.0.0", - "semver": "^7.5.3", - "spawndamnit": "^2.0.0", - "term-size": "^2.1.0", - "tty-table": "^4.1.5" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" }, - "bin": { - "changeset": "bin.js" + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@changesets/config": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@changesets/config/-/config-3.0.0.tgz", - "integrity": "sha512-o/rwLNnAo/+j9Yvw9mkBQOZySDYyOr/q+wptRLcAVGlU6djOeP9v1nlalbL9MFsobuBVQbZCTp+dIzdq+CLQUA==", + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", + "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", "dev": true, "dependencies": { - "@changesets/errors": "^0.2.0", - "@changesets/get-dependents-graph": "^2.0.0", - "@changesets/logger": "^0.1.0", - "@changesets/types": "^6.0.0", - "@manypkg/get-packages": "^1.1.3", - "fs-extra": "^7.0.1", - "micromatch": "^4.0.2" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@changesets/errors": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@changesets/errors/-/errors-0.2.0.tgz", - "integrity": "sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==", + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", + "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", "dev": true, "dependencies": { - "extendable-error": "^0.1.5" + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@changesets/get-dependents-graph": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@changesets/get-dependents-graph/-/get-dependents-graph-2.0.0.tgz", - "integrity": "sha512-cafUXponivK4vBgZ3yLu944mTvam06XEn2IZGjjKc0antpenkYANXiiE6GExV/yKdsCnE8dXVZ25yGqLYZmScA==", + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", + "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", "dev": true, "dependencies": { - "@changesets/types": "^6.0.0", - "@manypkg/get-packages": "^1.1.3", - "chalk": "^2.1.0", - "fs-extra": "^7.0.1", - "semver": "^7.5.3" + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@changesets/get-release-plan": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-4.0.0.tgz", - "integrity": "sha512-9L9xCUeD/Tb6L/oKmpm8nyzsOzhdNBBbt/ZNcjynbHC07WW4E1eX8NMGC5g5SbM5z/V+MOrYsJ4lRW41GCbg3w==", + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", + "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", "dev": true, "dependencies": { - "@babel/runtime": "^7.20.1", - "@changesets/assemble-release-plan": "^6.0.0", - "@changesets/config": "^3.0.0", - "@changesets/pre": "^2.0.0", - "@changesets/read": "^0.6.0", - "@changesets/types": "^6.0.0", - "@manypkg/get-packages": "^1.1.3" + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@changesets/get-version-range-type": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@changesets/get-version-range-type/-/get-version-range-type-0.4.0.tgz", - "integrity": "sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==", - "dev": true + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", + "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "node_modules/@changesets/git": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@changesets/git/-/git-3.0.0.tgz", - "integrity": "sha512-vvhnZDHe2eiBNRFHEgMiGd2CT+164dfYyrJDhwwxTVD/OW0FUD6G7+4DIx1dNwkwjHyzisxGAU96q0sVNBns0w==", + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", + "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", "dev": true, "dependencies": { - "@babel/runtime": "^7.20.1", - "@changesets/errors": "^0.2.0", - "@changesets/types": "^6.0.0", - "@manypkg/get-packages": "^1.1.3", - "is-subdir": "^1.1.1", - "micromatch": "^4.0.2", - "spawndamnit": "^2.0.0" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@changesets/logger": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@changesets/logger/-/logger-0.1.0.tgz", - "integrity": "sha512-pBrJm4CQm9VqFVwWnSqKEfsS2ESnwqwH+xR7jETxIErZcfd1u2zBSqrHbRHR7xjhSgep9x2PSKFKY//FAshA3g==", + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", + "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", "dev": true, "dependencies": { - "chalk": "^2.1.0" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@changesets/parse": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@changesets/parse/-/parse-0.4.0.tgz", - "integrity": "sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==", + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", + "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", "dev": true, "dependencies": { - "@changesets/types": "^6.0.0", - "js-yaml": "^3.13.1" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@changesets/pre": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@changesets/pre/-/pre-2.0.0.tgz", - "integrity": "sha512-HLTNYX/A4jZxc+Sq8D1AMBsv+1qD6rmmJtjsCJa/9MSRybdxh0mjbTvE6JYZQ/ZiQ0mMlDOlGPXTm9KLTU3jyw==", + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", + "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", "dev": true, "dependencies": { - "@babel/runtime": "^7.20.1", - "@changesets/errors": "^0.2.0", - "@changesets/types": "^6.0.0", - "@manypkg/get-packages": "^1.1.3", - "fs-extra": "^7.0.1" + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@changesets/read": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@changesets/read/-/read-0.6.0.tgz", - "integrity": "sha512-ZypqX8+/im1Fm98K4YcZtmLKgjs1kDQ5zHpc2U1qdtNBmZZfo/IBiG162RoP0CUF05tvp2y4IspH11PLnPxuuw==", + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", + "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", "dev": true, "dependencies": { - "@babel/runtime": "^7.20.1", - "@changesets/git": "^3.0.0", - "@changesets/logger": "^0.1.0", - "@changesets/parse": "^0.4.0", - "@changesets/types": "^6.0.0", - "chalk": "^2.1.0", - "fs-extra": "^7.0.1", - "p-filter": "^2.1.0" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@changesets/types": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@changesets/types/-/types-6.0.0.tgz", - "integrity": "sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==", - "dev": true + "node_modules/@babel/plugin-transform-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", + "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "node_modules/@changesets/write": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@changesets/write/-/write-0.3.0.tgz", - "integrity": "sha512-slGLb21fxZVUYbyea+94uFiD6ntQW0M2hIKNznFizDhZPDgn2c/fv1UzzlW43RVzh1BEDuIqW6hzlJ1OflNmcw==", + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", + "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", "dev": true, "dependencies": { - "@babel/runtime": "^7.20.1", - "@changesets/types": "^6.0.0", - "fs-extra": "^7.0.1", - "human-id": "^1.0.2", - "prettier": "^2.7.1" + "@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/@changesets/write/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/plugin-transform-member-expression-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", + "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", "dev": true, - "bin": { - "prettier": "bin-prettier.js" + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": ">=10.13.0" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "peerDependencies": { + "@babel/core": "^7.0.0-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/@babel/plugin-transform-modules-amd": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", + "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", "dev": true, - "optional": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" + }, "engines": { - "node": ">=0.1.90" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", + "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", + "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" }, "engines": { - "node": ">=12" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz", + "integrity": "sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==", + "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@ctrl/tinycolor": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz", - "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==", + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", + "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" + }, "engines": { - "node": ">=10" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cucumber/ci-environment": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@cucumber/ci-environment/-/ci-environment-9.2.0.tgz", - "integrity": "sha512-jLzRtVwdtNt+uAmTwvXwW9iGYLEOJFpDSmnx/dgoMGKXUWRx1UHT86Q696CLdgXO8kyTwsgJY0c6n5SW9VitAA==", - "dev": true + "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, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } }, - "node_modules/@cucumber/cucumber": { - "version": "9.5.1", - "resolved": "https://registry.npmjs.org/@cucumber/cucumber/-/cucumber-9.5.1.tgz", - "integrity": "sha512-9fRRxbRRkXxRB4D7C21ZjmEvBWI3Su7yNQDvRPfgHnd+xVKaOTvfPs/lZWN1TOiwYlnW5nupRaaCx5xV+fzurw==", + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", + "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", "dev": true, "dependencies": { - "@cucumber/ci-environment": "9.2.0", - "@cucumber/cucumber-expressions": "16.1.2", - "@cucumber/gherkin": "26.2.0", - "@cucumber/gherkin-streams": "5.0.1", - "@cucumber/gherkin-utils": "8.0.2", - "@cucumber/html-formatter": "20.4.0", - "@cucumber/message-streams": "4.0.1", - "@cucumber/messages": "22.0.0", - "@cucumber/tag-expressions": "5.0.1", - "assertion-error-formatter": "^3.0.0", - "capital-case": "^1.0.4", - "chalk": "^4.1.2", - "cli-table3": "0.6.3", - "commander": "^10.0.0", - "debug": "^4.3.4", - "error-stack-parser": "^2.1.4", - "figures": "^3.2.0", - "glob": "^7.1.6", - "has-ansi": "^4.0.1", - "indent-string": "^4.0.0", - "is-installed-globally": "^0.4.0", - "is-stream": "^2.0.0", - "knuth-shuffle-seeded": "^1.0.6", - "lodash.merge": "^4.6.2", - "lodash.mergewith": "^4.6.2", - "luxon": "3.2.1", - "mkdirp": "^2.1.5", - "mz": "^2.7.0", - "progress": "^2.0.3", - "resolve-pkg": "^2.0.0", - "semver": "7.5.3", - "string-argv": "^0.3.1", - "strip-ansi": "6.0.1", - "supports-color": "^8.1.1", - "tmp": "^0.2.1", - "util-arity": "^1.1.0", - "verror": "^1.10.0", - "xmlbuilder": "^15.1.1", - "yaml": "^2.2.2", - "yup": "1.2.0" - }, - "bin": { - "cucumber-js": "bin/cucumber.js" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": "14 || 16 || >=18" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cucumber/cucumber-expressions": { - "version": "16.1.2", - "resolved": "https://registry.npmjs.org/@cucumber/cucumber-expressions/-/cucumber-expressions-16.1.2.tgz", - "integrity": "sha512-CfHEbxJ5FqBwF6mJyLLz4B353gyHkoi6cCL4J0lfDZ+GorpcWw4n2OUAdxJmP7ZlREANWoTFlp4FhmkLKrCfUA==", + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", + "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", "dev": true, "dependencies": { - "regexp-match-indices": "1.0.2" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cucumber/cucumber/node_modules/@cucumber/gherkin": { - "version": "26.2.0", - "resolved": "https://registry.npmjs.org/@cucumber/gherkin/-/gherkin-26.2.0.tgz", - "integrity": "sha512-iRSiK8YAIHAmLrn/mUfpAx7OXZ7LyNlh1zT89RoziSVCbqSVDxJS6ckEzW8loxs+EEXl0dKPQOXiDmbHV+C/fA==", + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", + "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", "dev": true, "dependencies": { - "@cucumber/messages": ">=19.1.4 <=22" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cucumber/cucumber/node_modules/@cucumber/messages": { - "version": "22.0.0", - "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-22.0.0.tgz", - "integrity": "sha512-EuaUtYte9ilkxcKmfqGF9pJsHRUU0jwie5ukuZ/1NPTuHS1LxHPsGEODK17RPRbZHOFhqybNzG2rHAwThxEymg==", + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", + "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", "dev": true, "dependencies": { - "@types/uuid": "9.0.1", - "class-transformer": "0.5.1", - "reflect-metadata": "0.1.13", - "uuid": "9.0.0" + "@babel/compat-data": "^7.23.3", + "@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.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cucumber/cucumber/node_modules/@types/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==", - "dev": true - }, - "node_modules/@cucumber/cucumber/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/plugin-transform-object-super": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", + "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cucumber/cucumber/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-transform-optional-catch-binding": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", + "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, "engines": { - "node": ">=10" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cucumber/cucumber/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-transform-optional-chaining": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", + "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", "dev": 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-syntax-optional-chaining": "^7.8.3" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cucumber/cucumber/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-transform-parameters": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", + "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": ">=7.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cucumber/cucumber/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==", - "dev": true - }, - "node_modules/@cucumber/cucumber/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/@babel/plugin-transform-private-methods": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", + "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, "engines": { - "node": ">=14" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cucumber/cucumber/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-private-property-in-object": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", + "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, "engines": { - "node": ">=8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cucumber/cucumber/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==", + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", + "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": ">=10" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cucumber/cucumber/node_modules/mkdirp": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.6.tgz", - "integrity": "sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==", + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", + "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", "dev": true, - "bin": { - "mkdirp": "dist/cjs/src/bin.js" + "dependencies": { + "@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/isaacs" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cucumber/cucumber/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/@babel/plugin-transform-reserved-words": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", + "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", "dev": true, "dependencies": { - "glob": "^7.1.3" + "@babel/helper-plugin-utils": "^7.22.5" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cucumber/cucumber/node_modules/semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", + "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": ">=10" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cucumber/cucumber/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==", + "node_modules/@babel/plugin-transform-spread": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", + "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" }, "engines": { - "node": ">=10" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cucumber/cucumber/node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", + "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", "dev": true, "dependencies": { - "rimraf": "^3.0.0" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { - "node": ">=8.17.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cucumber/cucumber/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/@cucumber/gherkin": { - "version": "27.0.0", - "resolved": "https://registry.npmjs.org/@cucumber/gherkin/-/gherkin-27.0.0.tgz", - "integrity": "sha512-j5rCsjqzRiC3iVTier3sa0kzyNbkcAmF7xr7jKnyO7qDeK3Z8Ye1P3KSVpeQRMY+KCDJ3WbTDdyxH0FwfA/fIw==", + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", + "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", "dev": true, "dependencies": { - "@cucumber/messages": ">=19.1.4 <=22" + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cucumber/gherkin-streams": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@cucumber/gherkin-streams/-/gherkin-streams-5.0.1.tgz", - "integrity": "sha512-/7VkIE/ASxIP/jd4Crlp4JHXqdNFxPGQokqWqsaCCiqBiu5qHoKMxcWNlp9njVL/n9yN4S08OmY3ZR8uC5x74Q==", + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", + "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", "dev": true, "dependencies": { - "commander": "9.1.0", - "source-map-support": "0.5.21" + "@babel/helper-plugin-utils": "^7.22.5" }, - "bin": { - "gherkin-javascript": "bin/gherkin" + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@cucumber/gherkin": ">=22.0.0", - "@cucumber/message-streams": ">=4.0.0", - "@cucumber/messages": ">=17.1.1" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cucumber/gherkin-streams/node_modules/commander": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.1.0.tgz", - "integrity": "sha512-i0/MaqBtdbnJ4XQs4Pmyb+oFQl+q0lsAmokVUH92SlSw4fkeAcG3bVon+Qt7hmtF+u3Het6o4VgrcY3qAoEB6w==", + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz", + "integrity": "sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==", "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.23.6", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-typescript": "^7.23.3" + }, "engines": { - "node": "^12.20.0 || >=14" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cucumber/gherkin-utils": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@cucumber/gherkin-utils/-/gherkin-utils-8.0.2.tgz", - "integrity": "sha512-aQlziN3r3cTwprEDbLEcFoMRQajb9DTOu2OZZp5xkuNz6bjSTowSY90lHUD2pWT7jhEEckZRIREnk7MAwC2d1A==", + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", + "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", "dev": true, "dependencies": { - "@cucumber/gherkin": "^25.0.0", - "@cucumber/messages": "^19.1.4", - "@teppeis/multimaps": "2.0.0", - "commander": "9.4.1", - "source-map-support": "^0.5.21" + "@babel/helper-plugin-utils": "^7.22.5" }, - "bin": { - "gherkin-utils": "bin/gherkin-utils" + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cucumber/gherkin-utils/node_modules/@cucumber/gherkin": { - "version": "25.0.2", - "resolved": "https://registry.npmjs.org/@cucumber/gherkin/-/gherkin-25.0.2.tgz", - "integrity": "sha512-EdsrR33Y5GjuOoe2Kq5Y9DYwgNRtUD32H4y2hCrT6+AWo7ibUQu7H+oiWTgfVhwbkHsZmksxHSxXz/AwqqyCRQ==", + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", + "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", "dev": true, "dependencies": { - "@cucumber/messages": "^19.1.4" + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cucumber/gherkin-utils/node_modules/@cucumber/messages": { - "version": "19.1.4", - "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-19.1.4.tgz", - "integrity": "sha512-Pksl0pnDz2l1+L5Ug85NlG6LWrrklN9qkMxN5Mv+1XZ3T6u580dnE6mVaxjJRdcOq4tR17Pc0RqIDZMyVY1FlA==", + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", + "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", "dev": true, "dependencies": { - "@types/uuid": "8.3.4", - "class-transformer": "0.5.1", - "reflect-metadata": "0.1.13", - "uuid": "9.0.0" - } - }, - "node_modules/@cucumber/gherkin-utils/node_modules/@types/uuid": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", - "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", - "dev": true - }, - "node_modules/@cucumber/gherkin-utils/node_modules/commander": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", - "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", - "dev": true, + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, "engines": { - "node": "^12.20.0 || >=14" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cucumber/gherkin/node_modules/@cucumber/messages": { - "version": "22.0.0", - "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-22.0.0.tgz", - "integrity": "sha512-EuaUtYte9ilkxcKmfqGF9pJsHRUU0jwie5ukuZ/1NPTuHS1LxHPsGEODK17RPRbZHOFhqybNzG2rHAwThxEymg==", + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", + "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", "dev": true, "dependencies": { - "@types/uuid": "9.0.1", - "class-transformer": "0.5.1", - "reflect-metadata": "0.1.13", - "uuid": "9.0.0" + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@cucumber/gherkin/node_modules/@types/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==", - "dev": true - }, - "node_modules/@cucumber/html-formatter": { - "version": "20.4.0", - "resolved": "https://registry.npmjs.org/@cucumber/html-formatter/-/html-formatter-20.4.0.tgz", - "integrity": "sha512-TnLSXC5eJd8AXHENo69f5z+SixEVtQIf7Q2dZuTpT/Y8AOkilGpGl1MQR1Vp59JIw+fF3EQSUKdf+DAThCxUNg==", + "node_modules/@babel/preset-env": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.6.tgz", + "integrity": "sha512-2XPn/BqKkZCpzYhUUNZ1ssXw7DcXfKQEjv/uXZUXgaebCMYmkEsfZ2yY+vv+xtXv50WmL5SGhyB6/xsWxIvvOQ==", "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.3", + "@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.23.3", + "@babel/plugin-syntax-import-attributes": "^7.23.3", + "@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.23.3", + "@babel/plugin-transform-async-generator-functions": "^7.23.4", + "@babel/plugin-transform-async-to-generator": "^7.23.3", + "@babel/plugin-transform-block-scoped-functions": "^7.23.3", + "@babel/plugin-transform-block-scoping": "^7.23.4", + "@babel/plugin-transform-class-properties": "^7.23.3", + "@babel/plugin-transform-class-static-block": "^7.23.4", + "@babel/plugin-transform-classes": "^7.23.5", + "@babel/plugin-transform-computed-properties": "^7.23.3", + "@babel/plugin-transform-destructuring": "^7.23.3", + "@babel/plugin-transform-dotall-regex": "^7.23.3", + "@babel/plugin-transform-duplicate-keys": "^7.23.3", + "@babel/plugin-transform-dynamic-import": "^7.23.4", + "@babel/plugin-transform-exponentiation-operator": "^7.23.3", + "@babel/plugin-transform-export-namespace-from": "^7.23.4", + "@babel/plugin-transform-for-of": "^7.23.6", + "@babel/plugin-transform-function-name": "^7.23.3", + "@babel/plugin-transform-json-strings": "^7.23.4", + "@babel/plugin-transform-literals": "^7.23.3", + "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", + "@babel/plugin-transform-member-expression-literals": "^7.23.3", + "@babel/plugin-transform-modules-amd": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-modules-systemjs": "^7.23.3", + "@babel/plugin-transform-modules-umd": "^7.23.3", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.23.3", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", + "@babel/plugin-transform-numeric-separator": "^7.23.4", + "@babel/plugin-transform-object-rest-spread": "^7.23.4", + "@babel/plugin-transform-object-super": "^7.23.3", + "@babel/plugin-transform-optional-catch-binding": "^7.23.4", + "@babel/plugin-transform-optional-chaining": "^7.23.4", + "@babel/plugin-transform-parameters": "^7.23.3", + "@babel/plugin-transform-private-methods": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.4", + "@babel/plugin-transform-property-literals": "^7.23.3", + "@babel/plugin-transform-regenerator": "^7.23.3", + "@babel/plugin-transform-reserved-words": "^7.23.3", + "@babel/plugin-transform-shorthand-properties": "^7.23.3", + "@babel/plugin-transform-spread": "^7.23.3", + "@babel/plugin-transform-sticky-regex": "^7.23.3", + "@babel/plugin-transform-template-literals": "^7.23.3", + "@babel/plugin-transform-typeof-symbol": "^7.23.3", + "@babel/plugin-transform-unicode-escapes": "^7.23.3", + "@babel/plugin-transform-unicode-property-regex": "^7.23.3", + "@babel/plugin-transform-unicode-regex": "^7.23.3", + "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.6", + "babel-plugin-polyfill-corejs3": "^0.8.5", + "babel-plugin-polyfill-regenerator": "^0.5.3", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { - "@cucumber/messages": ">=18" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cucumber/message-streams": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@cucumber/message-streams/-/message-streams-4.0.1.tgz", - "integrity": "sha512-Kxap9uP5jD8tHUZVjTWgzxemi/0uOsbGjd4LBOSxcJoOCRbESFwemUzilJuzNTB8pcTQUh8D5oudUyxfkJOKmA==", + "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, - "peerDependencies": { - "@cucumber/messages": ">=17.1.1" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/@cucumber/messages": { - "version": "23.0.0", - "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-23.0.0.tgz", - "integrity": "sha512-2ZWKNnikNMBnle3P3cgy+fgzhABrY4oBbiWp9wcI8ANdT4LlYRN6jQ6j/9CQGTDGRfkyRtr/5VkYq7q24XCsuA==", + "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, "dependencies": { - "@types/uuid": "9.0.6", - "class-transformer": "0.5.1", - "reflect-metadata": "0.1.13", - "uuid": "9.0.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/@cucumber/messages/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "node_modules/@babel/preset-typescript": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz", + "integrity": "sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==", "dev": true, - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-typescript": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cucumber/tag-expressions": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@cucumber/tag-expressions/-/tag-expressions-5.0.1.tgz", - "integrity": "sha512-N43uWud8ZXuVjza423T9ZCIJsaZhFekmakt7S9bvogTxqdVGbRobjR663s0+uW0Rz9e+Pa8I6jUuWtoBLQD2Mw==", - "dev": true - }, - "node_modules/@emotion/hash": { + "node_modules/@babel/regjsgen": { "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", - "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" - }, - "node_modules/@emotion/unitless": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", - "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true }, - "node_modules/@esbuild/android-arm": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.7.tgz", - "integrity": "sha512-YGSPnndkcLo4PmVl2tKatEn+0mlVMr3yEpOOT0BeMria87PhvoJb5dg5f5Ft9fbCVgtAz4pWMzZVgSEGpDAlww==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], + "node_modules/@babel/runtime": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.6.tgz", + "integrity": "sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/android-arm64": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.7.tgz", - "integrity": "sha512-YEDcw5IT7hW3sFKZBkCAQaOCJQLONVcD4bOyTXMZz5fr66pTHnAet46XAtbXAkJRfIn2YVhdC6R9g4xa27jQ1w==", - "cpu": [ - "arm64" - ], + "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, - "optional": true, - "os": [ - "android" - ], + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" + }, "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/android-x64": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.7.tgz", - "integrity": "sha512-jhINx8DEjz68cChFvM72YzrqfwJuFbfvSxZAk4bebpngGfNNRm+zRl4rtT9oAX6N9b6gBcFaJHFew5Blf6CvUw==", - "cpu": [ - "x64" - ], + "node_modules/@babel/traverse": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.6.tgz", + "integrity": "sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==", "dev": true, - "optional": true, - "os": [ - "android" - ], + "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": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.7.tgz", - "integrity": "sha512-dr81gbmWN//3ZnBIm6YNCl4p3pjnabg1/ZVOgz2fJoUO1a3mq9WQ/1iuEluMs7mCL+Zwv7AY5e3g1hjXqQZ9Iw==", - "cpu": [ - "arm64" - ], + "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, - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.7.tgz", - "integrity": "sha512-Lc0q5HouGlzQEwLkgEKnWcSazqr9l9OdV2HhVasWJzLKeOt0PLhHaUHuzb8s/UIya38DJDoUm74GToZ6Wc7NGQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.7.tgz", - "integrity": "sha512-+y2YsUr0CxDFF7GWiegWjGtTUF6gac2zFasfFkRJPkMAuMy9O7+2EH550VlqVdpEEchWMynkdhC9ZjtnMiHImQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } + "node_modules/@braintree/sanitize-url": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz", + "integrity": "sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==" }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.7.tgz", - "integrity": "sha512-CdXOxIbIzPJmJhrpmJTLx+o35NoiKBIgOvmvT+jeSadYiWJn0vFKsl+0bSG/5lwjNHoIDEyMYc/GAPR9jxusTA==", - "cpu": [ - "x64" - ], + "node_modules/@changesets/apply-release-plan": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-7.0.0.tgz", + "integrity": "sha512-vfi69JR416qC9hWmFGSxj7N6wA5J222XNBmezSVATPWDVPIF7gkd4d8CpbEbXmRWbVrkoli3oerGS6dcL/BGsQ==", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" + "dependencies": { + "@babel/runtime": "^7.20.1", + "@changesets/config": "^3.0.0", + "@changesets/get-version-range-type": "^0.4.0", + "@changesets/git": "^3.0.0", + "@changesets/types": "^6.0.0", + "@manypkg/get-packages": "^1.1.3", + "detect-indent": "^6.0.0", + "fs-extra": "^7.0.1", + "lodash.startcase": "^4.4.0", + "outdent": "^0.5.0", + "prettier": "^2.7.1", + "resolve-from": "^5.0.0", + "semver": "^7.5.3" } }, - "node_modules/@esbuild/linux-arm": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.7.tgz", - "integrity": "sha512-Y+SCmWxsJOdQtjcBxoacn/pGW9HDZpwsoof0ttL+2vGcHokFlfqV666JpfLCSP2xLxFpF1lj7T3Ox3sr95YXww==", - "cpu": [ - "arm" - ], + "node_modules/@changesets/apply-release-plan/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, - "optional": true, - "os": [ - "linux" - ], + "bin": { + "prettier": "bin-prettier.js" + }, "engines": { - "node": ">=12" + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.7.tgz", - "integrity": "sha512-inHqdOVCkUhHNvuQPT1oCB7cWz9qQ/Cz46xmVe0b7UXcuIJU3166aqSunsqkgSGMtUCWOZw3+KMwI6otINuC9g==", - "cpu": [ - "arm64" - ], + "node_modules/@changesets/assemble-release-plan": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-6.0.0.tgz", + "integrity": "sha512-4QG7NuisAjisbW4hkLCmGW2lRYdPrKzro+fCtZaILX+3zdUELSvYjpL4GTv0E4aM9Mef3PuIQp89VmHJ4y2bfw==", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "dependencies": { + "@babel/runtime": "^7.20.1", + "@changesets/errors": "^0.2.0", + "@changesets/get-dependents-graph": "^2.0.0", + "@changesets/types": "^6.0.0", + "@manypkg/get-packages": "^1.1.3", + "semver": "^7.5.3" } }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.7.tgz", - "integrity": "sha512-2BbiL7nLS5ZO96bxTQkdO0euGZIUQEUXMTrqLxKUmk/Y5pmrWU84f+CMJpM8+EHaBPfFSPnomEaQiG/+Gmh61g==", - "cpu": [ - "ia32" - ], + "node_modules/@changesets/changelog-git": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@changesets/changelog-git/-/changelog-git-0.2.0.tgz", + "integrity": "sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "dependencies": { + "@changesets/types": "^6.0.0" } }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.7.tgz", - "integrity": "sha512-BVFQla72KXv3yyTFCQXF7MORvpTo4uTA8FVFgmwVrqbB/4DsBFWilUm1i2Oq6zN36DOZKSVUTb16jbjedhfSHw==", - "cpu": [ - "loong64" - ], + "node_modules/@changesets/cli": { + "version": "2.27.1", + "resolved": "https://registry.npmjs.org/@changesets/cli/-/cli-2.27.1.tgz", + "integrity": "sha512-iJ91xlvRnnrJnELTp4eJJEOPjgpF3NOh4qeQehM6Ugiz9gJPRZ2t+TsXun6E3AMN4hScZKjqVXl0TX+C7AB3ZQ==", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "dependencies": { + "@babel/runtime": "^7.20.1", + "@changesets/apply-release-plan": "^7.0.0", + "@changesets/assemble-release-plan": "^6.0.0", + "@changesets/changelog-git": "^0.2.0", + "@changesets/config": "^3.0.0", + "@changesets/errors": "^0.2.0", + "@changesets/get-dependents-graph": "^2.0.0", + "@changesets/get-release-plan": "^4.0.0", + "@changesets/git": "^3.0.0", + "@changesets/logger": "^0.1.0", + "@changesets/pre": "^2.0.0", + "@changesets/read": "^0.6.0", + "@changesets/types": "^6.0.0", + "@changesets/write": "^0.3.0", + "@manypkg/get-packages": "^1.1.3", + "@types/semver": "^7.5.0", + "ansi-colors": "^4.1.3", + "chalk": "^2.1.0", + "ci-info": "^3.7.0", + "enquirer": "^2.3.0", + "external-editor": "^3.1.0", + "fs-extra": "^7.0.1", + "human-id": "^1.0.2", + "meow": "^6.0.0", + "outdent": "^0.5.0", + "p-limit": "^2.2.0", + "preferred-pm": "^3.0.0", + "resolve-from": "^5.0.0", + "semver": "^7.5.3", + "spawndamnit": "^2.0.0", + "term-size": "^2.1.0", + "tty-table": "^4.1.5" + }, + "bin": { + "changeset": "bin.js" } }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.7.tgz", - "integrity": "sha512-DzAYckIaK+pS31Q/rGpvUKu7M+5/t+jI+cdleDgUwbU7KdG2eC3SUbZHlo6Q4P1CfVKZ1lUERRFP8+q0ob9i2w==", - "cpu": [ - "mips64el" - ], + "node_modules/@changesets/config": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@changesets/config/-/config-3.0.0.tgz", + "integrity": "sha512-o/rwLNnAo/+j9Yvw9mkBQOZySDYyOr/q+wptRLcAVGlU6djOeP9v1nlalbL9MFsobuBVQbZCTp+dIzdq+CLQUA==", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "dependencies": { + "@changesets/errors": "^0.2.0", + "@changesets/get-dependents-graph": "^2.0.0", + "@changesets/logger": "^0.1.0", + "@changesets/types": "^6.0.0", + "@manypkg/get-packages": "^1.1.3", + "fs-extra": "^7.0.1", + "micromatch": "^4.0.2" } }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.7.tgz", - "integrity": "sha512-JQ1p0SmUteNdUaaiRtyS59GkkfTW0Edo+e0O2sihnY4FoZLz5glpWUQEKMSzMhA430ctkylkS7+vn8ziuhUugQ==", - "cpu": [ - "ppc64" - ], + "node_modules/@changesets/errors": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@changesets/errors/-/errors-0.2.0.tgz", + "integrity": "sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "dependencies": { + "extendable-error": "^0.1.5" } }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.7.tgz", - "integrity": "sha512-xGwVJ7eGhkprY/nB7L7MXysHduqjpzUl40+XoYDGC4UPLbnG+gsyS1wQPJ9lFPcxYAaDXbdRXd1ACs9AE9lxuw==", - "cpu": [ - "riscv64" - ], + "node_modules/@changesets/get-dependents-graph": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@changesets/get-dependents-graph/-/get-dependents-graph-2.0.0.tgz", + "integrity": "sha512-cafUXponivK4vBgZ3yLu944mTvam06XEn2IZGjjKc0antpenkYANXiiE6GExV/yKdsCnE8dXVZ25yGqLYZmScA==", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "dependencies": { + "@changesets/types": "^6.0.0", + "@manypkg/get-packages": "^1.1.3", + "chalk": "^2.1.0", + "fs-extra": "^7.0.1", + "semver": "^7.5.3" } }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.7.tgz", - "integrity": "sha512-U8Rhki5PVU0L0nvk+E8FjkV8r4Lh4hVEb9duR6Zl21eIEYEwXz8RScj4LZWA2i3V70V4UHVgiqMpszXvG0Yqhg==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.7.tgz", - "integrity": "sha512-ZYZopyLhm4mcoZXjFt25itRlocKlcazDVkB4AhioiL9hOWhDldU9n38g62fhOI4Pth6vp+Mrd5rFKxD0/S+7aQ==", - "cpu": [ - "x64" - ], + "node_modules/@changesets/get-release-plan": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-4.0.0.tgz", + "integrity": "sha512-9L9xCUeD/Tb6L/oKmpm8nyzsOzhdNBBbt/ZNcjynbHC07WW4E1eX8NMGC5g5SbM5z/V+MOrYsJ4lRW41GCbg3w==", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "dependencies": { + "@babel/runtime": "^7.20.1", + "@changesets/assemble-release-plan": "^6.0.0", + "@changesets/config": "^3.0.0", + "@changesets/pre": "^2.0.0", + "@changesets/read": "^0.6.0", + "@changesets/types": "^6.0.0", + "@manypkg/get-packages": "^1.1.3" } }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.7.tgz", - "integrity": "sha512-/yfjlsYmT1O3cum3J6cmGG16Fd5tqKMcg5D+sBYLaOQExheAJhqr8xOAEIuLo8JYkevmjM5zFD9rVs3VBcsjtQ==", - "cpu": [ - "x64" - ], + "node_modules/@changesets/get-version-range-type": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@changesets/get-version-range-type/-/get-version-range-type-0.4.0.tgz", + "integrity": "sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==", + "dev": true + }, + "node_modules/@changesets/git": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@changesets/git/-/git-3.0.0.tgz", + "integrity": "sha512-vvhnZDHe2eiBNRFHEgMiGd2CT+164dfYyrJDhwwxTVD/OW0FUD6G7+4DIx1dNwkwjHyzisxGAU96q0sVNBns0w==", "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" + "dependencies": { + "@babel/runtime": "^7.20.1", + "@changesets/errors": "^0.2.0", + "@changesets/types": "^6.0.0", + "@manypkg/get-packages": "^1.1.3", + "is-subdir": "^1.1.1", + "micromatch": "^4.0.2", + "spawndamnit": "^2.0.0" } }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.7.tgz", - "integrity": "sha512-MYDFyV0EW1cTP46IgUJ38OnEY5TaXxjoDmwiTXPjezahQgZd+j3T55Ht8/Q9YXBM0+T9HJygrSRGV5QNF/YVDQ==", - "cpu": [ - "x64" - ], + "node_modules/@changesets/logger": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@changesets/logger/-/logger-0.1.0.tgz", + "integrity": "sha512-pBrJm4CQm9VqFVwWnSqKEfsS2ESnwqwH+xR7jETxIErZcfd1u2zBSqrHbRHR7xjhSgep9x2PSKFKY//FAshA3g==", "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" + "dependencies": { + "chalk": "^2.1.0" } }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.7.tgz", - "integrity": "sha512-JcPvgzf2NN/y6X3UUSqP6jSS06V0DZAV/8q0PjsZyGSXsIGcG110XsdmuWiHM+pno7/mJF6fjH5/vhUz/vA9fw==", - "cpu": [ - "x64" - ], + "node_modules/@changesets/parse": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@changesets/parse/-/parse-0.4.0.tgz", + "integrity": "sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==", "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" + "dependencies": { + "@changesets/types": "^6.0.0", + "js-yaml": "^3.13.1" } }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.7.tgz", - "integrity": "sha512-ZA0KSYti5w5toax5FpmfcAgu3ZNJxYSRm0AW/Dao5up0YV1hDVof1NvwLomjEN+3/GMtaWDI+CIyJOMTRSTdMw==", - "cpu": [ - "arm64" - ], + "node_modules/@changesets/pre": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@changesets/pre/-/pre-2.0.0.tgz", + "integrity": "sha512-HLTNYX/A4jZxc+Sq8D1AMBsv+1qD6rmmJtjsCJa/9MSRybdxh0mjbTvE6JYZQ/ZiQ0mMlDOlGPXTm9KLTU3jyw==", "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" + "dependencies": { + "@babel/runtime": "^7.20.1", + "@changesets/errors": "^0.2.0", + "@changesets/types": "^6.0.0", + "@manypkg/get-packages": "^1.1.3", + "fs-extra": "^7.0.1" } }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.7.tgz", - "integrity": "sha512-CTOnijBKc5Jpk6/W9hQMMvJnsSYRYgveN6O75DTACCY18RA2nqka8dTZR+x/JqXCRiKk84+5+bRKXUSbbwsS0A==", - "cpu": [ - "ia32" - ], + "node_modules/@changesets/read": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@changesets/read/-/read-0.6.0.tgz", + "integrity": "sha512-ZypqX8+/im1Fm98K4YcZtmLKgjs1kDQ5zHpc2U1qdtNBmZZfo/IBiG162RoP0CUF05tvp2y4IspH11PLnPxuuw==", "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" + "dependencies": { + "@babel/runtime": "^7.20.1", + "@changesets/git": "^3.0.0", + "@changesets/logger": "^0.1.0", + "@changesets/parse": "^0.4.0", + "@changesets/types": "^6.0.0", + "chalk": "^2.1.0", + "fs-extra": "^7.0.1", + "p-filter": "^2.1.0" } }, - "node_modules/@esbuild/win32-x64": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.7.tgz", - "integrity": "sha512-gRaP2sk6hc98N734luX4VpF318l3w+ofrtTu9j5L8EQXF+FzQKV6alCOHMVoJJHvVK/mGbwBXfOL1HETQu9IGQ==", - "cpu": [ - "x64" - ], + "node_modules/@changesets/types": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@changesets/types/-/types-6.0.0.tgz", + "integrity": "sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==", + "dev": true + }, + "node_modules/@changesets/write": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@changesets/write/-/write-0.3.0.tgz", + "integrity": "sha512-slGLb21fxZVUYbyea+94uFiD6ntQW0M2hIKNznFizDhZPDgn2c/fv1UzzlW43RVzh1BEDuIqW6hzlJ1OflNmcw==", "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" + "dependencies": { + "@babel/runtime": "^7.20.1", + "@changesets/types": "^6.0.0", + "fs-extra": "^7.0.1", + "human-id": "^1.0.2", + "prettier": "^2.7.1" } }, - "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/@changesets/write/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, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" + "bin": { + "prettier": "bin-prettier.js" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=10.13.0" }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/@eslint-community/regexpp": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz", - "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==", + "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, + "optional": true, "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=0.1.90" } }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", - "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", - "dev": true, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" + "@jridgewell/trace-mapping": "0.3.9" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=12" } }, - "node_modules/@eslint/eslintrc/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==", - "dev": true - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", - "dev": true, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/@eslint/eslintrc/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/@ctrl/tinycolor": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz", + "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/@cucumber/ci-environment": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@cucumber/ci-environment/-/ci-environment-9.2.0.tgz", + "integrity": "sha512-jLzRtVwdtNt+uAmTwvXwW9iGYLEOJFpDSmnx/dgoMGKXUWRx1UHT86Q696CLdgXO8kyTwsgJY0c6n5SW9VitAA==", + "dev": true + }, + "node_modules/@cucumber/cucumber": { + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/@cucumber/cucumber/-/cucumber-9.5.1.tgz", + "integrity": "sha512-9fRRxbRRkXxRB4D7C21ZjmEvBWI3Su7yNQDvRPfgHnd+xVKaOTvfPs/lZWN1TOiwYlnW5nupRaaCx5xV+fzurw==", "dev": true, "dependencies": { - "argparse": "^2.0.1" + "@cucumber/ci-environment": "9.2.0", + "@cucumber/cucumber-expressions": "16.1.2", + "@cucumber/gherkin": "26.2.0", + "@cucumber/gherkin-streams": "5.0.1", + "@cucumber/gherkin-utils": "8.0.2", + "@cucumber/html-formatter": "20.4.0", + "@cucumber/message-streams": "4.0.1", + "@cucumber/messages": "22.0.0", + "@cucumber/tag-expressions": "5.0.1", + "assertion-error-formatter": "^3.0.0", + "capital-case": "^1.0.4", + "chalk": "^4.1.2", + "cli-table3": "0.6.3", + "commander": "^10.0.0", + "debug": "^4.3.4", + "error-stack-parser": "^2.1.4", + "figures": "^3.2.0", + "glob": "^7.1.6", + "has-ansi": "^4.0.1", + "indent-string": "^4.0.0", + "is-installed-globally": "^0.4.0", + "is-stream": "^2.0.0", + "knuth-shuffle-seeded": "^1.0.6", + "lodash.merge": "^4.6.2", + "lodash.mergewith": "^4.6.2", + "luxon": "3.2.1", + "mkdirp": "^2.1.5", + "mz": "^2.7.0", + "progress": "^2.0.3", + "resolve-pkg": "^2.0.0", + "semver": "7.5.3", + "string-argv": "^0.3.1", + "strip-ansi": "6.0.1", + "supports-color": "^8.1.1", + "tmp": "^0.2.1", + "util-arity": "^1.1.0", + "verror": "^1.10.0", + "xmlbuilder": "^15.1.1", + "yaml": "^2.2.2", + "yup": "1.2.0" }, "bin": { - "js-yaml": "bin/js-yaml.js" + "cucumber-js": "bin/cucumber.js" + }, + "engines": { + "node": "14 || 16 || >=18" } }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "node_modules/@cucumber/cucumber-expressions": { + "version": "16.1.2", + "resolved": "https://registry.npmjs.org/@cucumber/cucumber-expressions/-/cucumber-expressions-16.1.2.tgz", + "integrity": "sha512-CfHEbxJ5FqBwF6mJyLLz4B353gyHkoi6cCL4J0lfDZ+GorpcWw4n2OUAdxJmP7ZlREANWoTFlp4FhmkLKrCfUA==", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "regexp-match-indices": "1.0.2" } }, - "node_modules/@eslint/js": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.54.0.tgz", - "integrity": "sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==", + "node_modules/@cucumber/cucumber/node_modules/@cucumber/gherkin": { + "version": "26.2.0", + "resolved": "https://registry.npmjs.org/@cucumber/gherkin/-/gherkin-26.2.0.tgz", + "integrity": "sha512-iRSiK8YAIHAmLrn/mUfpAx7OXZ7LyNlh1zT89RoziSVCbqSVDxJS6ckEzW8loxs+EEXl0dKPQOXiDmbHV+C/fA==", "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "dependencies": { + "@cucumber/messages": ">=19.1.4 <=22" } }, - "node_modules/@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "optional": true + "node_modules/@cucumber/cucumber/node_modules/@cucumber/messages": { + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-22.0.0.tgz", + "integrity": "sha512-EuaUtYte9ilkxcKmfqGF9pJsHRUU0jwie5ukuZ/1NPTuHS1LxHPsGEODK17RPRbZHOFhqybNzG2rHAwThxEymg==", + "dev": true, + "dependencies": { + "@types/uuid": "9.0.1", + "class-transformer": "0.5.1", + "reflect-metadata": "0.1.13", + "uuid": "9.0.0" + } }, - "node_modules/@headlessui/react": { - "version": "1.7.17", - "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.7.17.tgz", - "integrity": "sha512-4am+tzvkqDSSgiwrsEpGWqgGo9dz8qU5M3znCkC4PgkpY4HcCZzEDEvozltGGGHIKl9jbXbZPSH5TWn4sWJdow==", + "node_modules/@cucumber/cucumber/node_modules/@types/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==", + "dev": true + }, + "node_modules/@cucumber/cucumber/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==", + "dev": true, "dependencies": { - "client-only": "^0.0.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" }, - "peerDependencies": { - "react": "^16 || ^17 || ^18", - "react-dom": "^16 || ^17 || ^18" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.13", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", - "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "node_modules/@cucumber/cucumber/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^2.0.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=10.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "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==", + "node_modules/@cucumber/cucumber/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==", "dev": true, - "engines": { - "node": ">=12.22" + "dependencies": { + "has-flag": "^4.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "engines": { + "node": ">=8" } }, - "node_modules/@humanwhocodes/object-schema": { + "node_modules/@cucumber/cucumber/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", - "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", - "dev": true - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=12" + "node": ">=7.0.0" } }, - "node_modules/@isaacs/cliui/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/@cucumber/cucumber/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==", + "dev": true + }, + "node_modules/@cucumber/cucumber/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": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "node": ">=14" } }, - "node_modules/@isaacs/cliui/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/@cucumber/cucumber/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==", + "dev": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=8" } }, - "node_modules/@isaacs/cliui/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/@cucumber/cucumber/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": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "yallist": "^4.0.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10" } }, - "node_modules/@isaacs/cliui/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==", - "dependencies": { - "ansi-regex": "^6.0.1" + "node_modules/@cucumber/cucumber/node_modules/mkdirp": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.6.tgz", + "integrity": "sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==", + "dev": true, + "bin": { + "mkdirp": "dist/cjs/src/bin.js" }, "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "node_modules/@cucumber/cucumber/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" + "glob": "^7.1.3" }, - "engines": { - "node": ">=12" + "bin": { + "rimraf": "bin.js" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "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": { - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/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/@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" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@jest/console": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "node_modules/@cucumber/cucumber/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": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0" + "lru-cache": "^6.0.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/console/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==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=10" } }, - "node_modules/@jest/console/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/@cucumber/cucumber/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": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "has-flag": "^4.0.0" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/@jest/console/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/@cucumber/cucumber/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": { - "color-name": "~1.1.4" + "rimraf": "^3.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=8.17.0" } }, - "node_modules/@jest/console/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/@cucumber/cucumber/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/@jest/console/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/@cucumber/gherkin": { + "version": "27.0.0", + "resolved": "https://registry.npmjs.org/@cucumber/gherkin/-/gherkin-27.0.0.tgz", + "integrity": "sha512-j5rCsjqzRiC3iVTier3sa0kzyNbkcAmF7xr7jKnyO7qDeK3Z8Ye1P3KSVpeQRMY+KCDJ3WbTDdyxH0FwfA/fIw==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "@cucumber/messages": ">=19.1.4 <=22" } }, - "node_modules/@jest/console/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/@cucumber/gherkin-streams": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@cucumber/gherkin-streams/-/gherkin-streams-5.0.1.tgz", + "integrity": "sha512-/7VkIE/ASxIP/jd4Crlp4JHXqdNFxPGQokqWqsaCCiqBiu5qHoKMxcWNlp9njVL/n9yN4S08OmY3ZR8uC5x74Q==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "commander": "9.1.0", + "source-map-support": "0.5.21" }, - "engines": { - "node": ">=8" + "bin": { + "gherkin-javascript": "bin/gherkin" + }, + "peerDependencies": { + "@cucumber/gherkin": ">=22.0.0", + "@cucumber/message-streams": ">=4.0.0", + "@cucumber/messages": ">=17.1.1" } }, - "node_modules/@jest/core": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "node_modules/@cucumber/gherkin-streams/node_modules/commander": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.1.0.tgz", + "integrity": "sha512-i0/MaqBtdbnJ4XQs4Pmyb+oFQl+q0lsAmokVUH92SlSw4fkeAcG3bVon+Qt7hmtF+u3Het6o4VgrcY3qAoEB6w==", "dev": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/reporters": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.7.0", - "jest-config": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-resolve-dependencies": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "jest-watcher": "^29.7.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, "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 - } + "node": "^12.20.0 || >=14" } }, - "node_modules/@jest/core/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/@cucumber/gherkin-utils": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@cucumber/gherkin-utils/-/gherkin-utils-8.0.2.tgz", + "integrity": "sha512-aQlziN3r3cTwprEDbLEcFoMRQajb9DTOu2OZZp5xkuNz6bjSTowSY90lHUD2pWT7jhEEckZRIREnk7MAwC2d1A==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "@cucumber/gherkin": "^25.0.0", + "@cucumber/messages": "^19.1.4", + "@teppeis/multimaps": "2.0.0", + "commander": "9.4.1", + "source-map-support": "^0.5.21" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "bin": { + "gherkin-utils": "bin/gherkin-utils" } }, - "node_modules/@jest/core/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/@cucumber/gherkin-utils/node_modules/@cucumber/gherkin": { + "version": "25.0.2", + "resolved": "https://registry.npmjs.org/@cucumber/gherkin/-/gherkin-25.0.2.tgz", + "integrity": "sha512-EdsrR33Y5GjuOoe2Kq5Y9DYwgNRtUD32H4y2hCrT6+AWo7ibUQu7H+oiWTgfVhwbkHsZmksxHSxXz/AwqqyCRQ==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "@cucumber/messages": "^19.1.4" } }, - "node_modules/@jest/core/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/@cucumber/gherkin-utils/node_modules/@cucumber/messages": { + "version": "19.1.4", + "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-19.1.4.tgz", + "integrity": "sha512-Pksl0pnDz2l1+L5Ug85NlG6LWrrklN9qkMxN5Mv+1XZ3T6u580dnE6mVaxjJRdcOq4tR17Pc0RqIDZMyVY1FlA==", "dev": true, "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "@types/uuid": "8.3.4", + "class-transformer": "0.5.1", + "reflect-metadata": "0.1.13", + "uuid": "9.0.0" } }, - "node_modules/@jest/core/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/@cucumber/gherkin-utils/node_modules/@types/uuid": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", + "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", "dev": true }, - "node_modules/@jest/core/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/@cucumber/gherkin-utils/node_modules/commander": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", + "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", "dev": true, "engines": { - "node": ">=8" + "node": "^12.20.0 || >=14" } }, - "node_modules/@jest/core/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/@cucumber/gherkin/node_modules/@cucumber/messages": { + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-22.0.0.tgz", + "integrity": "sha512-EuaUtYte9ilkxcKmfqGF9pJsHRUU0jwie5ukuZ/1NPTuHS1LxHPsGEODK17RPRbZHOFhqybNzG2rHAwThxEymg==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@types/uuid": "9.0.1", + "class-transformer": "0.5.1", + "reflect-metadata": "0.1.13", + "uuid": "9.0.0" } }, - "node_modules/@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "node_modules/@cucumber/gherkin/node_modules/@types/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==", + "dev": true + }, + "node_modules/@cucumber/html-formatter": { + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@cucumber/html-formatter/-/html-formatter-20.4.0.tgz", + "integrity": "sha512-TnLSXC5eJd8AXHENo69f5z+SixEVtQIf7Q2dZuTpT/Y8AOkilGpGl1MQR1Vp59JIw+fF3EQSUKdf+DAThCxUNg==", "dev": true, - "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "peerDependencies": { + "@cucumber/messages": ">=18" } }, - "node_modules/@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "node_modules/@cucumber/message-streams": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@cucumber/message-streams/-/message-streams-4.0.1.tgz", + "integrity": "sha512-Kxap9uP5jD8tHUZVjTWgzxemi/0uOsbGjd4LBOSxcJoOCRbESFwemUzilJuzNTB8pcTQUh8D5oudUyxfkJOKmA==", "dev": true, - "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "peerDependencies": { + "@cucumber/messages": ">=17.1.1" } }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "node_modules/@cucumber/messages": { + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-24.0.0.tgz", + "integrity": "sha512-WQalT7z1j7QBZC3BiTpJjuy5i0ZyAY364gIwiqkkim0PmPHuII02TnXgYWl32ATf8tM9+RoojQVgcy5nP0vYgw==", + "dev": true, "dependencies": { - "jest-get-type": "^29.6.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@types/uuid": "9.0.7", + "class-transformer": "0.5.1", + "reflect-metadata": "0.1.13", + "uuid": "9.0.1" } }, - "node_modules/@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "node_modules/@cucumber/messages/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" } }, - "node_modules/@jest/globals": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "node_modules/@cucumber/tag-expressions": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@cucumber/tag-expressions/-/tag-expressions-5.0.1.tgz", + "integrity": "sha512-N43uWud8ZXuVjza423T9ZCIJsaZhFekmakt7S9bvogTxqdVGbRobjR663s0+uW0Rz9e+Pa8I6jUuWtoBLQD2Mw==", + "dev": true + }, + "node_modules/@emotion/hash": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" + }, + "node_modules/@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.7.tgz", + "integrity": "sha512-YGSPnndkcLo4PmVl2tKatEn+0mlVMr3yEpOOT0BeMria87PhvoJb5dg5f5Ft9fbCVgtAz4pWMzZVgSEGpDAlww==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" } }, - "node_modules/@jest/reporters": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "node_modules/@esbuild/android-arm64": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.7.tgz", + "integrity": "sha512-YEDcw5IT7hW3sFKZBkCAQaOCJQLONVcD4bOyTXMZz5fr66pTHnAet46XAtbXAkJRfIn2YVhdC6R9g4xa27jQ1w==", + "cpu": [ + "arm64" + ], "dev": true, - "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.18", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - }, + "optional": true, + "os": [ + "android" + ], "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 - } + "node": ">=12" } }, - "node_modules/@jest/reporters/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/@esbuild/android-x64": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.7.tgz", + "integrity": "sha512-jhINx8DEjz68cChFvM72YzrqfwJuFbfvSxZAk4bebpngGfNNRm+zRl4rtT9oAX6N9b6gBcFaJHFew5Blf6CvUw==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=12" } }, - "node_modules/@jest/reporters/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/@esbuild/darwin-arm64": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.7.tgz", + "integrity": "sha512-dr81gbmWN//3ZnBIm6YNCl4p3pjnabg1/ZVOgz2fJoUO1a3mq9WQ/1iuEluMs7mCL+Zwv7AY5e3g1hjXqQZ9Iw==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=12" } }, - "node_modules/@jest/reporters/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==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.7.tgz", + "integrity": "sha512-Lc0q5HouGlzQEwLkgEKnWcSazqr9l9OdV2HhVasWJzLKeOt0PLhHaUHuzb8s/UIya38DJDoUm74GToZ6Wc7NGQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@jest/reporters/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==", - "dev": true - }, - "node_modules/@jest/reporters/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/@esbuild/freebsd-arm64": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.7.tgz", + "integrity": "sha512-+y2YsUr0CxDFF7GWiegWjGtTUF6gac2zFasfFkRJPkMAuMy9O7+2EH550VlqVdpEEchWMynkdhC9ZjtnMiHImQ==", + "cpu": [ + "arm64" + ], "dev": true, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/@jest/reporters/node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.7.tgz", + "integrity": "sha512-CdXOxIbIzPJmJhrpmJTLx+o35NoiKBIgOvmvT+jeSadYiWJn0vFKsl+0bSG/5lwjNHoIDEyMYc/GAPR9jxusTA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" } }, - "node_modules/@jest/reporters/node_modules/jest-worker/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==", + "node_modules/@esbuild/linux-arm": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.7.tgz", + "integrity": "sha512-Y+SCmWxsJOdQtjcBxoacn/pGW9HDZpwsoof0ttL+2vGcHokFlfqV666JpfLCSP2xLxFpF1lj7T3Ox3sr95YXww==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": ">=12" } }, - "node_modules/@jest/reporters/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/@esbuild/linux-arm64": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.7.tgz", + "integrity": "sha512-inHqdOVCkUhHNvuQPT1oCB7cWz9qQ/Cz46xmVe0b7UXcuIJU3166aqSunsqkgSGMtUCWOZw3+KMwI6otINuC9g==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.7.tgz", + "integrity": "sha512-2BbiL7nLS5ZO96bxTQkdO0euGZIUQEUXMTrqLxKUmk/Y5pmrWU84f+CMJpM8+EHaBPfFSPnomEaQiG/+Gmh61g==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" } }, - "node_modules/@jest/source-map": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.7.tgz", + "integrity": "sha512-BVFQla72KXv3yyTFCQXF7MORvpTo4uTA8FVFgmwVrqbB/4DsBFWilUm1i2Oq6zN36DOZKSVUTb16jbjedhfSHw==", + "cpu": [ + "loong64" + ], "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" } }, - "node_modules/@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.7.tgz", + "integrity": "sha512-DzAYckIaK+pS31Q/rGpvUKu7M+5/t+jI+cdleDgUwbU7KdG2eC3SUbZHlo6Q4P1CfVKZ1lUERRFP8+q0ob9i2w==", + "cpu": [ + "mips64el" + ], "dev": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" } }, - "node_modules/@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.7.tgz", + "integrity": "sha512-JQ1p0SmUteNdUaaiRtyS59GkkfTW0Edo+e0O2sihnY4FoZLz5glpWUQEKMSzMhA430ctkylkS7+vn8ziuhUugQ==", + "cpu": [ + "ppc64" + ], "dev": true, - "dependencies": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" } }, - "node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.7.tgz", + "integrity": "sha512-xGwVJ7eGhkprY/nB7L7MXysHduqjpzUl40+XoYDGC4UPLbnG+gsyS1wQPJ9lFPcxYAaDXbdRXd1ACs9AE9lxuw==", + "cpu": [ + "riscv64" + ], "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" } }, - "node_modules/@jest/transform/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/@esbuild/linux-s390x": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.7.tgz", + "integrity": "sha512-U8Rhki5PVU0L0nvk+E8FjkV8r4Lh4hVEb9duR6Zl21eIEYEwXz8RScj4LZWA2i3V70V4UHVgiqMpszXvG0Yqhg==", + "cpu": [ + "s390x" + ], "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=12" } }, - "node_modules/@jest/transform/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "node_modules/@esbuild/linux-x64": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.7.tgz", + "integrity": "sha512-ZYZopyLhm4mcoZXjFt25itRlocKlcazDVkB4AhioiL9hOWhDldU9n38g62fhOI4Pth6vp+Mrd5rFKxD0/S+7aQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.7.tgz", + "integrity": "sha512-/yfjlsYmT1O3cum3J6cmGG16Fd5tqKMcg5D+sBYLaOQExheAJhqr8xOAEIuLo8JYkevmjM5zFD9rVs3VBcsjtQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.7.tgz", + "integrity": "sha512-MYDFyV0EW1cTP46IgUJ38OnEY5TaXxjoDmwiTXPjezahQgZd+j3T55Ht8/Q9YXBM0+T9HJygrSRGV5QNF/YVDQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.7.tgz", + "integrity": "sha512-JcPvgzf2NN/y6X3UUSqP6jSS06V0DZAV/8q0PjsZyGSXsIGcG110XsdmuWiHM+pno7/mJF6fjH5/vhUz/vA9fw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.7.tgz", + "integrity": "sha512-ZA0KSYti5w5toax5FpmfcAgu3ZNJxYSRm0AW/Dao5up0YV1hDVof1NvwLomjEN+3/GMtaWDI+CIyJOMTRSTdMw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.7.tgz", + "integrity": "sha512-CTOnijBKc5Jpk6/W9hQMMvJnsSYRYgveN6O75DTACCY18RA2nqka8dTZR+x/JqXCRiKk84+5+bRKXUSbbwsS0A==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.7.tgz", + "integrity": "sha512-gRaP2sk6hc98N734luX4VpF318l3w+ofrtTu9j5L8EQXF+FzQKV6alCOHMVoJJHvVK/mGbwBXfOL1HETQu9IGQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "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==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@jest/transform/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/@eslint-community/regexpp": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz", + "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=7.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@jest/transform/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/@eslint/eslintrc/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==", "dev": true }, - "node_modules/@jest/transform/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/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@jest/transform/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/@eslint/eslintrc/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==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "dev": true, "engines": { - "node": ">=8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "optional": true + }, + "node_modules/@headlessui/react": { + "version": "1.7.17", + "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.7.17.tgz", + "integrity": "sha512-4am+tzvkqDSSgiwrsEpGWqgGo9dz8qU5M3znCkC4PgkpY4HcCZzEDEvozltGGGHIKl9jbXbZPSH5TWn4sWJdow==", "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "client-only": "^0.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" + }, + "peerDependencies": { + "react": "^16 || ^17 || ^18", + "react-dom": "^16 || ^17 || ^18" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" } }, - "node_modules/@jest/types/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/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "dev": true + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/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==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/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==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/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==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/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==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "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": { + "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" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/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/@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/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/console/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/console/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/console/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==", + "dev": true + }, + "node_modules/@jest/console/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console/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/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "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 + } + } + }, + "node_modules/@jest/core/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/core/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/core/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==", + "dev": true + }, + "node_modules/@jest/core/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/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/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "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.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "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 + } + } + }, + "node_modules/@jest/reporters/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/reporters/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/reporters/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==", + "dev": true + }, + "node_modules/@jest/reporters/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/jest-worker/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/@jest/reporters/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/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/transform/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/transform/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==", + "dev": true + }, + "node_modules/@jest/transform/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/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/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types/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": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/types/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": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/types/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": ">=7.0.0" + } + }, + "node_modules/@jest/types/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/@jest/types/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/@jest/types/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": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "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==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "peer": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "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==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@ljharb/through": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/@ljharb/through/-/through-2.3.11.tgz", + "integrity": "sha512-ccfcIDlogiXNq5KcbAwbaO7lMh3Tm1i3khMPYpxlK8hH/W53zN81KM9coerRLOnTGu3nfXIniAmQbRI9OxbC0w==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/@manypkg/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@manypkg/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.5.5", + "@types/node": "^12.7.1", + "find-up": "^4.1.0", + "fs-extra": "^8.1.0" + } + }, + "node_modules/@manypkg/find-root/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@manypkg/get-packages": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@manypkg/get-packages/-/get-packages-1.1.3.tgz", + "integrity": "sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.5.5", + "@changesets/types": "^4.0.1", + "@manypkg/find-root": "^1.1.0", + "fs-extra": "^8.1.0", + "globby": "^11.0.0", + "read-yaml-file": "^1.1.0" + } + }, + "node_modules/@manypkg/get-packages/node_modules/@changesets/types": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@changesets/types/-/types-4.1.0.tgz", + "integrity": "sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==", + "dev": true + }, + "node_modules/@manypkg/get-packages/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", + "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", + "dependencies": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/@mapbox/node-pre-gyp/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/@mdx-js/loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@mdx-js/loader/-/loader-3.0.0.tgz", + "integrity": "sha512-9kLv83YtgxpoXVYHaf0ygx1dmhCffo0MQCv6KtNG67jy/JlBK/2Q0dSWfuuyStP3jnZKABHfbjv8zsiT1buu6A==", + "dependencies": { + "@mdx-js/mdx": "^3.0.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "webpack": ">=5" + } + }, + "node_modules/@mdx-js/loader/node_modules/@mdx-js/mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.0.0.tgz", + "integrity": "sha512-Icm0TBKBLYqroYbNW3BPnzMGn+7mwpQOK310aZ7+fkCtiU3aqv2cdcX+nd0Ydo3wI5Rx8bX2Z2QmGb/XcAClCw==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdx": "^2.0.0", + "collapse-white-space": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-build-jsx": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-util-to-js": "^2.0.0", + "estree-walker": "^3.0.0", + "hast-util-to-estree": "^3.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "markdown-extensions": "^2.0.0", + "periscopic": "^3.0.0", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "source-map": "^0.7.0", + "unified": "^11.0.0", + "unist-util-position-from-estree": "^2.0.0", + "unist-util-stringify-position": "^4.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/@types/hast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz", + "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@mdx-js/loader/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@mdx-js/loader/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/@mdx-js/loader/node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/@mdx-js/loader/node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/@mdx-js/loader/node_modules/estree-util-attach-comments": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", + "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/estree-util-build-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", + "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-walker": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/estree-util-to-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", + "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/estree-util-visit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/hast-util-to-estree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.0.tgz", + "integrity": "sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-attach-comments": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^0.4.0", + "unist-util-position": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/@mdx-js/loader/node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/@mdx-js/loader/node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/@mdx-js/loader/node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/@mdx-js/loader/node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@mdx-js/loader/node_modules/markdown-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", + "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@mdx-js/loader/node_modules/mdast-util-from-markdown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.0.tgz", + "integrity": "sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/mdast-util-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/mdast-util-mdx-expression": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz", + "integrity": "sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/mdast-util-mdx-jsx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.0.0.tgz", + "integrity": "sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-remove-position": "^5.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/mdast-util-phrasing": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.0.0.tgz", + "integrity": "sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/mdast-util-to-markdown": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz", + "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", + "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-core-commonmark": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.0.tgz", + "integrity": "sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-extension-mdx-expression": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.0.tgz", + "integrity": "sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-extension-mdx-jsx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.0.tgz", + "integrity": "sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==", + "dependencies": { + "@types/acorn": "^4.0.0", + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-extension-mdx-md": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", + "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-extension-mdxjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", + "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^3.0.0", + "micromark-extension-mdx-jsx": "^3.0.0", + "micromark-extension-mdx-md": "^2.0.0", + "micromark-extension-mdxjs-esm": "^3.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-extension-mdxjs-esm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", + "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-factory-destination": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-factory-label": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-factory-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.1.tgz", + "integrity": "sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-factory-title": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-factory-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", + "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-chunked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-classify-character": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-combine-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-decode-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-events-to-acorn": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.2.tgz", + "integrity": "sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/acorn": "^4.0.0", + "@types/estree": "^1.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-html-tag-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-normalize-identifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-resolve-all": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-subtokenize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.0.tgz", + "integrity": "sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/@mdx-js/loader/node_modules/parse-entities": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz", + "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "@types/unist": "^2.0.0", + "character-entities": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/@jest/types/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": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } + "node_modules/@mdx-js/loader/node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" }, - "node_modules/@jest/types/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/@mdx-js/loader/node_modules/remark-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.0.0.tgz", + "integrity": "sha512-O7yfjuC6ra3NHPbRVxfflafAj3LTwx3b73aBvkEFU5z4PsD6FD4vrqJAkE5iNGLz71GdjXfgRqm3SQ0h0VuE7g==", "dependencies": { - "color-name": "~1.1.4" + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/types/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/@jest/types/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" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@jest/types/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/@mdx-js/loader/node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", "dependencies": { - "has-flag": "^4.0.0" + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "node_modules/@mdx-js/loader/node_modules/remark-rehype": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.0.0.tgz", + "integrity": "sha512-vx8x2MDMcxuE4lBmQ46zYUDfcFMmvg80WYX+UNLeG6ixjdCCLcw1lrgAukwBTuOFsS78eoAedHGn9sNM0w7TPw==", "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" }, - "engines": { - "node": ">=6.0.0" - } - }, - "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==", - "engines": { - "node": ">=6.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "node_modules/@mdx-js/loader/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", - "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", - "peer": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "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==" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", - "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "node": ">= 8" } }, - "node_modules/@ljharb/through": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/@ljharb/through/-/through-2.3.11.tgz", - "integrity": "sha512-ccfcIDlogiXNq5KcbAwbaO7lMh3Tm1i3khMPYpxlK8hH/W53zN81KM9coerRLOnTGu3nfXIniAmQbRI9OxbC0w==", + "node_modules/@mdx-js/loader/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dependencies": { - "call-bind": "^1.0.2" + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/@manypkg/find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@manypkg/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.5.5", - "@types/node": "^12.7.1", - "find-up": "^4.1.0", - "fs-extra": "^8.1.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@manypkg/find-root/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, + "node_modules/@mdx-js/loader/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "@types/unist": "^3.0.0" }, - "engines": { - "node": ">=6 <7 || >=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@manypkg/get-packages": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@manypkg/get-packages/-/get-packages-1.1.3.tgz", - "integrity": "sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==", - "dev": true, + "node_modules/@mdx-js/loader/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", "dependencies": { - "@babel/runtime": "^7.5.5", - "@changesets/types": "^4.0.1", - "@manypkg/find-root": "^1.1.0", - "fs-extra": "^8.1.0", - "globby": "^11.0.0", - "read-yaml-file": "^1.1.0" + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@manypkg/get-packages/node_modules/@changesets/types": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@changesets/types/-/types-4.1.0.tgz", - "integrity": "sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==", - "dev": true - }, - "node_modules/@manypkg/get-packages/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, + "node_modules/@mdx-js/loader/node_modules/unist-util-position-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", + "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "@types/unist": "^3.0.0" }, - "engines": { - "node": ">=6 <7 || >=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@mapbox/node-pre-gyp": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", - "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", + "node_modules/@mdx-js/loader/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dependencies": { - "detect-libc": "^2.0.0", - "https-proxy-agent": "^5.0.0", - "make-dir": "^3.1.0", - "node-fetch": "^2.6.7", - "nopt": "^5.0.0", - "npmlog": "^5.0.1", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.11" + "@types/unist": "^3.0.0" }, - "bin": { - "node-pre-gyp": "bin/node-pre-gyp" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@mapbox/node-pre-gyp/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" + "node_modules/@mdx-js/loader/node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@mdx-js/loader": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@mdx-js/loader/-/loader-2.3.0.tgz", - "integrity": "sha512-IqsscXh7Q3Rzb+f5DXYk0HU71PK+WuFsEhf+mSV3fOhpLcEpgsHvTQ2h0T6TlZ5gHOaBeFjkXwB52by7ypMyNg==", + "node_modules/@mdx-js/loader/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dependencies": { - "@mdx-js/mdx": "^2.0.0", - "source-map": "^0.7.0" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" - }, - "peerDependencies": { - "webpack": ">=4" - } - }, - "node_modules/@mdx-js/loader/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "engines": { - "node": ">= 8" } }, "node_modules/@mdx-js/mdx": { @@ -2929,14 +5307,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/@mdx-js/mdx/node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, "node_modules/@mdx-js/react": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-2.3.0.tgz", @@ -3140,23 +5510,23 @@ } }, "node_modules/@next/env": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/env/-/env-13.5.6.tgz", - "integrity": "sha512-Yac/bV5sBGkkEXmAX5FWPS9Mmo2rthrOPRQQNfycJPkjUAUclomCPH7QFVCDQ4Mp2k2K1SSM6m0zrxYrOwtFQw==" + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.0.4.tgz", + "integrity": "sha512-irQnbMLbUNQpP1wcE5NstJtbuA/69kRfzBrpAD7Gsn8zm/CY6YQYc3HQBz8QPxwISG26tIm5afvvVbu508oBeQ==" }, "node_modules/@next/eslint-plugin-next": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.0.3.tgz", - "integrity": "sha512-j4K0n+DcmQYCVnSAM+UByTVfIHnYQy2ODozfQP+4RdwtRDfobrIvKq1K4Exb2koJ79HSSa7s6B2SA8T/1YR3RA==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.0.4.tgz", + "integrity": "sha512-U3qMNHmEZoVmHA0j/57nRfi3AscXNvkOnxDmle/69Jz/G0o/gWjXTDdlgILZdrxQ0Lw/jv2mPW8PGy0EGIHXhQ==", "dev": true, "dependencies": { "glob": "7.1.7" } }, "node_modules/@next/mdx": { - "version": "13.5.4", - "resolved": "https://registry.npmjs.org/@next/mdx/-/mdx-13.5.4.tgz", - "integrity": "sha512-WYdWeDZUvX9h0BnjDtwyFy2We4ko8ox5EuglN27rCoYz1xj8fQ8KAn7reZgXwT2RX2hxUOl4eTNbXBfsrw7Gew==", + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/@next/mdx/-/mdx-14.0.3.tgz", + "integrity": "sha512-RhiANppBndB7ELjPc3SEdEywLWgsy69Vj1bJtfDWqCl8yIVX9aps1D7kwby1pBAweHvZVpiI91Xu/78citVQrQ==", "dependencies": { "source-map": "^0.7.0" }, @@ -3182,9 +5552,9 @@ } }, "node_modules/@next/swc-darwin-arm64": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.5.6.tgz", - "integrity": "sha512-5nvXMzKtZfvcu4BhtV0KH1oGv4XEW+B+jOfmBdpFI3C7FrB/MfujRpWYSBBO64+qbW8pkZiSyQv9eiwnn5VIQA==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.0.4.tgz", + "integrity": "sha512-mF05E/5uPthWzyYDyptcwHptucf/jj09i2SXBPwNzbgBNc+XnwzrL0U6BmPjQeOL+FiB+iG1gwBeq7mlDjSRPg==", "cpu": [ "arm64" ], @@ -3197,9 +5567,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.5.6.tgz", - "integrity": "sha512-6cgBfxg98oOCSr4BckWjLLgiVwlL3vlLj8hXg2b+nDgm4bC/qVXXLfpLB9FHdoDu4057hzywbxKvmYGmi7yUzA==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.0.4.tgz", + "integrity": "sha512-IZQ3C7Bx0k2rYtrZZxKKiusMTM9WWcK5ajyhOZkYYTCc8xytmwSzR1skU7qLgVT/EY9xtXDG0WhY6fyujnI3rw==", "cpu": [ "x64" ], @@ -3212,9 +5582,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.5.6.tgz", - "integrity": "sha512-txagBbj1e1w47YQjcKgSU4rRVQ7uF29YpnlHV5xuVUsgCUf2FmyfJ3CPjZUvpIeXCJAoMCFAoGnbtX86BK7+sg==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.0.4.tgz", + "integrity": "sha512-VwwZKrBQo/MGb1VOrxJ6LrKvbpo7UbROuyMRvQKTFKhNaXjUmKTu7wxVkIuCARAfiI8JpaWAnKR+D6tzpCcM4w==", "cpu": [ "arm64" ], @@ -3227,9 +5597,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.5.6.tgz", - "integrity": "sha512-cGd+H8amifT86ZldVJtAKDxUqeFyLWW+v2NlBULnLAdWsiuuN8TuhVBt8ZNpCqcAuoruoSWynvMWixTFcroq+Q==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.0.4.tgz", + "integrity": "sha512-8QftwPEW37XxXoAwsn+nXlodKWHfpMaSvt81W43Wh8dv0gkheD+30ezWMcFGHLI71KiWmHK5PSQbTQGUiidvLQ==", "cpu": [ "arm64" ], @@ -3242,9 +5612,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.5.6.tgz", - "integrity": "sha512-Mc2b4xiIWKXIhBy2NBTwOxGD3nHLmq4keFk+d4/WL5fMsB8XdJRdtUlL87SqVCTSaf1BRuQQf1HvXZcy+rq3Nw==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.0.4.tgz", + "integrity": "sha512-/s/Pme3VKfZAfISlYVq2hzFS8AcAIOTnoKupc/j4WlvF6GQ0VouS2Q2KEgPuO1eMBwakWPB1aYFIA4VNVh667A==", "cpu": [ "x64" ], @@ -3257,9 +5627,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.5.6.tgz", - "integrity": "sha512-CFHvP9Qz98NruJiUnCe61O6GveKKHpJLloXbDSWRhqhkJdZD2zU5hG+gtVJR//tyW897izuHpM6Gtf6+sNgJPQ==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.0.4.tgz", + "integrity": "sha512-m8z/6Fyal4L9Bnlxde5g2Mfa1Z7dasMQyhEhskDATpqr+Y0mjOBZcXQ7G5U+vgL22cI4T7MfvgtrM2jdopqWaw==", "cpu": [ "x64" ], @@ -3272,9 +5642,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.5.6.tgz", - "integrity": "sha512-aFv1ejfkbS7PUa1qVPwzDHjQWQtknzAZWGTKYIAaS4NMtBlk3VyA6AYn593pqNanlicewqyl2jUhQAaFV/qXsg==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.0.4.tgz", + "integrity": "sha512-7Wv4PRiWIAWbm5XrGz3D8HUkCVDMMz9igffZG4NB1p4u1KoItwx9qjATHz88kwCEal/HXmbShucaslXCQXUM5w==", "cpu": [ "arm64" ], @@ -3287,9 +5657,9 @@ } }, "node_modules/@next/swc-win32-ia32-msvc": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.5.6.tgz", - "integrity": "sha512-XqqpHgEIlBHvzwG8sp/JXMFkLAfGLqkbVsyN+/Ih1mR8INb6YCc2x/Mbwi6hsAgUnqQztz8cvEbHJUbSl7RHDg==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.0.4.tgz", + "integrity": "sha512-zLeNEAPULsl0phfGb4kdzF/cAVIfaC7hY+kt0/d+y9mzcZHsMS3hAS829WbJ31DkSlVKQeHEjZHIdhN+Pg7Gyg==", "cpu": [ "ia32" ], @@ -3302,9 +5672,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.5.6.tgz", - "integrity": "sha512-Cqfe1YmOS7k+5mGu92nl5ULkzpKuxJrP3+4AEuPmrpFZ3BHxTY3TnHmU1On3bFmFFs6FbTcdF58CCUProGpIGQ==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.0.4.tgz", + "integrity": "sha512-yEh2+R8qDlDCjxVpzOTEpBLQTEFAcP2A8fUFLaWNap9GitYKkKv1//y2S6XY6zsR4rCOPRpU7plYDR+az2n30A==", "cpu": [ "x64" ], @@ -3678,9 +6048,9 @@ } }, "node_modules/@rc-component/tour": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@rc-component/tour/-/tour-1.10.0.tgz", - "integrity": "sha512-voV0BKaTJbewB9LLgAHQ7tAGG7rgDkKQkZo82xw2gIk542hY+o7zwoqdN16oHhIKk7eG/xi+mdXrONT62Dt57A==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@rc-component/tour/-/tour-1.11.1.tgz", + "integrity": "sha512-c9Lw3/oVinj5D64Rsp8aDLOXcgdViE+hq7bj0Qoo8fTuQEh9sSpUw5OZcum943JkjeIE4hLcc5FD4a5ANtMJ4w==", "dependencies": { "@babel/runtime": "^7.18.0", "@rc-component/portal": "^1.0.0-9", @@ -4243,9 +6613,9 @@ } }, "node_modules/@types/jest": { - "version": "29.5.10", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.10.tgz", - "integrity": "sha512-tE4yxKEphEyxj9s4inideLHktW/x6DwesIwWZ9NN1FKf9zbJYsnhBoA9vrHA/IuIOKwPa5PcFBNV4lpMIOEzyQ==", + "version": "29.5.11", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.11.tgz", + "integrity": "sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ==", "dev": true, "dependencies": { "expect": "^29.0.0", @@ -4283,9 +6653,9 @@ } }, "node_modules/@types/mdx": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.8.tgz", - "integrity": "sha512-r7/zWe+f9x+zjXqGxf821qz++ld8tp6Z4jUS6qmPZUXH6tfh4riXOhAqb12tWGWAevCFtMt1goLWkQMqIJKpsA==" + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.10.tgz", + "integrity": "sha512-Rllzc5KHk0Al5/WANwgSPl1/CwjqCy+AZrGd78zuK+jO9aDM6ffblZ+zIjgPNAaEBmlO0RYDvLNh7wD0zKVgEg==" }, "node_modules/@types/minimist": { "version": "1.2.3", @@ -4395,9 +6765,9 @@ "integrity": "sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw==" }, "node_modules/@types/uuid": { - "version": "9.0.6", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.6.tgz", - "integrity": "sha512-BT2Krtx4xaO6iwzwMFUYvWBWkV2pr37zD68Vmp1CDV196MzczBRxuEpD6Pr395HAgebC/co7hOphs53r8V7jew==", + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.7.tgz", + "integrity": "sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==", "dev": true }, "node_modules/@types/which": { @@ -4441,16 +6811,16 @@ "integrity": "sha512-1jZ9bJn2BsfmYFPBHtl5o3uV+ILejAtGrDcYSpT4qaVKEI/0YY+arw3XHU04Ebd8Nca3SQ7uNcLaqiL+tTFVMg==" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.13.1.tgz", - "integrity": "sha512-5bQDGkXaxD46bPvQt08BUz9YSaO4S0fB1LB5JHQuXTfkGPI3+UUeS387C/e9jRie5GqT8u5kFTrMvAjtX4O5kA==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.14.0.tgz", + "integrity": "sha512-1ZJBykBCXaSHG94vMMKmiHoL0MhNHKSVlcHVYZNw+BKxufhqQVTOawNpwwI1P5nIFZ/4jLVop0mcY6mJJDFNaw==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.13.1", - "@typescript-eslint/type-utils": "6.13.1", - "@typescript-eslint/utils": "6.13.1", - "@typescript-eslint/visitor-keys": "6.13.1", + "@typescript-eslint/scope-manager": "6.14.0", + "@typescript-eslint/type-utils": "6.14.0", + "@typescript-eslint/utils": "6.14.0", + "@typescript-eslint/visitor-keys": "6.14.0", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -4476,15 +6846,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.13.1.tgz", - "integrity": "sha512-fs2XOhWCzRhqMmQf0eicLa/CWSaYss2feXsy7xBD/pLyWke/jCIVc2s1ikEAtSW7ina1HNhv7kONoEfVNEcdDQ==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.14.0.tgz", + "integrity": "sha512-QjToC14CKacd4Pa7JK4GeB/vHmWFJckec49FR4hmIRf97+KXole0T97xxu9IFiPxVQ1DBWrQ5wreLwAGwWAVQA==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.13.1", - "@typescript-eslint/types": "6.13.1", - "@typescript-eslint/typescript-estree": "6.13.1", - "@typescript-eslint/visitor-keys": "6.13.1", + "@typescript-eslint/scope-manager": "6.14.0", + "@typescript-eslint/types": "6.14.0", + "@typescript-eslint/typescript-estree": "6.14.0", + "@typescript-eslint/visitor-keys": "6.14.0", "debug": "^4.3.4" }, "engines": { @@ -4504,13 +6874,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.13.1.tgz", - "integrity": "sha512-BW0kJ7ceiKi56GbT2KKzZzN+nDxzQK2DS6x0PiSMPjciPgd/JRQGMibyaN2cPt2cAvuoH0oNvn2fwonHI+4QUQ==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.14.0.tgz", + "integrity": "sha512-VT7CFWHbZipPncAZtuALr9y3EuzY1b1t1AEkIq2bTXUPKw+pHoXflGNG5L+Gv6nKul1cz1VH8fz16IThIU0tdg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.13.1", - "@typescript-eslint/visitor-keys": "6.13.1" + "@typescript-eslint/types": "6.14.0", + "@typescript-eslint/visitor-keys": "6.14.0" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -4521,13 +6891,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.13.1.tgz", - "integrity": "sha512-A2qPlgpxx2v//3meMqQyB1qqTg1h1dJvzca7TugM3Yc2USDY+fsRBiojAEo92HO7f5hW5mjAUF6qobOPzlBCBQ==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.14.0.tgz", + "integrity": "sha512-x6OC9Q7HfYKqjnuNu5a7kffIYs3No30isapRBJl1iCHLitD8O0lFbRcVGiOcuyN837fqXzPZ1NS10maQzZMKqw==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.13.1", - "@typescript-eslint/utils": "6.13.1", + "@typescript-eslint/typescript-estree": "6.14.0", + "@typescript-eslint/utils": "6.14.0", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -4548,9 +6918,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.13.1.tgz", - "integrity": "sha512-gjeEskSmiEKKFIbnhDXUyiqVma1gRCQNbVZ1C8q7Zjcxh3WZMbzWVfGE9rHfWd1msQtPS0BVD9Jz9jded44eKg==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.14.0.tgz", + "integrity": "sha512-uty9H2K4Xs8E47z3SnXEPRNDfsis8JO27amp2GNCnzGETEW3yTqEIVg5+AI7U276oGF/tw6ZA+UesxeQ104ceA==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -4561,13 +6931,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.13.1.tgz", - "integrity": "sha512-sBLQsvOC0Q7LGcUHO5qpG1HxRgePbT6wwqOiGLpR8uOJvPJbfs0mW3jPA3ujsDvfiVwVlWUDESNXv44KtINkUQ==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.14.0.tgz", + "integrity": "sha512-yPkaLwK0yH2mZKFE/bXkPAkkFgOv15GJAUzgUVonAbv0Hr4PK/N2yaA/4XQbTZQdygiDkpt5DkxPELqHguNvyw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.13.1", - "@typescript-eslint/visitor-keys": "6.13.1", + "@typescript-eslint/types": "6.14.0", + "@typescript-eslint/visitor-keys": "6.14.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -4588,17 +6958,17 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.13.1.tgz", - "integrity": "sha512-ouPn/zVoan92JgAegesTXDB/oUp6BP1v8WpfYcqh649ejNc9Qv+B4FF2Ff626kO1xg0wWwwG48lAJ4JuesgdOw==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.14.0.tgz", + "integrity": "sha512-XwRTnbvRr7Ey9a1NT6jqdKX8y/atWG+8fAIu3z73HSP8h06i3r/ClMhmaF/RGWGW1tHJEwij1uEg2GbEmPYvYg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.13.1", - "@typescript-eslint/types": "6.13.1", - "@typescript-eslint/typescript-estree": "6.13.1", + "@typescript-eslint/scope-manager": "6.14.0", + "@typescript-eslint/types": "6.14.0", + "@typescript-eslint/typescript-estree": "6.14.0", "semver": "^7.5.4" }, "engines": { @@ -4613,12 +6983,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.13.1.tgz", - "integrity": "sha512-NDhQUy2tg6XGNBGDRm1XybOHSia8mcXmlbKWoQP+nm1BIIMxa55shyJfZkHpEBN62KNPLrocSM2PdPcaLgDKMQ==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.14.0.tgz", + "integrity": "sha512-fB5cw6GRhJUz03MrROVuj5Zm/Q+XWlVdIsFj+Zb1Hvqouc8t+XP2H5y53QYU/MGtd2dPg6/vJJlhoX3xc2ehfw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.13.1", + "@typescript-eslint/types": "6.14.0", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -4635,33 +7005,32 @@ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" }, "node_modules/@wdio/cli": { - "version": "8.24.5", - "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-8.24.5.tgz", - "integrity": "sha512-+1QftoPRUlqk69IzTif+yUyD0JdqHggtlPwYXjRUesqP6O+VToR1nFY7uThE2eS63gcNHQEcGSujvSh+pbjZXg==", + "version": "8.26.2", + "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-8.26.2.tgz", + "integrity": "sha512-Gu9JZHFe1Kd69ip8FsXb8rQpt/dYqOBYj47kF8c/lTObhwf/WYXLwlS5XpNTc81vLK+iiM7p92QLgfG8oOHyIg==", "dependencies": { "@types/node": "^20.1.1", - "@wdio/config": "8.24.5", - "@wdio/globals": "8.24.5", - "@wdio/logger": "8.16.17", - "@wdio/protocols": "8.23.0", - "@wdio/types": "8.24.2", - "@wdio/utils": "8.24.5", + "@wdio/config": "8.26.2", + "@wdio/globals": "8.26.2", + "@wdio/logger": "8.24.12", + "@wdio/protocols": "8.24.12", + "@wdio/types": "8.26.2", + "@wdio/utils": "8.26.2", "async-exit-hook": "^2.0.1", "chalk": "^5.2.0", "chokidar": "^3.5.3", "cli-spinners": "^2.9.0", - "detect-package-manager": "^3.0.1", "dotenv": "^16.3.1", "ejs": "^3.1.9", "execa": "^8.0.1", - "import-meta-resolve": "^3.0.0", + "import-meta-resolve": "^4.0.0", "inquirer": "9.2.12", "lodash.flattendeep": "^4.4.0", "lodash.pickby": "^4.6.0", "lodash.union": "^4.6.0", "read-pkg-up": "^10.0.0", "recursive-readdir": "^2.2.3", - "webdriverio": "8.24.5", + "webdriverio": "8.26.2", "yargs": "^17.7.2" }, "bin": { @@ -4679,21 +7048,31 @@ "undici-types": "~5.26.4" } }, + "node_modules/@wdio/cli/node_modules/@wdio/types": { + "version": "8.26.2", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-8.26.2.tgz", + "integrity": "sha512-LBaoTr4jrPu9knQBN1/7BD3SLkaGoQPcbE3GKIxeaOu0fRMOtEr22HxoONahOlQDvyPoOBmSoZw8wUvIfwhrRw==", + "dependencies": { + "@types/node": "^20.1.0" + }, + "engines": { + "node": "^16.13 || >=18" + } + }, "node_modules/@wdio/cli/node_modules/@wdio/utils": { - "version": "8.24.5", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.24.5.tgz", - "integrity": "sha512-QKhBkhxOmo7RU3MPYhmh/lXEEzYkgw+tULczBymw21QJP8se9/OLUv1a+29KDspS7c529oA0dptsNfWPsFH2/w==", + "version": "8.26.2", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.26.2.tgz", + "integrity": "sha512-QohaDMxsNunn6sWFBBtw2vSsoSfpbbjLAszW+iBLccpNGfRfHnaJ8HZ5gfsphMYnLfQe5lZRliIX5+8sSnjU1Q==", "dependencies": { "@puppeteer/browsers": "^1.6.0", - "@wdio/logger": "8.16.17", - "@wdio/types": "8.24.2", + "@wdio/logger": "8.24.12", + "@wdio/types": "8.26.2", "decamelize": "^6.0.0", "deepmerge-ts": "^5.1.0", "edgedriver": "^5.3.5", "geckodriver": "^4.2.0", "get-port": "^7.0.0", - "got": "^13.0.0", - "import-meta-resolve": "^3.0.0", + "import-meta-resolve": "^4.0.0", "locate-app": "^2.1.0", "safaridriver": "^0.1.0", "split2": "^4.2.0", @@ -5048,37 +7427,55 @@ } }, "node_modules/@wdio/config": { - "version": "8.24.5", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.24.5.tgz", - "integrity": "sha512-fNzr4SCMZXCVzff/rk8pXxmmDXqUrO0AVzjFXwh4Hw7VxoRHvEvaM7UZP/GHfS+PljhYgMBjjyxw5JMl3B7FIQ==", + "version": "8.26.2", + "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.26.2.tgz", + "integrity": "sha512-E7QQ5t5LMLnfytls0SePJ61CGkYiBzN9D0dsNQuEOXjiWXt3Q+1VZnQgbfk85P6gRSxfyp7unB4VRxpsHDCwrw==", "dependencies": { - "@wdio/logger": "8.16.17", - "@wdio/types": "8.24.2", - "@wdio/utils": "8.24.5", + "@wdio/logger": "8.24.12", + "@wdio/types": "8.26.2", + "@wdio/utils": "8.26.2", "decamelize": "^6.0.0", "deepmerge-ts": "^5.0.0", "glob": "^10.2.2", - "import-meta-resolve": "^3.0.0" + "import-meta-resolve": "^4.0.0" + }, + "engines": { + "node": "^16.13 || >=18" + } + }, + "node_modules/@wdio/config/node_modules/@types/node": { + "version": "20.10.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz", + "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@wdio/config/node_modules/@wdio/types": { + "version": "8.26.2", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-8.26.2.tgz", + "integrity": "sha512-LBaoTr4jrPu9knQBN1/7BD3SLkaGoQPcbE3GKIxeaOu0fRMOtEr22HxoONahOlQDvyPoOBmSoZw8wUvIfwhrRw==", + "dependencies": { + "@types/node": "^20.1.0" }, "engines": { "node": "^16.13 || >=18" } }, "node_modules/@wdio/config/node_modules/@wdio/utils": { - "version": "8.24.5", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.24.5.tgz", - "integrity": "sha512-QKhBkhxOmo7RU3MPYhmh/lXEEzYkgw+tULczBymw21QJP8se9/OLUv1a+29KDspS7c529oA0dptsNfWPsFH2/w==", + "version": "8.26.2", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.26.2.tgz", + "integrity": "sha512-QohaDMxsNunn6sWFBBtw2vSsoSfpbbjLAszW+iBLccpNGfRfHnaJ8HZ5gfsphMYnLfQe5lZRliIX5+8sSnjU1Q==", "dependencies": { "@puppeteer/browsers": "^1.6.0", - "@wdio/logger": "8.16.17", - "@wdio/types": "8.24.2", + "@wdio/logger": "8.24.12", + "@wdio/types": "8.26.2", "decamelize": "^6.0.0", "deepmerge-ts": "^5.1.0", "edgedriver": "^5.3.5", "geckodriver": "^4.2.0", "get-port": "^7.0.0", - "got": "^13.0.0", - "import-meta-resolve": "^3.0.0", + "import-meta-resolve": "^4.0.0", "locate-app": "^2.1.0", "safaridriver": "^0.1.0", "split2": "^4.2.0", @@ -5151,20 +7548,20 @@ } }, "node_modules/@wdio/cucumber-framework": { - "version": "8.24.4", - "resolved": "https://registry.npmjs.org/@wdio/cucumber-framework/-/cucumber-framework-8.24.4.tgz", - "integrity": "sha512-1e4blPpTrCeyrHidygIoPBLz0SehY1Kjzh6ViqKXiCCdMiRqJyMMUQw0SidSa5VVG7HL+icHYmspjztXTY5tSQ==", + "version": "8.26.2", + "resolved": "https://registry.npmjs.org/@wdio/cucumber-framework/-/cucumber-framework-8.26.2.tgz", + "integrity": "sha512-X3f7ZBDqWR7kPwDi0AyNq4yacun7RiWhRAw6e57SCVaF4rcFf8Quwawj7zlnAqwlT1WSRhqtLygGrATdeE5jDg==", "dev": true, "dependencies": { "@cucumber/cucumber": "9.5.1", "@cucumber/gherkin": "27.0.0", - "@cucumber/messages": "23.0.0", + "@cucumber/messages": "24.0.0", "@types/node": "^20.1.0", - "@wdio/logger": "8.16.17", - "@wdio/types": "8.24.2", - "@wdio/utils": "8.24.4", + "@wdio/logger": "8.24.12", + "@wdio/types": "8.26.2", + "@wdio/utils": "8.26.2", "glob": "^10.2.2", - "got": "^13.0.0", + "got": "^12.6.1", "is-glob": "^4.0.0" }, "engines": { @@ -5180,6 +7577,42 @@ "undici-types": "~5.26.4" } }, + "node_modules/@wdio/cucumber-framework/node_modules/@wdio/types": { + "version": "8.26.2", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-8.26.2.tgz", + "integrity": "sha512-LBaoTr4jrPu9knQBN1/7BD3SLkaGoQPcbE3GKIxeaOu0fRMOtEr22HxoONahOlQDvyPoOBmSoZw8wUvIfwhrRw==", + "dev": true, + "dependencies": { + "@types/node": "^20.1.0" + }, + "engines": { + "node": "^16.13 || >=18" + } + }, + "node_modules/@wdio/cucumber-framework/node_modules/@wdio/utils": { + "version": "8.26.2", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.26.2.tgz", + "integrity": "sha512-QohaDMxsNunn6sWFBBtw2vSsoSfpbbjLAszW+iBLccpNGfRfHnaJ8HZ5gfsphMYnLfQe5lZRliIX5+8sSnjU1Q==", + "dev": true, + "dependencies": { + "@puppeteer/browsers": "^1.6.0", + "@wdio/logger": "8.24.12", + "@wdio/types": "8.26.2", + "decamelize": "^6.0.0", + "deepmerge-ts": "^5.1.0", + "edgedriver": "^5.3.5", + "geckodriver": "^4.2.0", + "get-port": "^7.0.0", + "import-meta-resolve": "^4.0.0", + "locate-app": "^2.1.0", + "safaridriver": "^0.1.0", + "split2": "^4.2.0", + "wait-port": "^1.0.4" + }, + "engines": { + "node": "^16.13 || >=18" + } + }, "node_modules/@wdio/cucumber-framework/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -5189,6 +7622,18 @@ "balanced-match": "^1.0.0" } }, + "node_modules/@wdio/cucumber-framework/node_modules/decamelize": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", + "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@wdio/cucumber-framework/node_modules/glob": { "version": "10.3.10", "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", @@ -5236,27 +7681,27 @@ } }, "node_modules/@wdio/globals": { - "version": "8.24.5", - "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-8.24.5.tgz", - "integrity": "sha512-QE3udB/K2rIOAJ0SRUx5ssLixSrpCtE/A9Ba3qy0308lQ4WDswzsXQcCl1A+HizaJ2xAumblTlNvt1fIIcC9Tg==", + "version": "8.26.2", + "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-8.26.2.tgz", + "integrity": "sha512-ie96SYwvnZTfcTQPYjshxoaNob9yndlG6z29l5bugY6xkpW2YVKOJ7bf8X4S+1M9ATIJiBYh1fpliuxyib2JXQ==", "engines": { "node": "^16.13 || >=18" }, "optionalDependencies": { "expect-webdriverio": "^4.6.1", - "webdriverio": "8.24.5" + "webdriverio": "8.26.2" } }, "node_modules/@wdio/local-runner": { - "version": "8.24.5", - "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-8.24.5.tgz", - "integrity": "sha512-yL+qu2iAoY+FrfTGbP+iunjMBGLqk6QgzBKNi/TE2l9eNRmHXU1pn49Z/E6zePzyD3eNl4ihPCLZEzzwoK+zmA==", + "version": "8.26.2", + "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-8.26.2.tgz", + "integrity": "sha512-sAgWT2/l1zuCvk7MkNyrSCOj2cF6G//XYlqXiUGyG5O8R2B6GWB/bOrh4GsuOQ8rQ8vnUPnJVUeravHWhVePNA==", "dependencies": { "@types/node": "^20.1.0", - "@wdio/logger": "8.16.17", - "@wdio/repl": "8.23.1", - "@wdio/runner": "8.24.5", - "@wdio/types": "8.24.2", + "@wdio/logger": "8.24.12", + "@wdio/repl": "8.24.12", + "@wdio/runner": "8.26.2", + "@wdio/types": "8.26.2", "async-exit-hook": "^2.0.1", "split2": "^4.1.0", "stream-buffers": "^3.0.2" @@ -5273,10 +7718,21 @@ "undici-types": "~5.26.4" } }, + "node_modules/@wdio/local-runner/node_modules/@wdio/types": { + "version": "8.26.2", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-8.26.2.tgz", + "integrity": "sha512-LBaoTr4jrPu9knQBN1/7BD3SLkaGoQPcbE3GKIxeaOu0fRMOtEr22HxoONahOlQDvyPoOBmSoZw8wUvIfwhrRw==", + "dependencies": { + "@types/node": "^20.1.0" + }, + "engines": { + "node": "^16.13 || >=18" + } + }, "node_modules/@wdio/logger": { - "version": "8.16.17", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.16.17.tgz", - "integrity": "sha512-zeQ41z3T+b4IsrriZZipayXxLNDuGsm7TdExaviNGojPVrIsQUCSd/FvlLHM32b7ZrMyInHenu/zx1cjAZO71g==", + "version": "8.24.12", + "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.24.12.tgz", + "integrity": "sha512-QisOiVIWKTUCf1H7S+DOtC+gruhlpimQrUXfWMTeeh672PvAJYnTpOJDWA+BtXfsikkUYFAzAaq8SeMJk8rqKg==", "dependencies": { "chalk": "^5.1.2", "loglevel": "^1.6.0", @@ -5324,15 +7780,15 @@ } }, "node_modules/@wdio/mocha-framework": { - "version": "8.24.5", - "resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-8.24.5.tgz", - "integrity": "sha512-+yvKtPf+7J5B6ODaOmce+U7LRLAMBvowzauf4FHZcQvuxL1iF7Y/J4TcNh5ZZwOR2lJEBQmqhM8NUpmEiIxwYg==", + "version": "8.24.12", + "resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-8.24.12.tgz", + "integrity": "sha512-SHN7CYZnDkVUNYxLp8iMV92xcmU/4gq5dqA0pRrK4m5nIU7BoL0flm0kA+ydYUQyNedQh2ru1V63uNyTOyCKAg==", "dependencies": { "@types/mocha": "^10.0.0", "@types/node": "^20.1.0", - "@wdio/logger": "8.16.17", - "@wdio/types": "8.24.2", - "@wdio/utils": "8.24.5", + "@wdio/logger": "8.24.12", + "@wdio/types": "8.24.12", + "@wdio/utils": "8.24.12", "mocha": "^10.0.0" }, "engines": { @@ -5347,50 +7803,15 @@ "undici-types": "~5.26.4" } }, - "node_modules/@wdio/mocha-framework/node_modules/@wdio/utils": { - "version": "8.24.5", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.24.5.tgz", - "integrity": "sha512-QKhBkhxOmo7RU3MPYhmh/lXEEzYkgw+tULczBymw21QJP8se9/OLUv1a+29KDspS7c529oA0dptsNfWPsFH2/w==", - "dependencies": { - "@puppeteer/browsers": "^1.6.0", - "@wdio/logger": "8.16.17", - "@wdio/types": "8.24.2", - "decamelize": "^6.0.0", - "deepmerge-ts": "^5.1.0", - "edgedriver": "^5.3.5", - "geckodriver": "^4.2.0", - "get-port": "^7.0.0", - "got": "^13.0.0", - "import-meta-resolve": "^3.0.0", - "locate-app": "^2.1.0", - "safaridriver": "^0.1.0", - "split2": "^4.2.0", - "wait-port": "^1.0.4" - }, - "engines": { - "node": "^16.13 || >=18" - } - }, - "node_modules/@wdio/mocha-framework/node_modules/decamelize": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", - "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@wdio/protocols": { - "version": "8.23.0", - "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-8.23.0.tgz", - "integrity": "sha512-2XTzD+lqQP3g8BWn+Bn5BTFzjHqzZNwq7DjlYrb27Bq8nOA+1DEcj3WzQ6V6CktTnKI/LAYKA1IFAF//Azrp/Q==" + "version": "8.24.12", + "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-8.24.12.tgz", + "integrity": "sha512-QnVj3FkapmVD3h2zoZk+ZQ8gevSj9D9MiIQIy8eOnY4FAneYZ9R9GvoW+mgNcCZO8S8++S/jZHetR8n+8Q808g==" }, "node_modules/@wdio/repl": { - "version": "8.23.1", - "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-8.23.1.tgz", - "integrity": "sha512-u6zG2cgBm67V5/WlQzadWqLGXs3moH8MOsgoljULQncelSBBZGZ5DyLB4p7jKcUAsKtMjgmFQmIvpQoqmyvdfg==", + "version": "8.24.12", + "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-8.24.12.tgz", + "integrity": "sha512-321F3sWafnlw93uRTSjEBVuvWCxTkWNDs7ektQS15drrroL3TMeFOynu4rDrIz0jXD9Vas0HCD2Tq/P0uxFLdw==", "dependencies": { "@types/node": "^20.1.0" }, @@ -5399,21 +7820,21 @@ } }, "node_modules/@wdio/repl/node_modules/@types/node": { - "version": "20.10.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.0.tgz", - "integrity": "sha512-D0WfRmU9TQ8I9PFx9Yc+EBHw+vSpIub4IDvQivcp26PtPrdMGAq5SDcpXEo/epqa/DXotVpekHiLNTg3iaKXBQ==", + "version": "20.10.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz", + "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==", "dependencies": { "undici-types": "~5.26.4" } }, "node_modules/@wdio/reporter": { - "version": "8.24.2", - "resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-8.24.2.tgz", - "integrity": "sha512-10hTEk4JIIXW8hnwyxTNgby1ZxoJAbXH9d/eMbkEoAwxx/eqaM+ghPs1GSrzOIjjZ3lwz369POEYfJcLkw3g2w==", + "version": "8.26.2", + "resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-8.26.2.tgz", + "integrity": "sha512-Fzn8AmYCmeqWyZBgkIgWuHEHb5HQgZXHxYvT1LeG+3B/w1F6OAU3lZSuY/ACoDI0vAYgRTHVDHFwuuhdUjtDew==", "dependencies": { "@types/node": "^20.1.0", - "@wdio/logger": "8.16.17", - "@wdio/types": "8.24.2", + "@wdio/logger": "8.24.12", + "@wdio/types": "8.26.2", "diff": "^5.0.0", "object-inspect": "^1.12.0" }, @@ -5429,6 +7850,17 @@ "undici-types": "~5.26.4" } }, + "node_modules/@wdio/reporter/node_modules/@wdio/types": { + "version": "8.26.2", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-8.26.2.tgz", + "integrity": "sha512-LBaoTr4jrPu9knQBN1/7BD3SLkaGoQPcbE3GKIxeaOu0fRMOtEr22HxoONahOlQDvyPoOBmSoZw8wUvIfwhrRw==", + "dependencies": { + "@types/node": "^20.1.0" + }, + "engines": { + "node": "^16.13 || >=18" + } + }, "node_modules/@wdio/reporter/node_modules/diff": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", @@ -5438,49 +7870,59 @@ } }, "node_modules/@wdio/runner": { - "version": "8.24.5", - "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-8.24.5.tgz", - "integrity": "sha512-DzsKdo9QVHJksT6hDFA0JEyyNAdP/XF2gk3icxj6YSAeXs7sT951dyGUrKqoFpvZ3j8vzejQnQNLGCqFP1M4UQ==", + "version": "8.26.2", + "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-8.26.2.tgz", + "integrity": "sha512-0eKmAJ1/KqFsEIhfKVCipPL2i3vMjRld6PDQxgZWLaxOsyVXQ38njJ+HHogskWtdGQqWNisosYGUv29QNTJYsw==", "dependencies": { "@types/node": "^20.1.0", - "@wdio/config": "8.24.5", - "@wdio/globals": "8.24.5", - "@wdio/logger": "8.16.17", - "@wdio/types": "8.24.2", - "@wdio/utils": "8.24.5", + "@wdio/config": "8.26.2", + "@wdio/globals": "8.26.2", + "@wdio/logger": "8.24.12", + "@wdio/types": "8.26.2", + "@wdio/utils": "8.26.2", "deepmerge-ts": "^5.0.0", "expect-webdriverio": "^4.6.1", "gaze": "^1.1.2", - "webdriver": "8.24.5", - "webdriverio": "8.24.5" + "webdriver": "8.26.2", + "webdriverio": "8.26.2" }, "engines": { "node": "^16.13 || >=18" } }, "node_modules/@wdio/runner/node_modules/@types/node": { - "version": "20.10.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.0.tgz", - "integrity": "sha512-D0WfRmU9TQ8I9PFx9Yc+EBHw+vSpIub4IDvQivcp26PtPrdMGAq5SDcpXEo/epqa/DXotVpekHiLNTg3iaKXBQ==", + "version": "20.10.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz", + "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==", "dependencies": { "undici-types": "~5.26.4" } }, + "node_modules/@wdio/runner/node_modules/@wdio/types": { + "version": "8.26.2", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-8.26.2.tgz", + "integrity": "sha512-LBaoTr4jrPu9knQBN1/7BD3SLkaGoQPcbE3GKIxeaOu0fRMOtEr22HxoONahOlQDvyPoOBmSoZw8wUvIfwhrRw==", + "dependencies": { + "@types/node": "^20.1.0" + }, + "engines": { + "node": "^16.13 || >=18" + } + }, "node_modules/@wdio/runner/node_modules/@wdio/utils": { - "version": "8.24.5", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.24.5.tgz", - "integrity": "sha512-QKhBkhxOmo7RU3MPYhmh/lXEEzYkgw+tULczBymw21QJP8se9/OLUv1a+29KDspS7c529oA0dptsNfWPsFH2/w==", + "version": "8.26.2", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.26.2.tgz", + "integrity": "sha512-QohaDMxsNunn6sWFBBtw2vSsoSfpbbjLAszW+iBLccpNGfRfHnaJ8HZ5gfsphMYnLfQe5lZRliIX5+8sSnjU1Q==", "dependencies": { "@puppeteer/browsers": "^1.6.0", - "@wdio/logger": "8.16.17", - "@wdio/types": "8.24.2", + "@wdio/logger": "8.24.12", + "@wdio/types": "8.26.2", "decamelize": "^6.0.0", "deepmerge-ts": "^5.1.0", "edgedriver": "^5.3.5", "geckodriver": "^4.2.0", "get-port": "^7.0.0", - "got": "^13.0.0", - "import-meta-resolve": "^3.0.0", + "import-meta-resolve": "^4.0.0", "locate-app": "^2.1.0", "safaridriver": "^0.1.0", "split2": "^4.2.0", @@ -5502,12 +7944,12 @@ } }, "node_modules/@wdio/spec-reporter": { - "version": "8.24.2", - "resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-8.24.2.tgz", - "integrity": "sha512-FJ1+/kgxlw4ong+5PJJcOzLf8B/TzPL9hGeOF2xoWkk2uMsmNBJN2r27pjtfFxA41lw4q+Oav0Vb/RhdCB601Q==", + "version": "8.26.2", + "resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-8.26.2.tgz", + "integrity": "sha512-GysWLoBukPNgxuXyobt7xPI776kW2NBsdvNYn8ECpYXWh7Of+ANSOGgGNWrN70Chct1NbGA5W4WwuDWcMeDDwg==", "dependencies": { - "@wdio/reporter": "8.24.2", - "@wdio/types": "8.24.2", + "@wdio/reporter": "8.26.2", + "@wdio/types": "8.26.2", "chalk": "^5.1.2", "easy-table": "^1.2.0", "pretty-ms": "^7.0.0" @@ -5516,6 +7958,25 @@ "node": "^16.13 || >=18" } }, + "node_modules/@wdio/spec-reporter/node_modules/@types/node": { + "version": "20.10.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz", + "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@wdio/spec-reporter/node_modules/@wdio/types": { + "version": "8.26.2", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-8.26.2.tgz", + "integrity": "sha512-LBaoTr4jrPu9knQBN1/7BD3SLkaGoQPcbE3GKIxeaOu0fRMOtEr22HxoONahOlQDvyPoOBmSoZw8wUvIfwhrRw==", + "dependencies": { + "@types/node": "^20.1.0" + }, + "engines": { + "node": "^16.13 || >=18" + } + }, "node_modules/@wdio/spec-reporter/node_modules/chalk": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", @@ -5528,9 +7989,9 @@ } }, "node_modules/@wdio/types": { - "version": "8.24.2", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-8.24.2.tgz", - "integrity": "sha512-x7iWF5NM8NfVxziGwLdQ+3sstgSxRoqfmmFEDTDps0oFrN5CgkqcoLkqXJ5u166gvpxpEq0gxZwxkbPC/Lp0cw==", + "version": "8.24.12", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-8.24.12.tgz", + "integrity": "sha512-SaD3OacDiW06DvSgAQ7sDBbpiI9qZRg7eoVYeBg3uSGVtUq84vTETRhhV7D6xTC00IqZu+mmN2TY5/q+7Gqy7w==", "dependencies": { "@types/node": "^20.1.0" }, @@ -5547,21 +8008,19 @@ } }, "node_modules/@wdio/utils": { - "version": "8.24.4", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.24.4.tgz", - "integrity": "sha512-lW+3OOdd2MD0V6LYDlz4dWe2JR/PTHgIvPiYh5bwdGE3nOgwuOixwhexviqs55TIGPLTBIGJKVn8028Y84kH5g==", - "dev": true, + "version": "8.24.12", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.24.12.tgz", + "integrity": "sha512-uzwZyBVgqz0Wz1KL3aOUaQsxT8TNkzxti4NNTSMrU256qAPqc/n75rB7V73QASapCMpy70mZZTsuPgQYYj4ytQ==", "dependencies": { "@puppeteer/browsers": "^1.6.0", - "@wdio/logger": "8.16.17", - "@wdio/types": "8.24.2", + "@wdio/logger": "8.24.12", + "@wdio/types": "8.24.12", "decamelize": "^6.0.0", "deepmerge-ts": "^5.1.0", "edgedriver": "^5.3.5", "geckodriver": "^4.2.0", "get-port": "^7.0.0", - "got": "^13.0.0", - "import-meta-resolve": "^3.0.0", + "import-meta-resolve": "^4.0.0", "locate-app": "^2.1.0", "safaridriver": "^0.1.0", "split2": "^4.2.0", @@ -5575,7 +8034,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", - "dev": true, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -5923,19 +8381,19 @@ } }, "node_modules/antd": { - "version": "5.11.5", - "resolved": "https://registry.npmjs.org/antd/-/antd-5.11.5.tgz", - "integrity": "sha512-qB1YmvO4Zm4r48M0Ptxn7orpaXeMPSeTrrw6dAgtTYN+ysnWD/D/zlxFc5g73GywIzZ10XGqvNC+74A+HD0yeQ==", + "version": "5.12.2", + "resolved": "https://registry.npmjs.org/antd/-/antd-5.12.2.tgz", + "integrity": "sha512-lJ4pdBRboN2Tl5hXTqgxUjGIercB2YIK7Z8fVDushgrJ55RhywJjvcQVnBmuxcSPuWEF2Yu8SNBVAnaV4EqzWA==", "dependencies": { "@ant-design/colors": "^7.0.0", - "@ant-design/cssinjs": "^1.17.5", + "@ant-design/cssinjs": "^1.18.1", "@ant-design/icons": "^5.2.6", "@ant-design/react-slick": "~1.0.2", - "@babel/runtime": "^7.18.3", + "@babel/runtime": "^7.23.4", "@ctrl/tinycolor": "^3.6.1", "@rc-component/color-picker": "~1.4.1", "@rc-component/mutate-observer": "^1.1.0", - "@rc-component/tour": "~1.10.0", + "@rc-component/tour": "~1.11.1", "@rc-component/trigger": "^1.18.2", "classnames": "^2.3.2", "copy-to-clipboard": "^3.3.3", @@ -5943,30 +8401,30 @@ "qrcode.react": "^3.1.0", "rc-cascader": "~3.20.0", "rc-checkbox": "~3.1.0", - "rc-collapse": "~3.7.1", + "rc-collapse": "~3.7.2", "rc-dialog": "~9.3.4", "rc-drawer": "~6.5.2", "rc-dropdown": "~4.1.0", - "rc-field-form": "~1.40.0", + "rc-field-form": "~1.41.0", "rc-image": "~7.5.1", "rc-input": "~1.3.6", "rc-input-number": "~8.4.0", "rc-mentions": "~2.9.1", - "rc-menu": "~9.12.2", + "rc-menu": "~9.12.4", "rc-motion": "^2.9.0", "rc-notification": "~5.3.0", - "rc-pagination": "~3.7.0", + "rc-pagination": "~4.0.3", "rc-picker": "~3.14.6", "rc-progress": "~3.5.1", "rc-rate": "~2.12.0", "rc-resize-observer": "^1.4.0", "rc-segmented": "~2.2.2", "rc-select": "~14.10.0", - "rc-slider": "~10.4.0", + "rc-slider": "~10.5.0", "rc-steps": "~6.0.1", "rc-switch": "~4.1.0", "rc-table": "~7.36.0", - "rc-tabs": "~12.13.1", + "rc-tabs": "~12.14.1", "rc-textarea": "~1.5.3", "rc-tooltip": "~6.1.2", "rc-tree": "~5.8.2", @@ -6338,11 +8796,6 @@ "node": ">=0.12.0" } }, - "node_modules/async-lock": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/async-lock/-/async-lock-1.4.0.tgz", - "integrity": "sha512-coglx5yIWuetakm3/1dsX9hxCNox22h7+V80RQOu2XUUMidtArxKoZoOtHUPuR84SycKTXzgGzAUR5hJxujyJQ==" - }, "node_modules/async-validator": { "version": "4.2.5", "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz", @@ -6544,6 +8997,67 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz", + "integrity": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.3", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "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, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz", + "integrity": "sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.3", + "core-js-compat": "^3.33.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz", + "integrity": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.3" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-transform-import-meta": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-import-meta/-/babel-plugin-transform-import-meta-2.2.1.tgz", + "integrity": "sha512-AxNh27Pcg8Kt112RGa3Vod2QS2YXKKJ6+nSvRtv7qQTJAdx0MZa4UHZ4lnxHUWA2MNbLuZQv5FVab4P1CoLOWw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.4.4", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@babel/core": "^7.10.0" + } + }, "node_modules/babel-preset-current-node-syntax": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", @@ -6726,9 +9240,9 @@ "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" }, "node_modules/browserslist": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", - "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", + "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", "funding": [ { "type": "opencollective", @@ -6744,9 +9258,9 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", + "caniuse-lite": "^1.0.30001565", + "electron-to-chromium": "^1.4.601", + "node-releases": "^2.0.14", "update-browserslist-db": "^1.0.13" }, "bin": { @@ -6756,18 +9270,6 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "dependencies": { - "fast-json-stable-stringify": "2.x" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/bser": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", @@ -7052,9 +9554,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001547", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001547.tgz", - "integrity": "sha512-W7CrtIModMAxobGhz8iXmDfuJiiKg1WADMO/9x7/CLNin5cpSbuBjooyoIUVB5eyCc36QuTVlkVa1iB2S5+/eA==", + "version": "1.0.30001568", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001568.tgz", + "integrity": "sha512-vSUkH84HontZJ88MiNrOau1EBrCqEQYgkC5gIySiDlpsm8sGVrhU7Kx4V6h0tnqaHzIHZv08HlJIwPbL4XL9+A==", "funding": [ { "type": "opencollective", @@ -7490,6 +9992,15 @@ "node": ">= 0.12.0" } }, + "node_modules/collapse-white-space": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/collect-v8-coverage": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", @@ -7545,6 +10056,10 @@ "node": ">= 10" } }, + "node_modules/common-handshakes": { + "resolved": "packages/common-handshakes", + "link": true + }, "node_modules/component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", @@ -7619,6 +10134,19 @@ "toggle-selection": "^1.0.6" } }, + "node_modules/core-js-compat": { + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.34.0.tgz", + "integrity": "sha512-4ZIyeNbW/Cn1wkMMDy+mvrRUxrwFNjKwbhCfQpDd+eLgYipDqp8oGFGtLmhh18EDPKA0g3VUBYOxQGGwvWLVpA==", + "dev": true, + "dependencies": { + "browserslist": "^4.22.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -8739,17 +11267,6 @@ "node": ">=8" } }, - "node_modules/detect-package-manager": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/detect-package-manager/-/detect-package-manager-3.0.1.tgz", - "integrity": "sha512-qoHDH6+lMcpJPAScE7+5CYj91W0mxZNXTwZPrCqi1KMk+x+AoQScQ2V1QyqTln1rHU5Haq5fikvOGHv+leKD8A==", - "dependencies": { - "execa": "^5.1.1" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/devlop": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", @@ -8763,9 +11280,9 @@ } }, "node_modules/devtools-protocol": { - "version": "0.0.1213968", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1213968.tgz", - "integrity": "sha512-o4n/beY+3CcZwFctYapjGelKptR4AuQT5gXS1Kvgbig+ArwkxK7f8wDVuD1wsoswiJWCwV6OK+Qb7vhNzNmABQ==" + "version": "0.0.1235375", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1235375.tgz", + "integrity": "sha512-MOMnfplVXEhcP7+W98NK8ZJtgoo2/A+s+FkIu9+TbSgWSZREVK5Ozh2qCQgRN4EPYMxiSJX09OoVJT+hGj4aTw==" }, "node_modules/dezalgo": { "version": "1.0.4", @@ -9026,15 +11543,28 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.554", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.554.tgz", - "integrity": "sha512-Q0umzPJjfBrrj8unkONTgbKQXzXRrH7sVV7D9ea2yBV3Oaogz991yhbpfvo2LMNkJItmruXTEzVpP9cp7vaIiQ==" + "version": "1.4.609", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.609.tgz", + "integrity": "sha512-ihiCP7PJmjoGNuLpl7TjNA8pCQWu09vGyjlPYw1Rqww4gvNuCcmvl+44G+2QyJ6S2K4o+wbTS++Xz0YN8Q9ERw==" }, "node_modules/elkjs": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.8.2.tgz", "integrity": "sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ==" }, + "node_modules/embla-carousel": { + "version": "8.0.0-rc15", + "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.0.0-rc15.tgz", + "integrity": "sha512-s7VPexK2h8VEYjEVQFnJAPcRnY5YqJYicFxKVVyWXP3Hk9FFDkT0kqVxMM1PcL187qHOUgmGVHOrfC8xWy3OKQ==" + }, + "node_modules/embla-carousel-autoplay": { + "version": "8.0.0-rc15", + "resolved": "https://registry.npmjs.org/embla-carousel-autoplay/-/embla-carousel-autoplay-8.0.0-rc15.tgz", + "integrity": "sha512-ABTbDJGNb9jzI9OV2vSpbUvxUA0ELmK0SI3yPm8Haj3ghssS+vElfahoDqp7zuFkWBRih6w3B51oMPKdF5J55A==", + "peerDependencies": { + "embla-carousel": "8.0.0-rc15" + } + }, "node_modules/embla-carousel-react": { "version": "8.0.0-rc15", "resolved": "https://registry.npmjs.org/embla-carousel-react/-/embla-carousel-react-8.0.0-rc15.tgz", @@ -9047,11 +11577,6 @@ "react": "^16.8.0 || ^17.0.1 || ^18.0.0" } }, - "node_modules/embla-carousel-react/node_modules/embla-carousel": { - "version": "8.0.0-rc15", - "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.0.0-rc15.tgz", - "integrity": "sha512-s7VPexK2h8VEYjEVQFnJAPcRnY5YqJYicFxKVVyWXP3Hk9FFDkT0kqVxMM1PcL187qHOUgmGVHOrfC8xWy3OKQ==" - }, "node_modules/embla-carousel-react/node_modules/embla-carousel-reactive-utils": { "version": "8.0.0-rc15", "resolved": "https://registry.npmjs.org/embla-carousel-reactive-utils/-/embla-carousel-reactive-utils-8.0.0-rc15.tgz", @@ -9379,15 +11904,15 @@ } }, "node_modules/eslint": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.54.0.tgz", - "integrity": "sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.3", - "@eslint/js": "8.54.0", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -9498,9 +12023,9 @@ } }, "node_modules/eslint-config-prettier": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", - "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", "dev": true, "bin": { "eslint-config-prettier": "bin/cli.js" @@ -10152,14 +12677,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/estree-util-build-jsx/node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, "node_modules/estree-util-is-identifier-name": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.1.0.tgz", @@ -10226,6 +12743,14 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -10234,6 +12759,11 @@ "node": ">=0.10.0" } }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" + }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", @@ -10247,6 +12777,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -10290,9 +12821,9 @@ } }, "node_modules/expect-webdriverio": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-4.6.1.tgz", - "integrity": "sha512-w6ee91kN3BoxNGVKQheAqFpRGMehdDg7kDiErEk/oM7tbd/WUT4R4v9KYOUtjiaUFHWWCRW2FtcOOjcd0+1pvQ==", + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-4.7.2.tgz", + "integrity": "sha512-aR/L0NrleB7lZCdJK9yNijuJajmNKo+DDaUheSY0Sqiopwg2X2B+kAnuWYSc2XCL0IdPTN3JcplXj+IOGQN51g==", "dependencies": { "expect": "^29.7.0", "jest-matcher-utils": "^29.7.0", @@ -11247,9 +13778,9 @@ } }, "node_modules/got": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/got/-/got-13.0.0.tgz", - "integrity": "sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==", + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", + "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", "dependencies": { "@sindresorhus/is": "^5.2.0", "@szmarczak/http-timer": "^5.0.1", @@ -11264,7 +13795,7 @@ "responselike": "^3.0.0" }, "engines": { - "node": ">=16" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sindresorhus/got?sponsor=1" @@ -11290,10 +13821,6 @@ "resolved": "packages/graspit-dashboard", "link": true }, - "node_modules/graspit-commons": { - "resolved": "packages/graspit-commons", - "link": true - }, "node_modules/graspit-docs": { "resolved": "apps/graspit-docs", "link": true @@ -11312,6 +13839,10 @@ "node": ">=6.0" } }, + "node_modules/handshake-dashboard": { + "resolved": "packages/handshake-dashboard", + "link": true + }, "node_modules/hard-rejection": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", @@ -11786,6 +14317,63 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.2.0.tgz", + "integrity": "sha512-wSlp23N45CMjDg/BPW8zvhEi3R+8eRE1qFbjEyAUzMCzu2l1Wzwakq+Tlia9nkCtEl5mDxa7nKHsvYJ6Gfn21A==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^0.4.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/@types/hast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz", + "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/hast-util-to-parse5": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", @@ -11993,6 +14581,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, "engines": { "node": ">=10.17.0" } @@ -12090,9 +14679,9 @@ } }, "node_modules/import-meta-resolve": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-3.0.0.tgz", - "integrity": "sha512-4IwhLhNNA8yy445rPjD/lWh++7hMDOml2eHtd58eG7h+qK3EryMuuRbsHGPikCoAgIkkDnckKfWSk2iDla/ejg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.0.0.tgz", + "integrity": "sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -12760,6 +15349,7 @@ "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" }, @@ -15174,6 +17764,12 @@ "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" }, + "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 + }, "node_modules/lodash.flattendeep": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", @@ -15189,12 +17785,6 @@ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -18248,14 +20838,15 @@ } }, "node_modules/next": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/next/-/next-13.5.6.tgz", - "integrity": "sha512-Y2wTcTbO4WwEsVb4A8VSnOsG1I9ok+h74q0ZdxkwM3EODqrs4pasq7O0iUxbcS9VtWMicG7f3+HAj0r1+NtKSw==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/next/-/next-14.0.4.tgz", + "integrity": "sha512-qbwypnM7327SadwFtxXnQdGiKpkuhaRLE2uq62/nRul9cj9KhQ5LhHmlziTNqUidZotw/Q1I9OjirBROdUJNgA==", "dependencies": { - "@next/env": "13.5.6", + "@next/env": "14.0.4", "@swc/helpers": "0.5.2", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001406", + "graceful-fs": "^4.2.11", "postcss": "8.4.31", "styled-jsx": "5.1.1", "watchpack": "2.4.0" @@ -18264,18 +20855,18 @@ "next": "dist/bin/next" }, "engines": { - "node": ">=16.14.0" + "node": ">=18.17.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "13.5.6", - "@next/swc-darwin-x64": "13.5.6", - "@next/swc-linux-arm64-gnu": "13.5.6", - "@next/swc-linux-arm64-musl": "13.5.6", - "@next/swc-linux-x64-gnu": "13.5.6", - "@next/swc-linux-x64-musl": "13.5.6", - "@next/swc-win32-arm64-msvc": "13.5.6", - "@next/swc-win32-ia32-msvc": "13.5.6", - "@next/swc-win32-x64-msvc": "13.5.6" + "@next/swc-darwin-arm64": "14.0.4", + "@next/swc-darwin-x64": "14.0.4", + "@next/swc-linux-arm64-gnu": "14.0.4", + "@next/swc-linux-arm64-musl": "14.0.4", + "@next/swc-linux-x64-gnu": "14.0.4", + "@next/swc-linux-x64-musl": "14.0.4", + "@next/swc-win32-arm64-msvc": "14.0.4", + "@next/swc-win32-ia32-msvc": "14.0.4", + "@next/swc-win32-x64-msvc": "14.0.4" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", @@ -18599,9 +21190,9 @@ "dev": true }, "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==" + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" }, "node_modules/non-layered-tidy-tree-layout": { "version": "2.0.2", @@ -18675,6 +21266,7 @@ "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" }, @@ -19042,6 +21634,32 @@ "node": ">=6" } }, + "node_modules/p-queue": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.0.1.tgz", + "integrity": "sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA==", + "dependencies": { + "eventemitter3": "^5.0.1", + "p-timeout": "^6.1.2" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-timeout": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.2.tgz", + "integrity": "sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==", + "engines": { + "node": ">=14.16" + }, + "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", @@ -19330,14 +21948,6 @@ "is-reference": "^3.0.0" } }, - "node_modules/periscopic/node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -19541,9 +22151,9 @@ } }, "node_modules/prettier": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.0.tgz", - "integrity": "sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz", + "integrity": "sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -20103,9 +22713,9 @@ } }, "node_modules/rc-collapse": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/rc-collapse/-/rc-collapse-3.7.1.tgz", - "integrity": "sha512-N/7ejyiTf3XElNJBBpxqnZBUuMsQWEOPjB2QkfNvZ/Ca54eAvJXuOD1EGbCWCk2m7v/MSxku7mRpdeaLOCd4Gg==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/rc-collapse/-/rc-collapse-3.7.2.tgz", + "integrity": "sha512-ZRw6ipDyOnfLFySxAiCMdbHtb5ePAsB9mT17PA6y1mRD/W6KHRaZeb5qK/X9xDV1CqgyxMpzw0VdS74PCcUk4A==", "dependencies": { "@babel/runtime": "^7.10.1", "classnames": "2.x", @@ -20165,9 +22775,9 @@ } }, "node_modules/rc-field-form": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/rc-field-form/-/rc-field-form-1.40.0.tgz", - "integrity": "sha512-OM3N01X2BYFGJDJcwpk9/BBtlwgveE7eh2SQAKIxVCt9KVWlODYJ9ypTHQdxchfDbeJKJKxMBFXlLAmyvlgPHg==", + "version": "1.41.0", + "resolved": "https://registry.npmjs.org/rc-field-form/-/rc-field-form-1.41.0.tgz", + "integrity": "sha512-k9AS0wmxfJfusWDP/YXWTpteDNaQ4isJx9UKxx4/e8Dub4spFeZ54/EuN2sYrMRID/+hUznPgVZeg+Gf7XSYCw==", "dependencies": { "@babel/runtime": "^7.18.0", "async-validator": "^4.1.0", @@ -20247,9 +22857,9 @@ } }, "node_modules/rc-menu": { - "version": "9.12.2", - "resolved": "https://registry.npmjs.org/rc-menu/-/rc-menu-9.12.2.tgz", - "integrity": "sha512-NzloFH2pRUYmQ3S/YbJAvRkgCZaLvq0sRa5rgJtuIHLfPPprNHNyepeSlT64+dbVqI4qRWL44VN0lUCldCbbfg==", + "version": "9.12.4", + "resolved": "https://registry.npmjs.org/rc-menu/-/rc-menu-9.12.4.tgz", + "integrity": "sha512-t2NcvPLV1mFJzw4F21ojOoRVofK2rWhpKPx69q2raUsiHPDP6DDevsBILEYdsIegqBeSXoWs2bf6CueBKg3BFg==", "dependencies": { "@babel/runtime": "^7.10.1", "@rc-component/trigger": "^1.17.0", @@ -20311,13 +22921,13 @@ } }, "node_modules/rc-pagination": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/rc-pagination/-/rc-pagination-3.7.0.tgz", - "integrity": "sha512-IxSzKapd13L91/195o1TPkKnCNw8gIR25UP1GCW/7c7n/slhld4npu2j2PB9IWjXm4SssaAaSAt2lscYog7wzg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/rc-pagination/-/rc-pagination-4.0.3.tgz", + "integrity": "sha512-s1MNwyU83AgycikYckRdpmkN+4ZZuul0E0YdDp7dMgcjg/d2fak767ZIbLP4Q5YPPla7NDorfVFTvGQAPj6jXA==", "dependencies": { "@babel/runtime": "^7.10.1", - "classnames": "^2.2.1", - "rc-util": "^5.32.2" + "classnames": "^2.3.2", + "rc-util": "^5.38.0" }, "peerDependencies": { "react": ">=16.9.0", @@ -20443,9 +23053,9 @@ } }, "node_modules/rc-slider": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-10.4.0.tgz", - "integrity": "sha512-ZlpWjFhOlEf0w4Ng31avFBkXNNBj60NAcTPaIoiCxBkJ29wOtHSPMqv9PZeEoqmx64bpJkgK7kPa47HG4LPzww==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-10.5.0.tgz", + "integrity": "sha512-xiYght50cvoODZYI43v3Ylsqiw14+D7ELsgzR40boDZaya1HFa1Etnv9MDkQE8X/UrXAffwv2AcNAhslgYuDTw==", "dependencies": { "@babel/runtime": "^7.10.1", "classnames": "^2.2.5", @@ -20511,9 +23121,9 @@ } }, "node_modules/rc-tabs": { - "version": "12.13.1", - "resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-12.13.1.tgz", - "integrity": "sha512-83u3l2QkO0UznCzdBLEk9WnNcT+imtmDmMT993sUUEOGnNQAmqOdev0XjeqrcvsAMe9CDpAWDFd7L/RZw+LVJQ==", + "version": "12.14.1", + "resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-12.14.1.tgz", + "integrity": "sha512-1xlE7JQNYxD5RwBsM7jf2xSdUrkmTSDFLFEm2gqAgnsRlOGydEzXXNAVTOT6QcgM1G/gCm+AgG+FYPUGb4Hs4g==", "dependencies": { "@babel/runtime": "^7.11.2", "classnames": "2.x", @@ -20879,11 +23489,38 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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 + }, + "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, + "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==" }, + "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, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, "node_modules/regexp-match-indices": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regexp-match-indices/-/regexp-match-indices-1.0.2.tgz", @@ -20919,6 +23556,44 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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, + "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/regexpu-core/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/regexpu-core/node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, "node_modules/regjsparser": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.10.0.tgz", @@ -22642,6 +25317,7 @@ "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" } @@ -22977,14 +25653,14 @@ "node": ">=8" } }, - "node_modules/test-mocha": { - "resolved": "apps/test-mocha", - "link": true - }, "node_modules/test-wdio-cucumber": { "resolved": "apps/test-wdio-cucumber", "link": true }, + "node_modules/test-wdio-mocha": { + "resolved": "apps/test-wdio-mocha", + "link": true + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -23239,62 +25915,10 @@ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", "dev": true }, - "node_modules/ts-jest": { - "version": "29.1.1", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz", - "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==", - "dev": true, - "dependencies": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^29.0.0", - "json5": "^2.2.3", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "^7.5.3", - "yargs-parser": "^21.0.1" - }, - "bin": { - "ts-jest": "cli.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@jest/types": "^29.0.0", - "babel-jest": "^29.0.0", - "jest": "^29.0.0", - "typescript": ">=4.3 <6" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@jest/types": { - "optional": true - }, - "babel-jest": { - "optional": true - }, - "esbuild": { - "optional": true - } - } - }, - "node_modules/ts-jest/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, "node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -23526,26 +26150,26 @@ } }, "node_modules/turbo": { - "version": "1.10.16", - "resolved": "https://registry.npmjs.org/turbo/-/turbo-1.10.16.tgz", - "integrity": "sha512-2CEaK4FIuSZiP83iFa9GqMTQhroW2QryckVqUydmg4tx78baftTOS0O+oDAhvo9r9Nit4xUEtC1RAHoqs6ZEtg==", + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/turbo/-/turbo-1.11.2.tgz", + "integrity": "sha512-jPC7LVQJzebs5gWf8FmEvsvXGNyKbN+O9qpvv98xpNaM59aS0/Irhd0H0KbcqnXfsz7ETlzOC3R+xFWthC4Z8A==", "dev": true, "bin": { "turbo": "bin/turbo" }, "optionalDependencies": { - "turbo-darwin-64": "1.10.16", - "turbo-darwin-arm64": "1.10.16", - "turbo-linux-64": "1.10.16", - "turbo-linux-arm64": "1.10.16", - "turbo-windows-64": "1.10.16", - "turbo-windows-arm64": "1.10.16" + "turbo-darwin-64": "1.11.2", + "turbo-darwin-arm64": "1.11.2", + "turbo-linux-64": "1.11.2", + "turbo-linux-arm64": "1.11.2", + "turbo-windows-64": "1.11.2", + "turbo-windows-arm64": "1.11.2" } }, "node_modules/turbo-darwin-64": { - "version": "1.10.16", - "resolved": "https://registry.npmjs.org/turbo-darwin-64/-/turbo-darwin-64-1.10.16.tgz", - "integrity": "sha512-+Jk91FNcp9e9NCLYlvDDlp2HwEDp14F9N42IoW3dmHI5ZkGSXzalbhVcrx3DOox3QfiNUHxzWg4d7CnVNCuuMg==", + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/turbo-darwin-64/-/turbo-darwin-64-1.11.2.tgz", + "integrity": "sha512-toFmRG/adriZY3hOps7nYCfqHAS+Ci6xqgX3fbo82kkLpC6OBzcXnleSwuPqjHVAaRNhVoB83L5njcE9Qwi2og==", "cpu": [ "x64" ], @@ -23556,9 +26180,9 @@ ] }, "node_modules/turbo-darwin-arm64": { - "version": "1.10.16", - "resolved": "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-1.10.16.tgz", - "integrity": "sha512-jqGpFZipIivkRp/i+jnL8npX0VssE6IAVNKtu573LXtssZdV/S+fRGYA16tI46xJGxSAivrZ/IcgZrV6Jk80bw==", + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-1.11.2.tgz", + "integrity": "sha512-FCsEDZ8BUSFYEOSC3rrARQrj7x2VOrmVcfrMUIhexTxproRh4QyMxLfr6LALk4ymx6jbDCxWa6Szal8ckldFbA==", "cpu": [ "arm64" ], @@ -23569,9 +26193,9 @@ ] }, "node_modules/turbo-linux-64": { - "version": "1.10.16", - "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-1.10.16.tgz", - "integrity": "sha512-PpqEZHwLoizQ6sTUvmImcRmACyRk9EWLXGlqceogPZsJ1jTRK3sfcF9fC2W56zkSIzuLEP07k5kl+ZxJd8JMcg==", + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-1.11.2.tgz", + "integrity": "sha512-Vzda/o/QyEske5CxLf0wcu7UUS+7zB90GgHZV4tyN+WZtoouTvbwuvZ3V6b5Wgd3OJ/JwWR0CXDK7Sf4VEMr7A==", "cpu": [ "x64" ], @@ -23582,9 +26206,9 @@ ] }, "node_modules/turbo-linux-arm64": { - "version": "1.10.16", - "resolved": "https://registry.npmjs.org/turbo-linux-arm64/-/turbo-linux-arm64-1.10.16.tgz", - "integrity": "sha512-TMjFYz8to1QE0fKVXCIvG/4giyfnmqcQIwjdNfJvKjBxn22PpbjeuFuQ5kNXshUTRaTJihFbuuCcb5OYFNx4uw==", + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/turbo-linux-arm64/-/turbo-linux-arm64-1.11.2.tgz", + "integrity": "sha512-bRLwovQRz0yxDZrM4tQEAYV0fBHEaTzUF0JZ8RG1UmZt/CqtpnUrJpYb1VK8hj1z46z9YehARpYCwQ2K0qU4yw==", "cpu": [ "arm64" ], @@ -23595,9 +26219,9 @@ ] }, "node_modules/turbo-windows-64": { - "version": "1.10.16", - "resolved": "https://registry.npmjs.org/turbo-windows-64/-/turbo-windows-64-1.10.16.tgz", - "integrity": "sha512-+jsf68krs0N66FfC4/zZvioUap/Tq3sPFumnMV+EBo8jFdqs4yehd6+MxIwYTjSQLIcpH8KoNMB0gQYhJRLZzw==", + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/turbo-windows-64/-/turbo-windows-64-1.11.2.tgz", + "integrity": "sha512-LgTWqkHAKgyVuLYcEPxZVGPInTjjeCnN5KQMdJ4uQZ+xMDROvMFS2rM93iQl4ieDJgidwHCxxCxaU9u8c3d/Kg==", "cpu": [ "x64" ], @@ -23608,9 +26232,9 @@ ] }, "node_modules/turbo-windows-arm64": { - "version": "1.10.16", - "resolved": "https://registry.npmjs.org/turbo-windows-arm64/-/turbo-windows-arm64-1.10.16.tgz", - "integrity": "sha512-sKm3hcMM1bl0B3PLG4ifidicOGfoJmOEacM5JtgBkYM48ncMHjkHfFY7HrJHZHUnXM4l05RQTpLFoOl/uIo2HQ==", + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/turbo-windows-arm64/-/turbo-windows-arm64-1.11.2.tgz", + "integrity": "sha512-829aVBU7IX0c/B4G7g1VI8KniAGutHhIupkYMgF6xPkYVev2G3MYe6DMS/vsLt9GGM9ulDtdWxWrH5P2ngK8IQ==", "cpu": [ "arm64" ], @@ -23725,9 +26349,9 @@ "dev": true }, "node_modules/typescript": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz", - "integrity": "sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -23765,6 +26389,46 @@ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" }, + "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, + "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, + "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, + "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, + "engines": { + "node": ">=4" + } + }, "node_modules/unified": { "version": "10.1.2", "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", @@ -24802,8 +27466,8 @@ "defaults": "^1.0.3" } }, - "node_modules/wdio-graspit-reporter": { - "resolved": "packages/wdio-graspit-reporter", + "node_modules/wdio-handshake-reporter": { + "resolved": "packages/wdio-handshake-reporter", "link": true }, "node_modules/web-namespaces": { @@ -24829,19 +27493,19 @@ "integrity": "sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==" }, "node_modules/webdriver": { - "version": "8.24.5", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.24.5.tgz", - "integrity": "sha512-UGR3lyKodHRJt1IabMGVIUnmtYUIGgJMpye7RNVLFESEFq59HfWUCoWOjBb8vd4MVOoE8MUCR0ccMrkyvw8oTw==", + "version": "8.26.2", + "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.26.2.tgz", + "integrity": "sha512-3i+icym2m0EYRyJP9zbjoy2Npw3nNAK8iVC5VVo35lb9bFmyHoLsihxxsHnALgVRyBLahZV0Smh2dnVsePHOvw==", "dependencies": { "@types/node": "^20.1.0", "@types/ws": "^8.5.3", - "@wdio/config": "8.24.5", - "@wdio/logger": "8.16.17", - "@wdio/protocols": "8.23.0", - "@wdio/types": "8.24.2", - "@wdio/utils": "8.24.5", + "@wdio/config": "8.26.2", + "@wdio/logger": "8.24.12", + "@wdio/protocols": "8.24.12", + "@wdio/types": "8.26.2", + "@wdio/utils": "8.26.2", "deepmerge-ts": "^5.1.0", - "got": "^ 12.6.1", + "got": "^12.6.1", "ky": "^0.33.0", "ws": "^8.8.0" }, @@ -24850,28 +27514,38 @@ } }, "node_modules/webdriver/node_modules/@types/node": { - "version": "20.10.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.0.tgz", - "integrity": "sha512-D0WfRmU9TQ8I9PFx9Yc+EBHw+vSpIub4IDvQivcp26PtPrdMGAq5SDcpXEo/epqa/DXotVpekHiLNTg3iaKXBQ==", + "version": "20.10.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz", + "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==", "dependencies": { "undici-types": "~5.26.4" } }, + "node_modules/webdriver/node_modules/@wdio/types": { + "version": "8.26.2", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-8.26.2.tgz", + "integrity": "sha512-LBaoTr4jrPu9knQBN1/7BD3SLkaGoQPcbE3GKIxeaOu0fRMOtEr22HxoONahOlQDvyPoOBmSoZw8wUvIfwhrRw==", + "dependencies": { + "@types/node": "^20.1.0" + }, + "engines": { + "node": "^16.13 || >=18" + } + }, "node_modules/webdriver/node_modules/@wdio/utils": { - "version": "8.24.5", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.24.5.tgz", - "integrity": "sha512-QKhBkhxOmo7RU3MPYhmh/lXEEzYkgw+tULczBymw21QJP8se9/OLUv1a+29KDspS7c529oA0dptsNfWPsFH2/w==", + "version": "8.26.2", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.26.2.tgz", + "integrity": "sha512-QohaDMxsNunn6sWFBBtw2vSsoSfpbbjLAszW+iBLccpNGfRfHnaJ8HZ5gfsphMYnLfQe5lZRliIX5+8sSnjU1Q==", "dependencies": { "@puppeteer/browsers": "^1.6.0", - "@wdio/logger": "8.16.17", - "@wdio/types": "8.24.2", + "@wdio/logger": "8.24.12", + "@wdio/types": "8.26.2", "decamelize": "^6.0.0", "deepmerge-ts": "^5.1.0", "edgedriver": "^5.3.5", "geckodriver": "^4.2.0", "get-port": "^7.0.0", - "got": "^13.0.0", - "import-meta-resolve": "^3.0.0", + "import-meta-resolve": "^4.0.0", "locate-app": "^2.1.0", "safaridriver": "^0.1.0", "split2": "^4.2.0", @@ -24881,30 +27555,6 @@ "node": "^16.13 || >=18" } }, - "node_modules/webdriver/node_modules/@wdio/utils/node_modules/got": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/got/-/got-13.0.0.tgz", - "integrity": "sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==", - "dependencies": { - "@sindresorhus/is": "^5.2.0", - "@szmarczak/http-timer": "^5.0.1", - "cacheable-lookup": "^7.0.0", - "cacheable-request": "^10.2.8", - "decompress-response": "^6.0.0", - "form-data-encoder": "^2.1.2", - "get-stream": "^6.0.1", - "http2-wrapper": "^2.1.10", - "lowercase-keys": "^3.0.0", - "p-cancelable": "^3.0.0", - "responselike": "^3.0.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" - } - }, "node_modules/webdriver/node_modules/decamelize": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", @@ -24916,49 +27566,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/webdriver/node_modules/got": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", - "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", - "dependencies": { - "@sindresorhus/is": "^5.2.0", - "@szmarczak/http-timer": "^5.0.1", - "cacheable-lookup": "^7.0.0", - "cacheable-request": "^10.2.8", - "decompress-response": "^6.0.0", - "form-data-encoder": "^2.1.2", - "get-stream": "^6.0.1", - "http2-wrapper": "^2.1.10", - "lowercase-keys": "^3.0.0", - "p-cancelable": "^3.0.0", - "responselike": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" - } - }, "node_modules/webdriverio": { - "version": "8.24.5", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.24.5.tgz", - "integrity": "sha512-HGkxeC6x520d+SItIDolKz94dbjYSqD4Q10DuXalotxFjwDkDKiY/7RBWCVa5h0QMBJO0r068yv/7XY2+rdosg==", + "version": "8.26.2", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.26.2.tgz", + "integrity": "sha512-kjSl3g6K0ieVt2np6dDJxsIb80kVKlKX6NNcBzQdAVrLcydRt4ibPa5oYalap9X2PgxA9I5Kae+ZTeM+d4f71w==", "dependencies": { "@types/node": "^20.1.0", - "@wdio/config": "8.24.5", - "@wdio/logger": "8.16.17", - "@wdio/protocols": "8.23.0", - "@wdio/repl": "8.23.1", - "@wdio/types": "8.24.2", - "@wdio/utils": "8.24.5", + "@wdio/config": "8.26.2", + "@wdio/logger": "8.24.12", + "@wdio/protocols": "8.24.12", + "@wdio/repl": "8.24.12", + "@wdio/types": "8.26.2", + "@wdio/utils": "8.26.2", "archiver": "^6.0.0", "aria-query": "^5.0.0", "css-shorthand-properties": "^1.1.1", "css-value": "^0.0.1", - "devtools-protocol": "^0.0.1213968", + "devtools-protocol": "^0.0.1235375", "grapheme-splitter": "^1.0.2", - "import-meta-resolve": "^3.0.0", + "import-meta-resolve": "^4.0.0", "is-plain-obj": "^4.1.0", "lodash.clonedeep": "^4.5.0", "lodash.zip": "^4.2.0", @@ -24968,7 +27594,7 @@ "resq": "^1.9.1", "rgb2hex": "0.2.5", "serialize-error": "^11.0.1", - "webdriver": "8.24.5" + "webdriver": "8.26.2" }, "engines": { "node": "^16.13 || >=18" @@ -24983,28 +27609,38 @@ } }, "node_modules/webdriverio/node_modules/@types/node": { - "version": "20.10.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.0.tgz", - "integrity": "sha512-D0WfRmU9TQ8I9PFx9Yc+EBHw+vSpIub4IDvQivcp26PtPrdMGAq5SDcpXEo/epqa/DXotVpekHiLNTg3iaKXBQ==", + "version": "20.10.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz", + "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==", "dependencies": { "undici-types": "~5.26.4" } }, + "node_modules/webdriverio/node_modules/@wdio/types": { + "version": "8.26.2", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-8.26.2.tgz", + "integrity": "sha512-LBaoTr4jrPu9knQBN1/7BD3SLkaGoQPcbE3GKIxeaOu0fRMOtEr22HxoONahOlQDvyPoOBmSoZw8wUvIfwhrRw==", + "dependencies": { + "@types/node": "^20.1.0" + }, + "engines": { + "node": "^16.13 || >=18" + } + }, "node_modules/webdriverio/node_modules/@wdio/utils": { - "version": "8.24.5", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.24.5.tgz", - "integrity": "sha512-QKhBkhxOmo7RU3MPYhmh/lXEEzYkgw+tULczBymw21QJP8se9/OLUv1a+29KDspS7c529oA0dptsNfWPsFH2/w==", + "version": "8.26.2", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.26.2.tgz", + "integrity": "sha512-QohaDMxsNunn6sWFBBtw2vSsoSfpbbjLAszW+iBLccpNGfRfHnaJ8HZ5gfsphMYnLfQe5lZRliIX5+8sSnjU1Q==", "dependencies": { "@puppeteer/browsers": "^1.6.0", - "@wdio/logger": "8.16.17", - "@wdio/types": "8.24.2", + "@wdio/logger": "8.24.12", + "@wdio/types": "8.26.2", "decamelize": "^6.0.0", "deepmerge-ts": "^5.1.0", "edgedriver": "^5.3.5", "geckodriver": "^4.2.0", "get-port": "^7.0.0", - "got": "^13.0.0", - "import-meta-resolve": "^3.0.0", + "import-meta-resolve": "^4.0.0", "locate-app": "^2.1.0", "safaridriver": "^0.1.0", "split2": "^4.2.0", @@ -25384,9 +28020,9 @@ } }, "node_modules/ws": { - "version": "8.14.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", - "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", + "version": "8.15.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.15.1.tgz", + "integrity": "sha512-W5OZiCjXEmk0yZ66ZN82beM5Sz7l7coYxpRkzS+p9PP+ToQry8szKh+61eNktr7EA9DOwvFGhfC605jDHbP6QQ==", "engines": { "node": ">=10.0.0" }, @@ -25610,47 +28246,80 @@ "url": "https://github.com/sponsors/wooorm" } }, - "packages/graspit-commons": { - "version": "3.3.1", + "packages/common-handshakes": { + "version": "0.3.0", "hasInstallScript": true, "license": "MIT", "dependencies": { - "async-lock": "^1.4.0", "cross-env": "^7.0.3", - "graspit": "3.3.1", "log4js": "^6.9.1", + "p-queue": "^8.0.1", "superagent": "^8.1.2" }, "bin": { - "graspit": "feed.cjs" + "handshake": "feed.cjs" }, "devDependencies": { + "@babel/core": "^7.23.6", + "@babel/preset-env": "^7.23.6", + "@babel/preset-typescript": "^7.23.3", "@jest/globals": "^29.7.0", "@tsconfig/node18": "^18.2.2", "@types/async-lock": "^1.4.2", - "@types/jest": "^29.5.10", + "@types/jest": "^29.5.11", "@types/mocha": "^10.0.6", - "@types/node": "^20.10.0", + "@types/node": "^20.10.4", "@types/superagent": "^4.1.24", "@types/supertest": "^2.0.16", "babel-jest": "^29.7.0", + "babel-plugin-transform-import-meta": "^2.2.1", "jest": "^29.7.0", - "ts-jest": "^29.1.1", - "typescript": "^5.3.2" + "rimraf": "^5.0.5", + "typescript": "^5.3.3" } }, - "packages/graspit-commons/node_modules/@types/node": { - "version": "20.10.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.0.tgz", - "integrity": "sha512-D0WfRmU9TQ8I9PFx9Yc+EBHw+vSpIub4IDvQivcp26PtPrdMGAq5SDcpXEo/epqa/DXotVpekHiLNTg3iaKXBQ==", + "packages/common-handshakes/node_modules/@types/node": { + "version": "20.10.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz", + "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==", "dev": true, "dependencies": { "undici-types": "~5.26.4" } }, + "packages/graspit-commons": { + "version": "3.4.6", + "extraneous": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "cross-env": "^7.0.3", + "graspit": "3.4.6", + "log4js": "^6.9.1", + "p-queue": "^7.4.1", + "superagent": "^8.1.2" + }, + "bin": { + "graspit": "feed.cjs" + }, + "devDependencies": { + "@jest/globals": "^29.7.0", + "@tsconfig/node18": "^18.2.2", + "@types/async-lock": "^1.4.2", + "@types/jest": "^29.5.10", + "@types/mocha": "^10.0.6", + "@types/node": "^20.10.2", + "@types/superagent": "^4.1.24", + "@types/supertest": "^2.0.16", + "babel-jest": "^29.7.0", + "jest": "^29.7.0", + "ts-jest": "^29.1.1", + "typescript": "^5.3.2" + } + }, "packages/graspit-dashboard": { "name": "graspit", - "version": "3.3.1", + "version": "3.4.6", "license": "MIT", "dependencies": { "@ant-design/icons": "^5.2.6", @@ -25694,146 +28363,6 @@ "ts-node": "^10.9.1" } }, - "packages/graspit-dashboard/node_modules/@next/env": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/@next/env/-/env-14.0.3.tgz", - "integrity": "sha512-7xRqh9nMvP5xrW4/+L0jgRRX+HoNRGnfJpD+5Wq6/13j3dsdzxO3BCXn7D3hMqsDb+vjZnJq+vI7+EtgrYZTeA==" - }, - "packages/graspit-dashboard/node_modules/@next/swc-darwin-arm64": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.0.3.tgz", - "integrity": "sha512-64JbSvi3nbbcEtyitNn2LEDS/hcleAFpHdykpcnrstITFlzFgB/bW0ER5/SJJwUPj+ZPY+z3e+1jAfcczRLVGw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "packages/graspit-dashboard/node_modules/@next/swc-darwin-x64": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.0.3.tgz", - "integrity": "sha512-RkTf+KbAD0SgYdVn1XzqE/+sIxYGB7NLMZRn9I4Z24afrhUpVJx6L8hsRnIwxz3ERE2NFURNliPjJ2QNfnWicQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "packages/graspit-dashboard/node_modules/@next/swc-linux-arm64-gnu": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.0.3.tgz", - "integrity": "sha512-3tBWGgz7M9RKLO6sPWC6c4pAw4geujSwQ7q7Si4d6bo0l6cLs4tmO+lnSwFp1Tm3lxwfMk0SgkJT7EdwYSJvcg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "packages/graspit-dashboard/node_modules/@next/swc-linux-arm64-musl": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.0.3.tgz", - "integrity": "sha512-v0v8Kb8j8T23jvVUWZeA2D8+izWspeyeDGNaT2/mTHWp7+37fiNfL8bmBWiOmeumXkacM/AB0XOUQvEbncSnHA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "packages/graspit-dashboard/node_modules/@next/swc-linux-x64-gnu": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.0.3.tgz", - "integrity": "sha512-VM1aE1tJKLBwMGtyBR21yy+STfl0MapMQnNrXkxeyLs0GFv/kZqXS5Jw/TQ3TSUnbv0QPDf/X8sDXuMtSgG6eg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "packages/graspit-dashboard/node_modules/@next/swc-linux-x64-musl": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.0.3.tgz", - "integrity": "sha512-64EnmKy18MYFL5CzLaSuUn561hbO1Gk16jM/KHznYP3iCIfF9e3yULtHaMy0D8zbHfxset9LTOv6cuYKJgcOxg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "packages/graspit-dashboard/node_modules/@next/swc-win32-arm64-msvc": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.0.3.tgz", - "integrity": "sha512-WRDp8QrmsL1bbGtsh5GqQ/KWulmrnMBgbnb+59qNTW1kVi1nG/2ndZLkcbs2GX7NpFLlToLRMWSQXmPzQm4tog==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "packages/graspit-dashboard/node_modules/@next/swc-win32-ia32-msvc": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.0.3.tgz", - "integrity": "sha512-EKffQeqCrj+t6qFFhIFTRoqb2QwX1mU7iTOvMyLbYw3QtqTw9sMwjykyiMlZlrfm2a4fA84+/aeW+PMg1MjuTg==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "packages/graspit-dashboard/node_modules/@next/swc-win32-x64-msvc": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.0.3.tgz", - "integrity": "sha512-ERhKPSJ1vQrPiwrs15Pjz/rvDHZmkmvbf/BjPN/UCOI++ODftT0GtasDPi0j+y6PPJi5HsXw+dpRaXUaw4vjuQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, "packages/graspit-dashboard/node_modules/@types/node": { "version": "20.10.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.0.tgz", @@ -25842,89 +28371,121 @@ "undici-types": "~5.26.4" } }, - "packages/graspit-dashboard/node_modules/embla-carousel": { - "version": "8.0.0-rc15", - "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.0.0-rc15.tgz", - "integrity": "sha512-s7VPexK2h8VEYjEVQFnJAPcRnY5YqJYicFxKVVyWXP3Hk9FFDkT0kqVxMM1PcL187qHOUgmGVHOrfC8xWy3OKQ==", - "peer": true + "packages/handshake-dashboard": { + "version": "0.3.0", + "license": "MIT", + "dependencies": { + "@ant-design/icons": "^5.2.6", + "@tsconfig/node18": "^18.2.2", + "@types/echarts": "^4.9.22", + "@types/node": "20.10.4", + "@types/react": "18.2.45", + "@types/react-dom": "18.2.17", + "ansi-to-html": "^0.7.2", + "antd": "^5.12.2", + "clsx": "^2.0.0", + "cross-env": "^7.0.3", + "dayjs": "^1.11.10", + "echarts": "^5.4.3", + "echarts-for-react": "^3.0.2", + "embla-carousel-autoplay": "^8.0.0-rc15", + "embla-carousel-react": "^8.0.0-rc15", + "log4js": "^6.9.1", + "next": "^14.0.4", + "react": "18.2.0", + "react-countup": "^6.5.0", + "react-dom": "18.2.0", + "sqlite": "^5.1.1", + "sqlite3": "^5.1.6", + "swr": "^2.2.4", + "tslib": "^2.6.2", + "typescript": "^5.3.3" + }, + "devDependencies": { + "@ant-design/static-style-extract": "~1.0.2", + "@next/eslint-plugin-next": "^14.0.4", + "@typescript-eslint/eslint-plugin": "^6.14.0", + "@typescript-eslint/parser": "^6.14.0", + "eslint": "^8.55.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-jsx-a11y": "^6.8.0", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-unicorn": "^49.0.0", + "prettier": "^3.1.1", + "ts-node": "^10.9.2" + } }, - "packages/graspit-dashboard/node_modules/embla-carousel-autoplay": { - "version": "8.0.0-rc15", - "resolved": "https://registry.npmjs.org/embla-carousel-autoplay/-/embla-carousel-autoplay-8.0.0-rc15.tgz", - "integrity": "sha512-ABTbDJGNb9jzI9OV2vSpbUvxUA0ELmK0SI3yPm8Haj3ghssS+vElfahoDqp7zuFkWBRih6w3B51oMPKdF5J55A==", - "peerDependencies": { - "embla-carousel": "8.0.0-rc15" + "packages/handshake-dashboard/node_modules/@types/node": { + "version": "20.10.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz", + "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==", + "dependencies": { + "undici-types": "~5.26.4" } }, - "packages/graspit-dashboard/node_modules/next": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/next/-/next-14.0.3.tgz", - "integrity": "sha512-AbYdRNfImBr3XGtvnwOxq8ekVCwbFTv/UJoLwmaX89nk9i051AEY4/HAWzU0YpaTDw8IofUpmuIlvzWF13jxIw==", + "packages/handshake-dashboard/node_modules/@types/react": { + "version": "18.2.45", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.45.tgz", + "integrity": "sha512-TtAxCNrlrBp8GoeEp1npd5g+d/OejJHFxS3OWmrPBMFaVQMSN0OFySozJio5BHxTuTeug00AVXVAjfDSfk+lUg==", "dependencies": { - "@next/env": "14.0.3", - "@swc/helpers": "0.5.2", - "busboy": "1.6.0", - "caniuse-lite": "^1.0.30001406", - "postcss": "8.4.31", - "styled-jsx": "5.1.1", - "watchpack": "2.4.0" - }, - "bin": { - "next": "dist/bin/next" - }, - "engines": { - "node": ">=18.17.0" - }, - "optionalDependencies": { - "@next/swc-darwin-arm64": "14.0.3", - "@next/swc-darwin-x64": "14.0.3", - "@next/swc-linux-arm64-gnu": "14.0.3", - "@next/swc-linux-arm64-musl": "14.0.3", - "@next/swc-linux-x64-gnu": "14.0.3", - "@next/swc-linux-x64-musl": "14.0.3", - "@next/swc-win32-arm64-msvc": "14.0.3", - "@next/swc-win32-ia32-msvc": "14.0.3", - "@next/swc-win32-x64-msvc": "14.0.3" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.1.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "sass": "^1.3.0" - }, - "peerDependenciesMeta": { - "@opentelemetry/api": { - "optional": true - }, - "sass": { - "optional": true - } + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" } }, "packages/wdio-graspit-reporter": { - "version": "3.3.1", + "name": "wdio-handshake-reporter", + "version": "0.1.0", + "extraneous": true, "license": "MIT", "dependencies": { - "@wdio/reporter": "^8.24.2", - "@wdio/types": "^8.24.2", - "graspit-commons": "3.3.1", + "@wdio/reporter": "^8.24.12", + "@wdio/types": "^8.24.12", + "common-handshakes": "0.1.0", "log4js": "^6.9.1", "superagent": "^8.1.2" }, "devDependencies": { "@types/async-lock": "^1.4.2", - "@types/node": "^20.10.0", + "@types/node": "^20.10.4", "@types/superagent": "^4.1.24" } }, - "packages/wdio-graspit-reporter/node_modules/@types/node": { - "version": "20.10.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.0.tgz", - "integrity": "sha512-D0WfRmU9TQ8I9PFx9Yc+EBHw+vSpIub4IDvQivcp26PtPrdMGAq5SDcpXEo/epqa/DXotVpekHiLNTg3iaKXBQ==", - "dev": true, + "packages/wdio-handshake-reporter": { + "version": "0.3.0", + "license": "MIT", + "dependencies": { + "@wdio/reporter": "^8.26.2", + "@wdio/types": "^8.26.2", + "common-handshakes": "0.3.0", + "log4js": "^6.9.1", + "superagent": "^8.1.2" + }, + "devDependencies": { + "@types/async-lock": "^1.4.2", + "@types/node": "^20.10.4", + "@types/superagent": "^4.1.24" + } + }, + "packages/wdio-handshake-reporter/node_modules/@types/node": { + "version": "20.10.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz", + "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==", "dependencies": { "undici-types": "~5.26.4" } + }, + "packages/wdio-handshake-reporter/node_modules/@wdio/types": { + "version": "8.26.2", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-8.26.2.tgz", + "integrity": "sha512-LBaoTr4jrPu9knQBN1/7BD3SLkaGoQPcbE3GKIxeaOu0fRMOtEr22HxoONahOlQDvyPoOBmSoZw8wUvIfwhrRw==", + "dependencies": { + "@types/node": "^20.1.0" + }, + "engines": { + "node": "^16.13 || >=18" + } } } } diff --git a/graspit-reporters/package.json b/handshake-nodejs-reporters/package.json similarity index 61% rename from graspit-reporters/package.json rename to handshake-nodejs-reporters/package.json index a7a84ad6..591a5935 100644 --- a/graspit-reporters/package.json +++ b/handshake-nodejs-reporters/package.json @@ -1,5 +1,5 @@ { - "name": "graspit-reporters", + "name": "handshake-reporters", "packageManager": "npm@9.6.2", "type": "module", "workspaces": [ @@ -14,26 +14,19 @@ "test": "npm run build && turbo run test --concurrency=1 --continue", "lint": "turbo run lint", "format": "prettier --write \"**/*.{ts,tsx,md}\"", - "wdio": "wdio run ./apps\\test-mocha\\wdio.conf.js", - "publish": "turbo run build lint && changeset version && changeset publish", - "generate-report": "graspit export --out ./dist ../TestResults", - "view-report": "graspit display ./dist" + "publish": "turbo run build lint && changeset version && changeset publish" }, "devDependencies": { "@changesets/cli": "^2.27.1", - "@typescript-eslint/eslint-plugin": "^6.13.1", - "@typescript-eslint/parser": "^6.13.1", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^6.14.0", + "@typescript-eslint/parser": "^6.14.0", + "eslint": "^8.56.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-airbnb-typescript": "^17.1.0", "eslint-plugin-unicorn": "^49.0.0", - "prettier": "^3.1.0", - "rimraf": "^5.0.5", + "prettier": "^3.1.1", "tsconfig": "7.0.0", "tsup": "^8.0.1", - "turbo": "^1.10.16" - }, - "dependencies": { - "log4js": "^6.9.1" + "turbo": "^1.11.2" } -} +} \ No newline at end of file diff --git a/graspit-reporters/packages/graspit-commons/.eslintignore b/handshake-nodejs-reporters/packages/common-handshakes/.eslintignore similarity index 100% rename from graspit-reporters/packages/graspit-commons/.eslintignore rename to handshake-nodejs-reporters/packages/common-handshakes/.eslintignore diff --git a/graspit-reporters/packages/graspit-commons/.eslintrc b/handshake-nodejs-reporters/packages/common-handshakes/.eslintrc similarity index 100% rename from graspit-reporters/packages/graspit-commons/.eslintrc rename to handshake-nodejs-reporters/packages/common-handshakes/.eslintrc diff --git a/graspit-reporters/packages/graspit-commons/.npmignore b/handshake-nodejs-reporters/packages/common-handshakes/.npmignore similarity index 100% rename from graspit-reporters/packages/graspit-commons/.npmignore rename to handshake-nodejs-reporters/packages/common-handshakes/.npmignore diff --git a/handshake-nodejs-reporters/packages/common-handshakes/.version b/handshake-nodejs-reporters/packages/common-handshakes/.version new file mode 100644 index 00000000..bd8fed3b --- /dev/null +++ b/handshake-nodejs-reporters/packages/common-handshakes/.version @@ -0,0 +1 @@ +[{"url":"https://api.github.com/repos/RahulARanger/handshake/releases/assets/141010396","id":141010396,"node_id":"RA_kwDOKgpJeM4IZ6Xc","name":"handshake-Darwin","label":"","content_type":"application/octet-stream","state":"uploaded","size":17667232,"download_count":0,"created_at":"2023-12-16T14:58:41Z","updated_at":"2023-12-16T14:58:42Z","browser_download_url":"https://github.com/RahulARanger/handshake/releases/download/0.1.1/handshake-Darwin"},{"url":"https://api.github.com/repos/RahulARanger/handshake/releases/assets/141010395","id":141010395,"node_id":"RA_kwDOKgpJeM4IZ6Xb","name":"handshake-Linux","label":"","content_type":"application/octet-stream","state":"uploaded","size":31738016,"download_count":0,"created_at":"2023-12-16T14:58:41Z","updated_at":"2023-12-16T14:58:42Z","browser_download_url":"https://github.com/RahulARanger/handshake/releases/download/0.1.1/handshake-Linux"},{"url":"https://api.github.com/repos/RahulARanger/handshake/releases/assets/141010397","id":141010397,"node_id":"RA_kwDOKgpJeM4IZ6Xd","name":"handshake-Windows.exe","label":"","content_type":"application/octet-stream","state":"uploaded","size":17073149,"download_count":0,"created_at":"2023-12-16T14:58:41Z","updated_at":"2023-12-16T14:58:42Z","browser_download_url":"https://github.com/RahulARanger/handshake/releases/download/0.1.1/handshake-Windows.exe"}] diff --git a/graspit-reporters/packages/graspit-commons/.vscode/settings.json b/handshake-nodejs-reporters/packages/common-handshakes/.vscode/settings.json similarity index 100% rename from graspit-reporters/packages/graspit-commons/.vscode/settings.json rename to handshake-nodejs-reporters/packages/common-handshakes/.vscode/settings.json diff --git a/handshake-nodejs-reporters/packages/common-handshakes/CHANGELOG.md b/handshake-nodejs-reporters/packages/common-handshakes/CHANGELOG.md new file mode 100644 index 00000000..6d24c778 --- /dev/null +++ b/handshake-nodejs-reporters/packages/common-handshakes/CHANGELOG.md @@ -0,0 +1,19 @@ +# common-handshakes + +## 0.3.1 + +### Patch Changes + +- 1665f70: bump server-build + +## 0.3.0 + +### Minor Changes + +- renamed handshake to handshake-dashboard + +## 0.2.0 + +### Minor Changes + +- 6bd9175: Created handshake project, it's aim is to ease the report generation. diff --git a/handshake-nodejs-reporters/packages/common-handshakes/babel.config.cjs b/handshake-nodejs-reporters/packages/common-handshakes/babel.config.cjs new file mode 100644 index 00000000..008cc68b --- /dev/null +++ b/handshake-nodejs-reporters/packages/common-handshakes/babel.config.cjs @@ -0,0 +1,11 @@ +module.exports = { + presets: [ + [ + '@babel/preset-env', { targets: { node: 'current' } }, + ], + '@babel/preset-typescript', + ], + plugins: [ + 'babel-plugin-transform-import-meta'], + +}; diff --git a/graspit-reporters/packages/graspit-commons/base.json b/handshake-nodejs-reporters/packages/common-handshakes/base.json similarity index 100% rename from graspit-reporters/packages/graspit-commons/base.json rename to handshake-nodejs-reporters/packages/common-handshakes/base.json diff --git a/handshake-nodejs-reporters/packages/common-handshakes/feed.cjs b/handshake-nodejs-reporters/packages/common-handshakes/feed.cjs new file mode 100644 index 00000000..0e23740e --- /dev/null +++ b/handshake-nodejs-reporters/packages/common-handshakes/feed.cjs @@ -0,0 +1,9 @@ +#!/usr/bin/env node +const { spawnSync } = require('child_process'); +const { join } = require('path'); +const { platform } = require('os'); +const { getBinPath } = require('./installation/get_path.cjs'); + +const args = process.argv.slice(2); +const executable = platform() === 'win32' ? 'handshake.exe' : 'handshake'; +spawnSync(join(getBinPath(), executable), args, { stdio: 'inherit', env: process.env }); diff --git a/handshake-nodejs-reporters/packages/common-handshakes/installation/download_build.cjs b/handshake-nodejs-reporters/packages/common-handshakes/installation/download_build.cjs new file mode 100644 index 00000000..6bf4fbfa --- /dev/null +++ b/handshake-nodejs-reporters/packages/common-handshakes/installation/download_build.cjs @@ -0,0 +1,23 @@ +const { + createWriteStream, chmodSync, +} = require('node:fs'); +const superagent = require('superagent'); +const { join } = require('node:path'); + +const { getPath, getBinPath, getVersionFromNames } = require('./get_path.cjs'); + +const versionFromNames = getVersionFromNames(); + +const [interest, exeName] = getPath(); +const exe = join(getBinPath(), exeName); +const stream = createWriteStream(exe); + +(async () => { + await superagent + .get(versionFromNames[interest].browser_download_url) + .pipe(stream).on('close', () => { + if (!exe.endsWith('.exe')) chmodSync(exe, 755); + }); +})(); + +module.exports.default = versionFromNames; diff --git a/handshake-nodejs-reporters/packages/common-handshakes/installation/get_path.cjs b/handshake-nodejs-reporters/packages/common-handshakes/installation/get_path.cjs new file mode 100644 index 00000000..fb340ec0 --- /dev/null +++ b/handshake-nodejs-reporters/packages/common-handshakes/installation/get_path.cjs @@ -0,0 +1,60 @@ +const { join, dirname } = require('node:path'); +const { platform } = require('node:os'); +const { exit } = require('node:process'); +const { existsSync, mkdirSync, readFileSync } = require('node:fs'); + +function getPath() { + let interest; + let exeName = 'handshake'; + + switch (platform()) { + case 'win32': { + interest = 'handshake-Windows.exe'; + exeName = 'handshake.exe'; // removing .exe makes its unusable + break; + } + case 'darwin': { + interest = 'handshake-Darwin'; + break; + } + case 'linux': { + interest = 'handshake-Linux'; + break; + } + default: { + console.warn(`yet to be supported for: ${platform()}`); + exit(0); + } + } + + return [interest, exeName]; +} + +function getBinPath() { + return join(dirname(dirname(__filename)), 'bin'); +} + +function getVersionFromNames() { + /** + * @typedef {{url: string; +* id: number; name: 'Windows.exe' | 'Darwin'; +* label: string; content_type: string; state: 'uploaded'; size: number; download_count: number; +* created_at: string; +* updated_at: string; +* browser_download_url: string;}} Asset +* @type {Record} +*/ + const versionFromNames = {}; + + const root = getBinPath(); + if (!existsSync(root)) { + mkdirSync(root); + } + + (JSON.parse(readFileSync(join(dirname(root), '.version')).toString())).forEach( + (dist) => { versionFromNames[dist.name] = dist; }, + ); + return versionFromNames; +} + +module.exports = { getBinPath, getPath, getVersionFromNames }; diff --git a/handshake-nodejs-reporters/packages/common-handshakes/jest.config.mjs b/handshake-nodejs-reporters/packages/common-handshakes/jest.config.mjs new file mode 100644 index 00000000..3fac4773 --- /dev/null +++ b/handshake-nodejs-reporters/packages/common-handshakes/jest.config.mjs @@ -0,0 +1,196 @@ +/** + * For a detailed explanation regarding each configuration property, visit: + * https://jestjs.io/docs/configuration + */ + +/** @type {import('jest').Config} */ +const config = { + // All imported modules in your tests should be mocked automatically + // automock: false, + + // Stop running tests after `n` failures + // bail: 0, + + // The directory where Jest should store its cached dependency information + // cacheDirectory: "C:\\Users\\Rahul\\AppData\\Local\\Temp\\jest", + + // Automatically clear mock calls, instances, contexts and results before every test + clearMocks: true, + + // Indicates whether the coverage information should be collected while executing the test + collectCoverage: true, + + // An array of glob patterns indicating a set of files for which coverage information should be collected + // collectCoverageFrom: undefined, + + // The directory where Jest should output its coverage files + coverageDirectory: 'coverage', + + // An array of regexp pattern strings used to skip coverage collection + // coveragePathIgnorePatterns: [ + // "\\\\node_modules\\\\" + // ], + + // Indicates which provider should be used to instrument code for coverage + coverageProvider: 'v8', + + // A list of reporter names that Jest uses when writing coverage reports + // coverageReporters: [ + // "json", + // "text", + // "lcov", + // "clover" + // ], + + // An object that configures minimum threshold enforcement for coverage results + // coverageThreshold: undefined, + + // A path to a custom dependency extractor + // dependencyExtractor: undefined, + + // Make calling deprecated APIs throw helpful error messages + errorOnDeprecated: true, + + // The default configuration for fake timers + // fakeTimers: { + // "enableGlobally": false + // }, + + // Force coverage collection from ignored files using an array of glob patterns + // forceCoverageMatch: [], + + // A path to a module which exports an async function that is triggered once before all test suites + // globalSetup: undefined, + + // A path to a module which exports an async function that is triggered once after all test suites + // globalTeardown: undefined, + + // A set of global variables that need to be available in all test environments + // globals: {}, + + // The maximum amount of workers used to run your tests. Can be specified as % or a number. E.g. maxWorkers: 10% will use 10% of your CPU amount + 1 as the maximum worker number. maxWorkers: 2 will use a maximum of 2 workers. + // maxWorkers: "50%", + + // An array of directory names to be searched recursively up from the requiring module's location + // moduleDirectories: [ + // "node_modules" + // ], + + // An array of file extensions your modules use + // moduleFileExtensions: [ + // "js", + // "mjs", + // "cjs", + // "jsx", + // "ts", + // "tsx", + // "json", + // "node" + // ], + + // A map from regular expressions to module names or to arrays of module names that allow to stub out resources with a single module + // moduleNameMapper: {}, + + // An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader + // modulePathIgnorePatterns: [], + + // Activates notifications for test results + // notify: false, + + // An enum that specifies notification mode. Requires { notify: true } + // notifyMode: "failure-change", + + // A preset that is used as a base for Jest's configuration + // preset: undefined, + + // Run tests from one or more projects + // projects: undefined, + + // Use this configuration option to add custom reporters to Jest + // reporters: undefined, + + // Automatically reset mock state before every test + // resetMocks: false, + + // Reset the module registry before running each individual test + // resetModules: false, + + // A path to a custom resolver + // resolver: undefined, + + // Automatically restore mock state and implementation before every test + // restoreMocks: false, + + // The root directory that Jest should scan for tests and modules within + // rootDir: undefined, + + // A list of paths to directories that Jest should use to search for files in + // roots: [ + // "" + // ], + + // Allows you to use a custom runner instead of Jest's default test runner + // runner: "jest-runner", + + // The paths to modules that run some code to configure or set up the testing environment before each test + // setupFiles: [], + + // A list of paths to modules that run some code to configure or set up the testing framework before each test + // setupFilesAfterEnv: [], + + // The number of seconds after which a test is considered as slow and reported as such in the results. + // slowTestThreshold: 5, + + // A list of paths to snapshot serializer modules Jest should use for snapshot testing + // snapshotSerializers: [], + + // The test environment that will be used for testing + // testEnvironment: "jest-environment-node", + + // Options that will be passed to the testEnvironment + // testEnvironmentOptions: {}, + + // Adds a location field to test results + // testLocationInResults: false, + + // The glob patterns Jest uses to detect test files + testMatch: [ + '**/?(*.)+(spec|test).[tj]s?(x)', + ], + + // An array of regexp pattern strings that are matched against all test paths, matched tests are skipped + // testPathIgnorePatterns: [ + // "\\\\node_modules\\\\" + // ], + + // The regexp pattern or array of patterns that Jest uses to detect test files + // testRegex: [], + + // This option allows the use of a custom results processor + // testResultsProcessor: undefined, + + // This option allows use of a custom test runner + // testRunner: "jest-circus/runner", + + // A map from regular expressions to paths to transformers + // transform: undefined, + + // An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation + transformIgnorePatterns: [ + '../../node_modules/(?!(eventemitter3)/)', + ], + + // An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them + // unmockedModulePathPatterns: undefined, + + // Indicates whether each individual test should be reported during the run + // verbose: undefined, + + // An array of regexp patterns that are matched against all source file paths before re-running tests in watch mode + // watchPathIgnorePatterns: [], + + // Whether to use watchman for file crawling + // watchman: true, +}; + +export default config; diff --git a/graspit-reporters/packages/graspit-commons/node.json b/handshake-nodejs-reporters/packages/common-handshakes/node.json similarity index 94% rename from graspit-reporters/packages/graspit-commons/node.json rename to handshake-nodejs-reporters/packages/common-handshakes/node.json index 0218b6ae..d6ad9f28 100644 --- a/graspit-reporters/packages/graspit-commons/node.json +++ b/handshake-nodejs-reporters/packages/common-handshakes/node.json @@ -5,7 +5,7 @@ "declaration": true, "declarationMap": true, "resolveJsonModule": true, - "removeComments": false, + "removeComments": true, "strictFunctionTypes": false, "experimentalDecorators": true, "esModuleInterop": true, diff --git a/handshake-nodejs-reporters/packages/common-handshakes/package.json b/handshake-nodejs-reporters/packages/common-handshakes/package.json new file mode 100644 index 00000000..564facef --- /dev/null +++ b/handshake-nodejs-reporters/packages/common-handshakes/package.json @@ -0,0 +1,50 @@ +{ + "name": "common-handshakes", + "version": "0.3.1", + "private": false, + "type": "module", + "license": "MIT", + "types": "./dist/index.d.ts", + "readme": "../../README.md", + "description": "does a handshake with the server, shares the desired results with it.", + "bin": { + "handshake": "./feed.cjs" + }, + "exports": { + ".": { + "default": "./dist/index.js" + }, + "./node.json": "./node.json" + }, + "scripts": { + "lint": "eslint src/**", + "test": "npx jest", + "sanity": "npm run test", + "build": "rimraf -g ./dist && tsup src/index.ts --format esm --dts", + "install": "node ./installation/download_build.cjs" + }, + "dependencies": { + "cross-env": "^7.0.3", + "log4js": "^6.9.1", + "p-queue": "^8.0.1", + "superagent": "^8.1.2" + }, + "devDependencies": { + "@babel/core": "^7.23.6", + "@babel/preset-env": "^7.23.6", + "@babel/preset-typescript": "^7.23.3", + "@jest/globals": "^29.7.0", + "@tsconfig/node18": "^18.2.2", + "@types/async-lock": "^1.4.2", + "@types/jest": "^29.5.11", + "@types/mocha": "^10.0.6", + "@types/node": "^20.10.4", + "@types/superagent": "^4.1.24", + "@types/supertest": "^2.0.16", + "babel-jest": "^29.7.0", + "babel-plugin-transform-import-meta": "^2.2.1", + "jest": "^29.7.0", + "rimraf": "^5.0.5", + "typescript": "^5.3.3" + } +} diff --git a/handshake-nodejs-reporters/packages/common-handshakes/src/dialPad.ts b/handshake-nodejs-reporters/packages/common-handshakes/src/dialPad.ts new file mode 100644 index 00000000..097a8afa --- /dev/null +++ b/handshake-nodejs-reporters/packages/common-handshakes/src/dialPad.ts @@ -0,0 +1,32 @@ +import { join, dirname } from 'node:path'; +import { fileURLToPath } from 'node:url'; + +export default class DialPad { + port: number; + + exePath: string; + + static get defaultExe() { + const currentDir = typeof __dirname !== 'undefined' + ? __dirname + : dirname(fileURLToPath(import.meta.url)); + + return join(dirname(currentDir), 'bin', 'handshake'); + } + + constructor(port: number, exePath?:string) { + this.port = port; this.exePath = exePath ?? DialPad.defaultExe; + } + + get url(): string { + return `http://127.0.0.1:${this.port}`; + } + + get saveUrl(): string { + return `${this.url}/save`; + } + + get writeUrl(): string { + return `${this.url}/write`; + } +} diff --git a/graspit-reporters/packages/graspit-commons/src/helpers.ts b/handshake-nodejs-reporters/packages/common-handshakes/src/helpers.ts similarity index 66% rename from graspit-reporters/packages/graspit-commons/src/helpers.ts rename to handshake-nodejs-reporters/packages/common-handshakes/src/helpers.ts index 90d2a2c8..e0eec2ea 100644 --- a/graspit-reporters/packages/graspit-commons/src/helpers.ts +++ b/handshake-nodejs-reporters/packages/common-handshakes/src/helpers.ts @@ -1,4 +1,4 @@ -import { relative } from 'path'; +import { relative } from 'node:path'; // eslint-disable-next-line import/prefer-default-export export function sanitizePaths(specs?: string[]): string[] { @@ -7,3 +7,7 @@ export function sanitizePaths(specs?: string[]): string[] { spec.startsWith('file:///') ? decodeURI(spec.slice(8)) : spec, )); } + +export function acceptableDateString(date: Date): string { + return date.toISOString(); +} diff --git a/graspit-reporters/packages/graspit-commons/src/index.ts b/handshake-nodejs-reporters/packages/common-handshakes/src/index.ts similarity index 100% rename from graspit-reporters/packages/graspit-commons/src/index.ts rename to handshake-nodejs-reporters/packages/common-handshakes/src/index.ts diff --git a/graspit-reporters/packages/graspit-commons/src/payload.ts b/handshake-nodejs-reporters/packages/common-handshakes/src/payload.ts similarity index 77% rename from graspit-reporters/packages/graspit-commons/src/payload.ts rename to handshake-nodejs-reporters/packages/common-handshakes/src/payload.ts index 0bb6cc50..6d144334 100644 --- a/graspit-reporters/packages/graspit-commons/src/payload.ts +++ b/handshake-nodejs-reporters/packages/common-handshakes/src/payload.ts @@ -1,10 +1,11 @@ export interface RegisterSession { retried: number; - started: string; + started: Date; specs: string[]; } export type SuiteType = 'SUITE' | 'TEST'; +export type Standing = 'PASSED' | 'FAILED' | 'SKIPPED' | 'PENDING' | 'YET_TO_CALC'; export interface RegisterTestEntity { title: string; @@ -22,7 +23,8 @@ export interface MarkTestEntity { duration: number; suiteID: string; errors: Error[]; - standing: string; + standing: Standing; + ended: string; } export interface MarkTestSession { @@ -54,3 +56,11 @@ export interface Assertion { expected: any; options: any; } + +export interface Attachment { + entityID: string; + title?: string; + description?:string; + value:string; + type: 'DESC' | 'LINK' | 'PNG' | 'ASSERT' +} diff --git a/handshake-nodejs-reporters/packages/common-handshakes/src/reporter.ts b/handshake-nodejs-reporters/packages/common-handshakes/src/reporter.ts new file mode 100644 index 00000000..a3cea28d --- /dev/null +++ b/handshake-nodejs-reporters/packages/common-handshakes/src/reporter.ts @@ -0,0 +1,222 @@ +import log4js from 'log4js'; +import superagent from 'superagent'; +import PQueue, { QueueAddOptions } from 'p-queue'; +import PriorityQueue from 'p-queue/dist/priority-queue'; +import DialPad from './dialPad'; +import { + RegisterSession, + MarkTestEntity, MarkTestSession, RegisterTestEntity, Assertion, Attachment, +} from './payload'; +import { acceptableDateString } from './helpers'; + +const logger = log4js.getLogger('common-handshakes'); + +log4js.configure({ + appenders: { console: { type: 'console' } }, + categories: { default: { appenders: ['console'], level: 'info' } }, +}); + +export type IdMappedType = Record & { session?: string }; + +export class ReporterDialPad extends DialPad { + idMapped: IdMappedType = {}; + + misFire: number = 0; + + pipeQueue: PQueue; + + constructor(port: number, timeout?:number) { + super(port); + this.pipeQueue = new PQueue( + { concurrency: 1, timeout: timeout ?? 180e3, throwOnTimeout: false }, + ); + } + + get registerSession(): string { + return `${this.saveUrl}/registerSession`; + } + + get registerSuite(): string { + return `${this.saveUrl}/registerSuite`; + } + + get updateSuite(): string { + return `${this.saveUrl}/updateSuite`; + } + + get updateSession(): string { + return `${this.saveUrl}/updateSession`; + } + + get addAttachmentForEntity(): string { + return `${this.saveUrl}/addAttachmentForEntity`; + } + + get writeAttachmentForEntity(): string { + return `${this.writeUrl}/addAttachmentForEntity`; + } + + async office(contact: string, payload?:object, callThisInside?: () => object, storeIn?: string) { + const feed = JSON.stringify((callThisInside === undefined ? payload : callThisInside()) ?? {}); + logger.info( + `๐Ÿ“  Faxing ${callThisInside === undefined ? 'static' : 'dynamic'} payload ๐Ÿ“ƒ: ${feed} to ${contact}`, + ); + + await superagent.put(contact) + .send(feed) + .on('response', (result) => { + const { text, ok } = result; + if (!ok) { + logger.error( + `โŒ Server failed to understand the request sent to ${contact} with payload ๐Ÿ“ƒ: ${feed}. so it attached a note: ${text}`, + ); + return; + } + + logger.info(`โœ… Server accepted the request and attached a note: ${text}`); + if (storeIn) { + logger.info( + `๐Ÿซ™ Storing received response key [${storeIn}] as ${text}`, + ); + this.idMapped[storeIn] = String(text); + } + }).catch((err) => { + this.misFire += 1; + logger.error(`Failed to send the fax: ${err}`); + }); + } + + async registerOrUpdateSomething( + contact: string, + payload?:object, + storeIn?: string, + callThisInside?: () => object, + ) { + const job = await this.pipeQueue + .add( + () => this.office(contact, payload, callThisInside, storeIn), + ); + + logger.info(`queue size in office ๐Ÿข: ${this.pipeQueue.size}`); + return job; + } + + requestRegisterSession(sessionPayload: RegisterSession) { + const modifiedPayload = { + ...sessionPayload, + started: acceptableDateString(sessionPayload.started), + }; + return this.registerOrUpdateSomething(this.registerSession, modifiedPayload, 'session'); + } + + /** + * + * @param entityID some place where we can store the test id received from the server + * @param payload payload for registering the suite / test + */ + requestRegisterTestEntity( + entityID: string, + payload: () => RegisterTestEntity, + ) { + return this.registerOrUpdateSomething( + this.registerSuite, + undefined, + entityID, + payload, + ); + } + + markTestEntity(payload: () => MarkTestEntity) { + return this.registerOrUpdateSomething( + this.updateSuite, + undefined, + undefined, + payload, + ); + } + + markTestSession(payload: (() => MarkTestSession)) { + return this.registerOrUpdateSomething( + this.updateSession, + undefined, + undefined, + payload, + ); + } + + async saveAttachment(hardSave: boolean, forWhat: string, payload: Attachment) { + if (!payload.entityID) { + logger.warn(`๐Ÿ˜• Skipping!, we have not attached a ${forWhat} for unknown entity`); + return false; + } + await superagent + .put(hardSave ? this.writeAttachmentForEntity : this.addAttachmentForEntity) + .send(JSON.stringify(payload)) + .on('response', (result) => { + if (result.ok) { + logger.info(`๐Ÿ”— Attached a ${forWhat} for entity: ${payload.entityID} with ${result.text}`); + } else { + logger.error(`๐Ÿ’” Failed to attach ${forWhat} for ${payload.entityID}, because of ${result?.text}`); + } + }).catch((err) => { + this.misFire += 1; + logger.error(`โŒ Failed to attach ${forWhat} for ${payload.entityID}, because of ${err}`); + }); + return true; + } + + async addDescription( + content: string, + entity_id: string, + ) { + return this.saveAttachment( + false, + 'description', + { + entityID: entity_id, type: 'DESC', value: content, + }, + ); + } + + async addLink( + url: string, + title: string, + entity_id: string, + ) { + return this.saveAttachment( + false, + 'link', + { + entityID: entity_id, type: 'LINK', value: url, title, + }, + ); + } + + async addAssertion( + assertion: Assertion, + entity_id: string, + ) { + return this.saveAttachment( + false, + 'assertion', + { + entityID: entity_id, type: 'ASSERT', value: JSON.stringify(assertion), title: assertion.matcherName, + }, + ); + } + + async attachScreenshot( + title: string, + content: string, // can be base64 encoded string + entity_id: string, + description?:string, + ) { + return this.saveAttachment( + true, + 'screenshot', + { + entityID: entity_id, type: 'PNG', value: content, title, description, + }, + ); + } +} diff --git a/graspit-reporters/packages/graspit-commons/src/service.ts b/handshake-nodejs-reporters/packages/common-handshakes/src/service.ts similarity index 74% rename from graspit-reporters/packages/graspit-commons/src/service.ts rename to handshake-nodejs-reporters/packages/common-handshakes/src/service.ts index f9e64b5e..1e1cc935 100644 --- a/graspit-reporters/packages/graspit-commons/src/service.ts +++ b/handshake-nodejs-reporters/packages/common-handshakes/src/service.ts @@ -3,59 +3,32 @@ import superagent from 'superagent'; import { spawn, spawnSync, } from 'node:child_process'; -// import { join } from 'node:path'; import { setTimeout, setInterval, clearTimeout, } from 'node:timers'; import type { ChildProcess, SpawnSyncReturns } from 'node:child_process'; -import { dirname, join } from 'node:path'; import DialPad from './dialPad'; import { UpdateTestRunConfig } from './payload'; -const logger = log4js.getLogger('graspit-service-commons'); - -// const isWindows = -// () => process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE ?? ''); +const logger = log4js.getLogger('handshake-service-commons'); // eslint-disable-next-line import/prefer-default-export export class ServiceDialPad extends DialPad { pyProcess?: ChildProcess; - // eslint-disable-next-line class-methods-use-this - // get venv() { - // return join('venv', isWindows() ? 'Scripts' : 'bin', 'activate'); - // } - get updateRunConfigUrl(): string { return `${this.saveUrl}/currentRun`; } - // get activateVenvScript() { - // return isWindows() ? `"${this.venv}"` : `source "${this.venv}"`; - // } - - static get defaultExe() { - return join(dirname(__dirname), 'bin', 'graspit'); - } - executeCommand(args: string[], isSync: boolean, cwd: string, timeout?:number) { const starter = isSync ? spawnSync : spawn; - // if (...for venv) { - // // not recommended unless if a use case was shared - // const command = `"${this.activateVenvScript}" && graspit ${args.join(' ')}`; - // logger.info(`๐Ÿง‘โ€๐Ÿ”ฌ Executing a command: ${command} from ${cwd}`); - // return starter(command, { - // timeout, shell: true, stdio: 'inherit', cwd, - // }); - // } - - logger.info(`๐Ÿช– Execute with ${args} for ${this.exePath ?? ServiceDialPad.defaultExe} from ${cwd} => ${args.join(' ')}`); + logger.info(`๐Ÿค with ${args} at ${this.exePath} from ${cwd} => ${args.join(' ')}`); return starter( - this.exePath ?? ServiceDialPad.defaultExe, + this.exePath, args, { timeout, shell: false, cwd, stdio: 'inherit', detached: false, @@ -63,17 +36,13 @@ export class ServiceDialPad extends DialPad { ); } - // patchArgPath(arg: string) { - // return this.exePath ? arg : `"${arg}"`; - // } - startService( projectName: string, resultsDir: string, rootDir: string, ): ChildProcess { const args = ['run-app', projectName, resultsDir, '-p', this.port.toString(), '-w', '2']; - logger.warn(`Requesting a graspit server, command used: ${args.join(' ')} from ${rootDir}`); + logger.warn(`Requesting a handshake server, command used: ${args.join(' ')} from ${rootDir}`); const pyProcess = this.executeCommand(args, false, rootDir) as ChildProcess; this.pyProcess = pyProcess; @@ -87,7 +56,7 @@ export class ServiceDialPad extends DialPad { pyProcess.on('exit', (code) => { if (code !== 0) { logger.warn( - `graspit was force closed ๐Ÿ˜ซ, found exit code: ${code}`, + `handshake was force closed ๐Ÿ˜ซ, found exit code: ${code}`, ); } }); @@ -113,7 +82,7 @@ export class ServiceDialPad extends DialPad { async waitUntilItsReady(force?:number): Promise { const waitingForTheServer = new Error( - 'Not able to connect with graspit-server within 20 seconds ๐Ÿ˜ข.', + 'Not able to connect with handshake-server within 20 seconds ๐Ÿ˜ข.', ); return new Promise((resolve, reject) => { let timer: NodeJS.Timeout; @@ -142,18 +111,13 @@ export class ServiceDialPad extends DialPad { async isServerTerminated(): Promise { if (this.pyProcess?.killed) return true; - const resp = await superagent.get(`${this.url}/`); - const wasTerminated = resp.statusCode === 200; + const resp = await superagent.get(`${this.url}/`).catch(() => logger.warn('ping failed')); + const wasTerminated = resp?.statusCode !== 200; if (!wasTerminated) logger.warn('โ†’ Had to ๐Ÿ—ก๏ธ the py-process.'); return wasTerminated; } async terminateServer() { - if (!this.pyProcess || this.pyProcess?.killed) { - logger.warn('๐Ÿ™€ graspit process was already terminated.'); - return; - } - const results = []; for (let worker = 0; worker < 2; worker += 1) { logger.info('๐Ÿ“ž Requesting for worker termination'); @@ -167,6 +131,14 @@ export class ServiceDialPad extends DialPad { ); } await Promise.all(results); + + if (this.pyProcess?.pid) { + try { + process.kill(this.pyProcess.pid); + } catch { + logger.warn('๐Ÿ™€ handshake process was already terminated.'); + } + } } async updateRunConfig(payload: UpdateTestRunConfig) { @@ -180,7 +152,7 @@ export class ServiceDialPad extends DialPad { if (resp) { logger.info( - `Updated config ๐Ÿฐ for the test run: ${resp.text}`, + `Updated config โš™๏ธ for the test run: ${resp.text}`, ); } return resp; diff --git a/handshake-nodejs-reporters/packages/common-handshakes/tests/helper.test.js b/handshake-nodejs-reporters/packages/common-handshakes/tests/helper.test.js new file mode 100644 index 00000000..5cc88842 --- /dev/null +++ b/handshake-nodejs-reporters/packages/common-handshakes/tests/helper.test.js @@ -0,0 +1,20 @@ +const { describe, test, expect } = require('@jest/globals'); +const { join } = require('path'); +const { sanitizePaths, acceptableDateString } = require('../src/helpers'); + +describe('verifying sanitizer', () => { + const current = join('tests', 'helper.test.js'); + test('verifying the basic case', () => { + expect(sanitizePaths([__filename])).toEqual([current]); + expect(sanitizePaths([__filename, __dirname])).toEqual([current, 'tests']); + }); + + test('with file://', () => { + expect(sanitizePaths([`file:///${__filename}`, `file:///${__dirname}`])).toEqual([current, 'tests']); + }); + + test('convert the date to iso string', () => { + const note = new Date(); + expect(acceptableDateString(note)).toEqual(note.toISOString()); // we only save the ISO string + }); +}); diff --git a/handshake-nodejs-reporters/packages/common-handshakes/tests/installation.test.js b/handshake-nodejs-reporters/packages/common-handshakes/tests/installation.test.js new file mode 100644 index 00000000..42f3fc77 --- /dev/null +++ b/handshake-nodejs-reporters/packages/common-handshakes/tests/installation.test.js @@ -0,0 +1,22 @@ +const { describe, test, expect } = require('@jest/globals'); +const { dirname, join } = require('path'); +const { platform } = require('process'); +const { existsSync } = require('fs'); +const { getPath, getBinPath, getVersionFromNames } = require('../installation/get_path.cjs'); + +describe('Verifying the Installation of common-handshakes', () => { + test('verifying the paths returned', () => { + expect(getBinPath()).toBe(join(dirname(__dirname), 'bin')); + expect(getPath()[1]).toContain('handshake'); + + if (platform !== 'win32') expect(getPath()).not.toContain('exe'); + }); + + test('Verifying the build installation', () => { + expect(existsSync(join(getBinPath(), getPath()[1]))).toBe(true); + }); + + test('verifying the names from versions', async () => { + expect(Object.keys(getVersionFromNames())).toHaveLength(3); + }); +}); diff --git a/handshake-nodejs-reporters/packages/common-handshakes/tests/reporter.test.js b/handshake-nodejs-reporters/packages/common-handshakes/tests/reporter.test.js new file mode 100644 index 00000000..50a8c9e9 --- /dev/null +++ b/handshake-nodejs-reporters/packages/common-handshakes/tests/reporter.test.js @@ -0,0 +1,221 @@ +const { + describe, test, expect, beforeAll, afterAll, +} = require('@jest/globals'); + +const { ReporterDialPad, ServiceDialPad, acceptableDateString } = require('../dist/index'); +const { + resetDir, results, root, uuidRegex, +} = require('./utils'); + +describe('Verifying the functionality of the handshake-reporter', () => { + const service = new ServiceDialPad(6969); + const reporter = new ReporterDialPad(6969, 12e3); + + beforeAll(async () => { + resetDir(); + await service.startService('jest-report-tests', results, root); + await service.waitUntilItsReady(); + expect(await service.ping()).toBe(true); + }, 20e3); + + afterAll(async () => { + await service.terminateServer(); + }); + + test('Verifying the config set', () => { + expect(reporter.port).toBe(6969); + expect(reporter.exePath).toBe(ServiceDialPad.defaultExe); + expect(reporter.url).toBe(service.url); + }); + + describe('verifying the registration endpoints', () => { + test('verifying the registration of session', async () => { + expect(reporter.pipeQueue.size).toBe(0); + const job = reporter.requestRegisterSession({ retried: 0, specs: ['test.js'], started: new Date() }); + await job; + expect(reporter.pipeQueue.size).toBe(0); + expect(reporter.idMapped.session).toMatch(uuidRegex); + expect(reporter.misFire).toBe(0); + }); + + test('verifying the registration of suites', async () => { + const jobs = Array(3).fill(true).map( + (_, index) => reporter + .requestRegisterTestEntity( + `suite-${index}`, + () => ( + { + description: 'sample-suite', + title: `suite-${index}`, + file: 'test.js', + parent: '', + started: acceptableDateString(new Date()), + session_id: reporter.idMapped.session, + retried: 0, + suiteType: 'SUITE', + tags: [], + } + ), + ), + ); + + await Promise.all(jobs); + expect(reporter.misFire).toBe(0); + + expect(reporter.idMapped['suite-0']).toMatch(uuidRegex); + expect(reporter.idMapped['suite-1']).toMatch(uuidRegex); + expect(reporter.idMapped['suite-2']).toMatch(uuidRegex); + + // all ids are different + expect(Array.from(new Set([reporter.idMapped['suite-0'], reporter.idMapped['suite-1'], reporter.idMapped['suite-2']]))).toHaveLength(3); + }); + + test('Verifying the registration of tests', async () => { + const jobs = []; + Array(3).fill(true).forEach((_, suite) => { + Array(3).fill(true).forEach( + (__, index) => jobs.push(reporter + .requestRegisterTestEntity( + `test-${suite}-${index}`, + () => ( + { + description: 'sample-suite', + title: `test-${suite}-${index}`, + file: 'test.js', + parent: reporter.idMapped[`suite-${suite}`], + started: acceptableDateString(new Date()), + session_id: reporter.idMapped.session, + retried: 0, + suiteType: 'TEST', + tags: [], + } + ), + )), + ); + }); + + await Promise.all(jobs); + expect(reporter.misFire).toBe(0); + }); + }); + + describe('Verifying the attachments', () => { + test('Verifying the description attachment', async () => { + const testAttachment = await reporter.addDescription('Sample-description for test - 0 - 0', reporter.idMapped['test-0-0']); + expect(testAttachment).toBe(true); + expect(reporter.misFire).toBe(0); + + const suiteAttachment = await reporter.addDescription('Sample-description for suite - 0', reporter.idMapped['suite-0']); + expect(suiteAttachment).toBe(true); + expect(reporter.misFire).toBe(0); + }); + + test('Verifying the link attachment', async () => { + const testAttachment = await reporter.addLink('https://github.com/RahulARanger/handshake', 'repo', reporter.idMapped['test-0-0']); + expect(testAttachment).toBe(true); + expect(reporter.misFire).toBe(0); + + const suiteAttachment = await reporter.addLink('https://github.com/RahulARanger', 'author', reporter.idMapped['suite-0']); + expect(suiteAttachment).toBe(true); + expect(reporter.misFire).toBe(0); + }); + + test('verifying the assertion attachment', async () => { + const testAttachment = await reporter.addAssertion({ expected: 2, matcherName: 'toEqual', options: { status: 'PASSED' } }, reporter.idMapped['test-0-1']); + expect(testAttachment).toBe(true); + expect(reporter.misFire).toBe(0); + + const suiteAttachment = await reporter.addAssertion({ expected: 2, matcherName: 'toEqual', options: { status: 'PASSED' } }, reporter.idMapped['suite-0']); + expect(suiteAttachment).toBe(true); + expect(reporter.misFire).toBe(0); + }); + + test('verifying the png attachment', async () => { + const raw = 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQW7H8AAAAwUlEQVR42mL8/9/v1n7mJ6yoaGhq...'; + const testAttachment = await reporter.attachScreenshot('screenshot-0', raw, reporter.idMapped['test-0-1'], 'sample-description'); + expect(testAttachment).toBe(true); + expect(reporter.misFire).toBe(0); + + const suiteAttachment = await reporter.attachScreenshot('screenshot-0', raw, reporter.idMapped['suite-0']); + expect(suiteAttachment).toBe(true); + expect(reporter.misFire).toBe(0); + }); + }); + + describe('verifying the marking endpoints', () => { + test('verifying the marking of tests', async () => { + const jobs = []; + const pick = reporter.idMapped['test-0-0']; + Array(3).fill(true).forEach((_, suite) => { + Array(3).fill(true).forEach( + (__, index) => { + expect(reporter.idMapped[`test-${suite}-${index}`]).toMatch(uuidRegex); + jobs.push(reporter + .markTestEntity( + () => ({ + duration: 20e3, + errors: [], + ended: new Date().toISOString(), + standing: 'PASSED', + suiteID: reporter.idMapped[`test-${suite}-${index}`], + + }), + )); + }, + ); + }); + + await Promise.all(jobs); + expect(reporter.misFire).toBe(0); + expect(reporter.idMapped['test-0-0']).toBe(pick); + }); + + test('verifying the marking of the suites', async () => { + const jobs = Array(3).fill(true).map( + (_, index) => reporter + .markTestEntity( + () => ( + { + duration: 20e3, + errors: [], + ended: new Date().toISOString(), + standing: 'PASSED', + suiteID: reporter.idMapped[`suite-${index}`], + } + ), + ), + ); + + await Promise.all(jobs); + expect(reporter.misFire).toBe(0); + }); + + test('verifying the marking of the session', async () => { + const job = reporter + .markTestSession( + () => ( + { + duration: 20e3, + ended: new Date().toISOString(), + entityName: 'jest-runner', + entityVersion: '0.1.0', + simplified: 'jest-runner.0.1.0', + hooks: 0, + passed: 9, + failed: 0, + skipped: 0, + tests: 3, + sessionID: reporter.idMapped.session ?? '', + } + ), + ); + + await job; + expect(reporter.misFire).toBe(0); + }); + }); + + test('finally p-queue should be free', () => { + expect(reporter.pipeQueue.size).toBe(0); + }); +}); diff --git a/handshake-nodejs-reporters/packages/common-handshakes/tests/service.test.js b/handshake-nodejs-reporters/packages/common-handshakes/tests/service.test.js new file mode 100644 index 00000000..542d2c9f --- /dev/null +++ b/handshake-nodejs-reporters/packages/common-handshakes/tests/service.test.js @@ -0,0 +1,92 @@ +const { + describe, test, expect, beforeAll, afterAll, +} = require('@jest/globals'); +const { ServiceDialPad } = require('../src/index'); +const { root, resetDir, results } = require('./utils'); + +describe('Verifying the handshake-server helper class', () => { + beforeAll(() => resetDir); + + describe('Verifying the closed server end to end', () => { + const instance = new ServiceDialPad(6969); + + test('instance configuration', () => { + expect(instance.exePath).toBe(ServiceDialPad.defaultExe); + expect(instance.port).toBe(6969); + }); + + test('verifying the function for executing synchronous command', () => { + const result = instance.executeCommand(['--help'], true, process.cwd()); + expect(result).not.toBeUndefined(); // there should be process returned + expect(result.error).toBeUndefined(); // no errors + expect(result.status).toBe(0); // 0 exit code + }); + + test('verifying the closed ping', async () => { + expect(await instance.ping()).toBe(false); + }); + + test('verifying the closed server status', async () => { + expect(await instance.isServerTerminated()).toBe(true); + }); + + test('verifying the termination of closed server', async () => { + expect(await instance.terminateServer()).toBe(undefined); + }); + }); + + describe('verifying the running service', () => { + const instance = new ServiceDialPad(7272); + + afterAll(async () => { + await instance.terminateServer(); + }); + + test('verifying the initialization of the server', async () => { + const server = await instance.startService('common-handshakes-jest-tests', results, root); + expect(await instance.ping()).toBe(false); // instance takes some time to start + await instance.waitUntilItsReady(); // so we need to wait + + expect(await instance.ping()).toBe(true); // now it should be running at the port: 7272 + expect(server).not.toBe(undefined); + }, 20e3); + + test('verifying the ping for the valid server', async () => { + expect(await instance.ping()).toBe(true); + }); + test('verifying the update run config with valid payload', async () => { + const resp = await instance.updateRunConfig({ + maxInstances: 2, + avoidParentSuitesInCount: false, + framework: 'jest-tests', + exitCode: 0, + fileRetries: 1, + platformName: 'windows', + saveOptions: {}, + }); + expect(resp).not.toBeUndefined(); + expect(resp?.status).toBe(201); + }); + test('verifying the update run config with invalid payload', async () => { + const resp = await instance.updateRunConfig({ maxInstances: 2 }); + await expect(resp).toBeUndefined(); + }); + + test('Verifying the isTerminated flag', async () => { + expect(await instance.isServerTerminated()).toBe(false); + }); + + test('Verifying the termination of the server', async () => { + await instance.terminateServer(); + + // there is ~1.5 seconds delay for the server termination + // reason: db connection and server termination (multiple process) + // takes time for its termination + + await new Promise((resolve) => { setTimeout(resolve, 3e3); }); + // on max we can set 3 seconds for termination + + expect(await instance.isServerTerminated()).toBe(true); + }, 5e3); + }); +}); diff --git a/handshake-nodejs-reporters/packages/common-handshakes/tests/utils.js b/handshake-nodejs-reporters/packages/common-handshakes/tests/utils.js new file mode 100644 index 00000000..22143362 --- /dev/null +++ b/handshake-nodejs-reporters/packages/common-handshakes/tests/utils.js @@ -0,0 +1,15 @@ +const { existsSync, rmSync } = require('fs'); +const { join, dirname } = require('path'); + +const root = dirname(dirname(process.cwd())); +const results = join(root, 'Jest-Results'); + +function resetDir() { + if (existsSync(results)) rmSync(results, { recursive: true, force: true }); +} + +const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; + +module.exports = { + resetDir, root, results, uuidRegex, +}; diff --git a/graspit-reporters/packages/graspit-commons/tsconfig.json b/handshake-nodejs-reporters/packages/common-handshakes/tsconfig.json similarity index 68% rename from graspit-reporters/packages/graspit-commons/tsconfig.json rename to handshake-nodejs-reporters/packages/common-handshakes/tsconfig.json index 0c9e6cf9..38251e26 100644 --- a/graspit-reporters/packages/graspit-commons/tsconfig.json +++ b/handshake-nodejs-reporters/packages/common-handshakes/tsconfig.json @@ -2,7 +2,6 @@ "extends": "./node.json", "compilerOptions": { "types": ["@wdio/globals/types"], - "rootDirs": ["./src", "./test"] - }, - + "rootDirs": ["./src", "./test"], + } } diff --git a/graspit-reporters/packages/graspit-dashboard/.eslintignore b/handshake-nodejs-reporters/packages/handshake-dashboard/.eslintignore similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/.eslintignore rename to handshake-nodejs-reporters/packages/handshake-dashboard/.eslintignore diff --git a/graspit-reporters/packages/graspit-dashboard/.eslintrc.json b/handshake-nodejs-reporters/packages/handshake-dashboard/.eslintrc.json similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/.eslintrc.json rename to handshake-nodejs-reporters/packages/handshake-dashboard/.eslintrc.json diff --git a/graspit-reporters/packages/graspit-dashboard/.lintstagedrc.js b/handshake-nodejs-reporters/packages/handshake-dashboard/.lintstagedrc.js similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/.lintstagedrc.js rename to handshake-nodejs-reporters/packages/handshake-dashboard/.lintstagedrc.js diff --git a/graspit-reporters/packages/graspit-dashboard/.npmignore b/handshake-nodejs-reporters/packages/handshake-dashboard/.npmignore similarity index 75% rename from graspit-reporters/packages/graspit-dashboard/.npmignore rename to handshake-nodejs-reporters/packages/handshake-dashboard/.npmignore index bfce562a..1fed05b1 100644 --- a/graspit-reporters/packages/graspit-dashboard/.npmignore +++ b/handshake-nodejs-reporters/packages/handshake-dashboard/.npmignore @@ -6,5 +6,5 @@ *.ps1 dist node_modules -graspit -graspit.exe \ No newline at end of file +handshake +handshake.exe \ No newline at end of file diff --git a/graspit-reporters/packages/graspit-dashboard/.prettierrc b/handshake-nodejs-reporters/packages/handshake-dashboard/.prettierrc similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/.prettierrc rename to handshake-nodejs-reporters/packages/handshake-dashboard/.prettierrc diff --git a/graspit-reporters/packages/graspit-dashboard/.vscode/launch.json b/handshake-nodejs-reporters/packages/handshake-dashboard/.vscode/launch.json similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/.vscode/launch.json rename to handshake-nodejs-reporters/packages/handshake-dashboard/.vscode/launch.json diff --git a/graspit-reporters/packages/graspit-dashboard/.vscode/settings.json b/handshake-nodejs-reporters/packages/handshake-dashboard/.vscode/settings.json similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/.vscode/settings.json rename to handshake-nodejs-reporters/packages/handshake-dashboard/.vscode/settings.json diff --git a/handshake-nodejs-reporters/packages/handshake-dashboard/CHANGELOG.md b/handshake-nodejs-reporters/packages/handshake-dashboard/CHANGELOG.md new file mode 100644 index 00000000..9ead91ee --- /dev/null +++ b/handshake-nodejs-reporters/packages/handshake-dashboard/CHANGELOG.md @@ -0,0 +1,13 @@ +# handshake + +## 0.3.0 + +### Minor Changes + +- renamed handshake to handshake-dashboard + +## 0.2.0 + +### Minor Changes + +- 6bd9175: Created handshake project, it's aim is to ease the report generation. diff --git a/graspit-reporters/packages/graspit-dashboard/README.md b/handshake-nodejs-reporters/packages/handshake-dashboard/README.md similarity index 98% rename from graspit-reporters/packages/graspit-dashboard/README.md rename to handshake-nodejs-reporters/packages/handshake-dashboard/README.md index b2044994..6559f5f2 100644 --- a/graspit-reporters/packages/graspit-dashboard/README.md +++ b/handshake-nodejs-reporters/packages/handshake-dashboard/README.md @@ -17,7 +17,7 @@ Exporting Next-JS app was bit confusing for me at first, have spent a lot of tim - `next.config.js` - we made output as `export` - - informed to transpile `graspit` (current package) + - informed to transpile `handshake` (current package) - added rules inside of webpack to enable custom icons in `antd` - `package.json` - Added `predev` and `prebuild` command which would generate the antd css file diff --git a/graspit-reporters/packages/graspit-dashboard/next-env.d.ts b/handshake-nodejs-reporters/packages/handshake-dashboard/next-env.d.ts similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/next-env.d.ts rename to handshake-nodejs-reporters/packages/handshake-dashboard/next-env.d.ts diff --git a/graspit-reporters/packages/graspit-dashboard/next.config.js b/handshake-nodejs-reporters/packages/handshake-dashboard/next.config.js similarity index 87% rename from graspit-reporters/packages/graspit-dashboard/next.config.js rename to handshake-nodejs-reporters/packages/handshake-dashboard/next.config.js index 46104210..fea8d2e1 100644 --- a/graspit-reporters/packages/graspit-dashboard/next.config.js +++ b/handshake-nodejs-reporters/packages/handshake-dashboard/next.config.js @@ -4,7 +4,7 @@ const nextConfig = { output: 'export', // Optional: Change links `/me` -> `/me/` and emit `/me.html` -> `/me/index.html` trailingSlash: true, - transpilePackages: ['graspit', 'echarts', 'zrender'], + transpilePackages: ['handshake', 'echarts', 'zrender'], env: { NEXT_PY_PORT: process.env.NEXT_PY_PORT ?? '6969' }, diff --git a/graspit-reporters/packages/graspit-dashboard/package.json b/handshake-nodejs-reporters/packages/handshake-dashboard/package.json similarity index 74% rename from graspit-reporters/packages/graspit-dashboard/package.json rename to handshake-nodejs-reporters/packages/handshake-dashboard/package.json index 6152522e..78e4f3ab 100644 --- a/graspit-reporters/packages/graspit-dashboard/package.json +++ b/handshake-nodejs-reporters/packages/handshake-dashboard/package.json @@ -1,6 +1,6 @@ { - "name": "graspit", - "version": "3.4.4", + "name": "handshake-dashboard", + "version": "0.3.0", "license": "MIT", "scripts": { "dev": "next dev", @@ -15,11 +15,11 @@ "@ant-design/icons": "^5.2.6", "@tsconfig/node18": "^18.2.2", "@types/echarts": "^4.9.22", - "@types/node": "20.10.0", - "@types/react": "18.2.39", + "@types/node": "20.10.4", + "@types/react": "18.2.45", "@types/react-dom": "18.2.17", "ansi-to-html": "^0.7.2", - "antd": "^5.11.5", + "antd": "^5.12.2", "clsx": "^2.0.0", "cross-env": "^7.0.3", "dayjs": "^1.11.10", @@ -28,7 +28,7 @@ "embla-carousel-autoplay": "^8.0.0-rc15", "embla-carousel-react": "^8.0.0-rc15", "log4js": "^6.9.1", - "next": "^14.0.3", + "next": "^14.0.4", "react": "18.2.0", "react-countup": "^6.5.0", "react-dom": "18.2.0", @@ -36,20 +36,20 @@ "sqlite3": "^5.1.6", "swr": "^2.2.4", "tslib": "^2.6.2", - "typescript": "^5.3.2" + "typescript": "^5.3.3" }, "devDependencies": { "@ant-design/static-style-extract": "~1.0.2", - "@next/eslint-plugin-next": "^14.0.3", - "@typescript-eslint/eslint-plugin": "^6.13.1", - "@typescript-eslint/parser": "^6.13.1", + "@next/eslint-plugin-next": "^14.0.4", + "@typescript-eslint/eslint-plugin": "^6.14.0", + "@typescript-eslint/parser": "^6.14.0", "eslint-plugin-unicorn": "^49.0.0", - "eslint": "^8.54.0", - "eslint-config-prettier": "^9.0.0", + "eslint": "^8.55.0", + "eslint-config-prettier": "^9.1.0", "eslint-plugin-jsx-a11y": "^6.8.0", "eslint-plugin-react": "^7.33.2", "eslint-plugin-react-hooks": "^4.6.0", - "prettier": "^3.1.0", - "ts-node": "^10.9.1" + "prettier": "^3.1.1", + "ts-node": "^10.9.2" } } diff --git a/graspit-reporters/packages/graspit-dashboard/public/chrome.png b/handshake-nodejs-reporters/packages/handshake-dashboard/public/chrome.png similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/public/chrome.png rename to handshake-nodejs-reporters/packages/handshake-dashboard/public/chrome.png diff --git a/graspit-reporters/packages/graspit-dashboard/public/edge.png b/handshake-nodejs-reporters/packages/handshake-dashboard/public/edge.png similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/public/edge.png rename to handshake-nodejs-reporters/packages/handshake-dashboard/public/edge.png diff --git a/handshake-nodejs-reporters/packages/handshake-dashboard/public/favicon.ico b/handshake-nodejs-reporters/packages/handshake-dashboard/public/favicon.ico new file mode 100644 index 00000000..b2490b0a Binary files /dev/null and b/handshake-nodejs-reporters/packages/handshake-dashboard/public/favicon.ico differ diff --git a/graspit-reporters/packages/graspit-dashboard/public/firefox.png b/handshake-nodejs-reporters/packages/handshake-dashboard/public/firefox.png similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/public/firefox.png rename to handshake-nodejs-reporters/packages/handshake-dashboard/public/firefox.png diff --git a/graspit-reporters/packages/graspit-dashboard/public/mac.png b/handshake-nodejs-reporters/packages/handshake-dashboard/public/mac.png similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/public/mac.png rename to handshake-nodejs-reporters/packages/handshake-dashboard/public/mac.png diff --git a/graspit-reporters/packages/graspit-dashboard/public/next.svg b/handshake-nodejs-reporters/packages/handshake-dashboard/public/next.svg similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/public/next.svg rename to handshake-nodejs-reporters/packages/handshake-dashboard/public/next.svg diff --git a/graspit-reporters/packages/graspit-dashboard/public/vercel.svg b/handshake-nodejs-reporters/packages/handshake-dashboard/public/vercel.svg similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/public/vercel.svg rename to handshake-nodejs-reporters/packages/handshake-dashboard/public/vercel.svg diff --git a/graspit-reporters/packages/graspit-dashboard/public/windows.png b/handshake-nodejs-reporters/packages/handshake-dashboard/public/windows.png similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/public/windows.png rename to handshake-nodejs-reporters/packages/handshake-dashboard/public/windows.png diff --git a/graspit-reporters/packages/graspit-dashboard/scripts/generate-antd-css.ts b/handshake-nodejs-reporters/packages/handshake-dashboard/scripts/generate-antd-css.ts similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/scripts/generate-antd-css.ts rename to handshake-nodejs-reporters/packages/handshake-dashboard/scripts/generate-antd-css.ts diff --git a/graspit-reporters/packages/graspit-dashboard/src/components/charts/collection-of-runs.tsx b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/charts/collection-of-runs.tsx similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/src/components/charts/collection-of-runs.tsx rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/components/charts/collection-of-runs.tsx diff --git a/graspit-reporters/packages/graspit-dashboard/src/components/charts/constants.ts b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/charts/constants.ts similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/src/components/charts/constants.ts rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/components/charts/constants.ts diff --git a/graspit-reporters/packages/graspit-dashboard/src/components/charts/gantt-chart-for-test-suites.tsx b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/charts/gantt-chart-for-test-suites.tsx similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/src/components/charts/gantt-chart-for-test-suites.tsx rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/components/charts/gantt-chart-for-test-suites.tsx diff --git a/graspit-reporters/packages/graspit-dashboard/src/components/charts/stacked-bar-chart.tsx b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/charts/stacked-bar-chart.tsx similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/src/components/charts/stacked-bar-chart.tsx rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/components/charts/stacked-bar-chart.tsx diff --git a/graspit-reporters/packages/graspit-dashboard/src/components/charts/status-pie-chart.tsx b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/charts/status-pie-chart.tsx similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/src/components/charts/status-pie-chart.tsx rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/components/charts/status-pie-chart.tsx diff --git a/graspit-reporters/packages/graspit-dashboard/src/components/core/ListOfRuns/index.tsx b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/core/ListOfRuns/index.tsx similarity index 99% rename from graspit-reporters/packages/graspit-dashboard/src/components/core/ListOfRuns/index.tsx rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/components/core/ListOfRuns/index.tsx index b33aa98e..eb7c17c9 100644 --- a/graspit-reporters/packages/graspit-dashboard/src/components/core/ListOfRuns/index.tsx +++ b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/core/ListOfRuns/index.tsx @@ -224,6 +224,7 @@ function ListOfRuns(properties: { runs: TestRunRecord[] }): ReactNode { function ListOfCharts(properties: { runs: TestRunRecord[] }): ReactNode { const [isTest, showTest] = useState(true); + const sortedOrder = [...properties.runs].reverse(); const areaChart = ( } > - + ); diff --git a/graspit-reporters/packages/graspit-dashboard/src/components/core/ListOfRuns/test-items.tsx b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/core/ListOfRuns/test-items.tsx similarity index 92% rename from graspit-reporters/packages/graspit-dashboard/src/components/core/ListOfRuns/test-items.tsx rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/components/core/ListOfRuns/test-items.tsx index accd96b5..59866ba0 100644 --- a/graspit-reporters/packages/graspit-dashboard/src/components/core/ListOfRuns/test-items.tsx +++ b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/core/ListOfRuns/test-items.tsx @@ -13,7 +13,7 @@ export default function crumbs( ): crumbItems { return [ { - title: 'Graspit', + title: '๐Ÿซฑ๐Ÿพโ€๐Ÿซฒ๐Ÿผ Handshake', }, { title: length == undefined ? 'Runs' : `Runs (${length})`, diff --git a/graspit-reporters/packages/graspit-dashboard/src/components/core/TestEntity/detailed-modal.tsx b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/core/TestEntity/detailed-modal.tsx similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/src/components/core/TestEntity/detailed-modal.tsx rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/components/core/TestEntity/detailed-modal.tsx diff --git a/graspit-reporters/packages/graspit-dashboard/src/components/core/TestEntity/entity-item.tsx b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/core/TestEntity/entity-item.tsx similarity index 97% rename from graspit-reporters/packages/graspit-dashboard/src/components/core/TestEntity/entity-item.tsx rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/components/core/TestEntity/entity-item.tsx index aa6c5f7a..0de81863 100644 --- a/graspit-reporters/packages/graspit-dashboard/src/components/core/TestEntity/entity-item.tsx +++ b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/core/TestEntity/entity-item.tsx @@ -76,7 +76,7 @@ export function EntityCollapsibleItem(properties: { icon={ } > diff --git a/graspit-reporters/packages/graspit-dashboard/src/components/core/TestEntity/header.tsx b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/core/TestEntity/header.tsx similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/src/components/core/TestEntity/header.tsx rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/components/core/TestEntity/header.tsx diff --git a/graspit-reporters/packages/graspit-dashboard/src/components/core/TestEntity/index.tsx b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/core/TestEntity/index.tsx similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/src/components/core/TestEntity/index.tsx rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/components/core/TestEntity/index.tsx diff --git a/graspit-reporters/packages/graspit-dashboard/src/components/core/TestRun/context.tsx b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/core/TestRun/context.tsx similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/src/components/core/TestRun/context.tsx rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/components/core/TestRun/context.tsx diff --git a/graspit-reporters/packages/graspit-dashboard/src/components/core/TestRun/index.tsx b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/core/TestRun/index.tsx similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/src/components/core/TestRun/index.tsx rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/components/core/TestRun/index.tsx diff --git a/graspit-reporters/packages/graspit-dashboard/src/components/core/TestRun/overview-tab.tsx b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/core/TestRun/overview-tab.tsx similarity index 99% rename from graspit-reporters/packages/graspit-dashboard/src/components/core/TestRun/overview-tab.tsx rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/components/core/TestRun/overview-tab.tsx index db723ba6..d11f66a0 100644 --- a/graspit-reporters/packages/graspit-dashboard/src/components/core/TestRun/overview-tab.tsx +++ b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/core/TestRun/overview-tab.tsx @@ -199,7 +199,10 @@ function PieChart(): ReactNode { return ( Executed diff --git a/graspit-reporters/packages/graspit-dashboard/src/components/core/TestRun/structure-tab.tsx b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/core/TestRun/structure-tab.tsx similarity index 99% rename from graspit-reporters/packages/graspit-dashboard/src/components/core/TestRun/structure-tab.tsx rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/components/core/TestRun/structure-tab.tsx index cc02642c..5fedd03c 100644 --- a/graspit-reporters/packages/graspit-dashboard/src/components/core/TestRun/structure-tab.tsx +++ b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/core/TestRun/structure-tab.tsx @@ -54,7 +54,7 @@ function treeData( // these are paths for (const child of childParts) { const childNode = { - key: child, + key: current + child, title: child, children: [], }; diff --git a/graspit-reporters/packages/graspit-dashboard/src/components/core/test-entities.tsx b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/core/test-entities.tsx similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/src/components/core/test-entities.tsx rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/components/core/test-entities.tsx diff --git a/graspit-reporters/packages/graspit-dashboard/src/components/parse-utils.ts b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/parse-utils.ts similarity index 98% rename from graspit-reporters/packages/graspit-dashboard/src/components/parse-utils.ts rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/components/parse-utils.ts index e3fad642..9fcad5d6 100644 --- a/graspit-reporters/packages/graspit-dashboard/src/components/parse-utils.ts +++ b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/parse-utils.ts @@ -156,4 +156,4 @@ export function timelineColor(status: string): TimelineItemProps['color'] { export const optionsForEntities = ['Timeline']; -export const sourceUrl = 'https://github.com/RahulARanger/graspit'; +export const sourceUrl = 'https://github.com/RahulARanger/handshake'; diff --git a/graspit-reporters/packages/graspit-dashboard/src/components/scripts/RunPage/detailed.ts b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/scripts/RunPage/detailed.ts similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/src/components/scripts/RunPage/detailed.ts rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/components/scripts/RunPage/detailed.ts diff --git a/graspit-reporters/packages/graspit-dashboard/src/components/scripts/RunPage/generate-path.ts b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/scripts/RunPage/generate-path.ts similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/src/components/scripts/RunPage/generate-path.ts rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/components/scripts/RunPage/generate-path.ts diff --git a/graspit-reporters/packages/graspit-dashboard/src/components/scripts/RunPage/overview.ts b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/scripts/RunPage/overview.ts similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/src/components/scripts/RunPage/overview.ts rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/components/scripts/RunPage/overview.ts diff --git a/graspit-reporters/packages/graspit-dashboard/src/components/scripts/config.ts b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/scripts/config.ts similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/src/components/scripts/config.ts rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/components/scripts/config.ts diff --git a/graspit-reporters/packages/graspit-dashboard/src/components/scripts/connection.ts b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/scripts/connection.ts similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/src/components/scripts/connection.ts rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/components/scripts/connection.ts diff --git a/graspit-reporters/packages/graspit-dashboard/src/components/scripts/helper.ts b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/scripts/helper.ts similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/src/components/scripts/helper.ts rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/components/scripts/helper.ts diff --git a/graspit-reporters/packages/graspit-dashboard/src/components/scripts/runs.ts b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/scripts/runs.ts similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/src/components/scripts/runs.ts rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/components/scripts/runs.ts diff --git a/graspit-reporters/packages/graspit-dashboard/src/components/theme.tsx b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/theme.tsx similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/src/components/theme.tsx rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/components/theme.tsx diff --git a/graspit-reporters/packages/graspit-dashboard/src/components/utils/Datetime/format.tsx b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/utils/Datetime/format.tsx similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/src/components/utils/Datetime/format.tsx rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/components/utils/Datetime/format.tsx diff --git a/graspit-reporters/packages/graspit-dashboard/src/components/utils/Datetime/relative-time.tsx b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/utils/Datetime/relative-time.tsx similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/src/components/utils/Datetime/relative-time.tsx rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/components/utils/Datetime/relative-time.tsx diff --git a/graspit-reporters/packages/graspit-dashboard/src/components/utils/counter.tsx b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/utils/counter.tsx similarity index 93% rename from graspit-reporters/packages/graspit-dashboard/src/components/utils/counter.tsx rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/components/utils/counter.tsx index 639c8543..abafba48 100644 --- a/graspit-reporters/packages/graspit-dashboard/src/components/utils/counter.tsx +++ b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/utils/counter.tsx @@ -11,6 +11,7 @@ export default class Counter extends Component< prefix?: string; decimalPoints?: number; maxDigits?: number; + cssClassName?: string; }, { start: number } > { @@ -36,6 +37,7 @@ export default class Counter extends Component< )}${this.props.suffix ?? ''}` } decimals={this.props.decimalPoints ?? 0} + className={this.props.cssClassName} /> ); } @@ -81,7 +83,9 @@ export function StaticPercent(properties: { percent: number }): ReactNode { ); } diff --git a/graspit-reporters/packages/graspit-dashboard/src/components/utils/images-with-thumbnails.tsx b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/utils/images-with-thumbnails.tsx similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/src/components/utils/images-with-thumbnails.tsx rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/components/utils/images-with-thumbnails.tsx diff --git a/graspit-reporters/packages/graspit-dashboard/src/components/utils/renderers.tsx b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/utils/renderers.tsx similarity index 80% rename from graspit-reporters/packages/graspit-dashboard/src/components/utils/renderers.tsx rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/components/utils/renderers.tsx index 07b02c23..f2acc8ca 100644 --- a/graspit-reporters/packages/graspit-dashboard/src/components/utils/renderers.tsx +++ b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/utils/renderers.tsx @@ -49,8 +49,11 @@ export function RenderStatus(properties: { fontSize: '16px', color: 'green', marginTop: properties.marginTop, + backgroundColor: 'transparent', + borderRadius: '10px', }} title="Passed" + className="green-glow" /> ); } @@ -62,8 +65,10 @@ export function RenderStatus(properties: { fontSize: '16px', color: 'red', marginTop: properties.marginTop, + borderRadius: '50px', }} title="Failed" + className="red-glow" /> ); } @@ -73,9 +78,11 @@ export function RenderStatus(properties: { style={{ fontSize: '16px', color: 'yellow', + borderRadius: '50px', marginTop: properties.marginTop, }} title="Skipped" + className="warn-glow" /> ); } @@ -86,8 +93,10 @@ export function RenderStatus(properties: { fontSize: '16px', color: 'yellow', marginTop: properties.marginTop, + borderRadius: '50px', }} title="Pending" + className="warn-glow" /> ); } @@ -98,9 +107,11 @@ export function RenderStatus(properties: { fontSize: '16px', color: 'orangered', marginTop: properties.marginTop, + borderRadius: '50px', }} spin title="Retried Suite" + className="retried-glow" /> ); } @@ -110,20 +121,14 @@ export function RenderStatus(properties: { export function RenderEntityType(properties: { entityName: string; }): ReactNode { - switch (properties.entityName.toLowerCase() as possibleEntityNames) { - case 'chrome': { - return ; - } - case 'firefox': { - return ; - } - case 'edge': { - return ; - } - default: { - return <>{properties.entityName?.toLocaleUpperCase()}; - } - } + const note = properties.entityName.toLowerCase() as possibleEntityNames; + + if (note.includes('chrome')) + return ; + if (note.includes('firefox')) + return ; + if (note.includes('edge')) return ; + return <>{properties.entityName?.toLocaleUpperCase()}; } export function RenderSystemType(properties: { diff --git a/graspit-reporters/packages/graspit-dashboard/src/components/utils/swr-fallback.tsx b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/utils/swr-fallback.tsx similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/src/components/utils/swr-fallback.tsx rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/components/utils/swr-fallback.tsx diff --git a/graspit-reporters/packages/graspit-dashboard/src/components/utils/test-status-dot.tsx b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/utils/test-status-dot.tsx similarity index 81% rename from graspit-reporters/packages/graspit-dashboard/src/components/utils/test-status-dot.tsx rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/components/utils/test-status-dot.tsx index c5c4d87d..fd0ba787 100644 --- a/graspit-reporters/packages/graspit-dashboard/src/components/utils/test-status-dot.tsx +++ b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/utils/test-status-dot.tsx @@ -12,7 +12,10 @@ export default function BadgeForSuiteType(properties: { color={properties.color} count={properties.text} size={properties.size} - style={{ fontWeight: 'bold', color: 'white' }} + style={{ + fontWeight: 'bold', + color: 'white', + }} /> ); } diff --git a/graspit-reporters/packages/graspit-dashboard/src/pages/RUNS/[id]/detailed.tsx b/handshake-nodejs-reporters/packages/handshake-dashboard/src/pages/RUNS/[id]/detailed.tsx similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/src/pages/RUNS/[id]/detailed.tsx rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/pages/RUNS/[id]/detailed.tsx diff --git a/graspit-reporters/packages/graspit-dashboard/src/pages/RUNS/[id]/index.tsx b/handshake-nodejs-reporters/packages/handshake-dashboard/src/pages/RUNS/[id]/index.tsx similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/src/pages/RUNS/[id]/index.tsx rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/pages/RUNS/[id]/index.tsx diff --git a/graspit-reporters/packages/graspit-dashboard/src/pages/RUNS/index.tsx b/handshake-nodejs-reporters/packages/handshake-dashboard/src/pages/RUNS/index.tsx similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/src/pages/RUNS/index.tsx rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/pages/RUNS/index.tsx diff --git a/graspit-reporters/packages/graspit-dashboard/src/pages/_app.tsx b/handshake-nodejs-reporters/packages/handshake-dashboard/src/pages/_app.tsx similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/src/pages/_app.tsx rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/pages/_app.tsx diff --git a/graspit-reporters/packages/graspit-dashboard/src/pages/_document.tsx b/handshake-nodejs-reporters/packages/handshake-dashboard/src/pages/_document.tsx similarity index 91% rename from graspit-reporters/packages/graspit-dashboard/src/pages/_document.tsx rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/pages/_document.tsx index 14e7b337..bc70e2db 100644 --- a/graspit-reporters/packages/graspit-dashboard/src/pages/_document.tsx +++ b/handshake-nodejs-reporters/packages/handshake-dashboard/src/pages/_document.tsx @@ -9,7 +9,7 @@ import React, { type ReactNode } from 'react'; const MyDocument = (): ReactNode => ( - +
diff --git a/graspit-reporters/packages/graspit-dashboard/src/pages/index.tsx b/handshake-nodejs-reporters/packages/handshake-dashboard/src/pages/index.tsx similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/src/pages/index.tsx rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/pages/index.tsx diff --git a/graspit-reporters/packages/graspit-dashboard/src/styles/CenterCard.module.css b/handshake-nodejs-reporters/packages/handshake-dashboard/src/styles/CenterCard.module.css similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/src/styles/CenterCard.module.css rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/styles/CenterCard.module.css diff --git a/graspit-reporters/packages/graspit-dashboard/src/styles/GraphCard.module.css b/handshake-nodejs-reporters/packages/handshake-dashboard/src/styles/GraphCard.module.css similarity index 91% rename from graspit-reporters/packages/graspit-dashboard/src/styles/GraphCard.module.css rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/styles/GraphCard.module.css index 4bcabe3a..4fa75289 100644 --- a/graspit-reporters/packages/graspit-dashboard/src/styles/GraphCard.module.css +++ b/handshake-nodejs-reporters/packages/handshake-dashboard/src/styles/GraphCard.module.css @@ -3,7 +3,7 @@ border: 1px solid transparent; width: 100% !important; flex-grow: 1; - background: #1a1a1a !important; + background: rgb(12, 12, 12) !important; border-radius: 10px; box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1) !important; } diff --git a/graspit-reporters/packages/graspit-dashboard/src/styles/carousel.module.css b/handshake-nodejs-reporters/packages/handshake-dashboard/src/styles/carousel.module.css similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/src/styles/carousel.module.css rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/styles/carousel.module.css diff --git a/handshake-nodejs-reporters/packages/handshake-dashboard/src/styles/globals.css b/handshake-nodejs-reporters/packages/handshake-dashboard/src/styles/globals.css new file mode 100644 index 00000000..a7e2c8aa --- /dev/null +++ b/handshake-nodejs-reporters/packages/handshake-dashboard/src/styles/globals.css @@ -0,0 +1,80 @@ +@import url('./antd.min.css'); + +:root { + --card-color: #121212; + --background-color: #262626; + color-scheme: dark; + --bg: oklch(35% 0.3 var(--hue)); + --text: oklch(85% 0.1 var(--hue)); + --shadow: oklch(25% 0.2 var(--hue)); + --highlight: oklch(98% 0.05 var(--hue)); +} + +* { + box-sizing: border-box; + padding: 0; + margin: 0; +} + +::selection { + color: lightyellow; + background-color: orangered; +} + +::-moz-selection { + color: lightyellow; + background-color: orangered; +} +::-webkit-scrollbar-track { + -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); + border-radius: 10px; + background-color: transparent; +} + +div#__next, +main, +html, +body { + max-width: 100vw; + height: 100%; + overflow: hidden; +} + +::-webkit-scrollbar { + width: 6px; /* Width of the scrollbar track */ +} + +::-webkit-scrollbar-thumb { + background-color: #888; /* Color of the scrollbar thumb */ + border-radius: 6px; /* Rounded corners for the thumb */ +} + +.green-glow { + -webkit-box-shadow: 0px 0px 27px 0px rgba(0, 255, 55, 0.9); + -moz-box-shadow: 0px 0px 27px 0px rgba(0, 255, 55, 0.9); + box-shadow: 0px 0px 27px 0px rgba(0, 255, 55, 0.9); +} + +.red-glow { + -webkit-box-shadow: 0px 0px 27px 0px rgba(255, 0, 0, 0.9); + -moz-box-shadow: 0px 0px 27px 0px rgba(255, 0, 0, 0.9); + box-shadow: 0px 0px 27px 0px rgba(255, 0, 0, 0.9); +} + +.warn-glow { + -webkit-box-shadow: 0px 0px 27px 0px rgba(255, 238, 0, 0.9); + -moz-box-shadow: 0px 0px 27px 0px rgba(255, 238, 0, 0.9); + box-shadow: 0px 0px 27px 0px rgba(255, 238, 0, 0.9); +} + +.retried-glow { + -webkit-box-shadow: 0px 0px 27px 0px rgba(255, 47, 0, 0.9); + -moz-box-shadow: 0px 0px 27px 0px rgba(255, 47, 0, 0.9); + box-shadow: 0px 0px 27px 0px rgba(255, 47, 0, 0.9); +} + +.black-glow { + -webkit-box-shadow: 0px 0px 27px 0px rgba(28, 27, 28, 0.9); + -moz-box-shadow: 0px 0px 27px 0px rgba(28, 27, 28, 0.9); + box-shadow: 0px 0px 27px 0px rgba(28, 27, 28, 0.9); +} diff --git a/graspit-reporters/packages/graspit-dashboard/src/styles/header.module.css b/handshake-nodejs-reporters/packages/handshake-dashboard/src/styles/header.module.css similarity index 95% rename from graspit-reporters/packages/graspit-dashboard/src/styles/header.module.css rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/styles/header.module.css index edda091c..eafcef8b 100644 --- a/graspit-reporters/packages/graspit-dashboard/src/styles/header.module.css +++ b/handshake-nodejs-reporters/packages/handshake-dashboard/src/styles/header.module.css @@ -22,6 +22,7 @@ box-shadow: 1px 1px hsl(0 0% 100% / 0.25) inset; background-color: ((240 4% 46%) / 1); backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(10px); } .header:hover { diff --git a/graspit-reporters/packages/graspit-dashboard/src/types/export-config-records.ts b/handshake-nodejs-reporters/packages/handshake-dashboard/src/types/export-config-records.ts similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/src/types/export-config-records.ts rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/types/export-config-records.ts diff --git a/graspit-reporters/packages/graspit-dashboard/src/types/generated-response.ts b/handshake-nodejs-reporters/packages/handshake-dashboard/src/types/generated-response.ts similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/src/types/generated-response.ts rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/types/generated-response.ts diff --git a/graspit-reporters/packages/graspit-dashboard/src/types/parsed-records.ts b/handshake-nodejs-reporters/packages/handshake-dashboard/src/types/parsed-records.ts similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/src/types/parsed-records.ts rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/types/parsed-records.ts diff --git a/graspit-reporters/packages/graspit-dashboard/src/types/session-records.ts b/handshake-nodejs-reporters/packages/handshake-dashboard/src/types/session-records.ts similarity index 96% rename from graspit-reporters/packages/graspit-dashboard/src/types/session-records.ts rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/types/session-records.ts index 3f35062b..c7eeaccd 100644 --- a/graspit-reporters/packages/graspit-dashboard/src/types/session-records.ts +++ b/handshake-nodejs-reporters/packages/handshake-dashboard/src/types/session-records.ts @@ -3,6 +3,7 @@ export type possibleEntityNames = | 'firefox' | 'safari' | 'edge' + | 'chrome-headless-shell' | 'others'; export type statusOfEntity = diff --git a/graspit-reporters/packages/graspit-dashboard/src/types/test-entity-related.ts b/handshake-nodejs-reporters/packages/handshake-dashboard/src/types/test-entity-related.ts similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/src/types/test-entity-related.ts rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/types/test-entity-related.ts diff --git a/graspit-reporters/packages/graspit-dashboard/src/types/test-run-records.ts b/handshake-nodejs-reporters/packages/handshake-dashboard/src/types/test-run-records.ts similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/src/types/test-run-records.ts rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/types/test-run-records.ts diff --git a/graspit-reporters/packages/graspit-dashboard/src/types/ui-constants.ts b/handshake-nodejs-reporters/packages/handshake-dashboard/src/types/ui-constants.ts similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/src/types/ui-constants.ts rename to handshake-nodejs-reporters/packages/handshake-dashboard/src/types/ui-constants.ts diff --git a/graspit-reporters/packages/graspit-dashboard/tsconfig.json b/handshake-nodejs-reporters/packages/handshake-dashboard/tsconfig.json similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/tsconfig.json rename to handshake-nodejs-reporters/packages/handshake-dashboard/tsconfig.json diff --git a/graspit-reporters/packages/graspit-dashboard/tsconfig.node.json b/handshake-nodejs-reporters/packages/handshake-dashboard/tsconfig.node.json similarity index 100% rename from graspit-reporters/packages/graspit-dashboard/tsconfig.node.json rename to handshake-nodejs-reporters/packages/handshake-dashboard/tsconfig.node.json diff --git a/graspit-reporters/packages/wdio-graspit-reporter/.eslintignore b/handshake-nodejs-reporters/packages/wdio-handshake-reporter/.eslintignore similarity index 100% rename from graspit-reporters/packages/wdio-graspit-reporter/.eslintignore rename to handshake-nodejs-reporters/packages/wdio-handshake-reporter/.eslintignore diff --git a/graspit-reporters/packages/wdio-graspit-reporter/.eslintrc b/handshake-nodejs-reporters/packages/wdio-handshake-reporter/.eslintrc similarity index 100% rename from graspit-reporters/packages/wdio-graspit-reporter/.eslintrc rename to handshake-nodejs-reporters/packages/wdio-handshake-reporter/.eslintrc diff --git a/graspit-reporters/packages/wdio-graspit-reporter/.npmignore b/handshake-nodejs-reporters/packages/wdio-handshake-reporter/.npmignore similarity index 100% rename from graspit-reporters/packages/wdio-graspit-reporter/.npmignore rename to handshake-nodejs-reporters/packages/wdio-handshake-reporter/.npmignore diff --git a/graspit-reporters/packages/wdio-graspit-reporter/.vscode/settings.json b/handshake-nodejs-reporters/packages/wdio-handshake-reporter/.vscode/settings.json similarity index 100% rename from graspit-reporters/packages/wdio-graspit-reporter/.vscode/settings.json rename to handshake-nodejs-reporters/packages/wdio-handshake-reporter/.vscode/settings.json diff --git a/graspit-reporters/packages/wdio-graspit-reporter/CHANGELOG.md b/handshake-nodejs-reporters/packages/wdio-handshake-reporter/CHANGELOG.md similarity index 88% rename from graspit-reporters/packages/wdio-graspit-reporter/CHANGELOG.md rename to handshake-nodejs-reporters/packages/wdio-handshake-reporter/CHANGELOG.md index 22b5c98b..e9ac757f 100644 --- a/graspit-reporters/packages/wdio-graspit-reporter/CHANGELOG.md +++ b/handshake-nodejs-reporters/packages/wdio-handshake-reporter/CHANGELOG.md @@ -1,5 +1,52 @@ # wdio-graspit-reporter +## 0.3.2 + +### Patch Changes + +- 6f30732: added glow for the status + +## 0.3.1 + +### Patch Changes + +- Updated dependencies [1665f70] + - common-handshakes@0.3.1 + +## 0.3.0 + +### Minor Changes + +- renamed handshake to handshake-dashboard + +### Patch Changes + +- Updated dependencies + - common-handshakes@0.3.0 + +## 0.2.0 + +### Minor Changes + +- 6bd9175: Created handshake project, it's aim is to ease the report generation. + +### Patch Changes + +- Updated dependencies [6bd9175] + - common-handshakes@0.2.0 + +## 3.4.6 + +### Patch Changes + +- graspit-commons@3.4.6 + +## 3.4.5 + +### Patch Changes + +- graspit-commons@3.4.5 + ## 3.4.4 ### Patch Changes diff --git a/graspit/services/Endpoints/__init__.py b/handshake-nodejs-reporters/packages/wdio-handshake-reporter/README.md similarity index 100% rename from graspit/services/Endpoints/__init__.py rename to handshake-nodejs-reporters/packages/wdio-handshake-reporter/README.md diff --git a/graspit-reporters/packages/wdio-graspit-reporter/build.cjs b/handshake-nodejs-reporters/packages/wdio-handshake-reporter/build.cjs similarity index 100% rename from graspit-reporters/packages/wdio-graspit-reporter/build.cjs rename to handshake-nodejs-reporters/packages/wdio-handshake-reporter/build.cjs diff --git a/handshake-nodejs-reporters/packages/wdio-handshake-reporter/package.json b/handshake-nodejs-reporters/packages/wdio-handshake-reporter/package.json new file mode 100644 index 00000000..ff696f51 --- /dev/null +++ b/handshake-nodejs-reporters/packages/wdio-handshake-reporter/package.json @@ -0,0 +1,29 @@ +{ + "name": "wdio-handshake-reporter", + "version": "0.3.2", + "types": "./dist/index.d.ts", + "exports": { + "default": "./dist/index.js" + }, + "type": "module", + "private": false, + "license": "MIT", + "readme": "README.md", + "description": "This package is a reporter that sends the test data from your webdriverIO test run to your local handshake server which is then displayed by our handshake-dashboard", + "scripts": { + "lint": "eslint src/**", + "build": "rimraf -g ./dist && tsup src/index.ts --format esm --dts" + }, + "dependencies": { + "@wdio/reporter": "^8.26.2", + "@wdio/types": "^8.26.2", + "log4js": "^6.9.1", + "superagent": "^8.1.2", + "common-handshakes": "0.3.1" + }, + "devDependencies": { + "@types/async-lock": "^1.4.2", + "@types/superagent": "^4.1.24", + "@types/node": "^20.10.4" + } +} diff --git a/graspit-reporters/packages/wdio-graspit-reporter/src/contacts.ts b/handshake-nodejs-reporters/packages/wdio-handshake-reporter/src/contacts.ts similarity index 80% rename from graspit-reporters/packages/wdio-graspit-reporter/src/contacts.ts rename to handshake-nodejs-reporters/packages/wdio-handshake-reporter/src/contacts.ts index 23e52c31..4114320b 100644 --- a/graspit-reporters/packages/wdio-graspit-reporter/src/contacts.ts +++ b/handshake-nodejs-reporters/packages/wdio-handshake-reporter/src/contacts.ts @@ -1,8 +1,8 @@ // eslint-disable-next-line max-classes-per-file import WDIOReporter, { TestStats } from '@wdio/reporter'; import log4js, { Logger } from 'log4js'; -import { ReporterDialPad, ServiceDialPad } from 'graspit-commons'; -import type { ReporterOptions, GraspItServiceOptions } from './types'; +import { ReporterDialPad, ServiceDialPad } from 'common-handshakes'; +import type { ReporterOptions, HandshakeServiceOptions } from './types'; // eslint-disable-next-line import/no-mutable-exports export let currentReporter: undefined | ReporterContacts; @@ -28,7 +28,7 @@ export default class ReporterContacts extends WDIOReporter { this.logger = log4js.getLogger('wdio-py-reporter'); this.logger.level = 'debug'; - this.supporter = new ReporterDialPad(this.options.port); + this.supporter = new ReporterDialPad(this.options.port, this.options.lockTimeout); currentReporter = this; } @@ -46,9 +46,9 @@ export class ContactsForService { supporter: ServiceDialPad; - options: GraspItServiceOptions; + options: HandshakeServiceOptions; - constructor(options: GraspItServiceOptions) { + constructor(options: HandshakeServiceOptions) { this.logger = log4js.getLogger('wdio-py-service'); this.logger.level = 'debug'; this.options = options; diff --git a/graspit-reporters/packages/wdio-graspit-reporter/src/helpers.ts b/handshake-nodejs-reporters/packages/wdio-handshake-reporter/src/helpers.ts similarity index 89% rename from graspit-reporters/packages/wdio-graspit-reporter/src/helpers.ts rename to handshake-nodejs-reporters/packages/wdio-handshake-reporter/src/helpers.ts index e903507b..3b1017d0 100644 --- a/graspit-reporters/packages/wdio-graspit-reporter/src/helpers.ts +++ b/handshake-nodejs-reporters/packages/wdio-handshake-reporter/src/helpers.ts @@ -1,13 +1,13 @@ import type { Options } from '@wdio/types'; import { AfterCommandArgs, BeforeCommandArgs } from '@wdio/reporter'; -import { Assertion } from 'graspit-commons'; -import { GraspItServiceOptions, ReporterOptions } from './types'; -import GraspItService from './service'; +import { Assertion } from 'common-handshakes'; +import { HandshakeServiceOptions, ReporterOptions } from './types'; +import HandshakeService from './service'; import { currentReporter } from './contacts'; export function attachReporter( config: Options.Testrunner, - options: ReporterOptions & GraspItServiceOptions, + options: ReporterOptions & HandshakeServiceOptions, ): Options.Testrunner { const port = options.port ?? 6969; const toModify = config; @@ -16,16 +16,16 @@ export function attachReporter( toModify.services = toModify.services || []; toModify.reporters.push([ - 'graspit', + 'handshake', { port, addScreenshots: options.addScreenshots || false, + lockTimeout: options.lockTimeout || 120e3, }, ]); - toModify.services.push([ - GraspItService, { + HandshakeService, { port, exePath: options.exePath, timeout: options.timeout, @@ -33,7 +33,7 @@ export function attachReporter( collectionName: options.collectionName, export: options.export, testConfig: { - ...options.testConfig, avoidParentSuitesInCount: options.testConfig.avoidParentSuitesInCount ?? config.framework === 'cucumber' + ...options.testConfig, avoidParentSuitesInCount: options.testConfig.avoidParentSuitesInCount ?? config.framework === 'cucumber', }, }, ]); diff --git a/handshake-nodejs-reporters/packages/wdio-handshake-reporter/src/index.ts b/handshake-nodejs-reporters/packages/wdio-handshake-reporter/src/index.ts new file mode 100644 index 00000000..5c3b0ba1 --- /dev/null +++ b/handshake-nodejs-reporters/packages/wdio-handshake-reporter/src/index.ts @@ -0,0 +1,7 @@ +import HandshakeService from './service'; +import HandshakeReporter from './reporter'; + +export default HandshakeReporter; +export * from './types'; +export const launcher = HandshakeService; +export * from './helpers'; diff --git a/graspit-reporters/packages/wdio-graspit-reporter/src/reporter.ts b/handshake-nodejs-reporters/packages/wdio-handshake-reporter/src/reporter.ts similarity index 85% rename from graspit-reporters/packages/wdio-graspit-reporter/src/reporter.ts rename to handshake-nodejs-reporters/packages/wdio-handshake-reporter/src/reporter.ts index e3852a63..3edbe7fb 100644 --- a/graspit-reporters/packages/wdio-graspit-reporter/src/reporter.ts +++ b/handshake-nodejs-reporters/packages/wdio-handshake-reporter/src/reporter.ts @@ -4,12 +4,12 @@ import type { } from '@wdio/reporter'; import { Assertion, - MarkTestEntity, RegisterTestEntity, SuiteType, sanitizePaths, -} from 'graspit-commons'; + MarkTestEntity, MarkTestSession, RegisterTestEntity, Standing, SuiteType, sanitizePaths, +} from 'common-handshakes'; import ReporterContacts from './contacts'; import { isScreenShot } from './helpers'; -export default class GraspItReporter extends ReporterContacts { +export default class HandshakeReporter extends ReporterContacts { expectedIndex(snapshotIndex: number, requestFromEnd: number) { // assumed requestFromEnd < 0 return -(this.currentSuites.length - snapshotIndex) + requestFromEnd; @@ -68,9 +68,9 @@ export default class GraspItReporter extends ReporterContacts { ? suiteOrTest.end.toISOString() : new Date().toISOString(); - const standing: string = ( + const standing = ( (suiteOrTest.type === 'test' ? state : 'YET_TO_CALC') || 'PENDING' - ).toUpperCase(); + ).toUpperCase() as Standing; const ifNotErrors = !errors?.length && error ? [error] : []; @@ -92,13 +92,12 @@ export default class GraspItReporter extends ReporterContacts { return; } - this.supporter.feed( - this.supporter.registerSession, + this.supporter.requestRegisterSession( { - started: runnerStats.start.toISOString(), + started: this.runnerStat?.start ?? new Date(), specs: sanitizePaths(runnerStats.specs), + retried: this.runnerStat?.retry ?? 0, }, - 'session', ); } @@ -126,7 +125,7 @@ export default class GraspItReporter extends ReporterContacts { if (this.skipTestRun) { return; } - this.supporter.markTestEntity(suite.uid, () => this.extractRequiredForEntityCompletion(suite)); + this.supporter.markTestEntity(() => this.extractRequiredForEntityCompletion(suite)); } onTestStart(test: TestStats): void { @@ -137,7 +136,7 @@ export default class GraspItReporter extends ReporterContacts { if (this.skipTestRun) { return; } - this.supporter.markTestEntity(test.uid, () => this.extractRequiredForEntityCompletion(test)); + this.supporter.markTestEntity(() => this.extractRequiredForEntityCompletion(test)); } onTestFail(test: TestStats): void { @@ -153,7 +152,8 @@ export default class GraspItReporter extends ReporterContacts { // like the time when it is explicity skipped // so we register before marking it const note = this.currentSuites.length; - this.supporter.lock.acquire(this.supporter.lockString, async () => { + + this.supporter.pipeQueue.add(() => { if (this.supporter.idMapped[test.uid]) { return this.markTestCompletion(test); } this.addTest(test, note); return this.markTestCompletion(test); @@ -167,7 +167,7 @@ export default class GraspItReporter extends ReporterContacts { const caps = this.runnerStat ?.capabilities as WebdriverIO.Capabilities; - const payload = { + const payload: MarkTestSession = { ended: runnerStats.end?.toISOString() ?? new Date().toISOString(), duration: runnerStats.duration, sessionID: this.supporter.idMapped.session ?? '', @@ -176,11 +176,11 @@ export default class GraspItReporter extends ReporterContacts { skipped: this.counts.skipping, hooks: this.counts.hooks, tests: this.counts.tests, - entityName: caps.browserName, - entityVersion: caps.browserVersion, + entityName: caps.browserName ?? 'no-name-found', + entityVersion: caps.browserVersion ?? '0.0.1', simplified: runnerStats.sanitizedCapabilities, }; - this.supporter.feed(this.supporter.updateSession, payload); + this.supporter.markTestSession(() => payload); } async onAfterCommand(commandArgs: AfterCommandArgs): Promise { @@ -204,4 +204,8 @@ export default class GraspItReporter extends ReporterContacts { async onAfterAssertion(assertionArgs: Assertion) { await this.supporter.addAssertion(assertionArgs, this.currentTestID); } + + get isSynchronised(): boolean { + return this.supporter.pipeQueue.size === 0; + } } diff --git a/graspit-reporters/packages/wdio-graspit-reporter/src/service.ts b/handshake-nodejs-reporters/packages/wdio-handshake-reporter/src/service.ts similarity index 98% rename from graspit-reporters/packages/wdio-graspit-reporter/src/service.ts rename to handshake-nodejs-reporters/packages/wdio-handshake-reporter/src/service.ts index 94ee62e8..1c891233 100644 --- a/graspit-reporters/packages/wdio-graspit-reporter/src/service.ts +++ b/handshake-nodejs-reporters/packages/wdio-handshake-reporter/src/service.ts @@ -3,7 +3,7 @@ import { existsSync, mkdirSync } from 'node:fs'; import type { Options, Services } from '@wdio/types'; import { ContactsForService } from './contacts'; -export default class GraspItService +export default class HandshakeService extends ContactsForService implements Services.ServiceInstance { get resultsDir(): string { diff --git a/graspit-reporters/packages/wdio-graspit-reporter/src/types.ts b/handshake-nodejs-reporters/packages/wdio-handshake-reporter/src/types.ts similarity index 85% rename from graspit-reporters/packages/wdio-graspit-reporter/src/types.ts rename to handshake-nodejs-reporters/packages/wdio-handshake-reporter/src/types.ts index 1fa4d660..7b7f98ef 100644 --- a/graspit-reporters/packages/wdio-graspit-reporter/src/types.ts +++ b/handshake-nodejs-reporters/packages/wdio-handshake-reporter/src/types.ts @@ -1,8 +1,9 @@ export interface ReporterOptions { port: number; addScreenshots?:boolean; + lockTimeout?:number; } -export interface GraspItServiceOptions { +export interface HandshakeServiceOptions { port: number; root: string; exePath?:string; diff --git a/graspit-reporters/packages/wdio-graspit-reporter/tsconfig.json b/handshake-nodejs-reporters/packages/wdio-handshake-reporter/tsconfig.json similarity index 60% rename from graspit-reporters/packages/wdio-graspit-reporter/tsconfig.json rename to handshake-nodejs-reporters/packages/wdio-handshake-reporter/tsconfig.json index b2c3e7ab..825fba9e 100644 --- a/graspit-reporters/packages/wdio-graspit-reporter/tsconfig.json +++ b/handshake-nodejs-reporters/packages/wdio-handshake-reporter/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "graspit-commons/node.json", + "extends": "common-handshakes/node.json", "compilerOptions": { "types": ["@wdio/globals/types"] }, diff --git a/graspit-reporters/turbo.json b/handshake-nodejs-reporters/turbo.json similarity index 100% rename from graspit-reporters/turbo.json rename to handshake-nodejs-reporters/turbo.json diff --git a/graspit/__init__.py b/handshake/__init__.py similarity index 100% rename from graspit/__init__.py rename to handshake/__init__.py diff --git a/graspit/services/Endpoints/blueprints/__init__.py b/handshake/services/CommandLine/__init__.py similarity index 100% rename from graspit/services/Endpoints/blueprints/__init__.py rename to handshake/services/CommandLine/__init__.py diff --git a/graspit/services/CommandLine/_init.py b/handshake/services/CommandLine/_init.py similarity index 75% rename from graspit/services/CommandLine/_init.py rename to handshake/services/CommandLine/_init.py index 578945f7..cec23c55 100644 --- a/graspit/services/CommandLine/_init.py +++ b/handshake/services/CommandLine/_init.py @@ -9,13 +9,13 @@ @group( - name="Graspit", - short_help="Graspit command", + name="Handshake", + short_help="Handshake command", help=f""" -{'{:*^69}'.format(" Welcome to Graspit's CLI ")} +{'{:*^69}'.format(" Welcome to Handshake's CLI ")} -Graspit simplifies the collection and processing of test results. The Graspit CLI serves as the foundation for essential operations. +Handshake simplifies the collection and processing of test results. The Handshake CLI serves as the foundation for essential operations. Each command requires a argument, representing the collection folder, often named as `collectionName` in your `rootDir`. [ROOT-DIR] >> [COLLECTION_NAME] (*we need this) >> TeStReSuLtS.db & [Attachments] (for getting this). diff --git a/graspit/services/CommandLine/center.py b/handshake/services/CommandLine/center.py similarity index 86% rename from graspit/services/CommandLine/center.py rename to handshake/services/CommandLine/center.py index faf758ae..8adafc2c 100644 --- a/graspit/services/CommandLine/center.py +++ b/handshake/services/CommandLine/center.py @@ -1,11 +1,11 @@ import pprint -from graspit.services.CommandLine.core import ( +from handshake.services.CommandLine.core import ( handle_cli, general_requirement, general_but_optional_requirement, ) -from graspit.services.DBService.lifecycle import ( +from handshake.services.DBService.lifecycle import ( init_tortoise_orm, close_connection, set_default_config, @@ -14,10 +14,10 @@ from loguru import logger from pathlib import Path from typing import Dict -from graspit.services.SchedularService.center import start_service -from graspit.services.DBService.shared import db_path -from graspit.services.DBService.models.config_base import ConfigKeys, ConfigBase -from graspit.services.SchedularService.lifecycle import start_loop +from handshake.services.SchedularService.center import start_service +from handshake.services.DBService.shared import db_path +from handshake.services.DBService.models.config_base import ConfigKeys, ConfigBase +from handshake.services.SchedularService.lifecycle import start_loop from tortoise import run_async from tortoise.expressions import Q diff --git a/graspit/services/CommandLine/core.py b/handshake/services/CommandLine/core.py similarity index 84% rename from graspit/services/CommandLine/core.py rename to handshake/services/CommandLine/core.py index b1e76ffa..810ff274 100644 --- a/graspit/services/CommandLine/core.py +++ b/handshake/services/CommandLine/core.py @@ -1,13 +1,13 @@ -from graspit.services.CommandLine.export import handle_cli, general_requirement -from graspit.services.CommandLine._init import general_but_optional_requirement -from graspit.services.Endpoints.center import service_provider -from graspit.services.DBService.lifecycle import ( +from handshake.services.CommandLine.migrate import handle_cli, general_requirement +from handshake.services.CommandLine._init import general_but_optional_requirement +from handshake.services.Endpoints.center import service_provider +from handshake.services.DBService.lifecycle import ( init_tortoise_orm, close_connection, create_run, ) from typing import Literal, Union -from graspit.services.DBService.shared import set_test_id +from handshake.services.DBService.shared import set_test_id from click import argument, option, Path from pathlib import Path as P_Path @@ -17,7 +17,7 @@ from typing import Tuple from functools import partial from loguru import logger -from graspit.services.Endpoints.static_server import static_provider +from handshake.services.Endpoints.static_server import static_provider def feed_app() -> Sanic: @@ -76,7 +76,7 @@ async def close_things(app, loop): @handle_cli.command( short_help="Starts the server which would listen for your input", help=""" -Starts the Graspit server to listen for inputs at the specified port on localhost. This command initiates a test run, allowing the server to handle a single test run at a time. For multiple test runs, spawn the process separately on different ports. +Starts the Handshake server to listen for inputs at the specified port on localhost. This command initiates a test run, allowing the server to handle a single test run at a time. For multiple test runs, spawn the process separately on different ports. """, ) @argument("PROJECT_NAME", nargs=1, required=True, type=str) diff --git a/graspit/services/CommandLine/export.py b/handshake/services/CommandLine/export.py similarity index 76% rename from graspit/services/CommandLine/export.py rename to handshake/services/CommandLine/export.py index 0a244ae2..dc47678f 100644 --- a/graspit/services/CommandLine/export.py +++ b/handshake/services/CommandLine/export.py @@ -1,12 +1,12 @@ import shutil import uuid from functools import partial -from graspit.services.SchedularService.constants import writtenAttachmentFolderName -from graspit.services.CommandLine._init import handle_cli, general_requirement -from graspit.services.DBService.shared import db_path -from graspit.services.DBService.lifecycle import init_tortoise_orm, close_connection -from graspit.services.DBService.models.config_base import ExportBase -from graspit.services.DBService.models.result_base import RunBase +from handshake.services.SchedularService.constants import writtenAttachmentFolderName +from handshake.services.CommandLine._init import handle_cli, general_requirement +from handshake.services.DBService.shared import db_path +from handshake.services.DBService.lifecycle import init_tortoise_orm, close_connection +from handshake.services.DBService.models.config_base import ExportBase +from handshake.services.DBService.models.result_base import RunBase from os.path import relpath from subprocess import call, check_output from tortoise import run_async @@ -35,9 +35,9 @@ async def createExportTicket( async def deleteExportTicket(ticketID: str): - ticket = await ExportBase.filter(ticketID=ticketID).first() + task = await ExportBase.filter(ticketID=ticketID).first() logger.warning("Deleting the Export ticket: {}", ticketID) - await ticket.delete() + await task.delete() @handle_cli.command( @@ -71,14 +71,14 @@ def export(collection_path, max_runs, out): logger.warning("Found Node modules at: {}", node_modules) - graspit = Path(node_modules) / "graspit" - if not graspit.exists(): + handshake = Path(node_modules) / "handshake-dashboard" + if not handshake.exists(): logger.error( - "graspit was not found in {} please try this command, npm install graspit", - graspit, + "handshake was not found in {} please try this command, npm install handshake", + handshake, ) raise FileNotFoundError( - "Please install graspit in your project, npm install graspit" + "Please install handshake in your project, npm install handshake" ) logger.info("Given details are valid, creating a export ticket") @@ -90,20 +90,20 @@ def export(collection_path, max_runs, out): if len(ticket_i_ds) == 0: logger.error("Ticket was not created, please report this as a issue") - logger.info("Exporting results to {}", relpath(resolved, graspit)) + logger.info("Exporting results to {}", relpath(resolved, handshake)) logger.info( "Raising a request with command:" ' "npx cross-env TICKET_ID={} EXPORT_DIR={}' ' DB_PATH={} npm run export"', ticket_i_ds[0], - relpath(resolved, graspit), - relpath(saved_db_path, graspit), + relpath(resolved, handshake), + relpath(saved_db_path, handshake), ) exported = call( - f"npx cross-env TICKET_ID={ticket_i_ds[0]} EXPORT_DIR={relpath(resolved, graspit)}" - f" DB_PATH={relpath(saved_db_path, graspit)} npm run export", - cwd=graspit, + f"npx cross-env TICKET_ID={ticket_i_ds[0]} EXPORT_DIR={relpath(resolved, handshake)}" + f" DB_PATH={relpath(saved_db_path, handshake)} npm run export", + cwd=handshake, shell=True, ) diff --git a/handshake/services/CommandLine/migrate.py b/handshake/services/CommandLine/migrate.py new file mode 100644 index 00000000..72948e52 --- /dev/null +++ b/handshake/services/CommandLine/migrate.py @@ -0,0 +1,16 @@ +from click import echo +from handshake.services.CommandLine.export import handle_cli, general_requirement +from handshake.services.DBService.shared import db_path +from handshake.services.DBService.migrator import check_version, migration + + +@general_requirement +@handle_cli.command() +def db_version(collection_path): + return check_version(db_path(collection_path)) + + +@general_requirement +@handle_cli.command() +def migrate(collection_path): + return migration(db_path(collection_path)) diff --git a/handshake/services/DBService/__init__.py b/handshake/services/DBService/__init__.py new file mode 100644 index 00000000..1fc2be4f --- /dev/null +++ b/handshake/services/DBService/__init__.py @@ -0,0 +1 @@ +DB_VERSION = 4 diff --git a/graspit/services/DBService/getThings.py b/handshake/services/DBService/getThings.py similarity index 61% rename from graspit/services/DBService/getThings.py rename to handshake/services/DBService/getThings.py index 0ef881ef..d5affdc5 100644 --- a/graspit/services/DBService/getThings.py +++ b/handshake/services/DBService/getThings.py @@ -1,12 +1,16 @@ from uuid import UUID from sanic import HTTPResponse -from graspit.services.DBService.models.result_base import SuiteBase, RunBase, RunBasePydanticModel, \ - SuiteBasePydanticModel +from handshake.services.DBService.models.result_base import ( + SuiteBase, + RunBase, + RunBasePydanticModel, + SuiteBasePydanticModel, +) from sanic.request import Request from sanic.blueprints import Blueprint from sanic.response import json, JSONResponse, text from tortoise.functions import Max, Sum -from graspit.services.DBService.models.types import SuiteType +from handshake.services.DBService.models.types import SuiteType get_service = Blueprint("GetService", url_prefix="/get") @@ -24,7 +28,13 @@ async def get_latest_run(_: Request): @get_service.get("/runs") async def get_test_runs(_: Request) -> JSONResponse: return JSONResponse( - list(map(lambda mapped: str(mapped.get('testID', False)), await RunBase.all().values("testID")))) + list( + map( + lambda mapped: str(mapped.get("testID", False)), + await RunBase.all().values("testID"), + ) + ) + ) @get_service.get("/run") @@ -34,17 +44,23 @@ async def get_run_details(request: Request) -> HTTPResponse | JSONResponse: if not run: return text("Not Found", status=404) - return json((await RunBasePydanticModel.from_tortoise_orm(run)).model_dump(mode="json")) + return json( + (await RunBasePydanticModel.from_tortoise_orm(run)).model_dump(mode="json") + ) @get_service.get("/suites") async def get_all_suites(request: Request) -> HTTPResponse: - test_id = request.args.get('test_id') - suites = await SuiteBase.filter(session__test_id=test_id, suiteType=SuiteType.SUITE).order_by("started") + test_id = request.args.get("test_id") + suites = await SuiteBase.filter( + session__test_id=test_id, suiteType=SuiteType.SUITE + ).order_by("started") mapped = {"@order": []} for suite in suites: _id = str(suite.suiteID) - mapped[_id] = (await SuiteBasePydanticModel.from_tortoise_orm(suite)).model_dump(mode="json") + mapped[_id] = ( + await SuiteBasePydanticModel.from_tortoise_orm(suite) + ).model_dump(mode="json") mapped["@order"].append(_id) return json(mapped) @@ -63,13 +79,15 @@ async def get_all_tests(request: Request) -> HTTPResponse: @get_service.get("/test-run-summary") async def summary(request: Request) -> JSONResponse: run = await RunBase.filter(testID=request.args.get("test_id")).first() - return json(dict( - TESTS=dict( - tests=run.tests, - passed=run.passed, - failed=run.failed, - skipped=run.skipped - ), - SUITES=run.suiteSummary, - RETRIED=run.retried - )) + return json( + dict( + TESTS=dict( + tests=run.tests, + passed=run.passed, + failed=run.failed, + skipped=run.skipped, + ), + SUITES=run.suiteSummary, + RETRIED=run.retried, + ) + ) diff --git a/graspit/services/DBService/lifecycle.py b/handshake/services/DBService/lifecycle.py similarity index 69% rename from graspit/services/DBService/lifecycle.py rename to handshake/services/DBService/lifecycle.py index f9a0a402..090ad014 100644 --- a/graspit/services/DBService/lifecycle.py +++ b/handshake/services/DBService/lifecycle.py @@ -1,18 +1,18 @@ -from graspit.services.DBService.models.static_base import TestConfigBase -from graspit.services.DBService.models.config_base import ConfigBase -from graspit.services.DBService.models.types import ValueForTestRunConfigBase -from graspit.services.DBService import DB_VERSION -from graspit.services.DBService.models.result_base import RunBase -from graspit.services.DBService.models.enums import AttachmentType, ConfigKeys +from handshake.services.DBService.models.static_base import TestConfigBase +from handshake.services.DBService.models.config_base import ConfigBase +from handshake.services.DBService.models.types import ValueForTestRunConfigBase +from handshake.services.DBService import DB_VERSION +from handshake.services.DBService.models.result_base import RunBase +from handshake.services.DBService.models.enums import AttachmentType, ConfigKeys from tortoise import Tortoise, connections -from graspit.services.DBService.shared import db_path +from handshake.services.DBService.shared import db_path from pathlib import Path from typing import Optional, Union -from graspit import __version__ +from handshake import __version__ from platform import uname -models = ["graspit.services.DBService.models"] +models = ["handshake.services.DBService.models"] async def init_tortoise_orm(force_db_path: Optional[Union[Path, str]] = None): @@ -23,11 +23,10 @@ async def init_tortoise_orm(force_db_path: Optional[Union[Path, str]] = None): modules={"models": models}, ) await Tortoise.generate_schemas() + await set_default_config() async def create_run(projectName: str) -> str: - await set_default_config() - default_config_for_test_run: ValueForTestRunConfigBase = dict( platformName=uname().system, version=__version__ ) diff --git a/handshake/services/DBService/migrator.py b/handshake/services/DBService/migrator.py new file mode 100644 index 00000000..86a9417c --- /dev/null +++ b/handshake/services/DBService/migrator.py @@ -0,0 +1,80 @@ +from sqlite3 import connect +from handshake.services.DBService import DB_VERSION +from handshake.services.DBService.models.enums import ConfigKeys +from sqlite3.dbapi2 import Connection +from typing import Optional, Tuple +from pathlib import Path +from loguru import logger + + +def check_version( + path: Path = None, connection: Optional[Connection] = None +) -> Tuple[bool, Connection, bool, Optional[int]]: + connection = connection if connection else connect(path) + query = f"select value from configbase where key = '{ConfigKeys.version}'" + result = connection.execute(query).fetchone() + + version_stored = False + migration_required = False + + if not result: + logger.warning( + f"Could not find the version, Please raise this as an issue or re-run after deleting the folder {path}." + ) + else: + version_stored = result if not result else int(result[0]) + migration_required = version_stored != DB_VERSION + + logger.log( + "INFO" if not migration_required else "ERROR", + "Currently at: v{}." + if not migration_required + else 'Found version: v{}. but required is v{}. Please execute: \n"handshake db migrate [COLLECTION_PATH]"', + result[0], + DB_VERSION, + ) + return ( + migration_required, + connection, + version_stored < DB_VERSION, + version_stored, + ) + + +def migrate(connection): + is_required, connection, bump_if_required, version_stored = check_version( + connection=connection + ) + + if not is_required: + logger.info("Already migrated to required version") + return True + + if not bump_if_required: + logger.error( + "You have more recent version of database, v{}. but we can only support: v{}. " + "Hence requesting either to update your reporter or " + "use your backup database inside the collection_path.", + version_stored, + DB_VERSION, + ) + return True + + script = Path(__file__).parent / "scripts" / f"bump-v{version_stored}.sql" + logger.info("Executing {}", script.name) + connection.executescript(script.read_text()) + + check_version(None, connection) + + +def migration(path): + connection = connect(path) + + try: + migrate(connection) + connection.commit() + except Exception as error: + logger.error(f"Failed to execute migration script, due to {error}") + return True + finally: + connection.close() diff --git a/graspit/services/DBService/models/__init__.py b/handshake/services/DBService/models/__init__.py similarity index 100% rename from graspit/services/DBService/models/__init__.py rename to handshake/services/DBService/models/__init__.py diff --git a/handshake/services/DBService/models/config_base.py b/handshake/services/DBService/models/config_base.py new file mode 100644 index 00000000..82a2e4f4 --- /dev/null +++ b/handshake/services/DBService/models/config_base.py @@ -0,0 +1,24 @@ +from tortoise.models import Model +from handshake.services.DBService.models.enums import ConfigKeys +from tortoise.fields import ( + IntField, + CharEnumField, + TextField, + UUIDField, +) + + +class ConfigBase(Model): + key = CharEnumField( + ConfigKeys, pk=True, null=False, description="Type of job we would like to run" + ) + value = TextField(null=False, description="Handling type is upto us") + + +class ExportBase(Model): + ticketID = UUIDField(pk=True) + maxTestRuns = IntField( + null=True, + default=10, + description="Number of test runs to export [recent ones are picked]", + ) diff --git a/graspit/services/DBService/models/dynamic_base.py b/handshake/services/DBService/models/dynamic_base.py similarity index 81% rename from graspit/services/DBService/models/dynamic_base.py rename to handshake/services/DBService/models/dynamic_base.py index a0ef9ac8..3b4a83bc 100644 --- a/graspit/services/DBService/models/dynamic_base.py +++ b/handshake/services/DBService/models/dynamic_base.py @@ -1,5 +1,5 @@ -from graspit.services.DBService.models.static_base import AttachmentFields -from graspit.services.DBService.models.result_base import SuiteBase +from handshake.services.DBService.models.static_base import AttachmentFields +from handshake.services.DBService.models.result_base import SuiteBase from tortoise.models import Model from tortoise.fields import ( CharField, @@ -11,9 +11,9 @@ BooleanField, TextField, ) -from graspit.services.SchedularService.constants import JobType -from graspit.services.DBService.models.result_base import RunBase -from graspit.services.DBService.models.enums import PrunedRecords +from handshake.services.SchedularService.constants import JobType +from handshake.services.DBService.models.result_base import RunBase +from handshake.services.DBService.models.enums import PrunedRecords class TaskBase(Model): diff --git a/graspit/services/DBService/models/enums.py b/handshake/services/DBService/models/enums.py similarity index 95% rename from graspit/services/DBService/models/enums.py rename to handshake/services/DBService/models/enums.py index c8a831f0..952546f7 100644 --- a/graspit/services/DBService/models/enums.py +++ b/handshake/services/DBService/models/enums.py @@ -23,12 +23,14 @@ class AttachmentType(StrEnum): ENV = "ENV" CONFIG = "CONFIG" VIDEO = "VIDEO" - ERROR = "ERROR" PNG = "PNG" DESC = "DESC" IMG = "IMAGE" LINK = "LINK" ASSERT = "ASSERT" + ERROR = "ERROR" + WARN = "WARN" + INFO = "INFO" class PrunedRecords(StrEnum): diff --git a/graspit/services/DBService/models/result_base.py b/handshake/services/DBService/models/result_base.py similarity index 97% rename from graspit/services/DBService/models/result_base.py rename to handshake/services/DBService/models/result_base.py index 435531d5..7824b8e7 100644 --- a/graspit/services/DBService/models/result_base.py +++ b/handshake/services/DBService/models/result_base.py @@ -14,7 +14,7 @@ TextField, ) from tortoise.contrib.pydantic import pydantic_model_creator -from graspit.services.DBService.models.enums import Status, SuiteType +from handshake.services.DBService.models.enums import Status, SuiteType class CommandReportFields(Model): @@ -84,7 +84,7 @@ class SessionBase(CommonDetailedFields): ) suites = ReverseRelation["SuiteBase"] sessionID = UUIDField(pk=True) - entityName = CharField(max_length=10, default="") + entityName = CharField(max_length=30, default="") entityVersion = CharField(max_length=20, default="") simplified = TextField( default="", description="browser name & version &/ platform name included" diff --git a/graspit/services/DBService/models/static_base.py b/handshake/services/DBService/models/static_base.py similarity index 89% rename from graspit/services/DBService/models/static_base.py rename to handshake/services/DBService/models/static_base.py index 82a58503..9ee8d8bb 100644 --- a/graspit/services/DBService/models/static_base.py +++ b/handshake/services/DBService/models/static_base.py @@ -1,5 +1,5 @@ -from graspit.services.DBService.models.types import AttachmentType -from graspit.services.DBService.models.result_base import SuiteBase, RunBase +from handshake.services.DBService.models.types import AttachmentType +from handshake.services.DBService.models.result_base import SuiteBase, RunBase from tortoise.models import Model from tortoise.fields import ( JSONField, diff --git a/graspit/services/DBService/models/types.py b/handshake/services/DBService/models/types.py similarity index 94% rename from graspit/services/DBService/models/types.py rename to handshake/services/DBService/models/types.py index 40e459ae..b6f92675 100644 --- a/graspit/services/DBService/models/types.py +++ b/handshake/services/DBService/models/types.py @@ -1,6 +1,6 @@ import uuid from typing import List, Optional, Dict -from graspit.services.DBService.models.enums import Status, SuiteType, AttachmentType +from handshake.services.DBService.models.enums import Status, SuiteType, AttachmentType from pydantic import BaseModel from datetime import datetime from typing_extensions import TypedDict diff --git a/graspit/services/DBService/sanic_free_shared.py b/handshake/services/DBService/sanic_free_shared.py similarity index 100% rename from graspit/services/DBService/sanic_free_shared.py rename to handshake/services/DBService/sanic_free_shared.py diff --git a/handshake/services/DBService/scripts/bump-v3.sql b/handshake/services/DBService/scripts/bump-v3.sql new file mode 100644 index 00000000..abdbe647 --- /dev/null +++ b/handshake/services/DBService/scripts/bump-v3.sql @@ -0,0 +1,13 @@ +create temp table temp_view as select entityName from SessionBase; +--select * from temp_view; +alter table SessionBase drop entityName; +alter table SessionBase add entityName varchar(30); + +update SessionBase set entityName = (select entityName from temp_view); + +update ConfigBase set value = 4 where key = 'VERSION'; +drop table temp_view; + +-- https://stackoverflow.com/a/77633836/12318454 + +-- ISSUE: there was a entityName: "chrome-shell-headless" >10 \ No newline at end of file diff --git a/handshake/services/DBService/scripts/revert-v4.sql b/handshake/services/DBService/scripts/revert-v4.sql new file mode 100644 index 00000000..a3dbad35 --- /dev/null +++ b/handshake/services/DBService/scripts/revert-v4.sql @@ -0,0 +1,13 @@ +create temp table temp_view as select entityName from SessionBase; + +alter table SessionBase drop entityName; +alter table SessionBase add entityName varchar(10); + +update SessionBase set entityName = (select entityName from temp_view); + +update ConfigBase set value = 3 where key = 'VERSION'; + +drop table temp_view; + +-- REVERT: limit back to 10 for entityName of session +-- REFERENCE SCRIPT IF IN CASE required \ No newline at end of file diff --git a/graspit/services/DBService/shared.py b/handshake/services/DBService/shared.py similarity index 55% rename from graspit/services/DBService/shared.py rename to handshake/services/DBService/shared.py index a2c35628..b54f6004 100644 --- a/graspit/services/DBService/shared.py +++ b/handshake/services/DBService/shared.py @@ -1,13 +1,13 @@ from sanic import Sanic from pathlib import Path -from graspit.services.DBService.sanic_free_shared import db_name +from handshake.services.DBService.sanic_free_shared import db_name from typing import Optional, Union -app_name = "Graspit" +APP_NAME = "Handshake" def root_dir() -> Path: - return Path(Sanic.get_app(app_name).shared_ctx.ROOT.value.decode('utf-8')) + return Path(Sanic.get_app(APP_NAME).shared_ctx.ROOT.value.decode("utf-8")) def db_path(given_root: Optional[Union[str, Path]] = None) -> Path: @@ -18,12 +18,12 @@ def db_path(given_root: Optional[Union[str, Path]] = None) -> Path: def set_test_id(): - app: Sanic = Sanic.get_app(app_name) + app: Sanic = Sanic.get_app(APP_NAME) if not hasattr(app.shared_ctx, "TEST_ID"): return # ease of access so - app.config.TEST_ID = app.shared_ctx.TEST_ID.value.decode('utf-8') + app.config.TEST_ID = app.shared_ctx.TEST_ID.value.decode("utf-8") def get_test_id() -> str: - return Sanic.get_app(app_name).config.TEST_ID + return Sanic.get_app(APP_NAME).config.TEST_ID diff --git a/graspit/services/SchedularService/__init__.py b/handshake/services/Endpoints/__init__.py similarity index 100% rename from graspit/services/SchedularService/__init__.py rename to handshake/services/Endpoints/__init__.py diff --git a/graspit/services/__init__.py b/handshake/services/Endpoints/blueprints/__init__.py similarity index 100% rename from graspit/services/__init__.py rename to handshake/services/Endpoints/blueprints/__init__.py diff --git a/graspit/services/Endpoints/blueprints/coreEndpoints.py b/handshake/services/Endpoints/blueprints/coreEndpoints.py similarity index 82% rename from graspit/services/Endpoints/blueprints/coreEndpoints.py rename to handshake/services/Endpoints/blueprints/coreEndpoints.py index 35d3549f..e1081a00 100644 --- a/graspit/services/Endpoints/blueprints/coreEndpoints.py +++ b/handshake/services/Endpoints/blueprints/coreEndpoints.py @@ -1,6 +1,6 @@ import json -from graspit.services.DBService.models.result_base import SessionBase, SuiteBase -from graspit.services.DBService.models.types import ( +from handshake.services.DBService.models.result_base import SessionBase, SuiteBase +from handshake.services.DBService.models.types import ( RegisterSession, RegisterSuite, MarkSuite, @@ -8,18 +8,19 @@ AddAttachmentForEntity, PydanticModalForTestRunConfigBase, ) -from graspit.services.DBService.models.static_base import ( +from handshake.services.Endpoints.blueprints.utils import attachError, extractPayload +from handshake.services.DBService.models.static_base import ( AttachmentType, TestConfigBase, AttachmentBase, ) -from graspit.services.DBService.models.enums import Status, SuiteType +from handshake.services.DBService.models.enums import Status, SuiteType from sanic.blueprints import Blueprint from sanic.response import JSONResponse, text, HTTPResponse from loguru import logger from sanic.request import Request -from graspit.services.DBService.shared import get_test_id -from graspit.services.SchedularService.register import register_patch_suite +from handshake.services.DBService.shared import get_test_id +from handshake.services.SchedularService.register import register_patch_suite service = Blueprint("DBService", url_prefix="/save") @@ -29,17 +30,9 @@ async def handle_response(request: Request, response: JSONResponse): if 200 <= response.status < 300: return response - await TestConfigBase.create( - test_id=get_test_id(), - attachmentValue=dict( - url=request.url, - payload=request.json, - status=response.status, - reason=response.body.decode(), - ), - type=AttachmentType.ERROR, - description=f"Failed to process the request at: {request.url}, will affect the test run", - ) + payload = extractPayload(request, response) + await attachError(payload, AttachmentType.ERROR, request.url) + return JSONResponse(body=payload, status=response.status) @service.put("/registerSession") @@ -64,7 +57,7 @@ async def register_suite(request: Request) -> HTTPResponse: return text(str(suite_record.suiteID), status=201) -@service.put("/updateSuite") +@service.put("/updateSuite", error_format="json") async def updateSuite(request: Request) -> HTTPResponse: suite = MarkSuite.model_validate(request.json) @@ -90,12 +83,11 @@ async def updateSuite(request: Request) -> HTTPResponse: await register_patch_suite(suite_record.suiteID, get_test_id()) return text( - f"Suite: {suite_record.title} - {suite_record.suiteID} was updated", - status=201, + f"Suite: {suite_record.title} - {suite_record.suiteID} was updated", status=201 ) -@service.put("/updateSession") +@service.put("/updateSession", error_format="json") async def update_session(request: Request) -> HTTPResponse: session = MarkSession.model_validate(request.json) test_session = await SessionBase.filter(sessionID=session.sessionID).first() diff --git a/graspit/services/Endpoints/blueprints/getServices.py b/handshake/services/Endpoints/blueprints/getServices.py similarity index 100% rename from graspit/services/Endpoints/blueprints/getServices.py rename to handshake/services/Endpoints/blueprints/getServices.py diff --git a/handshake/services/Endpoints/blueprints/utils.py b/handshake/services/Endpoints/blueprints/utils.py new file mode 100644 index 00000000..ae2ba5f4 --- /dev/null +++ b/handshake/services/Endpoints/blueprints/utils.py @@ -0,0 +1,26 @@ +from handshake.services.DBService.models.static_base import ( + AttachmentType, + TestConfigBase, +) +from handshake.services.DBService.shared import get_test_id +from sanic.request import Request +from sanic.response import JSONResponse + + +def extractPayload(request: Request, response: JSONResponse): + payload = dict( + url=request.url, + payload=request.json, + status=response.status, + reason=response.body.decode(), + ) + return payload + + +async def attachError(payload, attachmentType: AttachmentType, url: str): + await TestConfigBase.create( + test_id=get_test_id(), + attachmentValue=payload, + type=attachmentType, + description=f"Failed to process the request at: {url}, will affect the test run", + ) diff --git a/graspit/services/Endpoints/blueprints/writeServices.py b/handshake/services/Endpoints/blueprints/writeServices.py similarity index 57% rename from graspit/services/Endpoints/blueprints/writeServices.py rename to handshake/services/Endpoints/blueprints/writeServices.py index c50d862d..c6d08e9c 100644 --- a/graspit/services/Endpoints/blueprints/writeServices.py +++ b/handshake/services/Endpoints/blueprints/writeServices.py @@ -1,20 +1,33 @@ import base64 - from sanic.blueprints import Blueprint -from sanic.response import text, HTTPResponse +from sanic.response import text, HTTPResponse, JSONResponse from loguru import logger from sanic.request import Request -from graspit.services.DBService.models.types import ( +from handshake.services.DBService.models.types import ( AddAttachmentForEntity, ) -from graspit.services.DBService.shared import root_dir -from graspit.services.DBService.models.static_base import StaticBase -from graspit.services.SchedularService.constants import writtenAttachmentFolderName +from handshake.services.DBService.shared import root_dir +from handshake.services.DBService.models.static_base import ( + StaticBase, + AttachmentType, +) +from handshake.services.SchedularService.constants import writtenAttachmentFolderName +from handshake.services.Endpoints.blueprints.utils import extractPayload, attachError writeServices = Blueprint("WriteService", url_prefix="/write") -@writeServices.put("/addAttachmentForEntity") +@writeServices.on_response +async def handle_response(request: Request, response: JSONResponse): + if 200 <= response.status < 300: + return response + + payload = extractPayload(request, response) + await attachError(payload, AttachmentType.WARN, request.url) + return JSONResponse(body=payload, status=response.status) + + +@writeServices.put("/addAttachmentForEntity", error_format="json") async def saveImage(request: Request) -> HTTPResponse: attachment = AddAttachmentForEntity.model_validate(request.json) diff --git a/graspit/services/Endpoints/center.py b/handshake/services/Endpoints/center.py similarity index 77% rename from graspit/services/Endpoints/center.py rename to handshake/services/Endpoints/center.py index b5f988e5..27474462 100644 --- a/graspit/services/Endpoints/center.py +++ b/handshake/services/Endpoints/center.py @@ -1,6 +1,6 @@ -from graspit.services.Endpoints.core import service_provider -from graspit.services.DBService.lifecycle import init_tortoise_orm, close_connection -from graspit.services.DBService.shared import set_test_id +from handshake.services.Endpoints.core import service_provider +from handshake.services.DBService.lifecycle import init_tortoise_orm, close_connection +from handshake.services.DBService.shared import set_test_id import asyncio from loguru import logger from signal import signal, SIGTERM, SIGINT diff --git a/handshake/services/Endpoints/core.py b/handshake/services/Endpoints/core.py new file mode 100644 index 00000000..eeaa2259 --- /dev/null +++ b/handshake/services/Endpoints/core.py @@ -0,0 +1,17 @@ +from handshake.services.Endpoints.internalEndpoints import one_liners +from handshake.services.DBService.getThings import get_service +from handshake.services.DBService.shared import APP_NAME +from handshake.services.Endpoints.blueprints.coreEndpoints import service +from handshake.services.Endpoints.blueprints.writeServices import writeServices +from handshake.services.Endpoints.errorHandling import handle_validation_error +from sanic import Sanic +from pydantic import ValidationError + +service_provider = Sanic(APP_NAME) +service_provider.config.TOUCHUP = False +service_provider.blueprint(one_liners) +service_provider.blueprint(service) +service_provider.blueprint(writeServices) +service_provider.blueprint(get_service) + +service_provider.error_handler.add(ValidationError, handle_validation_error) diff --git a/graspit/services/Endpoints/errorHandling.py b/handshake/services/Endpoints/errorHandling.py similarity index 100% rename from graspit/services/Endpoints/errorHandling.py rename to handshake/services/Endpoints/errorHandling.py diff --git a/graspit/services/Endpoints/internalEndpoints.py b/handshake/services/Endpoints/internalEndpoints.py similarity index 78% rename from graspit/services/Endpoints/internalEndpoints.py rename to handshake/services/Endpoints/internalEndpoints.py index 3cbde62f..376cf609 100644 --- a/graspit/services/Endpoints/internalEndpoints.py +++ b/handshake/services/Endpoints/internalEndpoints.py @@ -1,9 +1,9 @@ -from graspit.services.DBService.shared import get_test_id -from graspit.services.DBService.lifecycle import close_connection +from handshake.services.DBService.shared import get_test_id +from handshake.services.DBService.lifecycle import close_connection from sanic.blueprints import Blueprint from sanic.response import HTTPResponse, text from sanic.request import Request -from graspit.services.SchedularService.register import register_patch_test_run +from handshake.services.SchedularService.register import register_patch_test_run one_liners = Blueprint(name="one_liners", url_prefix="/") diff --git a/graspit/services/Endpoints/static_server.py b/handshake/services/Endpoints/static_server.py similarity index 50% rename from graspit/services/Endpoints/static_server.py rename to handshake/services/Endpoints/static_server.py index 92d56e84..0936f234 100644 --- a/graspit/services/Endpoints/static_server.py +++ b/handshake/services/Endpoints/static_server.py @@ -1,4 +1,4 @@ from sanic import Sanic -static_provider = Sanic("Graspit-Serve", strict_slashes=True) +static_provider = Sanic("Serve-Handshake", strict_slashes=True) static_provider.config.TOUCHUP = False diff --git a/handshake/services/SchedularService/__init__.py b/handshake/services/SchedularService/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/graspit/services/SchedularService/center.py b/handshake/services/SchedularService/center.py similarity index 74% rename from graspit/services/SchedularService/center.py rename to handshake/services/SchedularService/center.py index ce76dc99..5f8f569b 100644 --- a/graspit/services/SchedularService/center.py +++ b/handshake/services/SchedularService/center.py @@ -1,14 +1,14 @@ -from graspit.services.SchedularService.constants import JobType -from graspit.services.SchedularService.handlePending import add_lookup_task -from graspit.services.DBService.lifecycle import init_tortoise_orm -from graspit.services.SchedularService.lifecycle import verify_pending_jobs -from graspit.services.SchedularService.pruneTasks import pruneTasks -from graspit.services.SchedularService.deleteRuns import addDeleteJob +from handshake.services.SchedularService.constants import JobType +from handshake.services.SchedularService.handlePending import add_lookup_task +from handshake.services.DBService.lifecycle import init_tortoise_orm +from handshake.services.SchedularService.lifecycle import verify_pending_jobs +from handshake.services.SchedularService.pruneTasks import pruneTasks +from handshake.services.SchedularService.deleteRuns import addDeleteJob from apscheduler.schedulers.asyncio import AsyncIOScheduler from loguru import logger from datetime import datetime from typing import List -from graspit.services.DBService.models.dynamic_base import TaskBase +from handshake.services.DBService.models.dynamic_base import TaskBase from apscheduler.events import EVENT_JOB_EXECUTED from pathlib import Path diff --git a/graspit/services/SchedularService/completeTestRun.py b/handshake/services/SchedularService/completeTestRun.py similarity index 92% rename from graspit/services/SchedularService/completeTestRun.py rename to handshake/services/SchedularService/completeTestRun.py index 55218dae..245aa250 100644 --- a/graspit/services/SchedularService/completeTestRun.py +++ b/handshake/services/SchedularService/completeTestRun.py @@ -1,20 +1,23 @@ -from graspit.services.DBService.models.result_base import ( +from handshake.services.DBService.models.result_base import ( SessionBase, RunBase, SuiteBase, ) -from graspit.services.DBService.models.static_base import TestConfigBase, AttachmentType -from graspit.services.DBService.models.types import PydanticModalForTestRunConfigBase +from handshake.services.DBService.models.static_base import ( + TestConfigBase, + AttachmentType, +) +from handshake.services.DBService.models.types import PydanticModalForTestRunConfigBase from uuid import UUID from typing import Union from traceback import format_exc -from graspit.services.SchedularService.register import ( +from handshake.services.SchedularService.register import ( skip_test_run, ) -from graspit.services.DBService.models.dynamic_base import TaskBase -from graspit.services.DBService.models.types import Status, SuiteType -from graspit.services.SchedularService.refer_types import PathTree, PathItem -from graspit.services.SchedularService.modifySuites import fetch_key_from_status +from handshake.services.DBService.models.dynamic_base import TaskBase +from handshake.services.DBService.models.types import Status, SuiteType +from handshake.services.SchedularService.refer_types import PathTree, PathItem +from handshake.services.SchedularService.modifySuites import fetch_key_from_status from tortoise.functions import Sum, Max, Min, Count, Lower from datetime import datetime, timezone from typing import List diff --git a/graspit/services/SchedularService/constants.py b/handshake/services/SchedularService/constants.py similarity index 100% rename from graspit/services/SchedularService/constants.py rename to handshake/services/SchedularService/constants.py diff --git a/graspit/services/SchedularService/deleteRuns.py b/handshake/services/SchedularService/deleteRuns.py similarity index 89% rename from graspit/services/SchedularService/deleteRuns.py rename to handshake/services/SchedularService/deleteRuns.py index 10a01bef..be8f7978 100644 --- a/graspit/services/SchedularService/deleteRuns.py +++ b/handshake/services/SchedularService/deleteRuns.py @@ -1,6 +1,6 @@ -from graspit.services.DBService.models.result_base import RunBase -from graspit.services.DBService.models.config_base import ConfigBase, ConfigKeys -from graspit.services.SchedularService.constants import ( +from handshake.services.DBService.models.result_base import RunBase +from handshake.services.DBService.models.config_base import ConfigBase, ConfigKeys +from handshake.services.SchedularService.constants import ( JobType, writtenAttachmentFolderName, ) diff --git a/graspit/services/SchedularService/handlePending.py b/handshake/services/SchedularService/handlePending.py similarity index 83% rename from graspit/services/SchedularService/handlePending.py rename to handshake/services/SchedularService/handlePending.py index 219efdf2..67f11e0b 100644 --- a/graspit/services/SchedularService/handlePending.py +++ b/handshake/services/SchedularService/handlePending.py @@ -1,9 +1,9 @@ -from graspit.services.DBService.models.dynamic_base import TaskBase -from graspit.services.SchedularService.modifySuites import patchTestSuite -from graspit.services.SchedularService.constants import JobType -from graspit.services.SchedularService.completeTestRun import patchTestRun +from handshake.services.DBService.models.dynamic_base import TaskBase +from handshake.services.SchedularService.modifySuites import patchTestSuite +from handshake.services.SchedularService.constants import JobType +from handshake.services.SchedularService.completeTestRun import patchTestRun from apscheduler.schedulers.asyncio import AsyncIOScheduler -from graspit.services.SchedularService.pruneTasks import pruneTasks +from handshake.services.SchedularService.pruneTasks import pruneTasks from loguru import logger from tortoise.expressions import Q diff --git a/graspit/services/SchedularService/lifecycle.py b/handshake/services/SchedularService/lifecycle.py similarity index 86% rename from graspit/services/SchedularService/lifecycle.py rename to handshake/services/SchedularService/lifecycle.py index 39c93846..c0a72968 100644 --- a/graspit/services/SchedularService/lifecycle.py +++ b/handshake/services/SchedularService/lifecycle.py @@ -1,9 +1,9 @@ from asyncio import get_event_loop from typing import List from apscheduler.schedulers.asyncio import AsyncIOScheduler -from graspit.services.DBService.models.dynamic_base import TaskBase -from graspit.services.DBService.lifecycle import close_connection -from graspit.services.SchedularService.constants import JobType +from handshake.services.DBService.models.dynamic_base import TaskBase +from handshake.services.DBService.lifecycle import close_connection +from handshake.services.SchedularService.constants import JobType from datetime import datetime from loguru import logger from asyncio import run diff --git a/graspit/services/SchedularService/modifySuites.py b/handshake/services/SchedularService/modifySuites.py similarity index 93% rename from graspit/services/SchedularService/modifySuites.py rename to handshake/services/SchedularService/modifySuites.py index 45f3c706..6f8194c7 100644 --- a/graspit/services/SchedularService/modifySuites.py +++ b/handshake/services/SchedularService/modifySuites.py @@ -1,13 +1,16 @@ -from graspit.services.DBService.models.result_base import ( +from handshake.services.DBService.models.result_base import ( SuiteBase, RollupBase, RetriedBase, SessionBase, ) -from graspit.services.DBService.models.static_base import TestConfigBase, AttachmentType -from graspit.services.DBService.models.types import PydanticModalForTestRunConfigBase -from graspit.services.DBService.models.dynamic_base import TaskBase -from graspit.services.DBService.models.enums import Status, SuiteType +from handshake.services.DBService.models.static_base import ( + TestConfigBase, + AttachmentType, +) +from handshake.services.DBService.models.types import PydanticModalForTestRunConfigBase +from handshake.services.DBService.models.dynamic_base import TaskBase +from handshake.services.DBService.models.enums import Status, SuiteType from tortoise.expressions import Q, F from tortoise.functions import Count, Lower, Sum, Length from loguru import logger diff --git a/graspit/services/SchedularService/pruneTasks.py b/handshake/services/SchedularService/pruneTasks.py similarity index 79% rename from graspit/services/SchedularService/pruneTasks.py rename to handshake/services/SchedularService/pruneTasks.py index 86119de5..2505a702 100644 --- a/graspit/services/SchedularService/pruneTasks.py +++ b/handshake/services/SchedularService/pruneTasks.py @@ -1,7 +1,7 @@ -from graspit.services.DBService.models.enums import AttachmentType -from graspit.services.DBService.models.static_base import TestConfigBase -from graspit.services.DBService.models.dynamic_base import TaskBase, JobType -from graspit.services.SchedularService.register import mark_for_prune_task +from handshake.services.DBService.models.enums import AttachmentType +from handshake.services.DBService.models.static_base import TestConfigBase +from handshake.services.DBService.models.dynamic_base import TaskBase, JobType +from handshake.services.SchedularService.register import mark_for_prune_task from loguru import logger from typing import Optional from tortoise.expressions import Q diff --git a/graspit/services/SchedularService/refer_types.py b/handshake/services/SchedularService/refer_types.py similarity index 100% rename from graspit/services/SchedularService/refer_types.py rename to handshake/services/SchedularService/refer_types.py diff --git a/graspit/services/SchedularService/register.py b/handshake/services/SchedularService/register.py similarity index 85% rename from graspit/services/SchedularService/register.py rename to handshake/services/SchedularService/register.py index 03ffc302..79c0c6a1 100644 --- a/graspit/services/SchedularService/register.py +++ b/handshake/services/SchedularService/register.py @@ -1,8 +1,11 @@ from loguru import logger -from graspit.services.DBService.models.dynamic_base import TaskBase, JobType +from handshake.services.DBService.models.dynamic_base import TaskBase, JobType from uuid import uuid4, UUID from typing import Union -from graspit.services.DBService.models.static_base import TestConfigBase, AttachmentType +from handshake.services.DBService.models.static_base import ( + TestConfigBase, + AttachmentType, +) async def register_patch_suite(suiteID: str, testID: str) -> TaskBase: diff --git a/graspit/services/SchedularService/shared.py b/handshake/services/SchedularService/shared.py similarity index 69% rename from graspit/services/SchedularService/shared.py rename to handshake/services/SchedularService/shared.py index 55105aa8..0dc9be5e 100644 --- a/graspit/services/SchedularService/shared.py +++ b/handshake/services/SchedularService/shared.py @@ -1,4 +1,4 @@ -from graspit.services.DBService.models.dynamic_base import TaskBase +from handshake.services.DBService.models.dynamic_base import TaskBase async def drop_task(ticket_id: str): diff --git a/handshake/services/__init__.py b/handshake/services/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/graspit/services/starter.py b/handshake/services/starter.py similarity index 68% rename from graspit/services/starter.py rename to handshake/services/starter.py index 220e31e5..6f2d3cde 100644 --- a/graspit/services/starter.py +++ b/handshake/services/starter.py @@ -1,4 +1,4 @@ -from graspit.services.CommandLine.center import handle_cli +from handshake.services.CommandLine.center import handle_cli import sys from multiprocessing import freeze_support diff --git a/local-build.py b/local-build.py index 1067ff61..88116c50 100644 --- a/local-build.py +++ b/local-build.py @@ -5,7 +5,7 @@ from shutil import copyfile dist = Path(__file__).parent / "dist" -dist_name = f"graspit-{system()}" +dist_name = f"handshake-{system()}" changed = False if "win" in system().lower(): @@ -13,12 +13,16 @@ dist_name += ".exe" commons = ( - Path(__file__).parent / "graspit-reporters" / "packages" / "graspit-commons" / "bin" + Path(__file__).parent + / "handshake-nodejs-reporters" + / "packages" + / "common-handshakes" + / "bin" ) copyfile( src=dist / dist_name, - dst=commons / (f"graspit" + ".exe" if changed else ""), + dst=commons / (f"handshake" + ".exe" if changed else ""), ) # make sure to run the pyinstaller starter.spec before running this script diff --git a/poetry.lock b/poetry.lock index 60c05370..df43fd0e 100644 --- a/poetry.lock +++ b/poetry.lock @@ -97,29 +97,33 @@ zookeeper = ["kazoo"] [[package]] name = "black" -version = "23.11.0" +version = "23.12.0" description = "The uncompromising code formatter." optional = false python-versions = ">=3.8" files = [ - {file = "black-23.11.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dbea0bb8575c6b6303cc65017b46351dc5953eea5c0a59d7b7e3a2d2f433a911"}, - {file = "black-23.11.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:412f56bab20ac85927f3a959230331de5614aecda1ede14b373083f62ec24e6f"}, - {file = "black-23.11.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d136ef5b418c81660ad847efe0e55c58c8208b77a57a28a503a5f345ccf01394"}, - {file = "black-23.11.0-cp310-cp310-win_amd64.whl", hash = "sha256:6c1cac07e64433f646a9a838cdc00c9768b3c362805afc3fce341af0e6a9ae9f"}, - {file = "black-23.11.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cf57719e581cfd48c4efe28543fea3d139c6b6f1238b3f0102a9c73992cbb479"}, - {file = "black-23.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:698c1e0d5c43354ec5d6f4d914d0d553a9ada56c85415700b81dc90125aac244"}, - {file = "black-23.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:760415ccc20f9e8747084169110ef75d545f3b0932ee21368f63ac0fee86b221"}, - {file = "black-23.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:58e5f4d08a205b11800332920e285bd25e1a75c54953e05502052738fe16b3b5"}, - {file = "black-23.11.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:45aa1d4675964946e53ab81aeec7a37613c1cb71647b5394779e6efb79d6d187"}, - {file = "black-23.11.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4c44b7211a3a0570cc097e81135faa5f261264f4dfaa22bd5ee2875a4e773bd6"}, - {file = "black-23.11.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a9acad1451632021ee0d146c8765782a0c3846e0e0ea46659d7c4f89d9b212b"}, - {file = "black-23.11.0-cp38-cp38-win_amd64.whl", hash = "sha256:fc7f6a44d52747e65a02558e1d807c82df1d66ffa80a601862040a43ec2e3142"}, - {file = "black-23.11.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7f622b6822f02bfaf2a5cd31fdb7cd86fcf33dab6ced5185c35f5db98260b055"}, - {file = "black-23.11.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:250d7e60f323fcfc8ea6c800d5eba12f7967400eb6c2d21ae85ad31c204fb1f4"}, - {file = "black-23.11.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5133f5507007ba08d8b7b263c7aa0f931af5ba88a29beacc4b2dc23fcefe9c06"}, - {file = "black-23.11.0-cp39-cp39-win_amd64.whl", hash = "sha256:421f3e44aa67138ab1b9bfbc22ee3780b22fa5b291e4db8ab7eee95200726b07"}, - {file = "black-23.11.0-py3-none-any.whl", hash = "sha256:54caaa703227c6e0c87b76326d0862184729a69b73d3b7305b6288e1d830067e"}, - {file = "black-23.11.0.tar.gz", hash = "sha256:4c68855825ff432d197229846f971bc4d6666ce90492e5b02013bcaca4d9ab05"}, + {file = "black-23.12.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:67f19562d367468ab59bd6c36a72b2c84bc2f16b59788690e02bbcb140a77175"}, + {file = "black-23.12.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:bbd75d9f28a7283b7426160ca21c5bd640ca7cd8ef6630b4754b6df9e2da8462"}, + {file = "black-23.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:593596f699ca2dcbbbdfa59fcda7d8ad6604370c10228223cd6cf6ce1ce7ed7e"}, + {file = "black-23.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:12d5f10cce8dc27202e9a252acd1c9a426c83f95496c959406c96b785a92bb7d"}, + {file = "black-23.12.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e73c5e3d37e5a3513d16b33305713237a234396ae56769b839d7c40759b8a41c"}, + {file = "black-23.12.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ba09cae1657c4f8a8c9ff6cfd4a6baaf915bb4ef7d03acffe6a2f6585fa1bd01"}, + {file = "black-23.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ace64c1a349c162d6da3cef91e3b0e78c4fc596ffde9413efa0525456148873d"}, + {file = "black-23.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:72db37a2266b16d256b3ea88b9affcdd5c41a74db551ec3dd4609a59c17d25bf"}, + {file = "black-23.12.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fdf6f23c83078a6c8da2442f4d4eeb19c28ac2a6416da7671b72f0295c4a697b"}, + {file = "black-23.12.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:39dda060b9b395a6b7bf9c5db28ac87b3c3f48d4fdff470fa8a94ab8271da47e"}, + {file = "black-23.12.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7231670266ca5191a76cb838185d9be59cfa4f5dd401b7c1c70b993c58f6b1b5"}, + {file = "black-23.12.0-cp312-cp312-win_amd64.whl", hash = "sha256:193946e634e80bfb3aec41830f5d7431f8dd5b20d11d89be14b84a97c6b8bc75"}, + {file = "black-23.12.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bcf91b01ddd91a2fed9a8006d7baa94ccefe7e518556470cf40213bd3d44bbbc"}, + {file = "black-23.12.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:996650a89fe5892714ea4ea87bc45e41a59a1e01675c42c433a35b490e5aa3f0"}, + {file = "black-23.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bdbff34c487239a63d86db0c9385b27cdd68b1bfa4e706aa74bb94a435403672"}, + {file = "black-23.12.0-cp38-cp38-win_amd64.whl", hash = "sha256:97af22278043a6a1272daca10a6f4d36c04dfa77e61cbaaf4482e08f3640e9f0"}, + {file = "black-23.12.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ead25c273adfad1095a8ad32afdb8304933efba56e3c1d31b0fee4143a1e424a"}, + {file = "black-23.12.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c71048345bdbced456cddf1622832276d98a710196b842407840ae8055ade6ee"}, + {file = "black-23.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81a832b6e00eef2c13b3239d514ea3b7d5cc3eaa03d0474eedcbbda59441ba5d"}, + {file = "black-23.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:6a82a711d13e61840fb11a6dfecc7287f2424f1ca34765e70c909a35ffa7fb95"}, + {file = "black-23.12.0-py3-none-any.whl", hash = "sha256:a7c07db8200b5315dc07e331dda4d889a56f6bf4db6a9c2a526fa3166a81614f"}, + {file = "black-23.12.0.tar.gz", hash = "sha256:330a327b422aca0634ecd115985c1c7fd7bdb5b5a2ef8aa9888a82e2ebe9437a"}, ] [package.dependencies] @@ -131,7 +135,7 @@ platformdirs = ">=2" [package.extras] colorama = ["colorama (>=0.4.3)"] -d = ["aiohttp (>=3.7.4)"] +d = ["aiohttp (>=3.7.4)", "aiohttp (>=3.7.4,!=3.9.0)"] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] uvloop = ["uvloop (>=0.15.2)"] @@ -458,13 +462,13 @@ files = [ [[package]] name = "pathspec" -version = "0.11.2" +version = "0.12.1" description = "Utility library for gitignore style pattern matching of file paths." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pathspec-0.11.2-py3-none-any.whl", hash = "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20"}, - {file = "pathspec-0.11.2.tar.gz", hash = "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3"}, + {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, + {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, ] [[package]] @@ -480,13 +484,13 @@ files = [ [[package]] name = "platformdirs" -version = "4.0.0" +version = "4.1.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "platformdirs-4.0.0-py3-none-any.whl", hash = "sha256:118c954d7e949b35437270383a3f2531e99dd93cf7ce4dc8340d3356d30f173b"}, - {file = "platformdirs-4.0.0.tar.gz", hash = "sha256:cb633b2bcf10c51af60beb0ab06d2f1d69064b43abf4c185ca6b28865f3f9731"}, + {file = "platformdirs-4.1.0-py3-none-any.whl", hash = "sha256:11c8f37bcca40db96d8144522d925583bdb7a31f7b0e37e3ed4318400a8e2380"}, + {file = "platformdirs-4.1.0.tar.gz", hash = "sha256:906d548203468492d432bcb294d4bc2fff751bf84971fbb2c10918cc206ee420"}, ] [package.extras] @@ -674,23 +678,23 @@ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" [[package]] name = "pyinstaller" -version = "6.2.0" +version = "6.3.0" description = "PyInstaller bundles a Python application and all its dependencies into a single package." optional = false python-versions = "<3.13,>=3.8" files = [ - {file = "pyinstaller-6.2.0-py3-none-macosx_10_13_universal2.whl", hash = "sha256:a1adbd3cf25dc90926d783eae0f444d65cdfecc7bcdf6da522c3ae3ff47b4c25"}, - {file = "pyinstaller-6.2.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:29d164394f1e949072f78a64c1e040f1c47b7f4aff08514c7666a031c8b44996"}, - {file = "pyinstaller-6.2.0-py3-none-manylinux2014_i686.whl", hash = "sha256:ba602a38d7403de89c38b8956b221ce6de0280730d269bab522492fcad82ee33"}, - {file = "pyinstaller-6.2.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:ebac06d99b80d2035594c3cc2fb5f2612d86289edd0510dbcbeb20a873f51d5a"}, - {file = "pyinstaller-6.2.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:fcfabc0ff1d38a4262c051dea3fdc1f7f106405c1f1b491b4c79cd28df19cab6"}, - {file = "pyinstaller-6.2.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:104430686149b2f1c135b2c17aa2967c85d54ef77dc92feb4e179ec846c0c467"}, - {file = "pyinstaller-6.2.0-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:e87fd60292b53bb9965cb5a84122875469a2bd475fd0d0db0052a3f1be351f75"}, - {file = "pyinstaller-6.2.0-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:8ec9d6c98972bb922cedb16a6638257aa66e5deadd79e2953f3464696237c413"}, - {file = "pyinstaller-6.2.0-py3-none-win32.whl", hash = "sha256:e5561e9a9b946d835c8dbc11ae4c16cc21e62bc77d10cc043406dc2992dfb4c6"}, - {file = "pyinstaller-6.2.0-py3-none-win_amd64.whl", hash = "sha256:3b586196277c4c54b69880650984c39c28bb6258c2b4b64200032e6ac69d53a0"}, - {file = "pyinstaller-6.2.0-py3-none-win_arm64.whl", hash = "sha256:d0c87b605bf13c3a04dfaa1d2fa7cd36765b8137000eeadccba865e1d6a19bf0"}, - {file = "pyinstaller-6.2.0.tar.gz", hash = "sha256:1ce77043929bf525be38289d78feecde0fcf15506215eda6500176a8715c5047"}, + {file = "pyinstaller-6.3.0-py3-none-macosx_10_13_universal2.whl", hash = "sha256:75a6f2a6f835a2e6e0899d10e60c10caf5defd25aced38b1dd48fbbabc89de07"}, + {file = "pyinstaller-6.3.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:de25beb176f73a944758553caacec46cc665bf3910ad8a174706d79cf6e95340"}, + {file = "pyinstaller-6.3.0-py3-none-manylinux2014_i686.whl", hash = "sha256:e436fcc0ea87c3f132baac916d508c24c84a8f6d8a06c3154fbc753f169b76c7"}, + {file = "pyinstaller-6.3.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:b721d793a33b6d9946c7dd95d3ea7589c0424b51cf1b9fe580f03c544f1336b2"}, + {file = "pyinstaller-6.3.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:96c37a1ee5b2fd5bb25c098ef510661d6d17b6515d0b86d8fc93727dd2475ba3"}, + {file = "pyinstaller-6.3.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:abe91106a3bbccc3f3a27af4325676ecdb6f46cb842ac663625002a870fc503b"}, + {file = "pyinstaller-6.3.0-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:41c937fe8f07ae02009b3b5a96ac3eb0800a4f8a97af142d4100060fe2135bb9"}, + {file = "pyinstaller-6.3.0-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:886b3b995b674905a20ad5b720b47cc395897d7b391117831027a4c8c5d67a58"}, + {file = "pyinstaller-6.3.0-py3-none-win32.whl", hash = "sha256:0597fb04337695e5cc5250253e0655530bf14f264b7a5b7d219cc65f6889c4bd"}, + {file = "pyinstaller-6.3.0-py3-none-win_amd64.whl", hash = "sha256:156b32ba943e0090bcc68e40ae1cb68fd92b7f1ab6fe0bdf8faf3d3cfc4e12dd"}, + {file = "pyinstaller-6.3.0-py3-none-win_arm64.whl", hash = "sha256:1eadbd1fae84e2e6c678d8b4ed6a232ec5c8fe3a839aea5a3071c4c0282f98cc"}, + {file = "pyinstaller-6.3.0.tar.gz", hash = "sha256:914d4c96cc99472e37ac552fdd82fbbe09e67bb592d0717fcffaa99ea74273df"}, ] [package.dependencies] @@ -923,13 +927,13 @@ html5tagger = ">=1.2.1" [[package]] name = "typing-extensions" -version = "4.8.0" +version = "4.9.0" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.8.0-py3-none-any.whl", hash = "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0"}, - {file = "typing_extensions-4.8.0.tar.gz", hash = "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef"}, + {file = "typing_extensions-4.9.0-py3-none-any.whl", hash = "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"}, + {file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"}, ] [[package]] @@ -962,72 +966,76 @@ devenv = ["check-manifest", "pytest (>=4.3)", "pytest-cov", "pytest-mock (>=3.3) [[package]] name = "ujson" -version = "5.8.0" +version = "5.9.0" description = "Ultra fast JSON encoder and decoder for Python" optional = false python-versions = ">=3.8" files = [ - {file = "ujson-5.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f4511560d75b15ecb367eef561554959b9d49b6ec3b8d5634212f9fed74a6df1"}, - {file = "ujson-5.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9399eaa5d1931a0ead49dce3ffacbea63f3177978588b956036bfe53cdf6af75"}, - {file = "ujson-5.8.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4e7bb7eba0e1963f8b768f9c458ecb193e5bf6977090182e2b4f4408f35ac76"}, - {file = "ujson-5.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40931d7c08c4ce99adc4b409ddb1bbb01635a950e81239c2382cfe24251b127a"}, - {file = "ujson-5.8.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d53039d39de65360e924b511c7ca1a67b0975c34c015dd468fca492b11caa8f7"}, - {file = "ujson-5.8.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:bdf04c6af3852161be9613e458a1fb67327910391de8ffedb8332e60800147a2"}, - {file = "ujson-5.8.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a70f776bda2e5072a086c02792c7863ba5833d565189e09fabbd04c8b4c3abba"}, - {file = "ujson-5.8.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f26629ac531d712f93192c233a74888bc8b8212558bd7d04c349125f10199fcf"}, - {file = "ujson-5.8.0-cp310-cp310-win32.whl", hash = "sha256:7ecc33b107ae88405aebdb8d82c13d6944be2331ebb04399134c03171509371a"}, - {file = "ujson-5.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:3b27a8da7a080add559a3b73ec9ebd52e82cc4419f7c6fb7266e62439a055ed0"}, - {file = "ujson-5.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:193349a998cd821483a25f5df30b44e8f495423840ee11b3b28df092ddfd0f7f"}, - {file = "ujson-5.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4ddeabbc78b2aed531f167d1e70387b151900bc856d61e9325fcdfefb2a51ad8"}, - {file = "ujson-5.8.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ce24909a9c25062e60653073dd6d5e6ec9d6ad7ed6e0069450d5b673c854405"}, - {file = "ujson-5.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27a2a3c7620ebe43641e926a1062bc04e92dbe90d3501687957d71b4bdddaec4"}, - {file = "ujson-5.8.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b852bdf920fe9f84e2a2c210cc45f1b64f763b4f7d01468b33f7791698e455e"}, - {file = "ujson-5.8.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:20768961a6a706170497129960762ded9c89fb1c10db2989c56956b162e2a8a3"}, - {file = "ujson-5.8.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e0147d41e9fb5cd174207c4a2895c5e24813204499fd0839951d4c8784a23bf5"}, - {file = "ujson-5.8.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e3673053b036fd161ae7a5a33358ccae6793ee89fd499000204676baafd7b3aa"}, - {file = "ujson-5.8.0-cp311-cp311-win32.whl", hash = "sha256:a89cf3cd8bf33a37600431b7024a7ccf499db25f9f0b332947fbc79043aad879"}, - {file = "ujson-5.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:3659deec9ab9eb19e8646932bfe6fe22730757c4addbe9d7d5544e879dc1b721"}, - {file = "ujson-5.8.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:102bf31c56f59538cccdfec45649780ae00657e86247c07edac434cb14d5388c"}, - {file = "ujson-5.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:299a312c3e85edee1178cb6453645217ba23b4e3186412677fa48e9a7f986de6"}, - {file = "ujson-5.8.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2e385a7679b9088d7bc43a64811a7713cc7c33d032d020f757c54e7d41931ae"}, - {file = "ujson-5.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad24ec130855d4430a682c7a60ca0bc158f8253ec81feed4073801f6b6cb681b"}, - {file = "ujson-5.8.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:16fde596d5e45bdf0d7de615346a102510ac8c405098e5595625015b0d4b5296"}, - {file = "ujson-5.8.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:6d230d870d1ce03df915e694dcfa3f4e8714369cce2346686dbe0bc8e3f135e7"}, - {file = "ujson-5.8.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:9571de0c53db5cbc265945e08f093f093af2c5a11e14772c72d8e37fceeedd08"}, - {file = "ujson-5.8.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:7cba16b26efe774c096a5e822e4f27097b7c81ed6fb5264a2b3f5fd8784bab30"}, - {file = "ujson-5.8.0-cp312-cp312-win32.whl", hash = "sha256:48c7d373ff22366eecfa36a52b9b55b0ee5bd44c2b50e16084aa88b9de038916"}, - {file = "ujson-5.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:5ac97b1e182d81cf395ded620528c59f4177eee024b4b39a50cdd7b720fdeec6"}, - {file = "ujson-5.8.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2a64cc32bb4a436e5813b83f5aab0889927e5ea1788bf99b930fad853c5625cb"}, - {file = "ujson-5.8.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e54578fa8838ddc722539a752adfce9372474114f8c127bb316db5392d942f8b"}, - {file = "ujson-5.8.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9721cd112b5e4687cb4ade12a7b8af8b048d4991227ae8066d9c4b3a6642a582"}, - {file = "ujson-5.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d9707e5aacf63fb919f6237d6490c4e0244c7f8d3dc2a0f84d7dec5db7cb54c"}, - {file = "ujson-5.8.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0be81bae295f65a6896b0c9030b55a106fb2dec69ef877253a87bc7c9c5308f7"}, - {file = "ujson-5.8.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ae7f4725c344bf437e9b881019c558416fe84ad9c6b67426416c131ad577df67"}, - {file = "ujson-5.8.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:9ab282d67ef3097105552bf151438b551cc4bedb3f24d80fada830f2e132aeb9"}, - {file = "ujson-5.8.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:94c7bd9880fa33fcf7f6d7f4cc032e2371adee3c5dba2922b918987141d1bf07"}, - {file = "ujson-5.8.0-cp38-cp38-win32.whl", hash = "sha256:bf5737dbcfe0fa0ac8fa599eceafae86b376492c8f1e4b84e3adf765f03fb564"}, - {file = "ujson-5.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:11da6bed916f9bfacf13f4fc6a9594abd62b2bb115acfb17a77b0f03bee4cfd5"}, - {file = "ujson-5.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:69b3104a2603bab510497ceabc186ba40fef38ec731c0ccaa662e01ff94a985c"}, - {file = "ujson-5.8.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9249fdefeb021e00b46025e77feed89cd91ffe9b3a49415239103fc1d5d9c29a"}, - {file = "ujson-5.8.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2873d196725a8193f56dde527b322c4bc79ed97cd60f1d087826ac3290cf9207"}, - {file = "ujson-5.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a4dafa9010c366589f55afb0fd67084acd8added1a51251008f9ff2c3e44042"}, - {file = "ujson-5.8.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7a42baa647a50fa8bed53d4e242be61023bd37b93577f27f90ffe521ac9dc7a3"}, - {file = "ujson-5.8.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f3554eaadffe416c6f543af442066afa6549edbc34fe6a7719818c3e72ebfe95"}, - {file = "ujson-5.8.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:fb87decf38cc82bcdea1d7511e73629e651bdec3a43ab40985167ab8449b769c"}, - {file = "ujson-5.8.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:407d60eb942c318482bbfb1e66be093308bb11617d41c613e33b4ce5be789adc"}, - {file = "ujson-5.8.0-cp39-cp39-win32.whl", hash = "sha256:0fe1b7edaf560ca6ab023f81cbeaf9946a240876a993b8c5a21a1c539171d903"}, - {file = "ujson-5.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:3f9b63530a5392eb687baff3989d0fb5f45194ae5b1ca8276282fb647f8dcdb3"}, - {file = "ujson-5.8.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:efeddf950fb15a832376c0c01d8d7713479fbeceaed1eaecb2665aa62c305aec"}, - {file = "ujson-5.8.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7d8283ac5d03e65f488530c43d6610134309085b71db4f675e9cf5dff96a8282"}, - {file = "ujson-5.8.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb0142f6f10f57598655340a3b2c70ed4646cbe674191da195eb0985a9813b83"}, - {file = "ujson-5.8.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07d459aca895eb17eb463b00441986b021b9312c6c8cc1d06880925c7f51009c"}, - {file = "ujson-5.8.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d524a8c15cfc863705991d70bbec998456a42c405c291d0f84a74ad7f35c5109"}, - {file = "ujson-5.8.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d6f84a7a175c75beecde53a624881ff618e9433045a69fcfb5e154b73cdaa377"}, - {file = "ujson-5.8.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b748797131ac7b29826d1524db1cc366d2722ab7afacc2ce1287cdafccddbf1f"}, - {file = "ujson-5.8.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e72ba76313d48a1a3a42e7dc9d1db32ea93fac782ad8dde6f8b13e35c229130"}, - {file = "ujson-5.8.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f504117a39cb98abba4153bf0b46b4954cc5d62f6351a14660201500ba31fe7f"}, - {file = "ujson-5.8.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a8c91b6f4bf23f274af9002b128d133b735141e867109487d17e344d38b87d94"}, - {file = "ujson-5.8.0.tar.gz", hash = "sha256:78e318def4ade898a461b3d92a79f9441e7e0e4d2ad5419abed4336d702c7425"}, + {file = "ujson-5.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ab71bf27b002eaf7d047c54a68e60230fbd5cd9da60de7ca0aa87d0bccead8fa"}, + {file = "ujson-5.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7a365eac66f5aa7a7fdf57e5066ada6226700884fc7dce2ba5483538bc16c8c5"}, + {file = "ujson-5.9.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e015122b337858dba5a3dc3533af2a8fc0410ee9e2374092f6a5b88b182e9fcc"}, + {file = "ujson-5.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:779a2a88c53039bebfbccca934430dabb5c62cc179e09a9c27a322023f363e0d"}, + {file = "ujson-5.9.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10ca3c41e80509fd9805f7c149068fa8dbee18872bbdc03d7cca928926a358d5"}, + {file = "ujson-5.9.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4a566e465cb2fcfdf040c2447b7dd9718799d0d90134b37a20dff1e27c0e9096"}, + {file = "ujson-5.9.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:f833c529e922577226a05bc25b6a8b3eb6c4fb155b72dd88d33de99d53113124"}, + {file = "ujson-5.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b68a0caab33f359b4cbbc10065c88e3758c9f73a11a65a91f024b2e7a1257106"}, + {file = "ujson-5.9.0-cp310-cp310-win32.whl", hash = "sha256:7cc7e605d2aa6ae6b7321c3ae250d2e050f06082e71ab1a4200b4ae64d25863c"}, + {file = "ujson-5.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:a6d3f10eb8ccba4316a6b5465b705ed70a06011c6f82418b59278fbc919bef6f"}, + {file = "ujson-5.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3b23bbb46334ce51ddb5dded60c662fbf7bb74a37b8f87221c5b0fec1ec6454b"}, + {file = "ujson-5.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6974b3a7c17bbf829e6c3bfdc5823c67922e44ff169851a755eab79a3dd31ec0"}, + {file = "ujson-5.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5964ea916edfe24af1f4cc68488448fbb1ec27a3ddcddc2b236da575c12c8ae"}, + {file = "ujson-5.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ba7cac47dd65ff88571eceeff48bf30ed5eb9c67b34b88cb22869b7aa19600d"}, + {file = "ujson-5.9.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6bbd91a151a8f3358c29355a491e915eb203f607267a25e6ab10531b3b157c5e"}, + {file = "ujson-5.9.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:829a69d451a49c0de14a9fecb2a2d544a9b2c884c2b542adb243b683a6f15908"}, + {file = "ujson-5.9.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:a807ae73c46ad5db161a7e883eec0fbe1bebc6a54890152ccc63072c4884823b"}, + {file = "ujson-5.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8fc2aa18b13d97b3c8ccecdf1a3c405f411a6e96adeee94233058c44ff92617d"}, + {file = "ujson-5.9.0-cp311-cp311-win32.whl", hash = "sha256:70e06849dfeb2548be48fdd3ceb53300640bc8100c379d6e19d78045e9c26120"}, + {file = "ujson-5.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:7309d063cd392811acc49b5016728a5e1b46ab9907d321ebbe1c2156bc3c0b99"}, + {file = "ujson-5.9.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:20509a8c9f775b3a511e308bbe0b72897ba6b800767a7c90c5cca59d20d7c42c"}, + {file = "ujson-5.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b28407cfe315bd1b34f1ebe65d3bd735d6b36d409b334100be8cdffae2177b2f"}, + {file = "ujson-5.9.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d302bd17989b6bd90d49bade66943c78f9e3670407dbc53ebcf61271cadc399"}, + {file = "ujson-5.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f21315f51e0db8ee245e33a649dd2d9dce0594522de6f278d62f15f998e050e"}, + {file = "ujson-5.9.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5635b78b636a54a86fdbf6f027e461aa6c6b948363bdf8d4fbb56a42b7388320"}, + {file = "ujson-5.9.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:82b5a56609f1235d72835ee109163c7041b30920d70fe7dac9176c64df87c164"}, + {file = "ujson-5.9.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:5ca35f484622fd208f55041b042d9d94f3b2c9c5add4e9af5ee9946d2d30db01"}, + {file = "ujson-5.9.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:829b824953ebad76d46e4ae709e940bb229e8999e40881338b3cc94c771b876c"}, + {file = "ujson-5.9.0-cp312-cp312-win32.whl", hash = "sha256:25fa46e4ff0a2deecbcf7100af3a5d70090b461906f2299506485ff31d9ec437"}, + {file = "ujson-5.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:60718f1720a61560618eff3b56fd517d107518d3c0160ca7a5a66ac949c6cf1c"}, + {file = "ujson-5.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d581db9db9e41d8ea0b2705c90518ba623cbdc74f8d644d7eb0d107be0d85d9c"}, + {file = "ujson-5.9.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ff741a5b4be2d08fceaab681c9d4bc89abf3c9db600ab435e20b9b6d4dfef12e"}, + {file = "ujson-5.9.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdcb02cabcb1e44381221840a7af04433c1dc3297af76fde924a50c3054c708c"}, + {file = "ujson-5.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e208d3bf02c6963e6ef7324dadf1d73239fb7008491fdf523208f60be6437402"}, + {file = "ujson-5.9.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f4b3917296630a075e04d3d07601ce2a176479c23af838b6cf90a2d6b39b0d95"}, + {file = "ujson-5.9.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0c4d6adb2c7bb9eb7c71ad6f6f612e13b264942e841f8cc3314a21a289a76c4e"}, + {file = "ujson-5.9.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:0b159efece9ab5c01f70b9d10bbb77241ce111a45bc8d21a44c219a2aec8ddfd"}, + {file = "ujson-5.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f0cb4a7814940ddd6619bdce6be637a4b37a8c4760de9373bac54bb7b229698b"}, + {file = "ujson-5.9.0-cp38-cp38-win32.whl", hash = "sha256:dc80f0f5abf33bd7099f7ac94ab1206730a3c0a2d17549911ed2cb6b7aa36d2d"}, + {file = "ujson-5.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:506a45e5fcbb2d46f1a51fead991c39529fc3737c0f5d47c9b4a1d762578fc30"}, + {file = "ujson-5.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d0fd2eba664a22447102062814bd13e63c6130540222c0aa620701dd01f4be81"}, + {file = "ujson-5.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:bdf7fc21a03bafe4ba208dafa84ae38e04e5d36c0e1c746726edf5392e9f9f36"}, + {file = "ujson-5.9.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2f909bc08ce01f122fd9c24bc6f9876aa087188dfaf3c4116fe6e4daf7e194f"}, + {file = "ujson-5.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd4ea86c2afd41429751d22a3ccd03311c067bd6aeee2d054f83f97e41e11d8f"}, + {file = "ujson-5.9.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:63fb2e6599d96fdffdb553af0ed3f76b85fda63281063f1cb5b1141a6fcd0617"}, + {file = "ujson-5.9.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:32bba5870c8fa2a97f4a68f6401038d3f1922e66c34280d710af00b14a3ca562"}, + {file = "ujson-5.9.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:37ef92e42535a81bf72179d0e252c9af42a4ed966dc6be6967ebfb929a87bc60"}, + {file = "ujson-5.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f69f16b8f1c69da00e38dc5f2d08a86b0e781d0ad3e4cc6a13ea033a439c4844"}, + {file = "ujson-5.9.0-cp39-cp39-win32.whl", hash = "sha256:3382a3ce0ccc0558b1c1668950008cece9bf463ebb17463ebf6a8bfc060dae34"}, + {file = "ujson-5.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:6adef377ed583477cf005b58c3025051b5faa6b8cc25876e594afbb772578f21"}, + {file = "ujson-5.9.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ffdfebd819f492e48e4f31c97cb593b9c1a8251933d8f8972e81697f00326ff1"}, + {file = "ujson-5.9.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4eec2ddc046360d087cf35659c7ba0cbd101f32035e19047013162274e71fcf"}, + {file = "ujson-5.9.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fbb90aa5c23cb3d4b803c12aa220d26778c31b6e4b7a13a1f49971f6c7d088e"}, + {file = "ujson-5.9.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba0823cb70866f0d6a4ad48d998dd338dce7314598721bc1b7986d054d782dfd"}, + {file = "ujson-5.9.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:4e35d7885ed612feb6b3dd1b7de28e89baaba4011ecdf995e88be9ac614765e9"}, + {file = "ujson-5.9.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:b048aa93eace8571eedbd67b3766623e7f0acbf08ee291bef7d8106210432427"}, + {file = "ujson-5.9.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:323279e68c195110ef85cbe5edce885219e3d4a48705448720ad925d88c9f851"}, + {file = "ujson-5.9.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9ac92d86ff34296f881e12aa955f7014d276895e0e4e868ba7fddebbde38e378"}, + {file = "ujson-5.9.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:6eecbd09b316cea1fd929b1e25f70382917542ab11b692cb46ec9b0a26c7427f"}, + {file = "ujson-5.9.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:473fb8dff1d58f49912323d7cb0859df5585cfc932e4b9c053bf8cf7f2d7c5c4"}, + {file = "ujson-5.9.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f91719c6abafe429c1a144cfe27883eace9fb1c09a9c5ef1bcb3ae80a3076a4e"}, + {file = "ujson-5.9.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b1c0991c4fe256f5fdb19758f7eac7f47caac29a6c57d0de16a19048eb86bad"}, + {file = "ujson-5.9.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a8ea0f55a1396708e564595aaa6696c0d8af532340f477162ff6927ecc46e21"}, + {file = "ujson-5.9.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:07e0cfdde5fd91f54cd2d7ffb3482c8ff1bf558abf32a8b953a5d169575ae1cd"}, + {file = "ujson-5.9.0.tar.gz", hash = "sha256:89cc92e73d5501b8a7f48575eeb14ad27156ad092c2e9fc7e3cf949f07e75532"}, ] [[package]] diff --git a/pyproject.toml b/pyproject.toml index 5d9fed5b..e5f04de0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,11 +1,11 @@ [tool.poetry] -name = "graspit" -version = "0.12.6" +name = "handshake" +version = "0.1.1" description = "A service that's keen to process your test results" authors = ["Rahul "] license = "MIT" readme = "README.md" -packages = [{include = "graspit"}] +packages = [{include = "handshake"}] maintainers = [ "Rahul " ] @@ -43,4 +43,4 @@ requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" [tool.poetry.scripts] -graspit = "graspit.services.CommandLine.center:handle_cli" +handshake = "handshake.services.CommandLine.center:handle_cli" diff --git a/starter.spec b/starter.spec index 4e673c3f..f6bad7e7 100644 --- a/starter.spec +++ b/starter.spec @@ -3,10 +3,15 @@ import pathlib import platform a = Analysis( - [str(pathlib.Path("graspit") / "services" / "starter.py")], + [str(pathlib.Path("handshake") / "services" / "starter.py")], pathex=[], binaries=[], - datas=[], + datas=[ + ( + "handshake/services/DBService/scripts/*.sql", + "handshake/services/DBService/scripts", + ) + ], hiddenimports=["tracerite", "html5tagger"], hookspath=[ "pyinstaller-hooks", @@ -24,7 +29,7 @@ exe = EXE( a.binaries, a.datas, [], - name=f"graspit-{platform.system()}", + name=f"handshake-{platform.system()}", debug=False, bootloader_ignore_signals=False, strip=False,