diff --git a/CHANGELOG.md b/CHANGELOG.md index e638f56c9..e7e78a97d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,38 @@ +## 2.2.0 + +([Full Changelog](https://github.com/jupyterlab/jupyter-ai/compare/@jupyter-ai/core@2.1.0...56c1f518afd09d0d09a43221f0767aa961e9430f)) + +### Enhancements made + +- Loads vector store index lazily [#374](https://github.com/jupyterlab/jupyter-ai/pull/374) ([@3coins](https://github.com/3coins)) +- Added alias for bedrock titan model [#368](https://github.com/jupyterlab/jupyter-ai/pull/368) ([@3coins](https://github.com/3coins)) +- Update README, docs [#347](https://github.com/jupyterlab/jupyter-ai/pull/347) ([@JasonWeill](https://github.com/JasonWeill)) + +### Bugs fixed + +- fix newline typo in improve_code [#364](https://github.com/jupyterlab/jupyter-ai/pull/364) ([@michaelchia](https://github.com/michaelchia)) + +### Maintenance and upkeep improvements + +- Upgrades LangChain to 0.0.277 [#375](https://github.com/jupyterlab/jupyter-ai/pull/375) ([@3coins](https://github.com/3coins)) +- relax pinning on importlib_metadata, typing_extensions [#363](https://github.com/jupyterlab/jupyter-ai/pull/363) ([@minrk](https://github.com/minrk)) + +### Documentation improvements + +- Remove front end unit tests from code and README.md [#371](https://github.com/jupyterlab/jupyter-ai/pull/371) ([@andrii-i](https://github.com/andrii-i)) +- Update README, docs [#347](https://github.com/jupyterlab/jupyter-ai/pull/347) ([@JasonWeill](https://github.com/JasonWeill)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-ai/graphs/contributors?from=2023-08-15&to=2023-09-05&type=c)) + +[@3coins](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-ai+involves%3A3coins+updated%3A2023-08-15..2023-09-05&type=Issues) | [@andrii-i](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-ai+involves%3Aandrii-i+updated%3A2023-08-15..2023-09-05&type=Issues) | [@JasonWeill](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-ai+involves%3AJasonWeill+updated%3A2023-08-15..2023-09-05&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-ai+involves%3Akrassowski+updated%3A2023-08-15..2023-09-05&type=Issues) | [@michaelchia](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-ai+involves%3Amichaelchia+updated%3A2023-08-15..2023-09-05&type=Issues) | [@minrk](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-ai+involves%3Aminrk+updated%3A2023-08-15..2023-09-05&type=Issues) | [@welcome](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-ai+involves%3Awelcome+updated%3A2023-08-15..2023-09-05&type=Issues) + + + ## 2.1.0 ([Full Changelog](https://github.com/jupyterlab/jupyter-ai/compare/@jupyter-ai/core@2.0.1...c689c6c0cce5212238943ec2ff1559f6ad2f63d5)) @@ -24,8 +56,6 @@ [@3coins](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-ai+involves%3A3coins+updated%3A2023-08-08..2023-08-15&type=Issues) | [@anammari](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-ai+involves%3Aanammari+updated%3A2023-08-08..2023-08-15&type=Issues) | [@bjornjorgensen](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-ai+involves%3Abjornjorgensen+updated%3A2023-08-08..2023-08-15&type=Issues) | [@dlqqq](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-ai+involves%3Adlqqq+updated%3A2023-08-08..2023-08-15&type=Issues) | [@JasonWeill](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-ai+involves%3AJasonWeill+updated%3A2023-08-08..2023-08-15&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-ai+involves%3Akrassowski+updated%3A2023-08-08..2023-08-15&type=Issues) | [@welcome](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-ai+involves%3Awelcome+updated%3A2023-08-08..2023-08-15&type=Issues) - - ## 2.0.1 ([Full Changelog](https://github.com/jupyterlab/jupyter-ai/compare/@jupyter-ai/core@2.0.0...f38d7f4a5b38ae1583c97bc8a0bb58ab09cdabdd)) diff --git a/packages/jupyter-ai/conftest.py b/conftest.py similarity index 100% rename from packages/jupyter-ai/conftest.py rename to conftest.py diff --git a/docs/source/users/index.md b/docs/source/users/index.md index 4a9b02cdb..ad7b717b5 100644 --- a/docs/source/users/index.md +++ b/docs/source/users/index.md @@ -42,6 +42,8 @@ conda install jupyterlab~=4.0 The `jupyter_ai_magics` package, which provides exclusively the IPython magics, does not depend on JupyterLab or `jupyter_ai`. You can install `jupyter_ai_magics` without installing `jupyterlab` or `jupyter_ai`. +If you have both `jupyter_ai_magics` and `jupyter_ai` installed, you should +have the same version of each, to avoid errors. ## Installation diff --git a/examples/commands.ipynb b/examples/commands.ipynb index efc574e55..f2fa722b4 100644 --- a/examples/commands.ipynb +++ b/examples/commands.ipynb @@ -136,13 +136,16 @@ "| Provider | Environment variable | Set? | Models |\n", "|----------|----------------------|------|--------|\n", "| `ai21` | `AI21_API_KEY` | | `ai21:j1-large`, `ai21:j1-grande`, `ai21:j1-jumbo`, `ai21:j1-grande-instruct`, `ai21:j2-large`, `ai21:j2-grande`, `ai21:j2-jumbo`, `ai21:j2-grande-instruct`, `ai21:j2-jumbo-instruct` |\n", - "| `anthropic` | `ANTHROPIC_API_KEY` | | `anthropic:claude-v1`, `anthropic:claude-v1.0`, `anthropic:claude-v1.2`, `anthropic:claude-instant-v1`, `anthropic:claude-instant-v1.0` |\n", + "| `bedrock` | Not applicable. | N/A | `bedrock:amazon.titan-tg1-large`, `bedrock:anthropic.claude-v1`, `bedrock:anthropic.claude-instant-v1`, `bedrock:anthropic.claude-v2`, `bedrock:ai21.j2-jumbo-instruct`, `bedrock:ai21.j2-grande-instruct` |\n", + "| `anthropic` | `ANTHROPIC_API_KEY` | | `anthropic:claude-v1`, `anthropic:claude-v1.0`, `anthropic:claude-v1.2`, `anthropic:claude-2`, `anthropic:claude-instant-v1`, `anthropic:claude-instant-v1.0` |\n", + "| `azure-chat-openai` | `OPENAI_API_KEY` | | This provider does not define a list of models. |\n", "| `cohere` | `COHERE_API_KEY` | | `cohere:medium`, `cohere:xlarge` |\n", - "| `huggingface_hub` | `HUGGINGFACEHUB_API_TOKEN` | | See https://huggingface.co/models for a list of models. Pass a model's repository ID as the model ID; for example, `huggingface_hub:ExampleOwner/example-model`. |\n", + "| `gpt4all` | Not applicable. | N/A | `gpt4all:ggml-gpt4all-j-v1.2-jazzy`, `gpt4all:ggml-gpt4all-j-v1.3-groovy`, `gpt4all:ggml-gpt4all-l13b-snoozy` |\n", + "| `huggingface_hub` | `HUGGINGFACEHUB_API_TOKEN` | | See [https://huggingface.co/models](https://huggingface.co/models) for a list of models. Pass a model's repository ID as the model ID; for example, `huggingface_hub:ExampleOwner/example-model`. |\n", "| `openai` | `OPENAI_API_KEY` | | `openai:text-davinci-003`, `openai:text-davinci-002`, `openai:text-curie-001`, `openai:text-babbage-001`, `openai:text-ada-001`, `openai:davinci`, `openai:curie`, `openai:babbage`, `openai:ada` |\n", - "| `openai-chat` | `OPENAI_API_KEY` | | `openai-chat:gpt-4`, `openai-chat:gpt-4-0314`, `openai-chat:gpt-4-32k`, `openai-chat:gpt-4-32k-0314`, `openai-chat:gpt-3.5-turbo`, `openai-chat:gpt-3.5-turbo-0301` |\n", - "| `openai-chat-new` | `OPENAI_API_KEY` | | `openai-chat-new:gpt-4`, `openai-chat-new:gpt-4-0314`, `openai-chat-new:gpt-4-32k`, `openai-chat-new:gpt-4-32k-0314`, `openai-chat-new:gpt-3.5-turbo`, `openai-chat-new:gpt-3.5-turbo-0301` |\n", - "| `sagemaker-endpoint` | Not applicable. | N/A | Specify an endpoint name as the model ID. In addition, you must include the `--region_name`, `--request_schema`, and the `--response_path` arguments. For more information, see the documentation about [SageMaker endpoints deployment](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html) and about [using magic commands with SageMaker endpoints](https://jupyter-ai.readthedocs.io/en/latest/users/index.html#using-magic-commands-with-sagemaker-endpoints). |\n", + "| `openai-chat` | `OPENAI_API_KEY` | | `openai-chat:gpt-3.5-turbo`, `openai-chat:gpt-3.5-turbo-16k`, `openai-chat:gpt-3.5-turbo-0301`, `openai-chat:gpt-3.5-turbo-0613`, `openai-chat:gpt-3.5-turbo-16k-0613`, `openai-chat:gpt-4`, `openai-chat:gpt-4-0314`, `openai-chat:gpt-4-0613`, `openai-chat:gpt-4-32k`, `openai-chat:gpt-4-32k-0314`, `openai-chat:gpt-4-32k-0613` |\n", + "| `openai-chat-new` | `OPENAI_API_KEY` | | `openai-chat-new:gpt-3.5-turbo`, `openai-chat-new:gpt-3.5-turbo-16k`, `openai-chat-new:gpt-3.5-turbo-0301`, `openai-chat-new:gpt-3.5-turbo-0613`, `openai-chat-new:gpt-3.5-turbo-16k-0613`, `openai-chat-new:gpt-4`, `openai-chat-new:gpt-4-0314`, `openai-chat-new:gpt-4-0613`, `openai-chat-new:gpt-4-32k`, `openai-chat-new:gpt-4-32k-0314`, `openai-chat-new:gpt-4-32k-0613` |\n", + "| `sagemaker-endpoint` | Not applicable. | N/A | Specify an endpoint name as the model ID. In addition, you must specify a region name, request schema, and response path. For more information, see the documentation about [SageMaker endpoints deployment](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html) and about [using magic commands with SageMaker endpoints](https://jupyter-ai.readthedocs.io/en/latest/users/index.html#using-magic-commands-with-sagemaker-endpoints). |\n", "\n", "Aliases and custom commands:\n", "\n", @@ -166,22 +169,40 @@ "* ai21:j2-grande-instruct\n", "* ai21:j2-jumbo-instruct\n", "\n", + "bedrock\n", + "* bedrock:amazon.titan-tg1-large\n", + "* bedrock:anthropic.claude-v1\n", + "* bedrock:anthropic.claude-instant-v1\n", + "* bedrock:anthropic.claude-v2\n", + "* bedrock:ai21.j2-jumbo-instruct\n", + "* bedrock:ai21.j2-grande-instruct\n", + "\n", "anthropic\n", "Requires environment variable ANTHROPIC_API_KEY (set)\n", "* anthropic:claude-v1\n", "* anthropic:claude-v1.0\n", "* anthropic:claude-v1.2\n", + "* anthropic:claude-2\n", "* anthropic:claude-instant-v1\n", "* anthropic:claude-instant-v1.0\n", "\n", + "azure-chat-openai\n", + "Requires environment variable OPENAI_API_KEY (set)\n", + "* This provider does not define a list of models.\n", + "\n", "cohere\n", "Requires environment variable COHERE_API_KEY (set)\n", "* cohere:medium\n", "* cohere:xlarge\n", "\n", + "gpt4all\n", + "* gpt4all:ggml-gpt4all-j-v1.2-jazzy\n", + "* gpt4all:ggml-gpt4all-j-v1.3-groovy\n", + "* gpt4all:ggml-gpt4all-l13b-snoozy\n", + "\n", "huggingface_hub\n", "Requires environment variable HUGGINGFACEHUB_API_TOKEN (set)\n", - "* See https://huggingface.co/models for a list of models. Pass a model's repository ID as the model ID; for example, `huggingface_hub:ExampleOwner/example-model`.\n", + "* See [https://huggingface.co/models](https://huggingface.co/models) for a list of models. Pass a model's repository ID as the model ID; for example, `huggingface_hub:ExampleOwner/example-model`.\n", "\n", "openai\n", "Requires environment variable OPENAI_API_KEY (set)\n", @@ -197,24 +218,34 @@ "\n", "openai-chat\n", "Requires environment variable OPENAI_API_KEY (set)\n", + "* openai-chat:gpt-3.5-turbo\n", + "* openai-chat:gpt-3.5-turbo-16k\n", + "* openai-chat:gpt-3.5-turbo-0301\n", + "* openai-chat:gpt-3.5-turbo-0613\n", + "* openai-chat:gpt-3.5-turbo-16k-0613\n", "* openai-chat:gpt-4\n", "* openai-chat:gpt-4-0314\n", + "* openai-chat:gpt-4-0613\n", "* openai-chat:gpt-4-32k\n", "* openai-chat:gpt-4-32k-0314\n", - "* openai-chat:gpt-3.5-turbo\n", - "* openai-chat:gpt-3.5-turbo-0301\n", + "* openai-chat:gpt-4-32k-0613\n", "\n", "openai-chat-new\n", "Requires environment variable OPENAI_API_KEY (set)\n", + "* openai-chat-new:gpt-3.5-turbo\n", + "* openai-chat-new:gpt-3.5-turbo-16k\n", + "* openai-chat-new:gpt-3.5-turbo-0301\n", + "* openai-chat-new:gpt-3.5-turbo-0613\n", + "* openai-chat-new:gpt-3.5-turbo-16k-0613\n", "* openai-chat-new:gpt-4\n", "* openai-chat-new:gpt-4-0314\n", + "* openai-chat-new:gpt-4-0613\n", "* openai-chat-new:gpt-4-32k\n", "* openai-chat-new:gpt-4-32k-0314\n", - "* openai-chat-new:gpt-3.5-turbo\n", - "* openai-chat-new:gpt-3.5-turbo-0301\n", + "* openai-chat-new:gpt-4-32k-0613\n", "\n", "sagemaker-endpoint\n", - "* Specify an endpoint name as the model ID. In addition, you must include the `--region_name`, `--request_schema`, and the `--response_path` arguments. For more information, see the documentation about [SageMaker endpoints deployment](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html) and about [using magic commands with SageMaker endpoints](https://jupyter-ai.readthedocs.io/en/latest/users/index.html#using-magic-commands-with-sagemaker-endpoints).\n", + "* Specify an endpoint name as the model ID. In addition, you must specify a region name, request schema, and response path. For more information, see the documentation about [SageMaker endpoints deployment](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html) and about [using magic commands with SageMaker endpoints](https://jupyter-ai.readthedocs.io/en/latest/users/index.html#using-magic-commands-with-sagemaker-endpoints).\n", "\n", "\n", "Aliases and custom commands:\n", @@ -318,13 +349,16 @@ "| Provider | Environment variable | Set? | Models |\n", "|----------|----------------------|------|--------|\n", "| `ai21` | `AI21_API_KEY` | | `ai21:j1-large`, `ai21:j1-grande`, `ai21:j1-jumbo`, `ai21:j1-grande-instruct`, `ai21:j2-large`, `ai21:j2-grande`, `ai21:j2-jumbo`, `ai21:j2-grande-instruct`, `ai21:j2-jumbo-instruct` |\n", - "| `anthropic` | `ANTHROPIC_API_KEY` | | `anthropic:claude-v1`, `anthropic:claude-v1.0`, `anthropic:claude-v1.2`, `anthropic:claude-instant-v1`, `anthropic:claude-instant-v1.0` |\n", + "| `bedrock` | Not applicable. | N/A | `bedrock:amazon.titan-tg1-large`, `bedrock:anthropic.claude-v1`, `bedrock:anthropic.claude-instant-v1`, `bedrock:anthropic.claude-v2`, `bedrock:ai21.j2-jumbo-instruct`, `bedrock:ai21.j2-grande-instruct` |\n", + "| `anthropic` | `ANTHROPIC_API_KEY` | | `anthropic:claude-v1`, `anthropic:claude-v1.0`, `anthropic:claude-v1.2`, `anthropic:claude-2`, `anthropic:claude-instant-v1`, `anthropic:claude-instant-v1.0` |\n", + "| `azure-chat-openai` | `OPENAI_API_KEY` | | This provider does not define a list of models. |\n", "| `cohere` | `COHERE_API_KEY` | | `cohere:medium`, `cohere:xlarge` |\n", - "| `huggingface_hub` | `HUGGINGFACEHUB_API_TOKEN` | | See https://huggingface.co/models for a list of models. Pass a model's repository ID as the model ID; for example, `huggingface_hub:ExampleOwner/example-model`. |\n", + "| `gpt4all` | Not applicable. | N/A | `gpt4all:ggml-gpt4all-j-v1.2-jazzy`, `gpt4all:ggml-gpt4all-j-v1.3-groovy`, `gpt4all:ggml-gpt4all-l13b-snoozy` |\n", + "| `huggingface_hub` | `HUGGINGFACEHUB_API_TOKEN` | | See [https://huggingface.co/models](https://huggingface.co/models) for a list of models. Pass a model's repository ID as the model ID; for example, `huggingface_hub:ExampleOwner/example-model`. |\n", "| `openai` | `OPENAI_API_KEY` | | `openai:text-davinci-003`, `openai:text-davinci-002`, `openai:text-curie-001`, `openai:text-babbage-001`, `openai:text-ada-001`, `openai:davinci`, `openai:curie`, `openai:babbage`, `openai:ada` |\n", - "| `openai-chat` | `OPENAI_API_KEY` | | `openai-chat:gpt-4`, `openai-chat:gpt-4-0314`, `openai-chat:gpt-4-32k`, `openai-chat:gpt-4-32k-0314`, `openai-chat:gpt-3.5-turbo`, `openai-chat:gpt-3.5-turbo-0301` |\n", - "| `openai-chat-new` | `OPENAI_API_KEY` | | `openai-chat-new:gpt-4`, `openai-chat-new:gpt-4-0314`, `openai-chat-new:gpt-4-32k`, `openai-chat-new:gpt-4-32k-0314`, `openai-chat-new:gpt-3.5-turbo`, `openai-chat-new:gpt-3.5-turbo-0301` |\n", - "| `sagemaker-endpoint` | Not applicable. | N/A | Specify an endpoint name as the model ID. In addition, you must include the `--region_name`, `--request_schema`, and the `--response_path` arguments. For more information, see the documentation about [SageMaker endpoints deployment](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html) and about [using magic commands with SageMaker endpoints](https://jupyter-ai.readthedocs.io/en/latest/users/index.html#using-magic-commands-with-sagemaker-endpoints). |\n", + "| `openai-chat` | `OPENAI_API_KEY` | | `openai-chat:gpt-3.5-turbo`, `openai-chat:gpt-3.5-turbo-16k`, `openai-chat:gpt-3.5-turbo-0301`, `openai-chat:gpt-3.5-turbo-0613`, `openai-chat:gpt-3.5-turbo-16k-0613`, `openai-chat:gpt-4`, `openai-chat:gpt-4-0314`, `openai-chat:gpt-4-0613`, `openai-chat:gpt-4-32k`, `openai-chat:gpt-4-32k-0314`, `openai-chat:gpt-4-32k-0613` |\n", + "| `openai-chat-new` | `OPENAI_API_KEY` | | `openai-chat-new:gpt-3.5-turbo`, `openai-chat-new:gpt-3.5-turbo-16k`, `openai-chat-new:gpt-3.5-turbo-0301`, `openai-chat-new:gpt-3.5-turbo-0613`, `openai-chat-new:gpt-3.5-turbo-16k-0613`, `openai-chat-new:gpt-4`, `openai-chat-new:gpt-4-0314`, `openai-chat-new:gpt-4-0613`, `openai-chat-new:gpt-4-32k`, `openai-chat-new:gpt-4-32k-0314`, `openai-chat-new:gpt-4-32k-0613` |\n", + "| `sagemaker-endpoint` | Not applicable. | N/A | Specify an endpoint name as the model ID. In addition, you must specify a region name, request schema, and response path. For more information, see the documentation about [SageMaker endpoints deployment](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html) and about [using magic commands with SageMaker endpoints](https://jupyter-ai.readthedocs.io/en/latest/users/index.html#using-magic-commands-with-sagemaker-endpoints). |\n", "\n", "Aliases and custom commands:\n", "\n", @@ -349,22 +383,40 @@ "* ai21:j2-grande-instruct\n", "* ai21:j2-jumbo-instruct\n", "\n", + "bedrock\n", + "* bedrock:amazon.titan-tg1-large\n", + "* bedrock:anthropic.claude-v1\n", + "* bedrock:anthropic.claude-instant-v1\n", + "* bedrock:anthropic.claude-v2\n", + "* bedrock:ai21.j2-jumbo-instruct\n", + "* bedrock:ai21.j2-grande-instruct\n", + "\n", "anthropic\n", "Requires environment variable ANTHROPIC_API_KEY (set)\n", "* anthropic:claude-v1\n", "* anthropic:claude-v1.0\n", "* anthropic:claude-v1.2\n", + "* anthropic:claude-2\n", "* anthropic:claude-instant-v1\n", "* anthropic:claude-instant-v1.0\n", "\n", + "azure-chat-openai\n", + "Requires environment variable OPENAI_API_KEY (set)\n", + "* This provider does not define a list of models.\n", + "\n", "cohere\n", "Requires environment variable COHERE_API_KEY (set)\n", "* cohere:medium\n", "* cohere:xlarge\n", "\n", + "gpt4all\n", + "* gpt4all:ggml-gpt4all-j-v1.2-jazzy\n", + "* gpt4all:ggml-gpt4all-j-v1.3-groovy\n", + "* gpt4all:ggml-gpt4all-l13b-snoozy\n", + "\n", "huggingface_hub\n", "Requires environment variable HUGGINGFACEHUB_API_TOKEN (set)\n", - "* See https://huggingface.co/models for a list of models. Pass a model's repository ID as the model ID; for example, `huggingface_hub:ExampleOwner/example-model`.\n", + "* See [https://huggingface.co/models](https://huggingface.co/models) for a list of models. Pass a model's repository ID as the model ID; for example, `huggingface_hub:ExampleOwner/example-model`.\n", "\n", "openai\n", "Requires environment variable OPENAI_API_KEY (set)\n", @@ -380,24 +432,34 @@ "\n", "openai-chat\n", "Requires environment variable OPENAI_API_KEY (set)\n", + "* openai-chat:gpt-3.5-turbo\n", + "* openai-chat:gpt-3.5-turbo-16k\n", + "* openai-chat:gpt-3.5-turbo-0301\n", + "* openai-chat:gpt-3.5-turbo-0613\n", + "* openai-chat:gpt-3.5-turbo-16k-0613\n", "* openai-chat:gpt-4\n", "* openai-chat:gpt-4-0314\n", + "* openai-chat:gpt-4-0613\n", "* openai-chat:gpt-4-32k\n", "* openai-chat:gpt-4-32k-0314\n", - "* openai-chat:gpt-3.5-turbo\n", - "* openai-chat:gpt-3.5-turbo-0301\n", + "* openai-chat:gpt-4-32k-0613\n", "\n", "openai-chat-new\n", "Requires environment variable OPENAI_API_KEY (set)\n", + "* openai-chat-new:gpt-3.5-turbo\n", + "* openai-chat-new:gpt-3.5-turbo-16k\n", + "* openai-chat-new:gpt-3.5-turbo-0301\n", + "* openai-chat-new:gpt-3.5-turbo-0613\n", + "* openai-chat-new:gpt-3.5-turbo-16k-0613\n", "* openai-chat-new:gpt-4\n", "* openai-chat-new:gpt-4-0314\n", + "* openai-chat-new:gpt-4-0613\n", "* openai-chat-new:gpt-4-32k\n", "* openai-chat-new:gpt-4-32k-0314\n", - "* openai-chat-new:gpt-3.5-turbo\n", - "* openai-chat-new:gpt-3.5-turbo-0301\n", + "* openai-chat-new:gpt-4-32k-0613\n", "\n", "sagemaker-endpoint\n", - "* Specify an endpoint name as the model ID. In addition, you must include the `--region_name`, `--request_schema`, and the `--response_path` arguments. For more information, see the documentation about [SageMaker endpoints deployment](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html) and about [using magic commands with SageMaker endpoints](https://jupyter-ai.readthedocs.io/en/latest/users/index.html#using-magic-commands-with-sagemaker-endpoints).\n", + "* Specify an endpoint name as the model ID. In addition, you must specify a region name, request schema, and response path. For more information, see the documentation about [SageMaker endpoints deployment](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html) and about [using magic commands with SageMaker endpoints](https://jupyter-ai.readthedocs.io/en/latest/users/index.html#using-magic-commands-with-sagemaker-endpoints).\n", "\n", "\n", "Aliases and custom commands:\n", @@ -1055,7 +1117,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.8" + "version": "3.11.4" } }, "nbformat": 4, diff --git a/lerna.json b/lerna.json index e19e10b60..b3c956cad 100644 --- a/lerna.json +++ b/lerna.json @@ -1,7 +1,7 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", "useWorkspaces": true, - "version": "2.1.0", + "version": "2.2.0", "npmClient": "yarn", "useNx": true } diff --git a/package.json b/package.json index edbaccdd6..09b89e11e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@jupyter-ai/monorepo", - "version": "2.1.0", + "version": "2.2.0", "description": "A generative AI extension for JupyterLab", "private": true, "keywords": [ @@ -33,7 +33,8 @@ "dev-uninstall": "lerna run dev-uninstall --stream", "lint": "jlpm && lerna run prettier && lerna run eslint", "lint:check": "lerna run prettier:check && lerna run eslint:check", - "watch": "lerna run watch --parallel --stream" + "watch": "lerna run watch --parallel --stream", + "test": "lerna run test" }, "devDependencies": { "@jupyterlab/builder": "^4", diff --git a/packages/jupyter-ai-magics/jupyter_ai_magics/providers.py b/packages/jupyter-ai-magics/jupyter_ai_magics/providers.py index 93616a655..149cf9fd8 100644 --- a/packages/jupyter-ai-magics/jupyter_ai_magics/providers.py +++ b/packages/jupyter-ai-magics/jupyter_ai_magics/providers.py @@ -300,7 +300,7 @@ class HfHubProvider(BaseProvider, HuggingFaceHub): models = ["*"] model_id_key = "repo_id" help = ( - "See https://huggingface.co/models for a list of models. " + "See [https://huggingface.co/models](https://huggingface.co/models) for a list of models. " "Pass a model's repository ID as the model ID; for example, `huggingface_hub:ExampleOwner/example-model`." ) # ipywidgets needed to suppress tqdm warning @@ -542,7 +542,7 @@ class SmEndpointProvider(BaseProvider, SagemakerEndpoint): # This all needs to be on one line of markdown, for use in a table help = ( "Specify an endpoint name as the model ID. " - "In addition, you must include the `--region_name`, `--request_schema`, and the `--response_path` arguments. " + "In addition, you must specify a region name, request schema, and response path. " "For more information, see the documentation about [SageMaker endpoints deployment](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html) " "and about [using magic commands with SageMaker endpoints](https://jupyter-ai.readthedocs.io/en/latest/users/index.html#using-magic-commands-with-sagemaker-endpoints)." ) diff --git a/packages/jupyter-ai-magics/package.json b/packages/jupyter-ai-magics/package.json index 3623e2113..fea5f845a 100644 --- a/packages/jupyter-ai-magics/package.json +++ b/packages/jupyter-ai-magics/package.json @@ -1,6 +1,6 @@ { "name": "@jupyter-ai/magics", - "version": "2.1.0", + "version": "2.2.0", "description": "Jupyter AI magics Python package. Not published on NPM.", "private": true, "homepage": "https://github.com/jupyterlab/jupyter-ai", diff --git a/packages/jupyter-ai/.gitignore b/packages/jupyter-ai/.gitignore index 7c34e452b..7198a2ce0 100644 --- a/packages/jupyter-ai/.gitignore +++ b/packages/jupyter-ai/.gitignore @@ -124,3 +124,4 @@ dmypy.json # Coverage reports coverage/* +junit.xml diff --git a/packages/jupyter-ai/jest.config.js b/packages/jupyter-ai/jest.config.js index 4f1bf3dab..c289e813e 100644 --- a/packages/jupyter-ai/jest.config.js +++ b/packages/jupyter-ai/jest.config.js @@ -1,46 +1,29 @@ const jestJupyterLab = require('@jupyterlab/testutils/lib/jest-config'); const esModules = [ + '@codemirror', + '@jupyter/ydoc', '@jupyterlab/', 'lib0', - 'y\\-protocols', - 'y\\-websocket', + 'nanoid', + 'vscode-ws-jsonrpc', + 'y-protocols', + 'y-websocket', 'yjs' ].join('|'); -const jlabConfig = jestJupyterLab(__dirname); - -const { - moduleFileExtensions, - moduleNameMapper, - preset, - setupFilesAfterEnv, - setupFiles, - testPathIgnorePatterns, - transform -} = jlabConfig; +const baseConfig = jestJupyterLab(__dirname); module.exports = { - moduleFileExtensions, - moduleNameMapper, - preset, - setupFilesAfterEnv, - setupFiles, - testPathIgnorePatterns, - transform, + ...baseConfig, automock: false, collectCoverageFrom: [ - 'src/**/*.{ts,tsx}', - '!src/**/*.d.ts', - '!src/**/.ipynb_checkpoints/*' + // TODO: re-enable coverage reports when we have more comprehensive testing + // 'src/**/*.{ts,tsx}', + // '!src/**/*.d.ts', + // '!src/**/.ipynb_checkpoints/*' ], - coverageDirectory: 'coverage', coverageReporters: ['lcov', 'text'], - globals: { - 'ts-jest': { - tsconfig: 'tsconfig.json' - } - }, testRegex: 'src/.*/.*.spec.ts[x]?$', transformIgnorePatterns: [`/node_modules/(?!${esModules}).+`] }; diff --git a/packages/jupyter-ai/jupyter_ai/chat_handlers/base.py b/packages/jupyter-ai/jupyter_ai/chat_handlers/base.py index ebb2fc72d..87da6d214 100644 --- a/packages/jupyter-ai/jupyter_ai/chat_handlers/base.py +++ b/packages/jupyter-ai/jupyter_ai/chat_handlers/base.py @@ -61,8 +61,8 @@ def reply(self, response, human_msg: Optional[HumanChatMessage] = None): break def get_llm_chain(self): - lm_provider = self.config_manager.get_lm_provider() - lm_provider_params = self.config_manager.get_lm_provider_params() + lm_provider = self.config_manager.lm_provider + lm_provider_params = self.config_manager.lm_provider_params curr_lm_id = ( f'{self.llm.id}:{lm_provider_params["model_id"]}' if self.llm else None diff --git a/packages/jupyter-ai/jupyter_ai/chat_handlers/learn.py b/packages/jupyter-ai/jupyter_ai/chat_handlers/learn.py index 7d88beac2..712444f3c 100644 --- a/packages/jupyter-ai/jupyter_ai/chat_handlers/learn.py +++ b/packages/jupyter-ai/jupyter_ai/chat_handlers/learn.py @@ -278,10 +278,7 @@ async def aget_relevant_documents( return docs def get_embedding_provider(self): - em_provider_cls = self.config_manager.get_em_provider() - em_provider_args = self.config_manager.get_em_provider_params() - - return em_provider_cls, em_provider_args + return self.config_manager.em_provider, self.config_manager.em_provider_params def get_embedding_model(self): em_provider_cls, em_provider_args = self.get_embedding_provider() diff --git a/packages/jupyter-ai/jupyter_ai/config/config_schema.json b/packages/jupyter-ai/jupyter_ai/config/config_schema.json new file mode 100644 index 000000000..ff7c717c4 --- /dev/null +++ b/packages/jupyter-ai/jupyter_ai/config/config_schema.json @@ -0,0 +1,42 @@ +{ + "title": "Jupyter AI configuration", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$comment": "Default values are sourced from `config_manager.py`.", + "type": "object", + "properties": { + "model_provider_id": { + "$comment": "Language model global ID.", + "type": ["string", "null"], + "default": null, + "readOnly": false + }, + "embeddings_provider_id": { + "$comment": "Embedding model global ID.", + "type": ["string", "null"], + "default": null, + "readOnly": false + }, + "api_keys": { + "$comment": "Dictionary of API keys, mapping key names to key values.", + "type": "object", + "default": {} + }, + "send_with_shift_enter": { + "$comment": "Whether to send a message via Shift-Enter instead of Enter.", + "type": "boolean", + "default": false, + "readOnly": false + }, + "fields": { + "$comment": "Dictionary of model-specific fields, mapping LM GIDs to sub-dictionaries of field key-value pairs.", + "type": "object", + "default": {}, + "patternProperties": { + "^.*$": { + "anyOf": [{ "type": "object" }] + } + }, + "additionalProperties": false + } + } +} diff --git a/packages/jupyter-ai/jupyter_ai/config_manager.py b/packages/jupyter-ai/jupyter_ai/config_manager.py index 5fa8b8a72..f61e07bde 100644 --- a/packages/jupyter-ai/jupyter_ai/config_manager.py +++ b/packages/jupyter-ai/jupyter_ai/config_manager.py @@ -1,9 +1,13 @@ import json import logging import os -from typing import Any, Dict, Union +import shutil +import time +from typing import Optional, Union -from jupyter_ai.models import GlobalConfig +from deepmerge import always_merger as Merger +from jsonschema import Draft202012Validator as Validator +from jupyter_ai.models import DescribeConfigResponse, GlobalConfig, UpdateConfigRequest from jupyter_ai_magics.utils import ( AnyProvider, EmProvidersDict, @@ -12,120 +16,317 @@ get_lm_provider, ) from jupyter_core.paths import jupyter_data_dir +from traitlets import Integer, Unicode +from traitlets.config import Configurable Logger = Union[logging.Logger, logging.LoggerAdapter] +# default path to config +DEFAULT_CONFIG_PATH = os.path.join(jupyter_data_dir(), "jupyter_ai", "config.json") -class ConfigManager: +# default path to config JSON Schema +DEFAULT_SCHEMA_PATH = os.path.join( + jupyter_data_dir(), "jupyter_ai", "config_schema.json" +) + +# default no. of spaces to use when formatting config +DEFAULT_INDENTATION_DEPTH = 4 + +# path to the default schema defined in this project +# if a file does not exist at SCHEMA_PATH, this file is used as a default. +OUR_SCHEMA_PATH = os.path.join( + os.path.dirname(__file__), "config", "config_schema.json" +) + + +class AuthError(Exception): + pass + + +class WriteConflictError(Exception): + pass + + +class KeyInUseError(Exception): + pass + + +class KeyEmptyError(Exception): + pass + + +def _validate_provider_authn(config: GlobalConfig, provider: AnyProvider): + # TODO: handle non-env auth strategies + if not provider.auth_strategy or provider.auth_strategy.type != "env": + return + + if provider.auth_strategy.name not in config.api_keys: + raise AuthError( + f"Missing API key for '{provider.auth_strategy.name}' in the config." + ) + + +class ConfigManager(Configurable): """Provides model and embedding provider id along with the credentials to authenticate providers. """ + config_path = Unicode( + default_value=DEFAULT_CONFIG_PATH, + help="Path to the configuration file.", + allow_none=False, + config=True, + ) + + schema_path = Unicode( + default_value=DEFAULT_SCHEMA_PATH, + help="Path to the configuration's corresponding JSON Schema file.", + allow_none=False, + config=True, + ) + + indentation_depth = Integer( + default_value=DEFAULT_INDENTATION_DEPTH, + help="Indentation depth, in number of spaces per level.", + allow_none=False, + config=True, + ) + def __init__( - self, log: Logger, lm_providers: LmProvidersDict, em_providers: EmProvidersDict + self, + log: Logger, + lm_providers: LmProvidersDict, + em_providers: EmProvidersDict, + *args, + **kwargs, ): + super().__init__(*args, **kwargs) self.log = log - self.save_dir = os.path.join(jupyter_data_dir(), "jupyter_ai") - self.save_path = os.path.join(self.save_dir, "config.json") - self.config = None - self.lm_providers = lm_providers - self.em_providers = em_providers - self.lm_provider = None - self.lm_provider_params = {} - self.em_provider = None - self.em_provider_params = {} - self._load() - - def update(self, config: GlobalConfig, save_to_disk: bool = True): - self._update_lm_provider(config) - self._update_em_provider(config) - if save_to_disk: - self._save(config) - self.config = config + """List of LM providers.""" + self._lm_providers = lm_providers + """List of EM providers.""" + self._em_providers = em_providers - def get_config(self): - return self.config + """When the server last read the config file. If the file was not + modified after this time, then we can return the cached + `self._config`.""" + self._last_read: Optional[int] = None - def get_lm_provider(self): - return self.lm_provider + """In-memory cache of the `GlobalConfig` object parsed from the config + file.""" + self._config: Optional[GlobalConfig] = None - def get_lm_provider_params(self): - return self.lm_provider_params + self._init_config_schema() + self._init_validator() + self._init_config() - def get_em_provider(self): - return self.em_provider + def _init_config_schema(self): + if not os.path.exists(self.schema_path): + os.makedirs(os.path.dirname(self.schema_path), exist_ok=True) + shutil.copy(OUR_SCHEMA_PATH, self.schema_path) - def get_em_provider_params(self): - return self.em_provider_params + def _init_validator(self) -> Validator: + with open(OUR_SCHEMA_PATH, encoding="utf-8") as f: + schema = json.loads(f.read()) + Validator.check_schema(schema) + self.validator = Validator(schema) - def _authenticate_provider( - self, - provider: AnyProvider, - provider_params: Dict[str, Any], - config: GlobalConfig, - ): - auth_strategy = provider.auth_strategy - if auth_strategy and auth_strategy.type == "env": - api_keys = config.api_keys - name = auth_strategy.name - if name not in api_keys: + def _init_config(self): + if os.path.exists(self.config_path): + with open(self.config_path, encoding="utf-8") as f: + config = GlobalConfig(**json.loads(f.read())) + # re-write to the file to validate the config and apply any + # updates to the config file immediately + self._write_config(config) + return + + properties = self.validator.schema.get("properties", {}) + field_list = GlobalConfig.__fields__.keys() + field_dict = { + field: properties.get(field).get("default") for field in field_list + } + default_config = GlobalConfig(**field_dict) + self._write_config(default_config) + + def _read_config(self) -> GlobalConfig: + """Returns the user's current configuration as a GlobalConfig object. + This should never be sent to the client as it includes API keys. Prefer + self.get_config() for sending the config to the client.""" + if self._config and self._last_read: + last_write = os.stat(self.config_path).st_mtime_ns + if last_write <= self._last_read: + return self._config + + with open(self.config_path, encoding="utf-8") as f: + self._last_read = time.time_ns() + raw_config = json.loads(f.read()) + config = GlobalConfig(**raw_config) + self._validate_config(config) + return config + + def _validate_config(self, config: GlobalConfig): + """Method used to validate the configuration. This is called after every + read and before every write to the config file. Guarantees that the + config file conforms to the JSON Schema, and that the language and + embedding models have authn credentials if specified.""" + self.validator.validate(config.dict()) + + # validate language model config + if config.model_provider_id: + _, lm_provider = get_lm_provider( + config.model_provider_id, self._lm_providers + ) + if not lm_provider: raise ValueError( - f"Missing value for '{auth_strategy.name}' in the config." + f"No language model is associated with '{config.model_provider_id}'." ) - provider_params[name.lower()] = api_keys[name] + _validate_provider_authn(config, lm_provider) - def _update_lm_provider(self, config: GlobalConfig): - model_id = config.model_provider_id + # validate embedding model config + if config.embeddings_provider_id: + _, em_provider = get_em_provider( + config.embeddings_provider_id, self._em_providers + ) + if not em_provider: + raise ValueError( + f"No embedding model is associated with '{config.embeddings_provider_id}'." + ) + _validate_provider_authn(config, em_provider) - if not model_id: - self.lm_provider = None - self.lm_provider_params = None - return + def _write_config(self, new_config: GlobalConfig): + """Updates configuration and persists it to disk. This accepts a + complete `GlobalConfig` object, and should not be called publicly.""" + # remove any empty field dictionaries + new_config.fields = {k: v for k, v in new_config.fields.items() if v} - local_model_id, provider = get_lm_provider(model_id, self.lm_providers) + self._validate_config(new_config) + with open(self.config_path, "w") as f: + json.dump(new_config.dict(), f, indent=self.indentation_depth) - if not provider: - raise ValueError(f"No provider and model found with '{model_id}'") + def delete_api_key(self, key_name: str): + config_dict = self._read_config().dict() + lm_provider = self.lm_provider + em_provider = self.em_provider + required_keys = [] + if ( + lm_provider + and lm_provider.auth_strategy + and lm_provider.auth_strategy.type == "env" + ): + required_keys.append(lm_provider.auth_strategy.name) + if ( + em_provider + and em_provider.auth_strategy + and em_provider.auth_strategy.type == "env" + ): + required_keys.append(self.em_provider.auth_strategy.name) - fields = config.fields.get(model_id, {}) - provider_params = {"model_id": local_model_id, **fields} + if key_name in required_keys: + raise KeyInUseError( + "This API key is currently in use by the language or embedding model. Please change the model before deleting the corresponding API key." + ) - self._authenticate_provider(provider, provider_params, config) - self.lm_provider = provider - self.lm_provider_params = provider_params + config_dict["api_keys"].pop(key_name, None) + self._write_config(GlobalConfig(**config_dict)) - def _update_em_provider(self, config: GlobalConfig): - model_id = config.embeddings_provider_id + def update_config(self, config_update: UpdateConfigRequest): + last_write = os.stat(self.config_path).st_mtime_ns + if config_update.last_read and config_update.last_read < last_write: + raise WriteConflictError( + "Configuration was modified after it was read from disk." + ) - if not model_id: - self.em_provider = None - self.em_provider_params - return + if config_update.api_keys: + for api_key_value in config_update.api_keys.values(): + if not api_key_value: + raise KeyEmptyError("API key value cannot be empty.") - local_model_id, provider = get_em_provider(model_id, self.em_providers) + config_dict = self._read_config().dict() + Merger.merge(config_dict, config_update.dict(exclude_unset=True)) + self._write_config(GlobalConfig(**config_dict)) - if not provider: - raise ValueError(f"No provider and model found with '{model_id}'") + # this cannot be a property, as the parent Configurable already defines the + # self.config attr. + def get_config(self): + config = self._read_config() + config_dict = config.dict(exclude_unset=True) + api_key_names = list(config_dict.pop("api_keys").keys()) + return DescribeConfigResponse( + **config_dict, api_keys=api_key_names, last_read=self._last_read + ) - provider_params = {"model_id": local_model_id} + @property + def lm_gid(self): + config = self._read_config() + return config.model_provider_id - self._authenticate_provider(provider, provider_params, config) - self.em_provider = provider - self.em_provider_params = provider_params + @property + def em_gid(self): + config = self._read_config() + return config.embeddings_provider_id - def _save(self, config: GlobalConfig): - if not os.path.exists(self.save_dir): - os.makedirs(self.save_dir) + @property + def lm_provider(self): + config = self._read_config() + lm_gid = config.model_provider_id + if lm_gid is None: + return None - with open(self.save_path, "w") as f: - f.write(config.json()) + _, Provider = get_lm_provider(config.model_provider_id, self._lm_providers) + return Provider - def _load(self): - if os.path.exists(self.save_path): - with open(self.save_path, encoding="utf-8") as f: - config = GlobalConfig(**json.loads(f.read())) - self.update(config, False) - return + @property + def em_provider(self): + config = self._read_config() + em_gid = config.embeddings_provider_id + if em_gid is None: + return None + + _, Provider = get_em_provider(em_gid, self._em_providers) + return Provider + + @property + def lm_provider_params(self): + # get generic fields + config = self._read_config() + lm_gid = config.model_provider_id + if not lm_gid: + return None + + lm_lid = lm_gid.split(":", 1)[1] + fields = config.fields.get(lm_gid, {}) + + # get authn fields + _, Provider = get_lm_provider(lm_gid, self._lm_providers) + authn_fields = {} + if Provider.auth_strategy and Provider.auth_strategy.type == "env": + key_name = Provider.auth_strategy.name + authn_fields[key_name.lower()] = config.api_keys[key_name] + + return { + "model_id": lm_lid, + **fields, + **authn_fields, + } + + @property + def em_provider_params(self): + # get generic fields + config = self._read_config() + em_gid = config.embeddings_provider_id + if not em_gid: + return None + + em_lid = em_gid.split(":", 1)[1] + + # get authn fields + _, Provider = get_em_provider(em_gid, self._em_providers) + authn_fields = {} + if Provider.auth_strategy and Provider.auth_strategy.type == "env": + key_name = Provider.auth_strategy.name + authn_fields[key_name.lower()] = config.api_keys[key_name] - # otherwise, create a new empty config file - self.update(GlobalConfig(), True) + return { + "model_id": em_lid, + **authn_fields, + } diff --git a/packages/jupyter-ai/jupyter_ai/extension.py b/packages/jupyter-ai/jupyter_ai/extension.py index a6564679b..7b6d07b31 100644 --- a/packages/jupyter-ai/jupyter_ai/extension.py +++ b/packages/jupyter-ai/jupyter_ai/extension.py @@ -16,6 +16,7 @@ from .chat_handlers.help import HelpMessage from .config_manager import ConfigManager from .handlers import ( + ApiKeysHandler, ChatHistoryHandler, EmbeddingsModelProviderHandler, GlobalConfigHandler, @@ -27,7 +28,8 @@ class AiExtension(ExtensionApp): name = "jupyter_ai" handlers = [ - ("api/ai/config", GlobalConfigHandler), + (r"api/ai/api_keys/(?P\w+)", ApiKeysHandler), + (r"api/ai/config/?", GlobalConfigHandler), (r"api/ai/chats/?", RootChatHandler), (r"api/ai/chats/history?", ChatHistoryHandler), (r"api/ai/providers?", ModelProviderHandler), @@ -41,6 +43,8 @@ def initialize_settings(self): self.settings["em_providers"] = get_em_providers(log=self.log) self.settings["jai_config_manager"] = ConfigManager( + # traitlets configuration, not JAI configuration. + config=self.config, log=self.log, lm_providers=self.settings["lm_providers"], em_providers=self.settings["em_providers"], diff --git a/packages/jupyter-ai/jupyter_ai/handlers.py b/packages/jupyter-ai/jupyter_ai/handlers.py index 95db5198a..ddc4c6255 100644 --- a/packages/jupyter-ai/jupyter_ai/handlers.py +++ b/packages/jupyter-ai/jupyter_ai/handlers.py @@ -8,6 +8,7 @@ import tornado from jupyter_ai.chat_handlers import BaseChatHandler +from jupyter_ai.config_manager import ConfigManager, KeyEmptyError, WriteConflictError from jupyter_server.base.handlers import APIHandler as BaseAPIHandler from jupyter_server.base.handlers import JupyterHandler from pydantic import ValidationError @@ -22,11 +23,11 @@ ChatRequest, ChatUser, ConnectionMessage, - GlobalConfig, HumanChatMessage, ListProvidersEntry, ListProvidersResponse, Message, + UpdateConfigRequest, ) if TYPE_CHECKING: @@ -261,6 +262,7 @@ def get(self): id=provider.id, name=provider.name, models=provider.models, + help=provider.help, auth_strategy=provider.auth_strategy, registry=provider.registry, fields=provider.fields, @@ -320,11 +322,11 @@ def get(self): @web.authenticated def post(self): try: - config = GlobalConfig(**self.get_json_body()) - self.config_manager.update(config) + config = UpdateConfigRequest(**self.get_json_body()) + self.config_manager.update_config(config) self.set_status(204) self.finish() - except ValidationError as e: + except (ValidationError, WriteConflictError, KeyEmptyError) as e: self.log.exception(e) raise HTTPError(500, str(e)) from e except ValueError as e: @@ -335,3 +337,16 @@ def post(self): raise HTTPError( 500, "Unexpected error occurred while updating the config." ) from e + + +class ApiKeysHandler(BaseAPIHandler): + @property + def config_manager(self) -> ConfigManager: + return self.settings["jai_config_manager"] + + @web.authenticated + def delete(self, api_key_name: str): + try: + self.config_manager.delete_api_key(api_key_name) + except Exception as e: + raise HTTPError(500, str(e)) diff --git a/packages/jupyter-ai/jupyter_ai/models.py b/packages/jupyter-ai/jupyter_ai/models.py index ca2030881..efe501923 100644 --- a/packages/jupyter-ai/jupyter_ai/models.py +++ b/packages/jupyter-ai/jupyter_ai/models.py @@ -1,7 +1,7 @@ from typing import Any, Dict, List, Literal, Optional, Union from jupyter_ai_magics.providers import AuthStrategy, Field -from pydantic import BaseModel +from pydantic import BaseModel, validator DEFAULT_CHUNK_SIZE = 2000 DEFAULT_CHUNK_OVERLAP = 100 @@ -79,6 +79,7 @@ class ListProvidersEntry(BaseModel): name: str model_id_label: Optional[str] models: List[str] + help: Optional[str] auth_strategy: AuthStrategy registry: bool fields: List[Field] @@ -98,9 +99,47 @@ class IndexMetadata(BaseModel): dirs: List[IndexedDir] +class DescribeConfigResponse(BaseModel): + model_provider_id: Optional[str] + embeddings_provider_id: Optional[str] + send_with_shift_enter: bool + fields: Dict[str, Dict[str, Any]] + # when sending config over REST API, do not include values of the API keys, + # just the names. + api_keys: List[str] + # timestamp indicating when the configuration file was last read. should be + # passed to the subsequent UpdateConfig request. + last_read: int + + +def forbid_none(cls, v): + assert v is not None, "size may not be None" + return v + + +class UpdateConfigRequest(BaseModel): + model_provider_id: Optional[str] + embeddings_provider_id: Optional[str] + send_with_shift_enter: Optional[bool] + api_keys: Optional[Dict[str, str]] + fields: Optional[Dict[str, Dict[str, Any]]] + # if passed, this will raise an Error if the config was written to after the + # time specified by `last_read` to prevent write-write conflicts. + last_read: Optional[int] + + _validate_send_wse = validator("send_with_shift_enter", allow_reuse=True)( + forbid_none + ) + _validate_api_keys = validator("api_keys", allow_reuse=True)(forbid_none) + _validate_fields = validator("fields", allow_reuse=True)(forbid_none) + + class GlobalConfig(BaseModel): - model_provider_id: Optional[str] = None - embeddings_provider_id: Optional[str] = None - api_keys: Dict[str, str] = {} - send_with_shift_enter: Optional[bool] = None - fields: Dict[str, Dict[str, Any]] = {} + """Model used to represent the config by ConfigManager. This is exclusive to + the backend and should never be sent to the client.""" + + model_provider_id: Optional[str] + embeddings_provider_id: Optional[str] + send_with_shift_enter: bool + fields: Dict[str, Dict[str, Any]] + api_keys: Dict[str, str] diff --git a/packages/jupyter-ai/jupyter_ai/tests/__snapshots__/test_config_manager.ambr b/packages/jupyter-ai/jupyter_ai/tests/__snapshots__/test_config_manager.ambr new file mode 100644 index 000000000..cd254bedc --- /dev/null +++ b/packages/jupyter-ai/jupyter_ai/tests/__snapshots__/test_config_manager.ambr @@ -0,0 +1,12 @@ +# serializer version: 1 +# name: test_snapshot_default_config + dict({ + 'api_keys': list([ + ]), + 'embeddings_provider_id': None, + 'fields': dict({ + }), + 'model_provider_id': None, + 'send_with_shift_enter': False, + }) +# --- diff --git a/packages/jupyter-ai/jupyter_ai/tests/test_config_manager.py b/packages/jupyter-ai/jupyter_ai/tests/test_config_manager.py new file mode 100644 index 000000000..f7afbd29a --- /dev/null +++ b/packages/jupyter-ai/jupyter_ai/tests/test_config_manager.py @@ -0,0 +1,247 @@ +import json +import logging +import os + +import pytest +from jupyter_ai.config_manager import ( + AuthError, + ConfigManager, + KeyInUseError, + WriteConflictError, +) +from jupyter_ai.models import DescribeConfigResponse, UpdateConfigRequest +from jupyter_ai_magics.utils import get_em_providers, get_lm_providers +from pydantic import ValidationError + + +@pytest.fixture +def config_path(jp_data_dir): + return str(jp_data_dir / "config.json") + + +@pytest.fixture +def schema_path(jp_data_dir): + return str(jp_data_dir / "config_schema.json") + + +@pytest.fixture +def common_cm_kwargs(config_path, schema_path): + """Kwargs that are commonly used when initializing the CM.""" + log = logging.getLogger() + lm_providers = get_lm_providers() + em_providers = get_em_providers() + return { + "log": log, + "lm_providers": lm_providers, + "em_providers": em_providers, + "config_path": config_path, + "schema_path": schema_path, + } + + +@pytest.fixture +def cm(common_cm_kwargs): + """The default ConfigManager instance, with an empty config and config schema.""" + return ConfigManager(**common_cm_kwargs) + + +@pytest.fixture(autouse=True) +def reset(config_path, schema_path): + """Fixture that deletes the config and config schema after each test.""" + yield + try: + os.remove(config_path) + except OSError: + pass + try: + os.remove(schema_path) + except OSError: + pass + + +def configure_to_cohere(cm: ConfigManager): + """Configures the ConfigManager to use Cohere language and embedding models + with the API key set. Returns a 3-tuple of the keyword arguments used.""" + LM_GID = "cohere:xlarge" + EM_GID = "cohere:large" + API_KEYS = {"COHERE_API_KEY": "foobar"} + # the params use lowercase key names + LM_LID = "xlarge" + EM_LID = "large" + API_PARAMS = {"cohere_api_key": "foobar"} + req = UpdateConfigRequest( + model_provider_id=LM_GID, embeddings_provider_id=EM_GID, api_keys=API_KEYS + ) + cm.update_config(req) + return LM_GID, EM_GID, LM_LID, EM_LID, API_PARAMS + + +def configure_to_openai(cm: ConfigManager): + """Configures the ConfigManager to use OpenAI language and embedding models + with the API key set. Returns a 3-tuple of the keyword arguments used.""" + LM_GID = "openai-chat-new:gpt-3.5-turbo" + EM_GID = "openai:text-embedding-ada-002" + API_KEYS = {"OPENAI_API_KEY": "foobar"} + LM_LID = "gpt-3.5-turbo" + EM_LID = "text-embedding-ada-002" + API_PARAMS = {"openai_api_key": "foobar"} + req = UpdateConfigRequest( + model_provider_id=LM_GID, embeddings_provider_id=EM_GID, api_keys=API_KEYS + ) + cm.update_config(req) + return LM_GID, EM_GID, LM_LID, EM_LID, API_PARAMS + + +def test_snapshot_default_config(cm: ConfigManager, snapshot): + config_from_cm: DescribeConfigResponse = cm.get_config() + assert config_from_cm == snapshot(exclude=lambda prop, path: prop == "last_read") + + +def test_init_with_existing_config( + cm: ConfigManager, config_path: str, schema_path: str +): + configure_to_cohere(cm) + del cm + + log = logging.getLogger() + lm_providers = get_lm_providers() + em_providers = get_em_providers() + ConfigManager( + log=log, + lm_providers=lm_providers, + em_providers=em_providers, + config_path=config_path, + schema_path=schema_path, + ) + + +def test_property_access_on_default_config(cm: ConfigManager): + """Asserts that the CM behaves well with an empty, default + configuration.""" + assert cm.lm_gid == None + assert cm.em_gid == None + assert cm.lm_provider == None + assert cm.lm_provider_params == None + assert cm.em_provider == None + assert cm.em_provider_params == None + + +def test_indentation_depth(common_cm_kwargs, config_path): + """Asserts that the CM indents the configuration and respects the + `indentation_depth` trait when specified.""" + INDENT_DEPTH = 7 + ConfigManager(**common_cm_kwargs, indentation_depth=INDENT_DEPTH) + with open(config_path) as f: + config_file = f.read() + config_lines = config_file.split("\n") + lm_gid_line = next( + line for line in config_lines if '"model_provider_id":' in line + ) + assert lm_gid_line.startswith(" " * INDENT_DEPTH) + assert not lm_gid_line.startswith(" " * (INDENT_DEPTH + 1)) + + +def test_describe(cm: ConfigManager): + LM_GID, EM_GID, LM_LID, EM_LID, API_PARAMS = configure_to_cohere(cm) + + config_desc = cm.get_config() + assert config_desc.model_provider_id == LM_GID + assert config_desc.embeddings_provider_id == EM_GID + assert config_desc.api_keys == ["COHERE_API_KEY"] + assert cm.lm_provider_params == {**API_PARAMS, "model_id": LM_LID} + assert cm.em_provider_params == {**API_PARAMS, "model_id": EM_LID} + + +def test_update(cm: ConfigManager): + LM_GID, EM_GID, LM_LID, EM_LID, API_PARAMS = configure_to_cohere(cm) + + new_config = cm.get_config() + assert new_config.model_provider_id == LM_GID + assert new_config.embeddings_provider_id == EM_GID + assert new_config.api_keys == ["COHERE_API_KEY"] + assert cm.lm_provider_params == {**API_PARAMS, "model_id": LM_LID} + assert cm.em_provider_params == {**API_PARAMS, "model_id": EM_LID} + + +def test_update_no_empty_field_dicts(cm: ConfigManager, config_path): + LM_GID, _, _, _, _ = configure_to_cohere(cm) + cm.update_config(UpdateConfigRequest(fields={LM_GID: {}})) + + with open(config_path) as f: + raw_config = json.loads(f.read()) + assert raw_config["fields"] == {} + + +def test_update_fails_with_invalid_req(): + with pytest.raises(ValidationError): + UpdateConfigRequest(send_with_shift_enter=None) + with pytest.raises(ValidationError): + UpdateConfigRequest(fields=None) + with pytest.raises(ValidationError): + UpdateConfigRequest(api_keys=None) + + +def test_update_fails_without_auth(cm: ConfigManager): + LM_GID = "cohere:xlarge" + EM_GID = "cohere:large" + req = UpdateConfigRequest(model_provider_id=LM_GID, embeddings_provider_id=EM_GID) + with pytest.raises(AuthError): + cm.update_config(req) + + +def test_update_after_describe(cm: ConfigManager): + configure_to_cohere(cm) + last_read = cm.get_config().last_read + cm.update_config( + UpdateConfigRequest(model_provider_id="cohere:medium", last_read=last_read) + ) + + new_config = cm.get_config() + assert new_config.model_provider_id == "cohere:medium" + + +def test_forbid_write_write_conflict(cm: ConfigManager): + configure_to_openai(cm) + # call DescribeConfig + last_read = cm.get_config().last_read + + # call UpdateConfig separately after DescribeConfig with `last_read` unset + # to force a write + cm.update_config(UpdateConfigRequest(model_provider_id="openai-chat-new:gpt-4")) + + # this update should fail, as this generates a write-write conflict (where + # the second update clobbers the first update). + with pytest.raises(WriteConflictError): + cm.update_config( + UpdateConfigRequest( + model_provider_id="openai-chat-new:gpt-4-32k", last_read=last_read + ) + ) + + +def test_update_api_key(cm: ConfigManager): + """Asserts that updates via direct edits to the config file are immediately + reflected by the ConfigManager.""" + LM_GID, EM_GID, LM_LID, EM_LID, _ = configure_to_cohere(cm) + cm.update_config(UpdateConfigRequest(api_keys={"COHERE_API_KEY": "barfoo"})) + + config_desc = cm.get_config() + assert config_desc.api_keys == ["COHERE_API_KEY"] + assert cm.lm_provider_params == {"cohere_api_key": "barfoo", "model_id": LM_LID} + assert cm.em_provider_params == {"cohere_api_key": "barfoo", "model_id": EM_LID} + + +def test_delete_api_key(cm: ConfigManager): + configure_to_cohere(cm) + cm.update_config(UpdateConfigRequest(api_keys={"OPENAI_API_KEY": "asdf"})) + assert cm.get_config().api_keys == ["COHERE_API_KEY", "OPENAI_API_KEY"] + + cm.delete_api_key("OPENAI_API_KEY") + assert cm.get_config().api_keys == ["COHERE_API_KEY"] + + +def test_forbid_deleting_key_in_use(cm: ConfigManager): + configure_to_cohere(cm) + + with pytest.raises(KeyInUseError): + cm.delete_api_key("COHERE_API_KEY") diff --git a/packages/jupyter-ai/package.json b/packages/jupyter-ai/package.json index 513650c8a..58f074c8d 100644 --- a/packages/jupyter-ai/package.json +++ b/packages/jupyter-ai/package.json @@ -1,6 +1,6 @@ { "name": "@jupyter-ai/core", - "version": "2.1.0", + "version": "2.2.0", "description": "A generative AI extension for JupyterLab", "keywords": [ "jupyter", @@ -54,7 +54,7 @@ "watch": "run-p watch:src watch:labextension", "watch:src": "tsc -w", "watch:labextension": "jupyter labextension watch .", - "dev-install": "pip install -e \".[dev,all]\" && jupyter labextension develop . --overwrite && jupyter server extension enable jupyter_ai", + "dev-install": "pip install -e \".[dev,all,test]\" && jupyter labextension develop . --overwrite && jupyter server extension enable jupyter_ai", "dev-uninstall": "pip uninstall jupyter_ai -y" }, "dependencies": { @@ -87,14 +87,14 @@ "@babel/preset-env": "^7.0.0", "@jupyterlab/builder": "^4", "@jupyterlab/testutils": "^4", - "@types/jest": "^26.0.0", + "@types/jest": "^29", "@types/react-syntax-highlighter": "^15.5.6", "@typescript-eslint/eslint-plugin": "^4.8.1", "@typescript-eslint/parser": "^4.8.1", "eslint": "^7.14.0", "eslint-config-prettier": "^6.15.0", "eslint-plugin-prettier": "^3.1.4", - "jest": "^26.0.0", + "jest": "^29", "mkdirp": "^1.0.3", "npm-run-all": "^4.1.5", "prettier": "^2.1.1", @@ -104,7 +104,7 @@ "stylelint-config-recommended": "^6.0.0", "stylelint-config-standard": "~24.0.0", "stylelint-prettier": "^2.0.0", - "ts-jest": "^26.0.0", + "ts-jest": "^29", "typescript": "5.1.6", "y-protocols": "^1.0.5" }, diff --git a/packages/jupyter-ai/pyproject.toml b/packages/jupyter-ai/pyproject.toml index 71ae54ff4..6735f9c2e 100644 --- a/packages/jupyter-ai/pyproject.toml +++ b/packages/jupyter-ai/pyproject.toml @@ -34,6 +34,8 @@ dependencies = [ "dask[distributed]", "faiss-cpu", # Not distributed by official repo "typing_extensions>=4.5.0", + "traitlets>=5.0", + "deepmerge>=1.0" ] dynamic = ["version", "description", "authors", "urls", "keywords"] @@ -48,7 +50,8 @@ test = [ "pytest", "pytest-asyncio", "pytest-cov", - "pytest-tornasync" + "pytest-tornasync", + "syrupy~=4.0.8" ] dev = [ diff --git a/packages/jupyter-ai/src/components/chat-settings.tsx b/packages/jupyter-ai/src/components/chat-settings.tsx index deb013118..583cfa9f0 100644 --- a/packages/jupyter-ai/src/components/chat-settings.tsx +++ b/packages/jupyter-ai/src/components/chat-settings.tsx @@ -1,4 +1,7 @@ import React, { useEffect, useState, useMemo } from 'react'; + +import ReactMarkdown from 'react-markdown'; + import { Box } from '@mui/system'; import { Alert, @@ -10,240 +13,173 @@ import { Radio, RadioGroup, TextField, - CircularProgress + CircularProgress, + Typography } from '@mui/material'; import { Select } from './select'; import { AiService } from '../handler'; import { ModelFields } from './settings/model-fields'; - -enum ChatSettingsState { - // chat settings is making initial fetches - Loading, - // chat settings is ready (happy path) - Ready, - // chat settings failed to make initial fetches - FetchError, - // chat settings failed to submit the save request - SubmitError, - // chat settings successfully submitted the save request - Success -} - -function getProviderId(globalModelId: string | null) { - if (!globalModelId) { - return null; - } - - return globalModelId.split(':')[0]; -} - -function getLocalModelId(globalModelId: string | null) { - if (!globalModelId) { - return null; - } - - const components = globalModelId.split(':'); - return components[components.length - 1]; -} - -function getProvider( - globalModelId: string | null, - providers: AiService.ListProvidersResponse -) { - const providerId = getProviderId(globalModelId); - const provider = providers.providers.find(p => p.id === providerId); - return provider; -} - -function fromRegistryProvider( - globalModelId: string | null, - providers: AiService.ListProvidersResponse -) { - return getProvider(globalModelId, providers)?.registry ?? false; -} +import { ServerInfoState, useServerInfo } from './settings/use-server-info'; +import { ExistingApiKeys } from './settings/existing-api-keys'; +import { minifyUpdate } from './settings/minify'; +import { useStackingAlert } from './mui-extras/stacking-alert'; /** * Component that returns the settings view in the chat panel. - * - * Implementation notes: - * - `config` is the configuration last fetched from the backend. `inputConfig` - * is the editable copy of that object that stores all user input state. - * - * - `inputConfig.model_provider_id` reflects the global model ID only if the - * provider is not a registry provider. Otherwise, it is set to - * `:*`. */ export function ChatSettings(): JSX.Element { - const [state, setState] = useState( - ChatSettingsState.Loading - ); - // error message from initial fetch - const [fetchEmsg, setFetchEmsg] = useState(); - // state fetched on initial render - const [config, setConfig] = useState(); - const [lmProviders, setLmProviders] = - useState(); - const [emProviders, setEmProviders] = - useState(); + const server = useServerInfo(); - // user inputs - const [inputConfig, setInputConfig] = useState({ - model_provider_id: null, - embeddings_provider_id: null, - api_keys: {}, - send_with_shift_enter: null, - fields: {} - }); + // initialize alert helper + const alert = useStackingAlert(); + const apiKeysAlert = useStackingAlert(); - // whether the form is currently saving - const [saving, setSaving] = useState(false); - // error message from submission - const [saveEmsg, setSaveEmsg] = useState(); - - // whether to show the language model's local model ID input + // user inputs + const [lmProvider, setLmProvider] = + useState(null); const [showLmLocalId, setShowLmLocalId] = useState(false); - const [lmLocalId, setLmLocalId] = useState('*'); - - // provider of the currently selected language model - const lmProvider = useMemo(() => { - if (!inputConfig.model_provider_id || !lmProviders) { - return; + const [helpMarkdown, setHelpMarkdown] = useState(null); + const [lmLocalId, setLmLocalId] = useState(''); + const lmGlobalId = useMemo(() => { + if (!lmProvider) { + return null; } - return getProvider(inputConfig.model_provider_id, lmProviders); - }, [inputConfig.model_provider_id, lmProviders]); + return lmProvider.id + ':' + lmLocalId; + }, [lmProvider, lmLocalId]); - // global model ID of the currently selected language model - const lmGlobalId = useMemo(() => { - if (!inputConfig.model_provider_id || !lmProvider) { + const [emGlobalId, setEmGlobalId] = useState(null); + const emProvider = useMemo(() => { + if (emGlobalId === null || server.state !== ServerInfoState.Ready) { return null; } - return lmProvider?.registry - ? `${lmProvider.id}:${lmLocalId}` - : inputConfig.model_provider_id; - }, [inputConfig.model_provider_id, lmProvider, lmProviders, lmLocalId]); + return getProvider(emGlobalId, server.emProviders); + }, [emGlobalId, server]); + + const [apiKeys, setApiKeys] = useState>({}); + const [sendWse, setSendWse] = useState(false); + const [fields, setFields] = useState>({}); + + // whether the form is currently saving + const [saving, setSaving] = useState(false); /** - * Effect: call APIs on initial render + * Effect: initialize inputs after fetching server info. */ useEffect(() => { - async function getConfig() { - try { - const [config, lmProviders, emProviders] = await Promise.all([ - AiService.getConfig(), - AiService.listLmProviders(), - AiService.listEmProviders() - ]); - setConfig(config); - setLmProviders(lmProviders); - setEmProviders(emProviders); - - // if a model from a registry provider was previously selected, store - // the local model ID in a separate text field. - if (fromRegistryProvider(config.model_provider_id, lmProviders)) { - setShowLmLocalId(true); - const lmPid = getProviderId(config.model_provider_id); - setLmLocalId(getLocalModelId(config.model_provider_id) as string); - setInputConfig({ - ...config, - model_provider_id: `${lmPid}:*` - }); - } else { - setInputConfig(config); - } + if (server.state !== ServerInfoState.Ready) { + return; + } - setState(ChatSettingsState.Ready); - } catch (e) { - console.error(e); - if (e instanceof Error) { - setFetchEmsg(e.message); - } - setState(ChatSettingsState.FetchError); - } + setLmLocalId(server.lmLocalId); + setEmGlobalId(server.config.embeddings_provider_id); + setSendWse(server.config.send_with_shift_enter); + setHelpMarkdown(server.lmProvider?.help ?? null); + if (server.lmProvider?.registry) { + setShowLmLocalId(true); } - getConfig(); - }, []); + setLmProvider(server.lmProvider); + }, [server]); /** - * Effect: re-initialize API keys object whenever the selected LM/EM changes. + * Effect: re-initialize apiKeys object whenever the selected LM/EM changes. + * Properties with a value of '' indicate necessary user input. */ useEffect(() => { - const selectedLmpId = getProviderId(inputConfig.model_provider_id); - const selectedEmpId = getProviderId(inputConfig.embeddings_provider_id); - const lmp = lmProviders?.providers.find( - provider => provider.id === selectedLmpId - ); - const emp = emProviders?.providers.find( - provider => provider.id === selectedEmpId - ); - const newApiKeys: Record = {}; + if (server.state !== ServerInfoState.Ready) { + return; + } - if (lmp?.auth_strategy && lmp.auth_strategy.type === 'env') { - newApiKeys[lmp.auth_strategy.name] = - config?.api_keys[lmp.auth_strategy.name] || ''; + const newApiKeys: Record = {}; + const lmAuth = lmProvider?.auth_strategy; + const emAuth = emProvider?.auth_strategy; + if ( + lmAuth?.type === 'env' && + !server.config.api_keys.includes(lmAuth.name) + ) { + newApiKeys[lmAuth.name] = ''; } - if (emp?.auth_strategy && emp.auth_strategy.type === 'env') { - newApiKeys[emp.auth_strategy.name] = - config?.api_keys[emp.auth_strategy.name] || ''; + if ( + emAuth?.type === 'env' && + !server.config.api_keys.includes(emAuth.name) + ) { + newApiKeys[emAuth.name] = ''; } - setInputConfig(inputConfig => ({ - ...inputConfig, - api_keys: { ...config?.api_keys, ...newApiKeys } - })); - }, [inputConfig.model_provider_id, inputConfig.embeddings_provider_id]); + setApiKeys(newApiKeys); + }, [lmProvider, emProvider, server]); - const handleSave = async () => { - const inputConfigCopy: AiService.Config = { - ...inputConfig, - model_provider_id: lmGlobalId, - api_keys: { ...inputConfig.api_keys }, - send_with_shift_enter: inputConfig.send_with_shift_enter ?? true - }; - - // delete any empty api keys - for (const apiKey in inputConfigCopy.api_keys) { - if (inputConfigCopy.api_keys[apiKey] === '') { - delete inputConfigCopy.api_keys[apiKey]; - } + /** + * Effect: re-initialize fields object whenever the selected LM changes. + */ + useEffect(() => { + if (server.state !== ServerInfoState.Ready || !lmGlobalId) { + return; } + const currFields: Record = + server.config.fields?.[lmGlobalId] ?? {}; + setFields(currFields); + }, [server, lmProvider]); + + const handleSave = async () => { // compress fields with JSON values - for (const gmid in inputConfigCopy.fields) { - for (const fieldKey in inputConfigCopy.fields[gmid]) { - const fieldVal = inputConfigCopy.fields[gmid][fieldKey]; - if (typeof fieldVal !== 'string') { - continue; - } + if (server.state !== ServerInfoState.Ready) { + return; + } - try { - const parsedFieldVal = JSON.parse(fieldVal); - const compressedFieldVal = JSON.stringify(parsedFieldVal); - inputConfigCopy.fields[gmid][fieldKey] = compressedFieldVal; - } catch (e) { - continue; - } + for (const fieldKey in fields) { + const fieldVal = fields[fieldKey]; + if (typeof fieldVal !== 'string' || !fieldVal.trim().startsWith('{')) { + continue; + } + + try { + const parsedFieldVal = JSON.parse(fieldVal); + const compressedFieldVal = JSON.stringify(parsedFieldVal); + fields[fieldKey] = compressedFieldVal; + } catch (e) { + continue; } } + let updateRequest: AiService.UpdateConfigRequest = { + model_provider_id: lmGlobalId, + embeddings_provider_id: emGlobalId, + api_keys: apiKeys, + ...(lmGlobalId && { + fields: { + [lmGlobalId]: fields + } + }), + send_with_shift_enter: sendWse + }; + updateRequest = minifyUpdate(server.config, updateRequest); + updateRequest.last_read = server.config.last_read; + setSaving(true); try { - await AiService.updateConfig(inputConfigCopy); + await apiKeysAlert.clear(); + await AiService.updateConfig(updateRequest); } catch (e) { console.error(e); - if (e instanceof Error) { - setSaveEmsg(e.message); - } - setState(ChatSettingsState.SubmitError); + const msg = + e instanceof Error || typeof e === 'string' + ? e.toString() + : 'An unknown error occurred. Check the console for more details.'; + alert.show('error', msg); + return; + } finally { + setSaving(false); } - setState(ChatSettingsState.Success); - setSaving(false); + await server.refetchAll(); + alert.show('success', 'Settings saved successfully.'); }; - if (state === ChatSettingsState.Loading) { + if (server.state === ServerInfoState.Loading) { return ( - {fetchEmsg - ? `An error occurred. Error details:\n\n${fetchEmsg}` - : 'An unknown error occurred. Check the console for more details.'} + {server.error || + 'An unknown error occurred. Check the console for more details.'} ); @@ -287,48 +217,45 @@ export function ChatSettings(): JSX.Element { return ( .MuiAlert-root': { marginBottom: 2 }, + '& .MuiAlert-root': { + marginTop: 2 + }, overflowY: 'auto' }} > - {state === ChatSettingsState.SubmitError && ( - - {saveEmsg - ? `An error occurred. Error details:\n\n${saveEmsg}` - : 'An unknown error occurred. Check the console for more details.'} - - )} - {state === ChatSettingsState.Success && ( - Settings saved successfully. - )} - {/* Language model section */}

Language model

- setInputConfig(inputConfig => ({ - ...inputConfig, - embeddings_provider_id: e.target.value - })) - } + onChange={e => { + const emGid = e.target.value === 'null' ? null : e.target.value; + setEmGlobalId(emGid); + }} MenuProps={{ sx: { maxHeight: '50%', minHeight: 400 } }} > None - {emProviders.providers.map(emp => + {server.emProviders.providers.map(emp => emp.models .filter(em => em !== '*') // TODO: support registry providers .map(em => ( @@ -380,26 +309,28 @@ export function ChatSettings(): JSX.Element { {/* API Keys section */}

API Keys

- {Object.entries(inputConfig.api_keys).map( - ([apiKey, apiKeyValue], idx) => ( - - setInputConfig(inputConfig => ({ - ...inputConfig, - api_keys: { - ...inputConfig.api_keys, - [apiKey]: e.target.value - } - })) - } - /> - ) - )} + {/* API key inputs for newly-used providers */} + {Object.entries(apiKeys).map(([apiKeyName, apiKeyValue], idx) => ( + + setApiKeys(apiKeys => ({ + ...apiKeys, + [apiKeyName]: e.target.value + })) + } + /> + ))} + {/* Pre-existing API keys */} + {/* Input */}

Input

@@ -409,19 +340,11 @@ export function ChatSettings(): JSX.Element { - setInputConfig(inputConfig => { - return { - ...inputConfig, - send_with_shift_enter: - (e.target as HTMLInputElement).value === 'newline' - }; - }) - } + onChange={e => { + setSendWse(e.target.value === 'newline'); + }} >
+ {alert.jsx} ); } + +function getProviderId(globalModelId: string) { + if (!globalModelId) { + return null; + } + + return globalModelId.split(':')[0]; +} + +function getModelLocalId(globalModelId: string) { + if (!globalModelId) { + return null; + } + + const components = globalModelId.split(':'); + return components[components.length - 1]; +} + +function getProvider( + globalModelId: string, + providers: AiService.ListProvidersResponse +): AiService.ListProvidersEntry | null { + const providerId = getProviderId(globalModelId); + const provider = providers.providers.find(p => p.id === providerId); + return provider ?? null; +} diff --git a/packages/jupyter-ai/src/components/mui-extras/async-icon-button.tsx b/packages/jupyter-ai/src/components/mui-extras/async-icon-button.tsx new file mode 100644 index 000000000..5de6b3913 --- /dev/null +++ b/packages/jupyter-ai/src/components/mui-extras/async-icon-button.tsx @@ -0,0 +1,89 @@ +import React, { useMemo, useState } from 'react'; +import { Box, CircularProgress, IconButton } from '@mui/material'; +import { ContrastingTooltip } from './contrasting-tooltip'; + +type AsyncIconButtonProps = { + onClick: () => Promise; + onError: (emsg: string) => unknown; + onSuccess: () => unknown; + children: JSX.Element; + onMouseDown?: React.MouseEventHandler; + /** + * Whether this component should require confirmation from the user before + * calling `props.onClick()`. This is only read on initial render. + */ + confirm?: boolean; +}; + +/** + * A MUI IconButton that indicates whether the click handler is resolving via a + * circular spinner around the IconButton. Requests user confirmation when + * `confirm` is set to `true`. + */ +export function AsyncIconButton(props: AsyncIconButtonProps): JSX.Element { + const [loading, setLoading] = useState(false); + const [showConfirm, setShowConfirm] = useState(false); + const shouldConfirm = useMemo(() => !!props.confirm, []); + + async function handleClick() { + if (shouldConfirm && !showConfirm) { + setShowConfirm(true); + return; + } + + setLoading(true); + let thrown = false; + try { + await props.onClick(); + } catch (e: unknown) { + thrown = true; + if (e instanceof Error) { + props.onError(e.toString()); + } else { + // this should never happen. + // if this happens, it means the thrown value was not of type `Error`. + props.onError('Unknown error occurred.'); + } + } + setLoading(false); + if (!thrown) { + props.onSuccess(); + } + } + + return ( + + setShowConfirm(false)} + arrow + placement="top" + > + + {props.children} + + + {loading && ( + + )} + + ); +} diff --git a/packages/jupyter-ai/src/components/mui-extras/contrasting-tooltip.tsx b/packages/jupyter-ai/src/components/mui-extras/contrasting-tooltip.tsx new file mode 100644 index 000000000..21f5a86d6 --- /dev/null +++ b/packages/jupyter-ai/src/components/mui-extras/contrasting-tooltip.tsx @@ -0,0 +1,22 @@ +import React from 'react'; +import { styled, Tooltip, TooltipProps, tooltipClasses } from '@mui/material'; + +/** + * A restyled MUI tooltip component that is dark by default to improve contrast + * against JupyterLab's default light theme. TODO: support dark themes. + */ +export const ContrastingTooltip = styled( + ({ className, ...props }: TooltipProps) => ( + + ) +)(({ theme }) => ({ + [`& .${tooltipClasses.tooltip}`]: { + backgroundColor: theme.palette.common.black, + color: theme.palette.common.white, + boxShadow: theme.shadows[1], + fontSize: 11 + }, + [`& .${tooltipClasses.arrow}`]: { + color: theme.palette.common.black + } +})); diff --git a/packages/jupyter-ai/src/components/mui-extras/stacking-alert.tsx b/packages/jupyter-ai/src/components/mui-extras/stacking-alert.tsx new file mode 100644 index 000000000..2fe438d12 --- /dev/null +++ b/packages/jupyter-ai/src/components/mui-extras/stacking-alert.tsx @@ -0,0 +1,100 @@ +import React, { useState, useMemo, useCallback } from 'react'; +import { Alert, AlertColor, Collapse } from '@mui/material'; + +export type StackingAlert = { + /** + * A function that triggers an alert. Successive alerts are indicated in the + * JSX element. + * @param alertType Type of alert. + * @param msg Message contained within the alert. + * @returns + */ + show: (alertType: AlertColor, msg: string | Error) => void; + /** + * The Alert JSX element that should be rendered by the consumer. + * This will be `null` if no alerts were triggered. + */ + jsx: JSX.Element | null; + /** + * An async function that closes the alert, and returns a Promise that + * resolves when the onClose animation is completed. + */ + clear: () => void | Promise; +}; + +/** + * Hook that returns a function to trigger an alert, and a corresponding alert + * JSX element for the consumer to render. The number of successive identical + * alerts `X` is indicated in the element via the suffix "(X)". + */ +export function useStackingAlert(): StackingAlert { + const [type, setType] = useState(null); + const [msg, setMsg] = useState(''); + const [repeatCount, setRepeatCount] = useState(0); + const [expand, setExpand] = useState(false); + const [exitPromise, setExitPromise] = useState>(); + const [exitPromiseResolver, setExitPromiseResolver] = useState<() => void>(); + + const showAlert = useCallback( + (nextType: AlertColor, _nextMsg: string | Error) => { + // if the alert is identical to the previous alert, increment the + // `repeatCount` indicator. + const nextMsg = _nextMsg.toString(); + if (nextType === type && nextMsg === msg) { + setRepeatCount(currCount => currCount + 1); + return; + } + + if (type === null) { + // if this alert is being shown for the first time, initialize the + // exitPromise so we can await it on `clear()`. + setExitPromise( + new Promise(res => { + setExitPromiseResolver(() => res); + }) + ); + } + + setType(nextType); + setMsg(nextMsg); + setRepeatCount(0); + setExpand(true); + }, + [msg, type] + ); + + const alertJsx = useMemo( + () => ( + { + exitPromiseResolver?.(); + // only clear the alert after the Collapse exits, otherwise the alert + // disappears without any animation. + setType(null); + setMsg(''); + setRepeatCount(0); + }} + timeout={200} + > + {type !== null && ( + + {msg + (repeatCount ? ` (${repeatCount})` : '')} + + )} + + ), + [msg, repeatCount, type, expand, exitPromiseResolver] + ); + + const clearAlert = useCallback(() => { + setExpand(false); + return exitPromise; + }, [expand, exitPromise]); + + return { + show: showAlert, + jsx: alertJsx, + clear: clearAlert + }; +} diff --git a/packages/jupyter-ai/src/components/settings/__tests__/chat-settings.spec.ts b/packages/jupyter-ai/src/components/settings/__tests__/chat-settings.spec.ts new file mode 100644 index 000000000..edb2d3332 --- /dev/null +++ b/packages/jupyter-ai/src/components/settings/__tests__/chat-settings.spec.ts @@ -0,0 +1,63 @@ +import { minifyPatchObject } from '../minify'; + +const COMPLEX_OBJECT = { + primitive: 0, + array: ['a'], + object: { nested: { field: 0 } } +}; + +describe('minifyPatchObject', () => { + test('returns empty object if patch is identical', () => { + const obj = COMPLEX_OBJECT; + const patch = JSON.parse(JSON.stringify(obj)); + + expect(minifyPatchObject(obj, patch)).toEqual({}); + }); + + test('returns empty object if patch is empty', () => { + expect(minifyPatchObject(COMPLEX_OBJECT, {})).toEqual({}); + }); + + test('returns patch if object is empty', () => { + expect(minifyPatchObject({}, COMPLEX_OBJECT)).toEqual(COMPLEX_OBJECT); + }); + + test('should remove unchanged props from patch', () => { + const obj = { + unchanged: 'foo', + changed: 'bar', + nested: { + unchanged: 'foo', + changed: 'bar' + } + }; + const patch = { + unchanged: 'foo', + changed: 'baz', + nested: { + unchanged: 'foo', + changed: 'baz' + } + }; + + expect(minifyPatchObject(obj, patch)).toEqual({ + changed: 'baz', + nested: { + changed: 'baz' + } + }); + }); + + test('defers to patch object when property types mismatch', () => { + const obj = { + api_keys: ['ANTHROPIC_API_KEY'] + }; + const patch = { + api_keys: { + OPENAI_API_KEY: 'foobar' + } + }; + + expect(minifyPatchObject(obj, patch)).toEqual(patch); + }); +}); diff --git a/packages/jupyter-ai/src/components/settings/existing-api-keys.tsx b/packages/jupyter-ai/src/components/settings/existing-api-keys.tsx new file mode 100644 index 000000000..468f26796 --- /dev/null +++ b/packages/jupyter-ai/src/components/settings/existing-api-keys.tsx @@ -0,0 +1,234 @@ +import React, { useEffect, useCallback, useRef, useState } from 'react'; +import { + Box, + IconButton, + Typography, + TextField, + InputAdornment +} from '@mui/material'; +import { + Edit, + DeleteOutline, + Cancel, + Check, + Visibility, + VisibilityOff +} from '@mui/icons-material'; +import { AsyncIconButton } from '../mui-extras/async-icon-button'; + +import { AiService } from '../../handler'; +import { StackingAlert } from '../mui-extras/stacking-alert'; + +export type ExistingApiKeysProps = { + alert: StackingAlert; + apiKeys: string[]; + onSuccess: () => unknown; +}; + +/** + * Component that renders a list of existing API keys. Each API key is rendered + * by a unique `ExistingApiKey` component. + */ +export function ExistingApiKeys(props: ExistingApiKeysProps): JSX.Element { + // current editable API key name, if any. + const [editableApiKey, setEditableApiKey] = useState(null); + + return ( + .MuiBox-root:not(:first-child)': { + marginTop: -2 + } + }} + > + {props.apiKeys.map(apiKey => ( + + ))} + {props.alert.jsx} + + ); +} + +type ExistingApiKeyProps = { + alert: StackingAlert; + apiKey: string; + editable: boolean; + setEditable: React.Dispatch>; + onSuccess: () => unknown; +}; + +/** + * Component that renders a single existing API key specified by `props.apiKey`. + * Includes actions for editing and deleting the API key. + */ +function ExistingApiKey(props: ExistingApiKeyProps) { + const [input, setInput] = useState(''); + const [inputVisible, setInputVisible] = useState(false); + const [error, setError] = useState(false); + const inputRef = useRef(); + + /** + * Effect: Select the input after `editable` is set to `true`. This needs to + * be done in an effect because the TextField needs to be rendered with + * `disabled=false` first. When `editable` is set to `false`, reset any + * input-related state. + */ + useEffect(() => { + if (props.editable) { + inputRef.current?.focus(); + } else { + setInput(''); + setInputVisible(false); + setError(false); + } + }, [props.editable]); + + const onEditIntent = useCallback(() => { + props.setEditable(props.apiKey); + }, []); + + const onDelete = useCallback(() => { + return AiService.deleteApiKey(props.apiKey); + }, []); + + const toggleInputVisibility = useCallback(() => { + setInputVisible(visible => !visible); + }, []); + + const onEditCancel = useCallback(() => { + props.setEditable(null); + }, []); + + const onEditSubmit = useCallback(() => { + return AiService.updateConfig({ + api_keys: { [props.apiKey]: input } + }); + }, [input]); + + const onError = useCallback( + emsg => { + props.alert.show('error', emsg); + }, + [props.alert] + ); + + const validateInput = useCallback(() => { + if (!props.editable) { + return; + } + + setError(!input); + }, [props.editable, input]); + + const onEditSuccess = useCallback(() => { + props.setEditable(null); + props.alert.show('success', 'API key updated successfully.'); + props.onSuccess(); + }, [props.alert, props.onSuccess]); + + const onDeleteSuccess = useCallback(() => { + props.alert.show('success', 'API key deleted successfully.'); + props.onSuccess(); + }, [props.alert, props.onSuccess]); + + return ( + + setInput(e.target.value)} + disabled={!props.editable} + inputRef={inputRef} + // validation props + onBlur={validateInput} + error={error} + helperText={'API key value must not be empty'} + FormHelperTextProps={{ + sx: { + visibility: error ? 'unset' : 'hidden', + margin: 0, + whiteSpace: 'nowrap' + } + }} + // style props + size="small" + variant="standard" + type={inputVisible ? 'text' : 'password'} + label={ + +
{props.apiKey}
+
+ } + InputProps={{ + endAdornment: props.editable && ( + + e.preventDefault()} + > + {inputVisible ? : } + + + ) + }} + sx={{ + flexGrow: 1, + margin: 0, + '& .MuiInputBase-input': { + padding: 0, + paddingBottom: 1 + } + }} + /> + + {props.editable ? ( + // 16px margin top - 5px padding + <> + e.preventDefault()} + > + + + e.preventDefault()} + confirm={true} + > + + + + ) : ( + <> + + + + + + + + )} + +
+ ); +} diff --git a/packages/jupyter-ai/src/components/settings/minify.ts b/packages/jupyter-ai/src/components/settings/minify.ts new file mode 100644 index 000000000..3de096ec0 --- /dev/null +++ b/packages/jupyter-ai/src/components/settings/minify.ts @@ -0,0 +1,56 @@ +import { AiService } from '../../handler'; + +/** + * Function that minimizes the `UpdateConfigRequest` object prior to submission. + * Removes properties with values identical to those specified in the server + * configuration. + */ +export function minifyUpdate( + config: AiService.DescribeConfigResponse, + update: AiService.UpdateConfigRequest +): AiService.UpdateConfigRequest { + return minifyPatchObject(config, update) as AiService.UpdateConfigRequest; +} + +/** + * Function that removes all properties from `patch` that have identical values + * to `obj` recursively. + */ +export function minifyPatchObject( + obj: Record, + patch: Record +): Record { + const diffObj: Record = {}; + for (const key in patch) { + if (!(key in obj) || typeof obj[key] !== typeof patch[key]) { + // if key is not present in oldObj, or if the value types do not match, + // use the value of `patch`. + diffObj[key] = patch[key]; + continue; + } + + const objVal = obj[key]; + const patchVal = patch[key]; + if (Array.isArray(objVal) && Array.isArray(patchVal)) { + // if objects are both arrays but are not equal, then use the value + const areNotEqual = + objVal.length !== patchVal.length || + !objVal.every((objVal_i, i) => objVal_i === patchVal[i]); + if (areNotEqual) { + diffObj[key] = patchVal; + } + } else if (typeof patchVal === 'object') { + // if the value is an object, run `diffObjects` recursively. + const childPatch = minifyPatchObject(objVal, patchVal); + const isNonEmpty = !!Object.keys(childPatch)?.length; + if (isNonEmpty) { + diffObj[key] = childPatch; + } + } else if (objVal !== patchVal) { + // otherwise, use the value of `patch` only if it differs. + diffObj[key] = patchVal; + } + } + + return diffObj; +} diff --git a/packages/jupyter-ai/src/components/settings/model-fields.tsx b/packages/jupyter-ai/src/components/settings/model-fields.tsx index bc71c3d96..aa580d1f4 100644 --- a/packages/jupyter-ai/src/components/settings/model-fields.tsx +++ b/packages/jupyter-ai/src/components/settings/model-fields.tsx @@ -3,17 +3,14 @@ import { AiService } from '../../handler'; import { TextField } from '@mui/material'; export type ModelFieldProps = { - /** - * The global model ID to which these fields belong. - */ - gmid: string; field: AiService.Field; - config: AiService.Config; - setConfig: (newConfig: AiService.Config) => unknown; + values: Record; + onChange: (newValues: Record) => unknown; }; export function ModelField(props: ModelFieldProps): JSX.Element { const [errorMessage, setErrorMessage] = useState(null); + const value = props.values?.[props.field.key]; function handleChange( e: React.ChangeEvent @@ -41,15 +38,9 @@ export function ModelField(props: ModelFieldProps): JSX.Element { break; } - props.setConfig({ - ...props.config, - fields: { - ...props.config.fields, - [props.gmid]: { - ...props.config.fields[props.gmid], - [props.field.key]: e.target.value - } - } + props.onChange({ + ...props.values, + [props.field.key]: e.target.value }); } @@ -57,7 +48,7 @@ export function ModelField(props: ModelFieldProps): JSX.Element { return ( & { fields?: AiService.Field[]; + values: Record; + onChange: (newValues: Record) => unknown; }; export function ModelFields(props: ModelFieldsProps): JSX.Element | null { @@ -108,7 +101,13 @@ export function ModelFields(props: ModelFieldsProps): JSX.Element | null { return ( <> {props.fields.map((field, idx) => ( - + ))} ); diff --git a/packages/jupyter-ai/src/components/settings/use-server-info.ts b/packages/jupyter-ai/src/components/settings/use-server-info.ts new file mode 100644 index 000000000..87c54c474 --- /dev/null +++ b/packages/jupyter-ai/src/components/settings/use-server-info.ts @@ -0,0 +1,159 @@ +import { useState, useEffect, useMemo, useCallback } from 'react'; +import { AiService } from '../../handler'; + +type ServerInfoProperties = { + config: AiService.DescribeConfigResponse; + lmProviders: AiService.ListProvidersResponse; + emProviders: AiService.ListProvidersResponse; + lmProvider: AiService.ListProvidersEntry | null; + emProvider: AiService.ListProvidersEntry | null; + lmLocalId: string; +}; + +type ServerInfoMethods = { + refetchAll: () => Promise; + refetchApiKeys: () => Promise; +}; + +export enum ServerInfoState { + /** + * Server info is being fetched. + */ + Loading, + /** + * Unable to retrieve server info. + */ + Error, + /** + * Server info was loaded successfully. + */ + Ready +} + +type ServerInfoLoading = { state: ServerInfoState.Loading }; +type ServerInfoError = { + state: ServerInfoState.Error; + error: string; +}; +type ServerInfoReady = { state: ServerInfoState.Ready } & ServerInfoProperties & + ServerInfoMethods; + +type ServerInfo = ServerInfoLoading | ServerInfoError | ServerInfoReady; + +/** + * A hook that fetches the current configuration and provider lists from the + * server. Returns a `ServerInfo` object that includes methods. + */ +export function useServerInfo(): ServerInfo { + const [state, setState] = useState(ServerInfoState.Loading); + const [serverInfoProps, setServerInfoProps] = + useState(); + const [error, setError] = useState(''); + + const fetchServerInfo = useCallback(async () => { + try { + const [config, lmProviders, emProviders] = await Promise.all([ + AiService.getConfig(), + AiService.listLmProviders(), + AiService.listEmProviders() + ]); + const lmGid = config.model_provider_id; + const emGid = config.embeddings_provider_id; + const lmProvider = + lmGid === null ? null : getProvider(lmGid, lmProviders); + const emProvider = + emGid === null ? null : getProvider(emGid, emProviders); + const lmLocalId = lmGid === null ? '' : getLocalId(lmGid); + setServerInfoProps({ + config, + lmProviders, + emProviders, + lmProvider, + emProvider, + lmLocalId + }); + + setState(ServerInfoState.Ready); + } catch (e) { + console.error(e); + if (e instanceof Error) { + setError(e.toString()); + } else { + setError('An unknown error occurred.'); + } + setState(ServerInfoState.Error); + } + }, []); + + const refetchApiKeys = useCallback(async () => { + if (!serverInfoProps) { + // this should never happen. + return; + } + + const config = await AiService.getConfig(); + setServerInfoProps({ + ...serverInfoProps, + config: { + ...serverInfoProps.config, + api_keys: config.api_keys, + last_read: config.last_read + } + }); + }, [serverInfoProps]); + + /** + * Effect: fetch server info on initial render + */ + useEffect(() => { + fetchServerInfo(); + }, []); + + return useMemo(() => { + if (state === ServerInfoState.Loading) { + return { state }; + } + + if (state === ServerInfoState.Error || !serverInfoProps) { + return { state: ServerInfoState.Error, error }; + } + + return { + state, + ...serverInfoProps, + refetchAll: fetchServerInfo, + refetchApiKeys + }; + }, [state, serverInfoProps, error, refetchApiKeys]); +} + +function getProvider( + gid: string, + providers: AiService.ListProvidersResponse +): AiService.ListProvidersEntry | null { + const providerId = getProviderId(gid); + const provider = providers.providers.find(p => p.id === providerId); + return provider ?? null; +} + +function getProviderId(gid: string) { + if (!gid) { + return null; + } + + const components = gid.split(':'); + if (components.length < 2) { + return null; + } + + return components[0]; +} + +function getLocalId(gid: string) { + const components = gid.split(':'); + if (components.length < 2) { + return ''; + } + + return components[1]; +} diff --git a/packages/jupyter-ai/src/components/settings/validator.ts b/packages/jupyter-ai/src/components/settings/validator.ts new file mode 100644 index 000000000..3d420f5c1 --- /dev/null +++ b/packages/jupyter-ai/src/components/settings/validator.ts @@ -0,0 +1,8 @@ +import { AiService } from '../../handler'; + +export class SettingsValidator { + constructor( + protected lmProviders: AiService.ListProvidersResponse, + protected emProviders: AiService.ListProvidersResponse + ) {} +} diff --git a/packages/jupyter-ai/src/handler.ts b/packages/jupyter-ai/src/handler.ts index 9f18b40d1..ec91c1f3f 100644 --- a/packages/jupyter-ai/src/handler.ts +++ b/packages/jupyter-ai/src/handler.ts @@ -104,20 +104,26 @@ export namespace AiService { messages: ChatMessage[]; }; - export type Config = { + export type DescribeConfigResponse = { model_provider_id: string | null; embeddings_provider_id: string | null; - api_keys: Record; - send_with_shift_enter: boolean | null; + api_keys: string[]; + send_with_shift_enter: boolean; fields: Record>; + last_read: number; }; - export type GetConfigResponse = Config; - - export type UpdateConfigRequest = Config; + export type UpdateConfigRequest = { + model_provider_id?: string | null; + embeddings_provider_id?: string | null; + api_keys?: Record; + send_with_shift_enter?: boolean; + fields?: Record>; + last_read?: number; + }; - export async function getConfig(): Promise { - return requestAPI('config'); + export async function getConfig(): Promise { + return requestAPI('config'); } export type EnvAuthStrategy = { @@ -158,6 +164,7 @@ export namespace AiService { name: string; model_id_label?: string; models: string[]; + help?: string; auth_strategy: AuthStrategy; registry: boolean; fields: Field[]; @@ -183,4 +190,10 @@ export namespace AiService { body: JSON.stringify(config) }); } + + export async function deleteApiKey(keyName: string): Promise { + return requestAPI(`api_keys/${keyName}`, { + method: 'DELETE' + }); + } } diff --git a/packages/jupyter-ai/style/chat-settings.css b/packages/jupyter-ai/style/chat-settings.css index 9cb96539c..a8accd053 100644 --- a/packages/jupyter-ai/style/chat-settings.css +++ b/packages/jupyter-ai/style/chat-settings.css @@ -7,3 +7,14 @@ .jp-ai-ChatSettings-welcome { color: var(--jp-ui-font-color1); } + +/* Defer to browser defaults for links in model help */ +.jp-ai-ChatSettings-model-help a { + text-decoration: revert; + color: revert; +} + +.jp-ai-ChatSettings-model-help a:hover { + text-decoration: revert; + color: revert; +} diff --git a/packages/jupyter-ai/tsconfig.test.json b/packages/jupyter-ai/tsconfig.test.json new file mode 100644 index 000000000..063b5f10c --- /dev/null +++ b/packages/jupyter-ai/tsconfig.test.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig", + "compilerOptions": { + "noUnusedLocals": false + } +} diff --git a/yarn.lock b/yarn.lock index 1ac0bbf4c..684a9238d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -31,55 +31,55 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.22.10, @babel/code-frame@npm:^7.22.5": - version: 7.22.10 - resolution: "@babel/code-frame@npm:7.22.10" +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.22.13": + version: 7.22.13 + resolution: "@babel/code-frame@npm:7.22.13" dependencies: - "@babel/highlight": ^7.22.10 + "@babel/highlight": ^7.22.13 chalk: ^2.4.2 - checksum: 89a06534ad19759da6203a71bad120b1d7b2ddc016c8e07d4c56b35dea25e7396c6da60a754e8532a86733092b131ae7f661dbe6ba5d165ea777555daa2ed3c9 + checksum: 22e342c8077c8b77eeb11f554ecca2ba14153f707b85294fcf6070b6f6150aae88a7b7436dd88d8c9289970585f3fe5b9b941c5aa3aa26a6d5a8ef3f292da058 languageName: node linkType: hard -"@babel/compat-data@npm:^7.22.5, @babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.22.9": +"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.22.9": version: 7.22.9 resolution: "@babel/compat-data@npm:7.22.9" checksum: bed77d9044ce948b4327b30dd0de0779fa9f3a7ed1f2d31638714ed00229fa71fc4d1617ae0eb1fad419338d3658d0e9a5a083297451e09e73e078d0347ff808 languageName: node linkType: hard -"@babel/core@npm:^7.0.0, @babel/core@npm:^7.1.0, @babel/core@npm:^7.10.2, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.7.5": - version: 7.22.10 - resolution: "@babel/core@npm:7.22.10" +"@babel/core@npm:^7.0.0, @babel/core@npm:^7.10.2, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3": + version: 7.22.17 + resolution: "@babel/core@npm:7.22.17" dependencies: "@ampproject/remapping": ^2.2.0 - "@babel/code-frame": ^7.22.10 - "@babel/generator": ^7.22.10 - "@babel/helper-compilation-targets": ^7.22.10 - "@babel/helper-module-transforms": ^7.22.9 - "@babel/helpers": ^7.22.10 - "@babel/parser": ^7.22.10 - "@babel/template": ^7.22.5 - "@babel/traverse": ^7.22.10 - "@babel/types": ^7.22.10 + "@babel/code-frame": ^7.22.13 + "@babel/generator": ^7.22.15 + "@babel/helper-compilation-targets": ^7.22.15 + "@babel/helper-module-transforms": ^7.22.17 + "@babel/helpers": ^7.22.15 + "@babel/parser": ^7.22.16 + "@babel/template": ^7.22.15 + "@babel/traverse": ^7.22.17 + "@babel/types": ^7.22.17 convert-source-map: ^1.7.0 debug: ^4.1.0 gensync: ^1.0.0-beta.2 - json5: ^2.2.2 + json5: ^2.2.3 semver: ^6.3.1 - checksum: cc4efa09209fe1f733cf512e9e4bb50870b191ab2dee8014e34cd6e731f204e48476cc53b4bbd0825d4d342304d577ae43ff5fd8ab3896080673c343321acb32 + checksum: 355216a342d1b3952d7c040dd4c99ecef6b3501ba99a713703c1fec1ae73bc92a48a0c1234562bdbb4fd334b2e452f5a6c3bb282f0e613fa89e1518c91d1aea1 languageName: node linkType: hard -"@babel/generator@npm:^7.22.10, @babel/generator@npm:^7.7.2": - version: 7.22.10 - resolution: "@babel/generator@npm:7.22.10" +"@babel/generator@npm:^7.22.15, @babel/generator@npm:^7.7.2": + version: 7.22.15 + resolution: "@babel/generator@npm:7.22.15" dependencies: - "@babel/types": ^7.22.10 + "@babel/types": ^7.22.15 "@jridgewell/gen-mapping": ^0.3.2 "@jridgewell/trace-mapping": ^0.3.17 jsesc: ^2.5.1 - checksum: 59a79730abdff9070692834bd3af179e7a9413fa2ff7f83dff3eb888765aeaeb2bfc7b0238a49613ed56e1af05956eff303cc139f2407eda8df974813e486074 + checksum: 5b2a3ccdc3634f6ea86e0a442722bcd430238369432d31f15b428a4ee8013c2f4f917b5b135bf4fc1d0a3e2f87f10fd4ce5d07955ecc2d3b9400a05c2a481374 languageName: node linkType: hard @@ -93,35 +93,35 @@ __metadata: linkType: hard "@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.22.5": - version: 7.22.10 - resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.22.10" + version: 7.22.15 + resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.22.15" dependencies: - "@babel/types": ^7.22.10 - checksum: 6de4a1f30e6244f9a1efdfcbe89df39923df3d165be606da5ad11319f8a11c12c72c60d9dc5fb696363281e2d6f741444c1af51f525fc7cf1d2a90fe23370bd9 + "@babel/types": ^7.22.15 + checksum: 639c697a1c729f9fafa2dd4c9af2e18568190299b5907bd4c2d0bc818fcbd1e83ffeecc2af24327a7faa7ac4c34edd9d7940510a5e66296c19bad17001cf5c7a languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.22.10, @babel/helper-compilation-targets@npm:^7.22.5, @babel/helper-compilation-targets@npm:^7.22.6": - version: 7.22.10 - resolution: "@babel/helper-compilation-targets@npm:7.22.10" +"@babel/helper-compilation-targets@npm:^7.22.15, @babel/helper-compilation-targets@npm:^7.22.5, @babel/helper-compilation-targets@npm:^7.22.6": + version: 7.22.15 + resolution: "@babel/helper-compilation-targets@npm:7.22.15" dependencies: "@babel/compat-data": ^7.22.9 - "@babel/helper-validator-option": ^7.22.5 + "@babel/helper-validator-option": ^7.22.15 browserslist: ^4.21.9 lru-cache: ^5.1.1 semver: ^6.3.1 - checksum: f6f1896816392bcff671bbe6e277307729aee53befb4a66ea126e2a91eda78d819a70d06fa384c74ef46c1595544b94dca50bef6c78438d9ffd31776dafbd435 + checksum: ce85196769e091ae54dd39e4a80c2a9df1793da8588e335c383d536d54f06baf648d0a08fc873044f226398c4ded15c4ae9120ee18e7dfd7c639a68e3cdc9980 languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.22.5": - version: 7.22.10 - resolution: "@babel/helper-create-class-features-plugin@npm:7.22.10" +"@babel/helper-create-class-features-plugin@npm:^7.22.11, @babel/helper-create-class-features-plugin@npm:^7.22.5": + version: 7.22.15 + resolution: "@babel/helper-create-class-features-plugin@npm:7.22.15" dependencies: "@babel/helper-annotate-as-pure": ^7.22.5 "@babel/helper-environment-visitor": ^7.22.5 "@babel/helper-function-name": ^7.22.5 - "@babel/helper-member-expression-to-functions": ^7.22.5 + "@babel/helper-member-expression-to-functions": ^7.22.15 "@babel/helper-optimise-call-expression": ^7.22.5 "@babel/helper-replace-supers": ^7.22.9 "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 @@ -129,20 +129,20 @@ __metadata: semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0 - checksum: 9683edbf73889abce183b06eac29524448aaab1dba7bdccdd6c26cf03e5ade3903b581b4d681da88fbff824fa117b840cc945bebf7db3c1f8c745f3c5a8a2595 + checksum: 52c500d8d164abb3a360b1b7c4b8fff77bc4a5920d3a2b41ae6e1d30617b0dc0b972c1f5db35b1752007e04a748908b4a99bc872b73549ae837e87dcdde005a3 languageName: node linkType: hard "@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.22.5": - version: 7.22.9 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.22.9" + version: 7.22.15 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.22.15" dependencies: "@babel/helper-annotate-as-pure": ^7.22.5 regexpu-core: ^5.3.1 semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0 - checksum: 87cb48a7ee898ab205374274364c3adc70b87b08c7bd07f51019ae4562c0170d7148e654d591f825dee14b5fe11666a0e7966872dfdbfa0d1b94b861ecf0e4e1 + checksum: 0243b8d4854f1dc8861b1029a46d3f6393ad72f366a5a08e36a4648aa682044f06da4c6e87a456260e1e1b33c999f898ba591a0760842c1387bcc93fbf2151a6 languageName: node linkType: hard @@ -187,36 +187,36 @@ __metadata: languageName: node linkType: hard -"@babel/helper-member-expression-to-functions@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-member-expression-to-functions@npm:7.22.5" +"@babel/helper-member-expression-to-functions@npm:^7.22.15, @babel/helper-member-expression-to-functions@npm:^7.22.5": + version: 7.22.15 + resolution: "@babel/helper-member-expression-to-functions@npm:7.22.15" dependencies: - "@babel/types": ^7.22.5 - checksum: 4bd5791529c280c00743e8bdc669ef0d4cd1620d6e3d35e0d42b862f8262bc2364973e5968007f960780344c539a4b9cf92ab41f5b4f94560a9620f536de2a39 + "@babel/types": ^7.22.15 + checksum: c7c5d01c402dd8902c2ec3093f203ed0fc3bc5f669328a084d2e663c4c06dd0415480ee8220c6f96ba9b2dc49545c0078f221fc3900ab1e65de69a12fe7b361f languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-module-imports@npm:7.22.5" +"@babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.22.15, @babel/helper-module-imports@npm:^7.22.5": + version: 7.22.15 + resolution: "@babel/helper-module-imports@npm:7.22.15" dependencies: - "@babel/types": ^7.22.5 - checksum: 9ac2b0404fa38b80bdf2653fbeaf8e8a43ccb41bd505f9741d820ed95d3c4e037c62a1bcdcb6c9527d7798d2e595924c4d025daed73283badc180ada2c9c49ad + "@babel/types": ^7.22.15 + checksum: ecd7e457df0a46f889228f943ef9b4a47d485d82e030676767e6a2fdcbdaa63594d8124d4b55fd160b41c201025aec01fc27580352b1c87a37c9c6f33d116702 languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.22.5, @babel/helper-module-transforms@npm:^7.22.9": - version: 7.22.9 - resolution: "@babel/helper-module-transforms@npm:7.22.9" +"@babel/helper-module-transforms@npm:^7.22.15, @babel/helper-module-transforms@npm:^7.22.17, @babel/helper-module-transforms@npm:^7.22.5, @babel/helper-module-transforms@npm:^7.22.9": + version: 7.22.17 + resolution: "@babel/helper-module-transforms@npm:7.22.17" dependencies: "@babel/helper-environment-visitor": ^7.22.5 - "@babel/helper-module-imports": ^7.22.5 + "@babel/helper-module-imports": ^7.22.15 "@babel/helper-simple-access": ^7.22.5 "@babel/helper-split-export-declaration": ^7.22.6 - "@babel/helper-validator-identifier": ^7.22.5 + "@babel/helper-validator-identifier": ^7.22.15 peerDependencies: "@babel/core": ^7.0.0 - checksum: 2751f77660518cf4ff027514d6f4794f04598c6393be7b04b8e46c6e21606e11c19f3f57ab6129a9c21bacdf8b3ffe3af87bb401d972f34af2d0ffde02ac3001 + checksum: 458021c74093e66179765fcc9d1c1cb694f7bdf98656f23486901d35636495c38aab4661547fac2142e13d887987d1ea30cc9fe42968376a51a99bcd207b4989 languageName: node linkType: hard @@ -237,15 +237,15 @@ __metadata: linkType: hard "@babel/helper-remap-async-to-generator@npm:^7.22.5, @babel/helper-remap-async-to-generator@npm:^7.22.9": - version: 7.22.9 - resolution: "@babel/helper-remap-async-to-generator@npm:7.22.9" + version: 7.22.17 + resolution: "@babel/helper-remap-async-to-generator@npm:7.22.17" dependencies: "@babel/helper-annotate-as-pure": ^7.22.5 "@babel/helper-environment-visitor": ^7.22.5 - "@babel/helper-wrap-function": ^7.22.9 + "@babel/helper-wrap-function": ^7.22.17 peerDependencies: "@babel/core": ^7.0.0 - checksum: 05538079447829b13512157491cc77f9cf1ea7e1680e15cff0682c3ed9ee162de0c4862ece20a6d6b2df28177a1520bcfe45993fbeccf2747a81795a7c3f6290 + checksum: 59307e623d00b6f5fa7f974e29081b2243e3f7bc3a89df331e8c1f8815d83f97bd092404a28b8bef5299028e3259450b5a943f34e1b32c7c55350436d218ab13 languageName: node linkType: hard @@ -296,83 +296,83 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-validator-identifier@npm:7.22.5" - checksum: 7f0f30113474a28298c12161763b49de5018732290ca4de13cdaefd4fd0d635a6fe3f6686c37a02905fb1e64f21a5ee2b55140cf7b070e729f1bd66866506aea +"@babel/helper-validator-identifier@npm:^7.22.15, @babel/helper-validator-identifier@npm:^7.22.5": + version: 7.22.15 + resolution: "@babel/helper-validator-identifier@npm:7.22.15" + checksum: eb0bee4bda664c0959924bc1ad5611eacfce806f46612202dd164fef1df8fef1a11682a1e7615288987100e9fb304982b6e2a4ff07ffe842ab8765b95ed1118c languageName: node linkType: hard -"@babel/helper-validator-option@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-validator-option@npm:7.22.5" - checksum: bbeca8a85ee86990215c0424997438b388b8d642d69b9f86c375a174d3cdeb270efafd1ff128bc7a1d370923d13b6e45829ba8581c027620e83e3a80c5c414b3 +"@babel/helper-validator-option@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/helper-validator-option@npm:7.22.15" + checksum: 68da52b1e10002a543161494c4bc0f4d0398c8fdf361d5f7f4272e95c45d5b32d974896d44f6a0ea7378c9204988879d73613ca683e13bd1304e46d25ff67a8d languageName: node linkType: hard -"@babel/helper-wrap-function@npm:^7.22.9": - version: 7.22.10 - resolution: "@babel/helper-wrap-function@npm:7.22.10" +"@babel/helper-wrap-function@npm:^7.22.17": + version: 7.22.17 + resolution: "@babel/helper-wrap-function@npm:7.22.17" dependencies: "@babel/helper-function-name": ^7.22.5 - "@babel/template": ^7.22.5 - "@babel/types": ^7.22.10 - checksum: 854bd85fc1de1d4c633f04aa1f5b6b022fbc013b47d012b6a11a7a9125a1f4a2a4f13a3e0d7a7056fe7eda8a9ecd1ea3daf8af685685a2d1b16578768cfdd28f + "@babel/template": ^7.22.15 + "@babel/types": ^7.22.17 + checksum: 95328b508049b6edd9cadd2ac89b4d4812ebdfa54a2ae77791939d795d88d561b31fd3669eea5d13558372cf2422eda05177d7f742690b5023c712bc3f0aec8e languageName: node linkType: hard -"@babel/helpers@npm:^7.22.10": - version: 7.22.10 - resolution: "@babel/helpers@npm:7.22.10" +"@babel/helpers@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/helpers@npm:7.22.15" dependencies: - "@babel/template": ^7.22.5 - "@babel/traverse": ^7.22.10 - "@babel/types": ^7.22.10 - checksum: 3b1219e362df390b6c5d94b75a53fc1c2eb42927ced0b8022d6a29b833a839696206b9bdad45b4805d05591df49fc16b6fb7db758c9c2ecfe99e3e94cb13020f + "@babel/template": ^7.22.15 + "@babel/traverse": ^7.22.15 + "@babel/types": ^7.22.15 + checksum: 49f61a93cbae4df3328bda67af5db743fead659ae4242571226c3596b7df78546189cdf991fed1eca33b559de8abf396a90a001f474a1bab351418f07b7ae6ef languageName: node linkType: hard -"@babel/highlight@npm:^7.10.4, @babel/highlight@npm:^7.22.10": - version: 7.22.10 - resolution: "@babel/highlight@npm:7.22.10" +"@babel/highlight@npm:^7.10.4, @babel/highlight@npm:^7.22.13": + version: 7.22.13 + resolution: "@babel/highlight@npm:7.22.13" dependencies: "@babel/helper-validator-identifier": ^7.22.5 chalk: ^2.4.2 js-tokens: ^4.0.0 - checksum: f714a1e1a72dd9d72f6383f4f30fd342e21a8df32d984a4ea8f5eab691bb6ba6db2f8823d4b4cf135d98869e7a98925b81306aa32ee3c429f8cfa52c75889e1b + checksum: 7266d2bff8aa8fc78eb65b6e92a8211e12897a731126a282d2f9bb50d8fcaa4c1b02af2284f990ac7e3ab8d892d448a2cab8f5ed0ea8a90bce2c025b11ebe802 languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.22.10, @babel/parser@npm:^7.22.5": - version: 7.22.10 - resolution: "@babel/parser@npm:7.22.10" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.22.15, @babel/parser@npm:^7.22.16": + version: 7.22.16 + resolution: "@babel/parser@npm:7.22.16" bin: parser: ./bin/babel-parser.js - checksum: af51567b7d3cdf523bc608eae057397486c7fa6c2e5753027c01fe5c36f0767b2d01ce3049b222841326cc5b8c7fda1d810ac1a01af0a97bb04679e2ef9f7049 + checksum: 944c756b5bdeb07b9fec16ecef6b3c61aff9d4c4b924abadcf01afa1840a740b8e2357ae00482b5b37daad6d2bfd848c947f27ad65138d687b6fdc924bc59edd languageName: node linkType: hard -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.22.5" +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.22.15" dependencies: "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0 - checksum: 1e353a060fb2cd8f1256d28cd768f16fb02513f905b9b6d656fb0242c96c341a196fa188b27c2701506a6e27515359fbcc1a5ca7fa8b9b530cf88fbd137baefc + checksum: 8910ca21a7ec7c06f7b247d4b86c97c5aa15ef321518f44f6f490c5912fdf82c605aaa02b90892e375d82ccbedeadfdeadd922c1b836c9dd4c596871bf654753 languageName: node linkType: hard -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.22.5" +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.22.15" dependencies: "@babel/helper-plugin-utils": ^7.22.5 "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 - "@babel/plugin-transform-optional-chaining": ^7.22.5 + "@babel/plugin-transform-optional-chaining": ^7.22.15 peerDependencies: "@babel/core": ^7.13.0 - checksum: 16e7a5f3bf2f2ac0ca032a70bf0ebd7e886d84dbb712b55c0643c04c495f0f221fbcbca14b5f8f8027fa6c87a3dafae0934022ad2b409384af6c5c356495b7bd + checksum: fbefedc0da014c37f1a50a8094ce7dbbf2181ae93243f23d6ecba2499b5b20196c2124d6a4dfe3e9e0125798e80593103e456352a4beb4e5c6f7c75efb80fdac languageName: node linkType: hard @@ -628,9 +628,9 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-async-generator-functions@npm:^7.22.10": - version: 7.22.10 - resolution: "@babel/plugin-transform-async-generator-functions@npm:7.22.10" +"@babel/plugin-transform-async-generator-functions@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.22.15" dependencies: "@babel/helper-environment-visitor": ^7.22.5 "@babel/helper-plugin-utils": ^7.22.5 @@ -638,7 +638,7 @@ __metadata: "@babel/plugin-syntax-async-generators": ^7.8.4 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 87d77b66fda05b42450aa285fa031aa3963c52aab00190f95f6c3ddefbed683035c1f314347c888f8406fba5d436b888ff75b5e36b8ab23afd4ca4c3f086f88c + checksum: fad98786b446ce63bde0d14a221e2617eef5a7bbca62b49d96f16ab5e1694521234cfba6145b830fbf9af16d60a8a3dbf148e8694830bd91796fe333b0599e73 languageName: node linkType: hard @@ -666,14 +666,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-block-scoping@npm:^7.22.10": - version: 7.22.10 - resolution: "@babel/plugin-transform-block-scoping@npm:7.22.10" +"@babel/plugin-transform-block-scoping@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/plugin-transform-block-scoping@npm:7.22.15" dependencies: "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b1d06f358dedcb748a57e5feea4b9285c60593fb2912b921f22898c57c552c78fe18128678c8f84dd4ea1d4e5aebede8783830b24cd63f22c30261156d78bc77 + checksum: c7091dc000b854ce0c471588ca0704ef1ce78cff954584a9f21c1668fd0669e7c8d5396fb72fe49a2216d9b96a400d435f424f27e41a097ef6c855f9c57df195 languageName: node linkType: hard @@ -689,35 +689,35 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-class-static-block@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-class-static-block@npm:7.22.5" +"@babel/plugin-transform-class-static-block@npm:^7.22.11": + version: 7.22.11 + resolution: "@babel/plugin-transform-class-static-block@npm:7.22.11" dependencies: - "@babel/helper-create-class-features-plugin": ^7.22.5 + "@babel/helper-create-class-features-plugin": ^7.22.11 "@babel/helper-plugin-utils": ^7.22.5 "@babel/plugin-syntax-class-static-block": ^7.14.5 peerDependencies: "@babel/core": ^7.12.0 - checksum: bc48b92dbaf625a14f2bf62382384eef01e0515802426841636ae9146e27395d068c7a8a45e9e15699491b0a01d990f38f179cbc9dc89274a393f85648772f12 + checksum: 69f040506fad66f1c6918d288d0e0edbc5c8a07c8b4462c1184ad2f9f08995d68b057126c213871c0853ae0c72afc60ec87492049dfacb20902e32346a448bcb languageName: node linkType: hard -"@babel/plugin-transform-classes@npm:^7.22.6": - version: 7.22.6 - resolution: "@babel/plugin-transform-classes@npm:7.22.6" +"@babel/plugin-transform-classes@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/plugin-transform-classes@npm:7.22.15" dependencies: "@babel/helper-annotate-as-pure": ^7.22.5 - "@babel/helper-compilation-targets": ^7.22.6 + "@babel/helper-compilation-targets": ^7.22.15 "@babel/helper-environment-visitor": ^7.22.5 "@babel/helper-function-name": ^7.22.5 "@babel/helper-optimise-call-expression": ^7.22.5 "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-replace-supers": ^7.22.5 + "@babel/helper-replace-supers": ^7.22.9 "@babel/helper-split-export-declaration": ^7.22.6 globals: ^11.1.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 8380e855c01033dbc7460d9acfbc1fc37c880350fa798c2de8c594ef818ade0e4c96173ec72f05f2a4549d8d37135e18cb62548352d51557b45a0fb4388d2f3f + checksum: d3f4d0c107dd8a3557ea3575cc777fab27efa92958b41e4a9822f7499725c1f554beae58855de16ddec0a7b694e45f59a26cea8fbde4275563f72f09c6e039a0 languageName: node linkType: hard @@ -733,14 +733,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-destructuring@npm:^7.22.10": - version: 7.22.10 - resolution: "@babel/plugin-transform-destructuring@npm:7.22.10" +"@babel/plugin-transform-destructuring@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/plugin-transform-destructuring@npm:7.22.15" dependencies: "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 011707801bd0029fd4f0523d24d06fdc0cbe8c9da280d75728f76713d639c4dc976e1b56a1ba7bff25468f86867efb71c9b4cac81140adbdd0abf2324b19a8bb + checksum: 4bccb4765e5287f1d36119d930afb9941ea8f4f001bddb8febff716bac0e09dc58576624f3ec59470630513044dd342075fe11af16d8c1b234cb7406cffca9f0 languageName: node linkType: hard @@ -767,15 +767,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-dynamic-import@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-dynamic-import@npm:7.22.5" +"@babel/plugin-transform-dynamic-import@npm:^7.22.11": + version: 7.22.11 + resolution: "@babel/plugin-transform-dynamic-import@npm:7.22.11" dependencies: "@babel/helper-plugin-utils": ^7.22.5 "@babel/plugin-syntax-dynamic-import": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 186a6d59f36eb3c5824739fc9c22ed0f4ca68e001662aa3a302634346a8b785cb9579b23b0c158f4570604d697d19598ca09b58c60a7fa2894da1163c4eb1907 + checksum: 78fc9c532210bf9e8f231747f542318568ac360ee6c27e80853962c984283c73da3f8f8aebe83c2096090a435b356b092ed85de617a156cbe0729d847632be45 languageName: node linkType: hard @@ -791,26 +791,26 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-export-namespace-from@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-export-namespace-from@npm:7.22.5" +"@babel/plugin-transform-export-namespace-from@npm:^7.22.11": + version: 7.22.11 + resolution: "@babel/plugin-transform-export-namespace-from@npm:7.22.11" dependencies: "@babel/helper-plugin-utils": ^7.22.5 "@babel/plugin-syntax-export-namespace-from": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 3d197b788758044983c96b9c49bed4b456055f35a388521a405968db0f6e2ffb6fd59110e3931f4dcc5e126ae9e5e00e154a0afb47a7ea359d8d0dea79f480d7 + checksum: 73af5883a321ed56a4bfd43c8a7de0164faebe619287706896fc6ee2f7a4e69042adaa1338c0b8b4bdb9f7e5fdceb016fb1d40694cb43ca3b8827429e8aac4bf languageName: node linkType: hard -"@babel/plugin-transform-for-of@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-for-of@npm:7.22.5" +"@babel/plugin-transform-for-of@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/plugin-transform-for-of@npm:7.22.15" dependencies: "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: d7b8d4db010bce7273674caa95c4e6abd909362866ce297e86a2ecaa9ae636e05d525415811db9b3c942155df7f3651d19b91dd6c41f142f7308a97c7cb06023 + checksum: f395ae7bce31e14961460f56cf751b5d6e37dd27d7df5b1f4e49fec1c11b6f9cf71991c7ffbe6549878591e87df0d66af798cf26edfa4bfa6b4c3dba1fb2f73a languageName: node linkType: hard @@ -827,15 +827,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-json-strings@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-json-strings@npm:7.22.5" +"@babel/plugin-transform-json-strings@npm:^7.22.11": + version: 7.22.11 + resolution: "@babel/plugin-transform-json-strings@npm:7.22.11" dependencies: "@babel/helper-plugin-utils": ^7.22.5 "@babel/plugin-syntax-json-strings": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 4e00b902487a670b6c8948f33f9108133fd745cf9d1478aca515fb460b9b2f12e137988ebc1663630fb82070a870aed8b0c1aa4d007a841c18004619798f255c + checksum: 50665e5979e66358c50e90a26db53c55917f78175127ac2fa05c7888d156d418ffb930ec0a109353db0a7c5f57c756ce01bfc9825d24cbfd2b3ec453f2ed8cba languageName: node linkType: hard @@ -850,15 +850,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-logical-assignment-operators@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.22.5" +"@babel/plugin-transform-logical-assignment-operators@npm:^7.22.11": + version: 7.22.11 + resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.22.11" dependencies: "@babel/helper-plugin-utils": ^7.22.5 "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 18748e953c08f64885f18c224eac58df10a13eac4d845d16b5d9b6276907da7ca2530dfebe6ed41cdc5f8a75d9db3e36d8eb54ddce7cd0364af1cab09b435302 + checksum: c664e9798e85afa7f92f07b867682dee7392046181d82f5d21bae6f2ca26dfe9c8375cdc52b7483c3fc09a983c1989f60eff9fbc4f373b0c0a74090553d05739 languageName: node linkType: hard @@ -885,30 +885,30 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-modules-commonjs@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.22.5" +"@babel/plugin-transform-modules-commonjs@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.22.15" dependencies: - "@babel/helper-module-transforms": ^7.22.5 + "@babel/helper-module-transforms": ^7.22.15 "@babel/helper-plugin-utils": ^7.22.5 "@babel/helper-simple-access": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 2067aca8f6454d54ffcce69b02c457cfa61428e11372f6a1d99ff4fcfbb55c396ed2ca6ca886bf06c852e38c1a205b8095921b2364fd0243f3e66bc1dda61caa + checksum: f8fc85fefa6be8626a378ca38fb84c7359043e7c692c854e9ee250a05121553b7f4a58e127099efe12662ec6bebbfd304ce638a0b4563d7cbd5982f3d877321c languageName: node linkType: hard -"@babel/plugin-transform-modules-systemjs@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.22.5" +"@babel/plugin-transform-modules-systemjs@npm:^7.22.11": + version: 7.22.11 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.22.11" dependencies: "@babel/helper-hoist-variables": ^7.22.5 - "@babel/helper-module-transforms": ^7.22.5 + "@babel/helper-module-transforms": ^7.22.9 "@babel/helper-plugin-utils": ^7.22.5 "@babel/helper-validator-identifier": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 04f4178589543396b3c24330a67a59c5e69af5e96119c9adda730c0f20122deaff54671ebbc72ad2df6495a5db8a758bd96942de95fba7ad427de9c80b1b38c8 + checksum: d0991e4bdc3352b6a9f4d12b6662e3645d892cd5c3c005ba5f14e65f1e218c6a8f7f4497e64a51d82a046e507aaa7db3143b800b0270dca1824cbd214ff3363d languageName: node linkType: hard @@ -947,42 +947,42 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.22.5" +"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.22.11": + version: 7.22.11 + resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.22.11" dependencies: "@babel/helper-plugin-utils": ^7.22.5 "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: e6a059169d257fc61322d0708edae423072449b7c33de396261e68dee582aec5396789a1c22bce84e5bd88a169623c2e750b513fc222930979e6accd52a44bf2 + checksum: 167babecc8b8fe70796a7b7d34af667ebbf43da166c21689502e5e8cc93180b7a85979c77c9f64b7cce431b36718bd0a6df9e5e0ffea4ae22afb22cfef886372 languageName: node linkType: hard -"@babel/plugin-transform-numeric-separator@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-numeric-separator@npm:7.22.5" +"@babel/plugin-transform-numeric-separator@npm:^7.22.11": + version: 7.22.11 + resolution: "@babel/plugin-transform-numeric-separator@npm:7.22.11" dependencies: "@babel/helper-plugin-utils": ^7.22.5 "@babel/plugin-syntax-numeric-separator": ^7.10.4 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 9e7837d4eae04f211ebaa034fe5003d2927b6bf6d5b9dc09f2b1183c01482cdde5a75b8bd5c7ff195c2abc7b923339eb0b2a9d27cb78359d38248a3b2c2367c4 + checksum: af064d06a4a041767ec396a5f258103f64785df290e038bba9f0ef454e6c914f2ac45d862bbdad8fac2c7ad47fa4e95356f29053c60c100a0160b02a995fe2a3 languageName: node linkType: hard -"@babel/plugin-transform-object-rest-spread@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-object-rest-spread@npm:7.22.5" +"@babel/plugin-transform-object-rest-spread@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/plugin-transform-object-rest-spread@npm:7.22.15" dependencies: - "@babel/compat-data": ^7.22.5 - "@babel/helper-compilation-targets": ^7.22.5 + "@babel/compat-data": ^7.22.9 + "@babel/helper-compilation-targets": ^7.22.15 "@babel/helper-plugin-utils": ^7.22.5 "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-transform-parameters": ^7.22.5 + "@babel/plugin-transform-parameters": ^7.22.15 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 3b5e091f0dc67108f2e41ed5a97e15bbe4381a19d9a7eea80b71c7de1d8169fd28784e1e41a3d2ad12709ab212e58fc481282a5bb65d591fae7b443048de3330 + checksum: 62197a6f12289c1c1bd57f3bed9f0f765ca32390bfe91e0b5561dd94dd9770f4480c4162dec98da094bc0ba99d2c2ebba68de47c019454041b0b7a68ba2ec66d languageName: node linkType: hard @@ -998,39 +998,39 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-optional-catch-binding@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.22.5" +"@babel/plugin-transform-optional-catch-binding@npm:^7.22.11": + version: 7.22.11 + resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.22.11" dependencies: "@babel/helper-plugin-utils": ^7.22.5 "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b0e8b4233ff06b5c9d285257f49c5bd441f883189b24282e6200f9ebdf5db29aeeebbffae57fbbcd5df9f4387b3e66e5d322aaae5652a78e89685ddbae46bbd1 + checksum: f17abd90e1de67c84d63afea29c8021c74abb2794d3a6eeafb0bbe7372d3db32aefca386e392116ec63884537a4a2815d090d26264d259bacc08f6e3ed05294c languageName: node linkType: hard -"@babel/plugin-transform-optional-chaining@npm:^7.22.10, @babel/plugin-transform-optional-chaining@npm:^7.22.5": - version: 7.22.10 - resolution: "@babel/plugin-transform-optional-chaining@npm:7.22.10" +"@babel/plugin-transform-optional-chaining@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.22.15" dependencies: "@babel/helper-plugin-utils": ^7.22.5 "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 "@babel/plugin-syntax-optional-chaining": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 522d6214bb9f6ede8a2fc56a873e791aabd62f0b3be78fb8e62ca801a9033bcadabfb77aec6739f0e67f0f15f7c739c08bafafd66d3676edf1941fe6429cebcd + checksum: 6b97abe0e50ca2dd8684fcef2c8d12607637e707aa9d513b7035f5e812efbde9305736b438d422103a7844e04124cad5efa4ff0e6226a57afa1210a1c7485c8e languageName: node linkType: hard -"@babel/plugin-transform-parameters@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-parameters@npm:7.22.5" +"@babel/plugin-transform-parameters@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/plugin-transform-parameters@npm:7.22.15" dependencies: "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b44f89cf97daf23903776ba27c2ab13b439d80d8c8a95be5c476ab65023b1e0c0e94c28d3745f3b60a58edc4e590fa0cd4287a0293e51401ca7d29a2ddb13b8e + checksum: 541188bb7d1876cad87687b5c7daf90f63d8208ae83df24acb1e2b05020ad1c78786b2723ca4054a83fcb74fb6509f30c4cacc5b538ee684224261ad5fb047c1 languageName: node linkType: hard @@ -1046,17 +1046,17 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-private-property-in-object@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-private-property-in-object@npm:7.22.5" +"@babel/plugin-transform-private-property-in-object@npm:^7.22.11": + version: 7.22.11 + resolution: "@babel/plugin-transform-private-property-in-object@npm:7.22.11" dependencies: "@babel/helper-annotate-as-pure": ^7.22.5 - "@babel/helper-create-class-features-plugin": ^7.22.5 + "@babel/helper-create-class-features-plugin": ^7.22.11 "@babel/helper-plugin-utils": ^7.22.5 "@babel/plugin-syntax-private-property-in-object": ^7.14.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 9ac019fb2772f3af6278a7f4b8b14b0663accb3fd123d87142ceb2fbc57fd1afa07c945d1329029b026b9ee122096ef71a3f34f257a9e04cf4245b87298c38b4 + checksum: 4d029d84901e53c46dead7a46e2990a7bc62470f4e4ca58a0d063394f86652fd58fe4eea1eb941da3669cd536b559b9d058b342b59300026346b7a2a51badac8 languageName: node linkType: hard @@ -1198,15 +1198,15 @@ __metadata: linkType: hard "@babel/preset-env@npm:^7.0.0, @babel/preset-env@npm:^7.10.2": - version: 7.22.10 - resolution: "@babel/preset-env@npm:7.22.10" + version: 7.22.15 + resolution: "@babel/preset-env@npm:7.22.15" dependencies: "@babel/compat-data": ^7.22.9 - "@babel/helper-compilation-targets": ^7.22.10 + "@babel/helper-compilation-targets": ^7.22.15 "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-validator-option": ^7.22.5 - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.22.5 - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.22.5 + "@babel/helper-validator-option": ^7.22.15 + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.22.15 + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.22.15 "@babel/plugin-proposal-private-property-in-object": 7.21.0-placeholder-for-preset-env.2 "@babel/plugin-syntax-async-generators": ^7.8.4 "@babel/plugin-syntax-class-properties": ^7.12.13 @@ -1227,41 +1227,41 @@ __metadata: "@babel/plugin-syntax-top-level-await": ^7.14.5 "@babel/plugin-syntax-unicode-sets-regex": ^7.18.6 "@babel/plugin-transform-arrow-functions": ^7.22.5 - "@babel/plugin-transform-async-generator-functions": ^7.22.10 + "@babel/plugin-transform-async-generator-functions": ^7.22.15 "@babel/plugin-transform-async-to-generator": ^7.22.5 "@babel/plugin-transform-block-scoped-functions": ^7.22.5 - "@babel/plugin-transform-block-scoping": ^7.22.10 + "@babel/plugin-transform-block-scoping": ^7.22.15 "@babel/plugin-transform-class-properties": ^7.22.5 - "@babel/plugin-transform-class-static-block": ^7.22.5 - "@babel/plugin-transform-classes": ^7.22.6 + "@babel/plugin-transform-class-static-block": ^7.22.11 + "@babel/plugin-transform-classes": ^7.22.15 "@babel/plugin-transform-computed-properties": ^7.22.5 - "@babel/plugin-transform-destructuring": ^7.22.10 + "@babel/plugin-transform-destructuring": ^7.22.15 "@babel/plugin-transform-dotall-regex": ^7.22.5 "@babel/plugin-transform-duplicate-keys": ^7.22.5 - "@babel/plugin-transform-dynamic-import": ^7.22.5 + "@babel/plugin-transform-dynamic-import": ^7.22.11 "@babel/plugin-transform-exponentiation-operator": ^7.22.5 - "@babel/plugin-transform-export-namespace-from": ^7.22.5 - "@babel/plugin-transform-for-of": ^7.22.5 + "@babel/plugin-transform-export-namespace-from": ^7.22.11 + "@babel/plugin-transform-for-of": ^7.22.15 "@babel/plugin-transform-function-name": ^7.22.5 - "@babel/plugin-transform-json-strings": ^7.22.5 + "@babel/plugin-transform-json-strings": ^7.22.11 "@babel/plugin-transform-literals": ^7.22.5 - "@babel/plugin-transform-logical-assignment-operators": ^7.22.5 + "@babel/plugin-transform-logical-assignment-operators": ^7.22.11 "@babel/plugin-transform-member-expression-literals": ^7.22.5 "@babel/plugin-transform-modules-amd": ^7.22.5 - "@babel/plugin-transform-modules-commonjs": ^7.22.5 - "@babel/plugin-transform-modules-systemjs": ^7.22.5 + "@babel/plugin-transform-modules-commonjs": ^7.22.15 + "@babel/plugin-transform-modules-systemjs": ^7.22.11 "@babel/plugin-transform-modules-umd": ^7.22.5 "@babel/plugin-transform-named-capturing-groups-regex": ^7.22.5 "@babel/plugin-transform-new-target": ^7.22.5 - "@babel/plugin-transform-nullish-coalescing-operator": ^7.22.5 - "@babel/plugin-transform-numeric-separator": ^7.22.5 - "@babel/plugin-transform-object-rest-spread": ^7.22.5 + "@babel/plugin-transform-nullish-coalescing-operator": ^7.22.11 + "@babel/plugin-transform-numeric-separator": ^7.22.11 + "@babel/plugin-transform-object-rest-spread": ^7.22.15 "@babel/plugin-transform-object-super": ^7.22.5 - "@babel/plugin-transform-optional-catch-binding": ^7.22.5 - "@babel/plugin-transform-optional-chaining": ^7.22.10 - "@babel/plugin-transform-parameters": ^7.22.5 + "@babel/plugin-transform-optional-catch-binding": ^7.22.11 + "@babel/plugin-transform-optional-chaining": ^7.22.15 + "@babel/plugin-transform-parameters": ^7.22.15 "@babel/plugin-transform-private-methods": ^7.22.5 - "@babel/plugin-transform-private-property-in-object": ^7.22.5 + "@babel/plugin-transform-private-property-in-object": ^7.22.11 "@babel/plugin-transform-property-literals": ^7.22.5 "@babel/plugin-transform-regenerator": ^7.22.10 "@babel/plugin-transform-reserved-words": ^7.22.5 @@ -1275,7 +1275,7 @@ __metadata: "@babel/plugin-transform-unicode-regex": ^7.22.5 "@babel/plugin-transform-unicode-sets-regex": ^7.22.5 "@babel/preset-modules": 0.1.6-no-external-plugins - "@babel/types": ^7.22.10 + "@babel/types": ^7.22.15 babel-plugin-polyfill-corejs2: ^0.4.5 babel-plugin-polyfill-corejs3: ^0.8.3 babel-plugin-polyfill-regenerator: ^0.5.2 @@ -1283,7 +1283,7 @@ __metadata: semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 4145a660a7b05e21e6d8b6cdf348c6931238abb15282a258bdb5e04cd3cca9356dc120ecfe0d1b977819ade4aac50163127c86db2300227ff60392d24daa0b7c + checksum: c3cf0223cab006cbf0c563a49a5076caa0b62e3b61b4f10ba857347fcd4f85dbb662a78e6f289e4f29f72c36974696737ae86c23da114617f5b00ab2c1c66126 languageName: node linkType: hard @@ -1307,52 +1307,52 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.22.6, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7": - version: 7.22.10 - resolution: "@babel/runtime@npm:7.22.10" +"@babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.22.10, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7": + version: 7.22.15 + resolution: "@babel/runtime@npm:7.22.15" dependencies: regenerator-runtime: ^0.14.0 - checksum: 524d41517e68953dbc73a4f3616b8475e5813f64e28ba89ff5fca2c044d535c2ea1a3f310df1e5bb06162e1f0b401b5c4af73fe6e2519ca2450d9d8c44cf268d + checksum: 793296df1e41599a935a3d77ec01eb6088410d3fd4dbe4e92f06c6b7bb2f8355024e6d78621a3a35f44e0e23b0b59107f23d585384df4f3123256a1e1492040e languageName: node linkType: hard -"@babel/template@npm:^7.22.5, @babel/template@npm:^7.3.3": - version: 7.22.5 - resolution: "@babel/template@npm:7.22.5" +"@babel/template@npm:^7.22.15, @babel/template@npm:^7.22.5, @babel/template@npm:^7.3.3": + version: 7.22.15 + resolution: "@babel/template@npm:7.22.15" dependencies: - "@babel/code-frame": ^7.22.5 - "@babel/parser": ^7.22.5 - "@babel/types": ^7.22.5 - checksum: c5746410164039aca61829cdb42e9a55410f43cace6f51ca443313f3d0bdfa9a5a330d0b0df73dc17ef885c72104234ae05efede37c1cc8a72dc9f93425977a3 + "@babel/code-frame": ^7.22.13 + "@babel/parser": ^7.22.15 + "@babel/types": ^7.22.15 + checksum: 1f3e7dcd6c44f5904c184b3f7fe280394b191f2fed819919ffa1e529c259d5b197da8981b6ca491c235aee8dbad4a50b7e31304aa531271cb823a4a24a0dd8fd languageName: node linkType: hard -"@babel/traverse@npm:^7.1.0, @babel/traverse@npm:^7.22.10": - version: 7.22.10 - resolution: "@babel/traverse@npm:7.22.10" +"@babel/traverse@npm:^7.22.15, @babel/traverse@npm:^7.22.17": + version: 7.22.17 + resolution: "@babel/traverse@npm:7.22.17" dependencies: - "@babel/code-frame": ^7.22.10 - "@babel/generator": ^7.22.10 + "@babel/code-frame": ^7.22.13 + "@babel/generator": ^7.22.15 "@babel/helper-environment-visitor": ^7.22.5 "@babel/helper-function-name": ^7.22.5 "@babel/helper-hoist-variables": ^7.22.5 "@babel/helper-split-export-declaration": ^7.22.6 - "@babel/parser": ^7.22.10 - "@babel/types": ^7.22.10 + "@babel/parser": ^7.22.16 + "@babel/types": ^7.22.17 debug: ^4.1.0 globals: ^11.1.0 - checksum: 9f7b358563bfb0f57ac4ed639f50e5c29a36b821a1ce1eea0c7db084f5b925e3275846d0de63bde01ca407c85d9804e0efbe370d92cd2baaafde3bd13b0f4cdb + checksum: 1153ca166a0a9b3fddf67f7f7c8c5b4f88aa2c2c00261ff2fc8424a63bc93250ed3fd08b04bd526ad19e797aeb6f22161120646a570cbfe5ff2a5d2f5d28af01 languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.10, @babel/types@npm:^7.22.5, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": - version: 7.22.10 - resolution: "@babel/types@npm:7.22.10" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.15, @babel/types@npm:^7.22.17, @babel/types@npm:^7.22.5, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": + version: 7.22.17 + resolution: "@babel/types@npm:7.22.17" dependencies: "@babel/helper-string-parser": ^7.22.5 - "@babel/helper-validator-identifier": ^7.22.5 + "@babel/helper-validator-identifier": ^7.22.15 to-fast-properties: ^2.0.0 - checksum: 095c4f4b7503fa816e4094113f0ec2351ef96ff32012010b771693066ff628c7c664b21c6bd3fb93aeb46fe7c61f6b3a3c9e4ed0034d6a2481201c417371c8af + checksum: 7382220f6eb2548f2c867a98916c3aa8a6063498d5372e5d21d8d184ba354033defb72aeba5858c1b2b42177058b896a34a7dcbae5eccd47fb0104721efa909d languageName: node linkType: hard @@ -1422,18 +1422,6 @@ __metadata: languageName: node linkType: hard -"@cnakazawa/watch@npm:^1.0.3": - version: 1.0.4 - resolution: "@cnakazawa/watch@npm:1.0.4" - dependencies: - exec-sh: ^0.3.2 - minimist: ^1.2.0 - bin: - watch: cli.js - checksum: 88f395ca0af2f3c0665b8ce7bb29e83647ec5d141e8735712aeeee4117081555436712966b6957aa1c461f6f826a4d23b0034e379c443a10e919f81c8748bf29 - languageName: node - linkType: hard - "@codemirror/autocomplete@npm:^6.0.0, @codemirror/autocomplete@npm:^6.3.2, @codemirror/autocomplete@npm:^6.5.1, @codemirror/autocomplete@npm:^6.7.1": version: 6.9.0 resolution: "@codemirror/autocomplete@npm:6.9.0" @@ -1452,14 +1440,14 @@ __metadata: linkType: hard "@codemirror/commands@npm:^6.2.3": - version: 6.2.4 - resolution: "@codemirror/commands@npm:6.2.4" + version: 6.2.5 + resolution: "@codemirror/commands@npm:6.2.5" dependencies: "@codemirror/language": ^6.0.0 "@codemirror/state": ^6.2.0 "@codemirror/view": ^6.0.0 "@lezer/common": ^1.0.0 - checksum: 468895fa19ff0554181b698c81f850820de5c0289cab92c44392fb127286f09ca72b921d6ea4353b70b616a4fd0c3667d86b6f917202a3ad2e196eb7b581f7b6 + checksum: 6d373bcfd4337160243e1493c8703a8e367e208811742331679a6410a3645de36ae8a5664e11790fec521137b45f34d703e9292932a98c4de10139510f3f29a3 languageName: node linkType: hard @@ -1487,19 +1475,19 @@ __metadata: linkType: hard "@codemirror/lang-html@npm:^6.0.0, @codemirror/lang-html@npm:^6.4.3": - version: 6.4.5 - resolution: "@codemirror/lang-html@npm:6.4.5" + version: 6.4.6 + resolution: "@codemirror/lang-html@npm:6.4.6" dependencies: "@codemirror/autocomplete": ^6.0.0 "@codemirror/lang-css": ^6.0.0 "@codemirror/lang-javascript": ^6.0.0 "@codemirror/language": ^6.4.0 "@codemirror/state": ^6.0.0 - "@codemirror/view": ^6.2.2 + "@codemirror/view": ^6.17.0 "@lezer/common": ^1.0.0 "@lezer/css": ^1.1.0 "@lezer/html": ^1.3.0 - checksum: 08c6a55557f5491059f1b20d7788e64dcc37c488d4c97c00fa1c21af599ab48cdd7f839f3ffc6814480b9756c7a96845a36b578427b3c8d5efbfe123bf4553b9 + checksum: 8f884f4423ffc783181ee933f7212ad4ece204695cf8af9535a593f95e901d36515a8561fc336a0fbcf5782369b9484eeb0d2cec2167622868238177c5e6eb36 languageName: node linkType: hard @@ -1514,17 +1502,17 @@ __metadata: linkType: hard "@codemirror/lang-javascript@npm:^6.0.0, @codemirror/lang-javascript@npm:^6.1.7": - version: 6.1.9 - resolution: "@codemirror/lang-javascript@npm:6.1.9" + version: 6.2.1 + resolution: "@codemirror/lang-javascript@npm:6.2.1" dependencies: "@codemirror/autocomplete": ^6.0.0 "@codemirror/language": ^6.6.0 "@codemirror/lint": ^6.0.0 "@codemirror/state": ^6.0.0 - "@codemirror/view": ^6.0.0 + "@codemirror/view": ^6.17.0 "@lezer/common": ^1.0.0 "@lezer/javascript": ^1.0.0 - checksum: 6c79b51c61d37b3f4dde6312df02183045c31f055e5cf8550b497f39798b823b4e380a641a2cfc97f3f26fd4e89194258d8ef741c42acd72b3f2e18257b427a5 + checksum: 3df38c4cced06195283a9a2a9365aaa7c8c1b157852b331bc3a118403f774bbba57d2a392de52f5e28d2b344a323bc0146bcf7c8ef8be2473f167d815e4a37cd languageName: node linkType: hard @@ -1648,24 +1636,24 @@ __metadata: linkType: hard "@codemirror/lint@npm:^6.0.0": - version: 6.4.0 - resolution: "@codemirror/lint@npm:6.4.0" + version: 6.4.1 + resolution: "@codemirror/lint@npm:6.4.1" dependencies: "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.0.0 crelt: ^1.0.5 - checksum: ba15f7dd87afbceafaa0b68f94b0d53727e4aacca7a81a4ed3278706df5787fdf18cd3f0d807a136f902b2fc2296bf3490462fd543d1d4ced17a0d8c171820fd + checksum: ac8120ca96b5ef57abd2705b2620c15c7449b5056bca87053480e244c6772863e1537387a863cfb784f9f2af2c8b30be78a31660d96a815672059085beb51fd5 languageName: node linkType: hard "@codemirror/search@npm:^6.3.0": - version: 6.5.1 - resolution: "@codemirror/search@npm:6.5.1" + version: 6.5.2 + resolution: "@codemirror/search@npm:6.5.2" dependencies: "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.0.0 crelt: ^1.0.5 - checksum: 672515c20238f69ff5cd8b662128699178ba7e020fc44a8ed2b0dcc25d8d5f5579418865616dd8809317a408fb08b6001a442f0fb706a772250b4284d7437045 + checksum: bc535151277fda0a370ac496b9b0d5751fd91bd8e3eb29dafbfe6bf3125dc450a7e361ebc302f0ebc4193ac337bdf555ab3d5ec753dbb44452225618a5630dd3 languageName: node linkType: hard @@ -1676,14 +1664,14 @@ __metadata: languageName: node linkType: hard -"@codemirror/view@npm:^6.0.0, @codemirror/view@npm:^6.2.2, @codemirror/view@npm:^6.6.0, @codemirror/view@npm:^6.7.0, @codemirror/view@npm:^6.9.6": - version: 6.16.0 - resolution: "@codemirror/view@npm:6.16.0" +"@codemirror/view@npm:^6.0.0, @codemirror/view@npm:^6.17.0, @codemirror/view@npm:^6.6.0, @codemirror/view@npm:^6.7.0, @codemirror/view@npm:^6.9.6": + version: 6.18.0 + resolution: "@codemirror/view@npm:6.18.0" dependencies: "@codemirror/state": ^6.1.4 - style-mod: ^4.0.0 + style-mod: ^4.1.0 w3c-keyname: ^2.2.4 - checksum: 54d412b5159716c8a1a9c46fa04ff083e68a663cb887e6e2a4ca86fe9c3930d5255200fe84c65620e0a442f62dc2c13df277bcd1d4eef2e11e3c4e124fcf9d38 + checksum: 275bf5898e884297f16f73e4dff1b520a196a5f7724fbeda634a927e7f4036f6786e816b124505942de99800fb66c538307e8c08e55234ad57483f1a009e3d35 languageName: node linkType: hard @@ -1866,6 +1854,44 @@ __metadata: languageName: node linkType: hard +"@floating-ui/core@npm:^1.4.1": + version: 1.4.1 + resolution: "@floating-ui/core@npm:1.4.1" + dependencies: + "@floating-ui/utils": ^0.1.1 + checksum: be4ab864fe17eeba5e205bd554c264b9a4895a57c573661bbf638357fa3108677fed7ba3269ec15b4da90e29274c9b626d5a15414e8d1fe691e210d02a03695c + languageName: node + linkType: hard + +"@floating-ui/dom@npm:^1.5.1": + version: 1.5.1 + resolution: "@floating-ui/dom@npm:1.5.1" + dependencies: + "@floating-ui/core": ^1.4.1 + "@floating-ui/utils": ^0.1.1 + checksum: ddb509030978536ba7b321cf8c764ae9d0142a3b1fefb7e6bc050a5de7e825e12131fa5089009edabf7c125fb274886da211a5220fe17a71d875a7a96eb1386c + languageName: node + linkType: hard + +"@floating-ui/react-dom@npm:^2.0.1": + version: 2.0.2 + resolution: "@floating-ui/react-dom@npm:2.0.2" + dependencies: + "@floating-ui/dom": ^1.5.1 + peerDependencies: + react: ">=16.8.0" + react-dom: ">=16.8.0" + checksum: 4797e1f7a19c1e531ed0d578ccdcbe58970743e5a480ba30424857fc953063f36d481f8c5d69248a8f1d521b739e94bf5e1ffb35506400dea3d914f166ed2f7f + languageName: node + linkType: hard + +"@floating-ui/utils@npm:^0.1.1": + version: 0.1.1 + resolution: "@floating-ui/utils@npm:0.1.1" + checksum: 548acdda7902f45b0afbe34e2e7f4cbff0696b95bad8c039f80936519de24ef2ec20e79902825b7815294b37f51a7c52ee86288b0688869a57cc229a164d86b4 + languageName: node + linkType: hard + "@fortawesome/fontawesome-free@npm:^5.12.0": version: 5.15.4 resolution: "@fortawesome/fontawesome-free@npm:5.15.4" @@ -1959,23 +1985,9 @@ __metadata: languageName: node linkType: hard -"@jest/console@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/console@npm:26.6.2" - dependencies: - "@jest/types": ^26.6.2 - "@types/node": "*" - chalk: ^4.0.0 - jest-message-util: ^26.6.2 - jest-util: ^26.6.2 - slash: ^3.0.0 - checksum: 69a9ca6ba357d7634fd537e3b87c64369865ffb59f57fe6661223088bd62273d0c1d660fefce3625a427f42a37d32590f6b291e1295ea6d6b7cb31ddae36a737 - languageName: node - linkType: hard - -"@jest/console@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/console@npm:29.6.3" +"@jest/console@npm:^29.6.4": + version: 29.6.4 + resolution: "@jest/console@npm:29.6.4" dependencies: "@jest/types": ^29.6.3 "@types/node": "*" @@ -1983,54 +1995,18 @@ __metadata: jest-message-util: ^29.6.3 jest-util: ^29.6.3 slash: ^3.0.0 - checksum: a30b380166944ac06d36a50a36f05e65022b97064efd3ace7113d1dfc30d96966af578266f69817afa9d6ec679f8ceb6ae905352c07e5ad23d3c307fc0060174 - languageName: node - linkType: hard - -"@jest/core@npm:^26.6.3": - version: 26.6.3 - resolution: "@jest/core@npm:26.6.3" - dependencies: - "@jest/console": ^26.6.2 - "@jest/reporters": ^26.6.2 - "@jest/test-result": ^26.6.2 - "@jest/transform": ^26.6.2 - "@jest/types": ^26.6.2 - "@types/node": "*" - ansi-escapes: ^4.2.1 - chalk: ^4.0.0 - exit: ^0.1.2 - graceful-fs: ^4.2.4 - jest-changed-files: ^26.6.2 - jest-config: ^26.6.3 - jest-haste-map: ^26.6.2 - jest-message-util: ^26.6.2 - jest-regex-util: ^26.0.0 - jest-resolve: ^26.6.2 - jest-resolve-dependencies: ^26.6.3 - jest-runner: ^26.6.3 - jest-runtime: ^26.6.3 - jest-snapshot: ^26.6.2 - jest-util: ^26.6.2 - jest-validate: ^26.6.2 - jest-watcher: ^26.6.2 - micromatch: ^4.0.2 - p-each-series: ^2.1.0 - rimraf: ^3.0.0 - slash: ^3.0.0 - strip-ansi: ^6.0.0 - checksum: f52b26ffe9b923ed67b3ff30e170b3a434d4263990f78d96cd43acbd0aa8ad36aecad2f1822f376da3a80228714fd6b7f7acd51744133cfcd2780ba0e3da537b + checksum: 1caf061a39266b86e96ca13358401839e4d930742cbaa9e87e79d7ce170a83195e52e5b2d22eb5aa9a949219b61a163a81e337ec98b8323d88d79853051df96c languageName: node linkType: hard -"@jest/core@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/core@npm:29.6.3" +"@jest/core@npm:^29.6.4": + version: 29.6.4 + resolution: "@jest/core@npm:29.6.4" dependencies: - "@jest/console": ^29.6.3 - "@jest/reporters": ^29.6.3 - "@jest/test-result": ^29.6.3 - "@jest/transform": ^29.6.3 + "@jest/console": ^29.6.4 + "@jest/reporters": ^29.6.4 + "@jest/test-result": ^29.6.4 + "@jest/transform": ^29.6.4 "@jest/types": ^29.6.3 "@types/node": "*" ansi-escapes: ^4.2.1 @@ -2039,18 +2015,18 @@ __metadata: exit: ^0.1.2 graceful-fs: ^4.2.9 jest-changed-files: ^29.6.3 - jest-config: ^29.6.3 - jest-haste-map: ^29.6.3 + jest-config: ^29.6.4 + jest-haste-map: ^29.6.4 jest-message-util: ^29.6.3 jest-regex-util: ^29.6.3 - jest-resolve: ^29.6.3 - jest-resolve-dependencies: ^29.6.3 - jest-runner: ^29.6.3 - jest-runtime: ^29.6.3 - jest-snapshot: ^29.6.3 + jest-resolve: ^29.6.4 + jest-resolve-dependencies: ^29.6.4 + jest-runner: ^29.6.4 + jest-runtime: ^29.6.4 + jest-snapshot: ^29.6.4 jest-util: ^29.6.3 jest-validate: ^29.6.3 - jest-watcher: ^29.6.3 + jest-watcher: ^29.6.4 micromatch: ^4.0.4 pretty-format: ^29.6.3 slash: ^3.0.0 @@ -2060,70 +2036,44 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: 8ec37ce75f52dc85dfe703d4f8de31acf2134d1056127d075a700cf3668bad0cccc17f742b39f0053f8c12455075018bd3551093c0b3e082d593980093cb6ce9 - languageName: node - linkType: hard - -"@jest/environment@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/environment@npm:26.6.2" - dependencies: - "@jest/fake-timers": ^26.6.2 - "@jest/types": ^26.6.2 - "@types/node": "*" - jest-mock: ^26.6.2 - checksum: 7748081b2a758161785aff161780b05084dccaff908c8ed82c04f7da5d5e5439e77b5eb667306d5c4e1422653c7a67ed2955f26704f48c65c404195e1e21780a + checksum: 0f36532c909775814cb7d4310d61881beaefdec6229ef0b7493c6191dfca20ae5222120846ea5ef8cdeaa8cef265aae9cea8989dcab572d8daea9afd14247c7a languageName: node linkType: hard -"@jest/environment@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/environment@npm:29.6.3" +"@jest/environment@npm:^29.6.4": + version: 29.6.4 + resolution: "@jest/environment@npm:29.6.4" dependencies: - "@jest/fake-timers": ^29.6.3 + "@jest/fake-timers": ^29.6.4 "@jest/types": ^29.6.3 "@types/node": "*" jest-mock: ^29.6.3 - checksum: 96aaf9baaa58fbacbdfbde9591297f25f9d6f5566cf10cd07d744a4a25b1d82b6cfb89f217a45ccce2cc50ec6c7e3c9a0122908d6b827985a1679afb5e10b7b1 + checksum: 810d8f1fc26d293acfc44927bcb78adc58ed4ea580a64c8d94aa6c67239dcb149186bf25b94ff28b79de15253e0c877ad8d330feac205f185f3517593168510c languageName: node linkType: hard -"@jest/expect-utils@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/expect-utils@npm:29.6.3" +"@jest/expect-utils@npm:^29.6.4": + version: 29.6.4 + resolution: "@jest/expect-utils@npm:29.6.4" dependencies: jest-get-type: ^29.6.3 - checksum: aeb0c2a485df09fdb51f866d58e232010cde888a7e6e1f9b395df236918e09e98407eb8281a3d41d2b115d9ff740d100b75100d521717ba903abeacb26e2a192 - languageName: node - linkType: hard - -"@jest/expect@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/expect@npm:29.6.3" - dependencies: - expect: ^29.6.3 - jest-snapshot: ^29.6.3 - checksum: 40c3fc53aa9f86e10129fcaec243405a4b4c398a8d65a3133f97d39331f065c3833c352b133377f003b2e9acc70909d72ac91698c219a883b857b7cda559b199 + checksum: a17059e02a4c0fca98e2abb7e9e58c70df3cd3d4ebcc6a960cb57c571726f7bd738c6cd008a9bf99770b77e92f7e21c75fe1f9ceec9b7a7710010f9340bb28ad languageName: node linkType: hard -"@jest/fake-timers@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/fake-timers@npm:26.6.2" +"@jest/expect@npm:^29.6.4": + version: 29.6.4 + resolution: "@jest/expect@npm:29.6.4" dependencies: - "@jest/types": ^26.6.2 - "@sinonjs/fake-timers": ^6.0.1 - "@types/node": "*" - jest-message-util: ^26.6.2 - jest-mock: ^26.6.2 - jest-util: ^26.6.2 - checksum: c732658fac4014a424e6629495296c3b2e8697787518df34c74539ec139625e7141ad792b8a4d3c8392b47954ad01be9846b7c57cc8c631490969e7cafa84e6a + expect: ^29.6.4 + jest-snapshot: ^29.6.4 + checksum: e9d7306a96e2f9f9f7a0d93d41850cbad987ebda951a5d9a63d3f5fb61da4c1e41adb54af7f7222e4a185454ecb17ddc77845e18001ee28ac114f7a7fe9e671d languageName: node linkType: hard -"@jest/fake-timers@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/fake-timers@npm:29.6.3" +"@jest/fake-timers@npm:^29.6.4": + version: 29.6.4 + resolution: "@jest/fake-timers@npm:29.6.4" dependencies: "@jest/types": ^29.6.3 "@sinonjs/fake-timers": ^10.0.2 @@ -2131,77 +2081,30 @@ __metadata: jest-message-util: ^29.6.3 jest-mock: ^29.6.3 jest-util: ^29.6.3 - checksum: 60be71159bb92c8b8da593fac2b2fff50c0760c26c3b17237561a2818382d3c797bd119a1707ec1d3e9b77e8e3d6513fe88f0c668d6ca26fb2c01ab475620888 - languageName: node - linkType: hard - -"@jest/globals@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/globals@npm:26.6.2" - dependencies: - "@jest/environment": ^26.6.2 - "@jest/types": ^26.6.2 - expect: ^26.6.2 - checksum: 49b28d0cc7e99898eeaf23e6899e3c9ee25a2a4831caa3eb930ec1722de2e92a0e8a6a6f649438fdd20ff0c0d5e522dd78cb719466a57f011a88d60419b903c5 + checksum: 3f06d1090cbaaf781920fe59b10509ad86b587c401818a066ee1550101c6203e0718f0f83bbd2afa8bdf7b43eb280f89fb9f8c98886094e53ccabe5e64de9be1 languageName: node linkType: hard -"@jest/globals@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/globals@npm:29.6.3" +"@jest/globals@npm:^29.6.4": + version: 29.6.4 + resolution: "@jest/globals@npm:29.6.4" dependencies: - "@jest/environment": ^29.6.3 - "@jest/expect": ^29.6.3 + "@jest/environment": ^29.6.4 + "@jest/expect": ^29.6.4 "@jest/types": ^29.6.3 jest-mock: ^29.6.3 - checksum: c90ad4e85c4c7fa42e4c61fc6bba854dc7e12c3579b4412fe879e712bf3675e92a771d2ac4ba2a48304a4dab34182e62e9d62f36ca13ddf8dff3cca911ddfbbb - languageName: node - linkType: hard - -"@jest/reporters@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/reporters@npm:26.6.2" - dependencies: - "@bcoe/v8-coverage": ^0.2.3 - "@jest/console": ^26.6.2 - "@jest/test-result": ^26.6.2 - "@jest/transform": ^26.6.2 - "@jest/types": ^26.6.2 - chalk: ^4.0.0 - collect-v8-coverage: ^1.0.0 - exit: ^0.1.2 - glob: ^7.1.2 - graceful-fs: ^4.2.4 - istanbul-lib-coverage: ^3.0.0 - istanbul-lib-instrument: ^4.0.3 - istanbul-lib-report: ^3.0.0 - istanbul-lib-source-maps: ^4.0.0 - istanbul-reports: ^3.0.2 - jest-haste-map: ^26.6.2 - jest-resolve: ^26.6.2 - jest-util: ^26.6.2 - jest-worker: ^26.6.2 - node-notifier: ^8.0.0 - slash: ^3.0.0 - source-map: ^0.6.0 - string-length: ^4.0.1 - terminal-link: ^2.0.0 - v8-to-istanbul: ^7.0.0 - dependenciesMeta: - node-notifier: - optional: true - checksum: 53c7a697c562becb7682a9a6248ea553013bf7048c08ddce5bf9fb53b975fc9f799ca163f7494e0be6c4d3cf181c8bc392976268da52b7de8ce4470b971ed84e + checksum: a41b18871a248151264668a38b13cb305f03db112bfd89ec44e858af0e79066e0b03d6b68c8baf1ec6c578be6fdb87519389c83438608b91471d17a5724858e0 languageName: node linkType: hard -"@jest/reporters@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/reporters@npm:29.6.3" +"@jest/reporters@npm:^29.6.4": + version: 29.6.4 + resolution: "@jest/reporters@npm:29.6.4" dependencies: "@bcoe/v8-coverage": ^0.2.3 - "@jest/console": ^29.6.3 - "@jest/test-result": ^29.6.3 - "@jest/transform": ^29.6.3 + "@jest/console": ^29.6.4 + "@jest/test-result": ^29.6.4 + "@jest/transform": ^29.6.4 "@jest/types": ^29.6.3 "@jridgewell/trace-mapping": ^0.3.18 "@types/node": "*" @@ -2217,7 +2120,7 @@ __metadata: istanbul-reports: ^3.1.3 jest-message-util: ^29.6.3 jest-util: ^29.6.3 - jest-worker: ^29.6.3 + jest-worker: ^29.6.4 slash: ^3.0.0 string-length: ^4.0.1 strip-ansi: ^6.0.0 @@ -2227,7 +2130,7 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: 8899240f018874148a24886ac78ada6dda4b7fc621fed904b276b324b981c2294d2036df92fb87411f2abb914faa351098eeb814d7685dcfa37c7c27b54660a4 + checksum: 9ee0db497f3a826f535d3af0575ceb67984f9708bc6386450359517c212c67218ae98b8ea93ab05df2f920aed9c4166ef64209d66a09b7e30fc0077c91347ad0 languageName: node linkType: hard @@ -2240,17 +2143,6 @@ __metadata: languageName: node linkType: hard -"@jest/source-map@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/source-map@npm:26.6.2" - dependencies: - callsites: ^3.0.0 - graceful-fs: ^4.2.4 - source-map: ^0.6.0 - checksum: b171cef442738887dda85527ab78229996db5946c6435ddb56d442c2851889ba493729a9de73100f1a31b9a31a91207b55bc75656ae7df9843d65078b925385e - languageName: node - linkType: hard - "@jest/source-map@npm:^29.6.3": version: 29.6.3 resolution: "@jest/source-map@npm:29.6.3" @@ -2262,81 +2154,33 @@ __metadata: languageName: node linkType: hard -"@jest/test-result@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/test-result@npm:26.6.2" - dependencies: - "@jest/console": ^26.6.2 - "@jest/types": ^26.6.2 - "@types/istanbul-lib-coverage": ^2.0.0 - collect-v8-coverage: ^1.0.0 - checksum: dcb6175825231e9377e43546aed4edd6acc22f1788d5f099bbba36bb55b9115a92f760e88426c076bcdeff5a50d8f697327a920db0cd1fb339781fc3713fa8c7 - languageName: node - linkType: hard - -"@jest/test-result@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/test-result@npm:29.6.3" +"@jest/test-result@npm:^29.6.4": + version: 29.6.4 + resolution: "@jest/test-result@npm:29.6.4" dependencies: - "@jest/console": ^29.6.3 + "@jest/console": ^29.6.4 "@jest/types": ^29.6.3 "@types/istanbul-lib-coverage": ^2.0.0 collect-v8-coverage: ^1.0.0 - checksum: 0f8164520587555f4e0c5b3e0843ae8ae43c517301c2986b9ff24ca58215f407164b99f3ccfde778dc3fb299c3bb8922a3dd81cf3ccf0ff646806df61d3d2d78 - languageName: node - linkType: hard - -"@jest/test-sequencer@npm:^26.6.3": - version: 26.6.3 - resolution: "@jest/test-sequencer@npm:26.6.3" - dependencies: - "@jest/test-result": ^26.6.2 - graceful-fs: ^4.2.4 - jest-haste-map: ^26.6.2 - jest-runner: ^26.6.3 - jest-runtime: ^26.6.3 - checksum: a3450b3d7057f74da1828bb7b3658f228a7c049dc4082c5c49b8bafbd8f69d102a8a99007b7ed5d43464712f7823f53fe3564fda17787f178c219cccf329a461 + checksum: a13c82d29038e80059191a1a443240678c6934ea832fdabaec12b3ece397b6303022a064494a6bbd167a024f04e6b4d9ace1001300927ff70405ec9d854f1193 languageName: node linkType: hard -"@jest/test-sequencer@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/test-sequencer@npm:29.6.3" +"@jest/test-sequencer@npm:^29.6.4": + version: 29.6.4 + resolution: "@jest/test-sequencer@npm:29.6.4" dependencies: - "@jest/test-result": ^29.6.3 + "@jest/test-result": ^29.6.4 graceful-fs: ^4.2.9 - jest-haste-map: ^29.6.3 + jest-haste-map: ^29.6.4 slash: ^3.0.0 - checksum: 71b5fee13e28b2006b4bdea62181dd6b7a537531ac027b1230ad96a5a0c7837a4c008e9cbeebee630b0c7cc22187fede48cb18fec79209ff641492c994db8259 + checksum: 517fc66b74a87431a8a1429e4505d85bd09c11f2ba835e46c07c79911fbee23b89c01ec444c7c1d12d1b36f9eba60fcbbccc8e1bc1ae54a1a8b03b5f530ff81b languageName: node linkType: hard -"@jest/transform@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/transform@npm:26.6.2" - dependencies: - "@babel/core": ^7.1.0 - "@jest/types": ^26.6.2 - babel-plugin-istanbul: ^6.0.0 - chalk: ^4.0.0 - convert-source-map: ^1.4.0 - fast-json-stable-stringify: ^2.0.0 - graceful-fs: ^4.2.4 - jest-haste-map: ^26.6.2 - jest-regex-util: ^26.0.0 - jest-util: ^26.6.2 - micromatch: ^4.0.2 - pirates: ^4.0.1 - slash: ^3.0.0 - source-map: ^0.6.1 - write-file-atomic: ^3.0.0 - checksum: 31667b925a2f3b310d854495da0ab67be8f5da24df76ecfc51162e75f1140aed5d18069ba190cb5e0c7e492b04272c8c79076ddf5bbcff530ee80a16a02c4545 - languageName: node - linkType: hard - -"@jest/transform@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/transform@npm:29.6.3" +"@jest/transform@npm:^29.6.4": + version: 29.6.4 + resolution: "@jest/transform@npm:29.6.4" dependencies: "@babel/core": ^7.11.6 "@jest/types": ^29.6.3 @@ -2346,27 +2190,14 @@ __metadata: convert-source-map: ^2.0.0 fast-json-stable-stringify: ^2.1.0 graceful-fs: ^4.2.9 - jest-haste-map: ^29.6.3 + jest-haste-map: ^29.6.4 jest-regex-util: ^29.6.3 jest-util: ^29.6.3 micromatch: ^4.0.4 pirates: ^4.0.4 slash: ^3.0.0 write-file-atomic: ^4.0.2 - checksum: edc47e960a71dab5ad8f0480fc4c1b05f2950c12e5aeb62bacfd46929dd5c7101dd2fa521a2e59c62a90849118039949f0230282a485de8dc373aac711f1bff9 - languageName: node - linkType: hard - -"@jest/types@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/types@npm:26.6.2" - dependencies: - "@types/istanbul-lib-coverage": ^2.0.0 - "@types/istanbul-reports": ^3.0.0 - "@types/node": "*" - "@types/yargs": ^15.0.0 - chalk: ^4.0.0 - checksum: a0bd3d2f22f26ddb23f41fddf6e6a30bf4fab2ce79ec1cb6ce6fdfaf90a72e00f4c71da91ec61e13db3b10c41de22cf49d07c57ff2b59171d64b29f909c1d8d6 + checksum: 0341a200a0bb926fc67ab9aede91c7b4009458206495e92057e72a115c55da5fed117457e68c6ea821e24c58b55da75c6a7b0f272ed63c2693db583d689a3383 languageName: node linkType: hard @@ -2466,14 +2297,14 @@ __metadata: "@jupyterlab/ui-components": ^4 "@mui/icons-material": ^5.11.0 "@mui/material": ^5.11.0 - "@types/jest": ^26.0.0 + "@types/jest": ^29 "@types/react-syntax-highlighter": ^15.5.6 "@typescript-eslint/eslint-plugin": ^4.8.1 "@typescript-eslint/parser": ^4.8.1 eslint: ^7.14.0 eslint-config-prettier: ^6.15.0 eslint-plugin-prettier: ^3.1.4 - jest: ^26.0.0 + jest: ^29 mkdirp: ^1.0.3 mobx: ^6.10.0 mobx-react: ^9.0.0 @@ -2491,7 +2322,7 @@ __metadata: stylelint-config-recommended: ^6.0.0 stylelint-config-standard: ~24.0.0 stylelint-prettier: ^2.0.0 - ts-jest: ^26.0.0 + ts-jest: ^29 typescript: 5.1.6 y-protocols: ^1.0.5 languageName: unknown @@ -3553,12 +3384,12 @@ __metadata: linkType: hard "@lezer/javascript@npm:^1.0.0": - version: 1.4.6 - resolution: "@lezer/javascript@npm:1.4.6" + version: 1.4.7 + resolution: "@lezer/javascript@npm:1.4.7" dependencies: "@lezer/highlight": ^1.1.3 "@lezer/lr": ^1.3.0 - checksum: 0f2a44ebfe4a9177aaa755a42fcb1a00cf08bb8bf6149389754303f5aace2f94edc475c33637a55c66aab7e9367c1e087979ee37e342c84d541ff08eb9e8f695 + checksum: 37c05793e0e45280fa5d7b845a3132a84596105d48b7d2c195abea0a198477ea6719b07d1c8967679e80fc466388151956901fd6962479c130ffda64a6d09591 languageName: node linkType: hard @@ -3919,14 +3750,15 @@ __metadata: languageName: node linkType: hard -"@mui/base@npm:5.0.0-beta.11": - version: 5.0.0-beta.11 - resolution: "@mui/base@npm:5.0.0-beta.11" +"@mui/base@npm:5.0.0-beta.14": + version: 5.0.0-beta.14 + resolution: "@mui/base@npm:5.0.0-beta.14" dependencies: - "@babel/runtime": ^7.22.6 + "@babel/runtime": ^7.22.10 "@emotion/is-prop-valid": ^1.2.1 + "@floating-ui/react-dom": ^2.0.1 "@mui/types": ^7.2.4 - "@mui/utils": ^5.14.5 + "@mui/utils": ^5.14.8 "@popperjs/core": ^2.11.8 clsx: ^2.0.0 prop-types: ^15.8.1 @@ -3938,22 +3770,22 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 7a60421c427f3561d3e58abfa223a08ba6fc00e5587ff13c2ebbad52c3ea6bb45bdfa6e8a5cf673be4e90af0aef96b3253ec9098446ba94f5a414eb81e0c3d1a + checksum: 3e5c980edb285d4fbf1f9f6c08b237a502e6c444222e0165e98e4e25787de7663d6905536b8e8a7a0888571daaa75fcad01534c8f8ea8ba30451cad82d1b85cc languageName: node linkType: hard -"@mui/core-downloads-tracker@npm:^5.14.5": - version: 5.14.5 - resolution: "@mui/core-downloads-tracker@npm:5.14.5" - checksum: 934fe49cf1a14db380727a83fcd559771b82480ebbbe36ea476e219b91cf08224ca3f0b50b3f218aeb10b537cc61e096d3c3048fd93ae7a17238631b144da241 +"@mui/core-downloads-tracker@npm:^5.14.8": + version: 5.14.8 + resolution: "@mui/core-downloads-tracker@npm:5.14.8" + checksum: b8322994d7c05426008c3426f7ce4bb0a1dfd633429af704cc9e164655007fc446ba21bf6b00af8fa1b9a9cb4c1757d72c7554e13cceadc575af7d44344da38c languageName: node linkType: hard "@mui/icons-material@npm:^5.11.0": - version: 5.14.3 - resolution: "@mui/icons-material@npm:5.14.3" + version: 5.14.8 + resolution: "@mui/icons-material@npm:5.14.8" dependencies: - "@babel/runtime": ^7.22.6 + "@babel/runtime": ^7.22.10 peerDependencies: "@mui/material": ^5.0.0 "@types/react": ^17.0.0 || ^18.0.0 @@ -3961,20 +3793,20 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 25ff0261dcbcdde9967779f844d12c85c3ffc79227e50d8c03eade1081c2be855e88d2dbe2a587aa57b5c5c2b742af14f70b1767f7ccfd539d89876a6fc580fb + checksum: b4e73454b3ac22ccd78cb742d2a610c00494bf0fc5ffcae4133d40a6de92fd320553edbbe853e6595fd7565fa98fed97b9c2c733bc7e0a345a24527f699cc639 languageName: node linkType: hard "@mui/material@npm:^5.11.0": - version: 5.14.5 - resolution: "@mui/material@npm:5.14.5" + version: 5.14.8 + resolution: "@mui/material@npm:5.14.8" dependencies: - "@babel/runtime": ^7.22.6 - "@mui/base": 5.0.0-beta.11 - "@mui/core-downloads-tracker": ^5.14.5 - "@mui/system": ^5.14.5 + "@babel/runtime": ^7.22.10 + "@mui/base": 5.0.0-beta.14 + "@mui/core-downloads-tracker": ^5.14.8 + "@mui/system": ^5.14.8 "@mui/types": ^7.2.4 - "@mui/utils": ^5.14.5 + "@mui/utils": ^5.14.8 "@types/react-transition-group": ^4.4.6 clsx: ^2.0.0 csstype: ^3.1.2 @@ -3994,16 +3826,16 @@ __metadata: optional: true "@types/react": optional: true - checksum: a3889143be3a5eff0bb7cfce66f677eb6a441f17a958abb2ace09f20cbfd4edb6ade3d63aa616eca0c774abc7167c63b57a05bb172355f3b6f7ac90ce31f55d2 + checksum: 2db4eceb6a2b51e2f429082206b5c4194f894bc6831cf5348d301b910e5e2b1a62565cad00a244100434899307c20134832ab2e85dd56bef4dd210d87496e136 languageName: node linkType: hard -"@mui/private-theming@npm:^5.14.5": - version: 5.14.5 - resolution: "@mui/private-theming@npm:5.14.5" +"@mui/private-theming@npm:^5.14.8": + version: 5.14.8 + resolution: "@mui/private-theming@npm:5.14.8" dependencies: - "@babel/runtime": ^7.22.6 - "@mui/utils": ^5.14.5 + "@babel/runtime": ^7.22.10 + "@mui/utils": ^5.14.8 prop-types: ^15.8.1 peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 @@ -4011,15 +3843,15 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 0d42a858725ee52369689f51c5237cd7d296bf2af380954b7406b62f41a09c34820ac698e53475caf1115adb3849b346945fe2dd867d637be7ae182a84c92b56 + checksum: 3d8c4b768ee81d03c739acfa7d99450423b9267a1a2219171f247b1823350426452514f0cc646f4d48f113db396b5488c48132fe54a5db8646e101514b764d96 languageName: node linkType: hard -"@mui/styled-engine@npm:^5.13.2": - version: 5.13.2 - resolution: "@mui/styled-engine@npm:5.13.2" +"@mui/styled-engine@npm:^5.14.8": + version: 5.14.8 + resolution: "@mui/styled-engine@npm:5.14.8" dependencies: - "@babel/runtime": ^7.21.0 + "@babel/runtime": ^7.22.10 "@emotion/cache": ^11.11.0 csstype: ^3.1.2 prop-types: ^15.8.1 @@ -4032,19 +3864,19 @@ __metadata: optional: true "@emotion/styled": optional: true - checksum: e99f49755406b55a1595bf5d2727f0c0e3fd9f914dce1ea3b6cac826efe05038f8e4bde52580bd6a5a4c62ad59e5582bdde6c17abc10d80e61a64da168803391 + checksum: 12d626a42fa15cc315172775a076cf6f71afc999123bd290cbda3855de8c607f8fbf0a3daa7a391e67a83ad824c6e7eb21e57121a448a527b3bf9b494a7bd852 languageName: node linkType: hard -"@mui/system@npm:^5.14.5": - version: 5.14.5 - resolution: "@mui/system@npm:5.14.5" +"@mui/system@npm:^5.14.8": + version: 5.14.8 + resolution: "@mui/system@npm:5.14.8" dependencies: - "@babel/runtime": ^7.22.6 - "@mui/private-theming": ^5.14.5 - "@mui/styled-engine": ^5.13.2 + "@babel/runtime": ^7.22.10 + "@mui/private-theming": ^5.14.8 + "@mui/styled-engine": ^5.14.8 "@mui/types": ^7.2.4 - "@mui/utils": ^5.14.5 + "@mui/utils": ^5.14.8 clsx: ^2.0.0 csstype: ^3.1.2 prop-types: ^15.8.1 @@ -4060,7 +3892,7 @@ __metadata: optional: true "@types/react": optional: true - checksum: a177012914cf6f86af17e45e15ad489f5203ce5c055d40e77e5152ea0584fa01092c5b27fde956c8d7079b40d9ffd92270edf9c3a5249d4cd217b0dbccadd32d + checksum: d630b4253caa971ad0bcb35cef1165ff689bfcadb806eb3b26eddce4d6c1bcdeb9781ccaea87f9950bff308ac302514766880f63c4bbdcdf28619f66d974797c languageName: node linkType: hard @@ -4076,18 +3908,18 @@ __metadata: languageName: node linkType: hard -"@mui/utils@npm:^5.14.5": - version: 5.14.5 - resolution: "@mui/utils@npm:5.14.5" +"@mui/utils@npm:^5.14.8": + version: 5.14.8 + resolution: "@mui/utils@npm:5.14.8" dependencies: - "@babel/runtime": ^7.22.6 + "@babel/runtime": ^7.22.10 "@types/prop-types": ^15.7.5 "@types/react-is": ^18.2.1 prop-types: ^15.8.1 react-is: ^18.2.0 peerDependencies: react: ^17.0.0 || ^18.0.0 - checksum: 7044d73ae41bdfd9c7c6287a3c1391ec4c5395c8f0092eac3ca4f1fd5359068fad29366f39d8072f68493eb5225399463935bbca266c879d630f8ebaa3db96d7 + checksum: 2fb29c9d7908a47276b4f4a31a7e76d5a7d437afe95d2c0d6cd9c07f04beea89857f763c4f5c546fe243539d9986181815bfded42e516077122ed373d11a7ebf languageName: node linkType: hard @@ -4330,18 +4162,18 @@ __metadata: languageName: node linkType: hard -"@nrwl/cli@npm:15.9.5": - version: 15.9.5 - resolution: "@nrwl/cli@npm:15.9.5" +"@nrwl/cli@npm:15.9.6": + version: 15.9.6 + resolution: "@nrwl/cli@npm:15.9.6" dependencies: - nx: 15.9.5 - checksum: 605b2614916de86969f5d885a4c2232d46713cf83811d9a4581981d7f5d2423291062b98ff3632a8bad358dabaf4fbb77f521fd825c70e853c0a694a8336b93a + nx: 15.9.6 + checksum: cf1b702c66e2e0a82510bcb4e0c672f5481ef5265044573b8e15bc87e0234e961cb38f4b951d00335fad284bc5e539ee6eaf71276f5248a20902c05d26b91162 languageName: node linkType: hard "@nrwl/devkit@npm:>=15.5.2 < 16": - version: 15.9.5 - resolution: "@nrwl/devkit@npm:15.9.5" + version: 15.9.6 + resolution: "@nrwl/devkit@npm:15.9.6" dependencies: ejs: ^3.1.7 ignore: ^5.0.4 @@ -4350,81 +4182,81 @@ __metadata: tslib: ^2.3.0 peerDependencies: nx: ">= 14.1 <= 16" - checksum: 745b3c03b0e39426d20f3ec437752f13ee41248ea46dbc009fce6bc7f494576015d25c861d93087c2896c825472302dc10035c8683979bbbe8a447b2c7446481 + checksum: 94af5245aad362704819ecc7ac8ca6e6f78a232e9853cd1b36085ae47948cee357dcf8414bb3ac620131e1ce16fb3b4e469979593e7e18398ea9faa22b4fcc60 languageName: node linkType: hard -"@nrwl/nx-darwin-arm64@npm:15.9.5": - version: 15.9.5 - resolution: "@nrwl/nx-darwin-arm64@npm:15.9.5" +"@nrwl/nx-darwin-arm64@npm:15.9.6": + version: 15.9.6 + resolution: "@nrwl/nx-darwin-arm64@npm:15.9.6" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@nrwl/nx-darwin-x64@npm:15.9.5": - version: 15.9.5 - resolution: "@nrwl/nx-darwin-x64@npm:15.9.5" +"@nrwl/nx-darwin-x64@npm:15.9.6": + version: 15.9.6 + resolution: "@nrwl/nx-darwin-x64@npm:15.9.6" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@nrwl/nx-linux-arm-gnueabihf@npm:15.9.5": - version: 15.9.5 - resolution: "@nrwl/nx-linux-arm-gnueabihf@npm:15.9.5" +"@nrwl/nx-linux-arm-gnueabihf@npm:15.9.6": + version: 15.9.6 + resolution: "@nrwl/nx-linux-arm-gnueabihf@npm:15.9.6" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@nrwl/nx-linux-arm64-gnu@npm:15.9.5": - version: 15.9.5 - resolution: "@nrwl/nx-linux-arm64-gnu@npm:15.9.5" +"@nrwl/nx-linux-arm64-gnu@npm:15.9.6": + version: 15.9.6 + resolution: "@nrwl/nx-linux-arm64-gnu@npm:15.9.6" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@nrwl/nx-linux-arm64-musl@npm:15.9.5": - version: 15.9.5 - resolution: "@nrwl/nx-linux-arm64-musl@npm:15.9.5" +"@nrwl/nx-linux-arm64-musl@npm:15.9.6": + version: 15.9.6 + resolution: "@nrwl/nx-linux-arm64-musl@npm:15.9.6" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@nrwl/nx-linux-x64-gnu@npm:15.9.5": - version: 15.9.5 - resolution: "@nrwl/nx-linux-x64-gnu@npm:15.9.5" +"@nrwl/nx-linux-x64-gnu@npm:15.9.6": + version: 15.9.6 + resolution: "@nrwl/nx-linux-x64-gnu@npm:15.9.6" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@nrwl/nx-linux-x64-musl@npm:15.9.5": - version: 15.9.5 - resolution: "@nrwl/nx-linux-x64-musl@npm:15.9.5" +"@nrwl/nx-linux-x64-musl@npm:15.9.6": + version: 15.9.6 + resolution: "@nrwl/nx-linux-x64-musl@npm:15.9.6" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@nrwl/nx-win32-arm64-msvc@npm:15.9.5": - version: 15.9.5 - resolution: "@nrwl/nx-win32-arm64-msvc@npm:15.9.5" +"@nrwl/nx-win32-arm64-msvc@npm:15.9.6": + version: 15.9.6 + resolution: "@nrwl/nx-win32-arm64-msvc@npm:15.9.6" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@nrwl/nx-win32-x64-msvc@npm:15.9.5": - version: 15.9.5 - resolution: "@nrwl/nx-win32-x64-msvc@npm:15.9.5" +"@nrwl/nx-win32-x64-msvc@npm:15.9.6": + version: 15.9.6 + resolution: "@nrwl/nx-win32-x64-msvc@npm:15.9.6" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@nrwl/tao@npm:15.9.5": - version: 15.9.5 - resolution: "@nrwl/tao@npm:15.9.5" +"@nrwl/tao@npm:15.9.6": + version: 15.9.6 + resolution: "@nrwl/tao@npm:15.9.6" dependencies: - nx: 15.9.5 + nx: 15.9.6 bin: tao: index.js - checksum: 6223829d3d447f4ec11f58a4484d2a4b41d45cc9abdea976005aafdf766b3d42871ab1068130459fcca4c4b0f48f97909066989223a4836a5aebcd72e16266d6 + checksum: a100531e052de10d94e1040ffe0fb9459b83be1d6e30a9cdb9436f7c5d10a5e0e7889381d4fe1335fd6a76493666493bcc3d68aa65b1ef803da3880b54fce4f1 languageName: node linkType: hard @@ -4641,8 +4473,8 @@ __metadata: linkType: hard "@rjsf/core@npm:^5.1.0": - version: 5.12.1 - resolution: "@rjsf/core@npm:5.12.1" + version: 5.13.0 + resolution: "@rjsf/core@npm:5.13.0" dependencies: lodash: ^4.17.21 lodash-es: ^4.17.21 @@ -4650,15 +4482,15 @@ __metadata: nanoid: ^3.3.6 prop-types: ^15.8.1 peerDependencies: - "@rjsf/utils": ^5.8.x + "@rjsf/utils": ^5.12.x react: ^16.14.0 || >=17 - checksum: 94497e4320773e83abae67902eb070834ea190b22602a09821375c7963133082654b5c79e486dffd7715714703a5786b4ab975d314f78c5c52e802a619eec53d + checksum: d7d66d20fcdf310f4b152c22e1ac1ca8abe5f40b502711c9cabc4241b3252ec0e58345aa194529d2bdfb7a51b9f1179c9ddefc0cdc7fd9f94ad10c5e5b1032b8 languageName: node linkType: hard "@rjsf/utils@npm:^5.1.0": - version: 5.12.1 - resolution: "@rjsf/utils@npm:5.12.1" + version: 5.13.0 + resolution: "@rjsf/utils@npm:5.13.0" dependencies: json-schema-merge-allof: ^0.8.1 jsonpointer: ^5.0.1 @@ -4667,7 +4499,7 @@ __metadata: react-is: ^18.2.0 peerDependencies: react: ^16.14.0 || >=17 - checksum: 7be971df803f1cef4cb6083e5393ac7f76a24e9c682e408f908630d015f22188255048cc1e158e6133d789692224d73911943edf813587f28a98a879c88f8c50 + checksum: 283e2b405eac2f4fdd243b2e35ade7e83a4bf7551eb5e075499e8eb5d3a3ae161e9c047bcf63d2e6fef7c6b2e7438f1a150f353b909df992e85194940c311f9b languageName: node linkType: hard @@ -4715,15 +4547,6 @@ __metadata: languageName: node linkType: hard -"@sinonjs/commons@npm:^1.7.0": - version: 1.8.6 - resolution: "@sinonjs/commons@npm:1.8.6" - dependencies: - type-detect: 4.0.8 - checksum: 7d3f8c1e85f30cd4e83594fc19b7a657f14d49eb8d95a30095631ce15e906c869e0eff96c5b93dffea7490c00418b07f54582ba49c6560feb2a8c34c0b16832d - languageName: node - linkType: hard - "@sinonjs/commons@npm:^3.0.0": version: 3.0.0 resolution: "@sinonjs/commons@npm:3.0.0" @@ -4742,22 +4565,6 @@ __metadata: languageName: node linkType: hard -"@sinonjs/fake-timers@npm:^6.0.1": - version: 6.0.1 - resolution: "@sinonjs/fake-timers@npm:6.0.1" - dependencies: - "@sinonjs/commons": ^1.7.0 - checksum: 8e331aa1412d905ecc8efd63550f58a6f77dcb510f878172004e53be63eb82650623618763001a918fc5e21257b86c45041e4e97c454ed6a2d187de084abbd11 - languageName: node - linkType: hard - -"@tootallnate/once@npm:1": - version: 1.1.2 - resolution: "@tootallnate/once@npm:1.1.2" - checksum: e1fb1bbbc12089a0cb9433dc290f97bddd062deadb6178ce9bcb93bb7c1aecde5e60184bc7065aec42fe1663622a213493c48bbd4972d931aae48315f18e1be9 - languageName: node - linkType: hard - "@tootallnate/once@npm:2": version: 2.0.0 resolution: "@tootallnate/once@npm:2.0.0" @@ -4782,7 +4589,7 @@ __metadata: languageName: node linkType: hard -"@types/babel__core@npm:^7.0.0, @types/babel__core@npm:^7.1.14, @types/babel__core@npm:^7.1.7": +"@types/babel__core@npm:^7.1.14": version: 7.20.1 resolution: "@types/babel__core@npm:7.20.1" dependencies: @@ -4814,7 +4621,7 @@ __metadata: languageName: node linkType: hard -"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.4, @types/babel__traverse@npm:^7.0.6": +"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": version: 7.20.1 resolution: "@types/babel__traverse@npm:7.20.1" dependencies: @@ -4866,7 +4673,7 @@ __metadata: languageName: node linkType: hard -"@types/graceful-fs@npm:^4.1.2, @types/graceful-fs@npm:^4.1.3": +"@types/graceful-fs@npm:^4.1.3": version: 4.1.6 resolution: "@types/graceful-fs@npm:4.1.6" dependencies: @@ -4909,13 +4716,13 @@ __metadata: languageName: node linkType: hard -"@types/jest@npm:^26.0.0": - version: 26.0.24 - resolution: "@types/jest@npm:26.0.24" +"@types/jest@npm:^29": + version: 29.5.4 + resolution: "@types/jest@npm:29.5.4" dependencies: - jest-diff: ^26.0.0 - pretty-format: ^26.0.0 - checksum: ae39675412f08d884926254e9b12bfd2b5a4e4d204c94d3148cb942174a474930d0c60540133c968f22241d4712b7940c96cbc883096eb326a4d5b206fb78bd0 + expect: ^29.0.0 + pretty-format: ^29.0.0 + checksum: 38ed5942f44336452efd0f071eab60aaa57cd8d46530348d0a3aa5a691dcbf1366c4ca8f6ee8364efb45b4413bfefae443e5d4f469246a472a03b21ac11cd4ed languageName: node linkType: hard @@ -4982,9 +4789,9 @@ __metadata: linkType: hard "@types/node@npm:*": - version: 20.5.3 - resolution: "@types/node@npm:20.5.3" - checksum: fe67a0fd7402218bdf91523a2b1c2e41d619f7294b1a471e0a778b8bc7bb3fcf291aed12041bcbe9622d50a3d1295a9adea0e7e19bb9386a246bf66071404721 + version: 20.6.0 + resolution: "@types/node@npm:20.6.0" + checksum: 52611801af5cf151c6fac1963aa4a8a8ca2e388a9e9ed82b01b70bca762088ded5b32cc789c5564220d5d7dccba2b8dd34446a3d4fc74736805e1f2cf262e29d languageName: node linkType: hard @@ -5002,13 +4809,6 @@ __metadata: languageName: node linkType: hard -"@types/prettier@npm:^2.0.0": - version: 2.7.3 - resolution: "@types/prettier@npm:2.7.3" - checksum: 705384209cea6d1433ff6c187c80dcc0b95d99d5c5ce21a46a9a58060c527973506822e428789d842761e0280d25e3359300f017fbe77b9755bc772ab3dc2f83 - languageName: node - linkType: hard - "@types/prop-types@npm:*, @types/prop-types@npm:^15.0.0, @types/prop-types@npm:^15.7.5": version: 15.7.5 resolution: "@types/prop-types@npm:15.7.5" @@ -5094,9 +4894,9 @@ __metadata: linkType: hard "@types/unist@npm:^2, @types/unist@npm:^2.0.0": - version: 2.0.7 - resolution: "@types/unist@npm:2.0.7" - checksum: b97a219554e83431f19a93ff113306bf0512909292815e8f32964e47d041c505af1aaa2a381c23e137c4c0b962fad58d4ce9c5c3256642921a466be43c1fc715 + version: 2.0.8 + resolution: "@types/unist@npm:2.0.8" + checksum: f4852d10a6752dc70df363917ef74453e5d2fd42824c0f6d09d19d530618e1402193977b1207366af4415aaec81d4e262c64d00345402020c4ca179216e553c7 languageName: node linkType: hard @@ -5118,15 +4918,6 @@ __metadata: languageName: node linkType: hard -"@types/yargs@npm:^15.0.0": - version: 15.0.15 - resolution: "@types/yargs@npm:15.0.15" - dependencies: - "@types/yargs-parser": "*" - checksum: 3420f6bcc508a895ef91858f8e6de975c710e4498cf6ed293f1174d3f1ad56edb4ab8481219bf6190f64a3d4115fab1d13ab3edc90acd54fba7983144040e446 - languageName: node - linkType: hard - "@types/yargs@npm:^17.0.8": version: 17.0.24 resolution: "@types/yargs@npm:17.0.24" @@ -5474,7 +5265,7 @@ __metadata: languageName: node linkType: hard -"abab@npm:^2.0.3, abab@npm:^2.0.5, abab@npm:^2.0.6": +"abab@npm:^2.0.3, abab@npm:^2.0.6": version: 2.0.6 resolution: "abab@npm:2.0.6" checksum: 6ffc1af4ff315066c62600123990d87551ceb0aafa01e6539da77b0f5987ac7019466780bf480f1787576d4385e3690c81ccc37cfda12819bf510b8ab47e5a3e @@ -5530,16 +5321,6 @@ __metadata: languageName: node linkType: hard -"acorn-globals@npm:^6.0.0": - version: 6.0.0 - resolution: "acorn-globals@npm:6.0.0" - dependencies: - acorn: ^7.1.1 - acorn-walk: ^7.1.1 - checksum: 72d95e5b5e585f9acd019b993ab8bbba68bb3cbc9d9b5c1ebb3c2f1fe5981f11deababfb4949f48e6262f9c57878837f5958c0cca396f81023814680ca878042 - languageName: node - linkType: hard - "acorn-globals@npm:^7.0.0": version: 7.0.1 resolution: "acorn-globals@npm:7.0.1" @@ -5568,13 +5349,6 @@ __metadata: languageName: node linkType: hard -"acorn-walk@npm:^7.1.1": - version: 7.2.0 - resolution: "acorn-walk@npm:7.2.0" - checksum: 9252158a79b9d92f1bc0dd6acc0fcfb87a67339e84bcc301bb33d6078936d27e35d606b4d35626d2962cd43c256d6f27717e70cbe15c04fff999ab0b2260b21f - languageName: node - linkType: hard - "acorn-walk@npm:^8.0.2": version: 8.2.0 resolution: "acorn-walk@npm:8.2.0" @@ -5582,7 +5356,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^7.1.1, acorn@npm:^7.4.0": +"acorn@npm:^7.4.0": version: 7.4.1 resolution: "acorn@npm:7.4.1" bin: @@ -5591,7 +5365,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.1.0, acorn@npm:^8.2.4, acorn@npm:^8.7.1, acorn@npm:^8.8.1, acorn@npm:^8.8.2": +"acorn@npm:^8.1.0, acorn@npm:^8.7.1, acorn@npm:^8.8.1, acorn@npm:^8.8.2": version: 8.10.0 resolution: "acorn@npm:8.10.0" bin: @@ -5709,7 +5483,7 @@ __metadata: languageName: node linkType: hard -"ansi-regex@npm:^5.0.0, ansi-regex@npm:^5.0.1": +"ansi-regex@npm:^5.0.1": version: 5.0.1 resolution: "ansi-regex@npm:5.0.1" checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b @@ -5755,16 +5529,6 @@ __metadata: languageName: node linkType: hard -"anymatch@npm:^2.0.0": - version: 2.0.0 - resolution: "anymatch@npm:2.0.0" - dependencies: - micromatch: ^3.1.4 - normalize-path: ^2.1.1 - checksum: f7bb1929842b4585cdc28edbb385767d499ce7d673f96a8f11348d2b2904592ffffc594fe9229b9a1e9e4dccb9329b7692f9f45e6a11dcefbb76ecdc9ab740f6 - languageName: node - linkType: hard - "anymatch@npm:^3.0.3": version: 3.1.3 resolution: "anymatch@npm:3.1.3" @@ -5818,27 +5582,6 @@ __metadata: languageName: node linkType: hard -"arr-diff@npm:^4.0.0": - version: 4.0.0 - resolution: "arr-diff@npm:4.0.0" - checksum: ea7c8834842ad3869297f7915689bef3494fd5b102ac678c13ffccab672d3d1f35802b79e90c4cfec2f424af3392e44112d1ccf65da34562ed75e049597276a0 - languageName: node - linkType: hard - -"arr-flatten@npm:^1.1.0": - version: 1.1.0 - resolution: "arr-flatten@npm:1.1.0" - checksum: 963fe12564fca2f72c055f3f6c206b9e031f7c433a0c66ca9858b484821f248c5b1e5d53c8e4989d80d764cd776cf6d9b160ad05f47bdc63022bfd63b5455e22 - languageName: node - linkType: hard - -"arr-union@npm:^3.1.0": - version: 3.1.0 - resolution: "arr-union@npm:3.1.0" - checksum: b5b0408c6eb7591143c394f3be082fee690ddd21f0fdde0a0a01106799e847f67fcae1b7e56b0a0c173290e29c6aca9562e82b300708a268bc8f88f3d6613cb9 - languageName: node - linkType: hard - "array-buffer-byte-length@npm:^1.0.0": version: 1.0.0 resolution: "array-buffer-byte-length@npm:1.0.0" @@ -5870,24 +5613,18 @@ __metadata: languageName: node linkType: hard -"array-unique@npm:^0.3.2": - version: 0.3.2 - resolution: "array-unique@npm:0.3.2" - checksum: da344b89cfa6b0a5c221f965c21638bfb76b57b45184a01135382186924f55973cd9b171d4dad6bf606c6d9d36b0d721d091afdc9791535ead97ccbe78f8a888 - languageName: node - linkType: hard - "arraybuffer.prototype.slice@npm:^1.0.1": - version: 1.0.1 - resolution: "arraybuffer.prototype.slice@npm:1.0.1" + version: 1.0.2 + resolution: "arraybuffer.prototype.slice@npm:1.0.2" dependencies: array-buffer-byte-length: ^1.0.0 call-bind: ^1.0.2 define-properties: ^1.2.0 + es-abstract: ^1.22.1 get-intrinsic: ^1.2.1 is-array-buffer: ^3.0.2 is-shared-array-buffer: ^1.0.2 - checksum: e3e9b2a3e988ebfeddce4c7e8f69df730c9e48cb04b0d40ff0874ce3d86b3d1339dd520ffde5e39c02610bc172ecfbd4bc93324b1cabd9554c44a56b131ce0ce + checksum: c200faf437786f5b2c80d4564ff5481c886a16dee642ef02abdc7306c7edd523d1f01d1dd12b769c7eb42ac9bc53874510db19a92a2c035c0f6696172aafa5d3 languageName: node linkType: hard @@ -5905,13 +5642,6 @@ __metadata: languageName: node linkType: hard -"assign-symbols@npm:^1.0.0": - version: 1.0.0 - resolution: "assign-symbols@npm:1.0.0" - checksum: c0eb895911d05b6b2d245154f70461c5e42c107457972e5ebba38d48967870dee53bcdf6c7047990586daa80fab8dab3cc6300800fbd47b454247fdedd859a2c - languageName: node - linkType: hard - "astral-regex@npm:^2.0.0": version: 2.0.0 resolution: "astral-regex@npm:2.0.0" @@ -5947,15 +5677,6 @@ __metadata: languageName: node linkType: hard -"atob@npm:^2.1.2": - version: 2.1.2 - resolution: "atob@npm:2.1.2" - bin: - atob: bin/atob.js - checksum: dfeeeb70090c5ebea7be4b9f787f866686c645d9f39a0d184c817252d0cf08455ed25267d79c03254d3be1f03ac399992a792edcd5ffb9c91e097ab5ef42833a - languageName: node - linkType: hard - "available-typed-arrays@npm:^1.0.5": version: 1.0.5 resolution: "available-typed-arrays@npm:1.0.5" @@ -5964,39 +5685,21 @@ __metadata: linkType: hard "axios@npm:^1.0.0": - version: 1.4.0 - resolution: "axios@npm:1.4.0" + version: 1.5.0 + resolution: "axios@npm:1.5.0" dependencies: follow-redirects: ^1.15.0 form-data: ^4.0.0 proxy-from-env: ^1.1.0 - checksum: 7fb6a4313bae7f45e89d62c70a800913c303df653f19eafec88e56cea2e3821066b8409bc68be1930ecca80e861c52aa787659df0ffec6ad4d451c7816b9386b - languageName: node - linkType: hard - -"babel-jest@npm:^26.6.3": - version: 26.6.3 - resolution: "babel-jest@npm:26.6.3" - dependencies: - "@jest/transform": ^26.6.2 - "@jest/types": ^26.6.2 - "@types/babel__core": ^7.1.7 - babel-plugin-istanbul: ^6.0.0 - babel-preset-jest: ^26.6.2 - chalk: ^4.0.0 - graceful-fs: ^4.2.4 - slash: ^3.0.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 5917233f0d381e719e195b69b81e46da90293432d10288d79f8f59b8f3f9ac030e14701f3d9f90893fb739481df1d132446f1b983d841e65e2623775db100897 + checksum: e7405a5dbbea97760d0e6cd58fecba311b0401ddb4a8efbc4108f5537da9b3f278bde566deb777935a960beec4fa18e7b8353881f2f465e4f2c0e949fead35be languageName: node linkType: hard -"babel-jest@npm:^29.6.3": - version: 29.6.3 - resolution: "babel-jest@npm:29.6.3" +"babel-jest@npm:^29.6.4": + version: 29.6.4 + resolution: "babel-jest@npm:29.6.4" dependencies: - "@jest/transform": ^29.6.3 + "@jest/transform": ^29.6.4 "@types/babel__core": ^7.1.14 babel-plugin-istanbul: ^6.1.1 babel-preset-jest: ^29.6.3 @@ -6005,11 +5708,11 @@ __metadata: slash: ^3.0.0 peerDependencies: "@babel/core": ^7.8.0 - checksum: 8b4b85d829d8ee010f0c8381cb9d67842da905c32183c1fc6e1e8833447a79b969f8279759d44197bb77001239dc41a49fff0e8222d8e8577f47a8d0428d178e + checksum: c574f1805ab6b51a7d0f5a028aad19eec4634be81e66e6f4631b79b34d8ea05dfb53629f3686c77345163872730aa0408c9e5937ed85f846984228f7ab5e5d96 languageName: node linkType: hard -"babel-plugin-istanbul@npm:^6.0.0, babel-plugin-istanbul@npm:^6.1.1": +"babel-plugin-istanbul@npm:^6.1.1": version: 6.1.1 resolution: "babel-plugin-istanbul@npm:6.1.1" dependencies: @@ -6022,18 +5725,6 @@ __metadata: languageName: node linkType: hard -"babel-plugin-jest-hoist@npm:^26.6.2": - version: 26.6.2 - resolution: "babel-plugin-jest-hoist@npm:26.6.2" - dependencies: - "@babel/template": ^7.3.3 - "@babel/types": ^7.3.3 - "@types/babel__core": ^7.0.0 - "@types/babel__traverse": ^7.0.6 - checksum: abe3732fdf20f96e91cbf788a54d776b30bd7a6054cb002a744d7071c656813e26e77a780dc2a6f6b197472897e220836cd907bda3fadb9d0481126bfd6c3783 - languageName: node - linkType: hard - "babel-plugin-jest-hoist@npm:^29.6.3": version: 29.6.3 resolution: "babel-plugin-jest-hoist@npm:29.6.3" @@ -6115,18 +5806,6 @@ __metadata: languageName: node linkType: hard -"babel-preset-jest@npm:^26.6.2": - version: 26.6.2 - resolution: "babel-preset-jest@npm:26.6.2" - dependencies: - babel-plugin-jest-hoist: ^26.6.2 - babel-preset-current-node-syntax: ^1.0.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 1d9bef3a7ac6751a09d29ceb84be8b1998abd210fafa12223689c744db4f2a63ab90cba7986a71f3154d9aceda9dbeca563178731d21cbaf793b4096ed3a4d01 - languageName: node - linkType: hard - "babel-preset-jest@npm:^29.6.3": version: 29.6.3 resolution: "babel-preset-jest@npm:29.6.3" @@ -6167,21 +5846,6 @@ __metadata: languageName: node linkType: hard -"base@npm:^0.11.1": - version: 0.11.2 - resolution: "base@npm:0.11.2" - dependencies: - cache-base: ^1.0.1 - class-utils: ^0.3.5 - component-emitter: ^1.2.1 - define-property: ^1.0.0 - isobject: ^3.0.1 - mixin-deep: ^1.2.0 - pascalcase: ^0.1.1 - checksum: a4a146b912e27eea8f66d09cb0c9eab666f32ce27859a7dfd50f38cd069a2557b39f16dba1bc2aecb3b44bf096738dd207b7970d99b0318423285ab1b1994edd - languageName: node - linkType: hard - "before-after-hook@npm:^2.2.0": version: 2.2.3 resolution: "before-after-hook@npm:2.2.3" @@ -6238,24 +5902,6 @@ __metadata: languageName: node linkType: hard -"braces@npm:^2.3.1": - version: 2.3.2 - resolution: "braces@npm:2.3.2" - dependencies: - arr-flatten: ^1.1.0 - array-unique: ^0.3.2 - extend-shallow: ^2.0.1 - fill-range: ^4.0.0 - isobject: ^3.0.1 - repeat-element: ^1.1.2 - snapdragon: ^0.8.1 - snapdragon-node: ^2.0.1 - split-string: ^3.0.2 - to-regex: ^3.0.1 - checksum: e30dcb6aaf4a31c8df17d848aa283a65699782f75ad61ae93ec25c9729c66cf58e66f0000a9fec84e4add1135bb7da40f7cb9601b36bebcfa9ca58e8d5c07de0 - languageName: node - linkType: hard - "braces@npm:^3.0.2": version: 3.0.2 resolution: "braces@npm:3.0.2" @@ -6265,13 +5911,6 @@ __metadata: languageName: node linkType: hard -"browser-process-hrtime@npm:^1.0.0": - version: 1.0.0 - resolution: "browser-process-hrtime@npm:1.0.0" - checksum: e30f868cdb770b1201afb714ad1575dd86366b6e861900884665fb627109b3cc757c40067d3bfee1ff2a29c835257ea30725a8018a9afd02ac1c24b408b1e45f - languageName: node - linkType: hard - "browserslist@npm:^4.14.5, browserslist@npm:^4.21.10, browserslist@npm:^4.21.9": version: 4.21.10 resolution: "browserslist@npm:4.21.10" @@ -6304,7 +5943,7 @@ __metadata: languageName: node linkType: hard -"buffer-from@npm:1.x, buffer-from@npm:^1.0.0": +"buffer-from@npm:^1.0.0": version: 1.1.2 resolution: "buffer-from@npm:1.1.2" checksum: 0448524a562b37d4d7ed9efd91685a5b77a50672c556ea254ac9a6d30e3403a517d8981f10e565db24e8339413b43c97ca2951f10e399c6125a0d8911f5679bb @@ -6400,23 +6039,6 @@ __metadata: languageName: node linkType: hard -"cache-base@npm:^1.0.1": - version: 1.0.1 - resolution: "cache-base@npm:1.0.1" - dependencies: - collection-visit: ^1.0.0 - component-emitter: ^1.2.1 - get-value: ^2.0.6 - has-value: ^1.0.0 - isobject: ^3.0.1 - set-value: ^2.0.0 - to-object-path: ^0.3.0 - union-value: ^1.0.0 - unset-value: ^1.0.0 - checksum: 9114b8654fe2366eedc390bad0bcf534e2f01b239a888894e2928cb58cdc1e6ea23a73c6f3450dcfd2058aa73a8a981e723cd1e7c670c047bf11afdc65880107 - languageName: node - linkType: hard - "call-bind@npm:^1.0.0, call-bind@npm:^1.0.2": version: 1.0.2 resolution: "call-bind@npm:1.0.2" @@ -6445,14 +6067,14 @@ __metadata: languageName: node linkType: hard -"camelcase@npm:^5.0.0, camelcase@npm:^5.3.1": +"camelcase@npm:^5.3.1": version: 5.3.1 resolution: "camelcase@npm:5.3.1" checksum: e6effce26b9404e3c0f301498184f243811c30dfe6d0b9051863bd8e4034d09c8c2923794f280d6827e5aa055f6c434115ff97864a16a963366fb35fd673024b languageName: node linkType: hard -"camelcase@npm:^6.0.0, camelcase@npm:^6.2.0": +"camelcase@npm:^6.2.0": version: 6.3.0 resolution: "camelcase@npm:6.3.0" checksum: 8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d @@ -6460,18 +6082,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.30001517": - version: 1.0.30001522 - resolution: "caniuse-lite@npm:1.0.30001522" - checksum: 56e3551c02ae595085114073cf242f7d9d54d32255c80893ca9098a44f44fc6eef353936f234f31c7f4cb894dd2b6c9c4626e30649ee29e04d70aa127eeefeb0 - languageName: node - linkType: hard - -"capture-exit@npm:^2.0.0": - version: 2.0.0 - resolution: "capture-exit@npm:2.0.0" - dependencies: - rsvp: ^4.8.4 - checksum: 0b9f10daca09e521da9599f34c8e7af14ad879c336e2bdeb19955b375398ae1c5bcc91ac9f2429944343057ee9ed028b1b2fb28816c384e0e55d70c439b226f4 + version: 1.0.30001532 + resolution: "caniuse-lite@npm:1.0.30001532" + checksum: 613abeb15e03dde307d543195a7860f7ba7450c9c9262d45642b2c8fbe097914fa060d68c8647f9d443947b1f62b09d891858bde7d2cac94fae8133a0b518b28 languageName: node linkType: hard @@ -6583,13 +6196,6 @@ __metadata: languageName: node linkType: hard -"cjs-module-lexer@npm:^0.6.0": - version: 0.6.0 - resolution: "cjs-module-lexer@npm:0.6.0" - checksum: 445b039607efd74561d7db8d0867031c8b6a69f25e83fdd861b0fa1fbc11f12de057ba1db80637f3c9016774354092af5325eebb90505d65ccc5389cae09d1fd - languageName: node - linkType: hard - "cjs-module-lexer@npm:^1.0.0": version: 1.2.3 resolution: "cjs-module-lexer@npm:1.2.3" @@ -6597,18 +6203,6 @@ __metadata: languageName: node linkType: hard -"class-utils@npm:^0.3.5": - version: 0.3.6 - resolution: "class-utils@npm:0.3.6" - dependencies: - arr-union: ^3.1.0 - define-property: ^0.2.5 - isobject: ^3.0.0 - static-extend: ^0.1.1 - checksum: be108900801e639e50f96a7e4bfa8867c753a7750a7603879f3981f8b0a89cba657497a2d5f40cd4ea557ff15d535a100818bb486baf6e26fe5d7872e75f1078 - languageName: node - linkType: hard - "classnames@npm:^2.2": version: 2.3.2 resolution: "classnames@npm:2.3.2" @@ -6653,17 +6247,6 @@ __metadata: languageName: node linkType: hard -"cliui@npm:^6.0.0": - version: 6.0.0 - resolution: "cliui@npm:6.0.0" - dependencies: - string-width: ^4.2.0 - strip-ansi: ^6.0.0 - wrap-ansi: ^6.2.0 - checksum: 4fcfd26d292c9f00238117f39fc797608292ae36bac2168cfee4c85923817d0607fe21b3329a8621e01aedf512c99b7eaa60e363a671ffd378df6649fb48ae42 - languageName: node - linkType: hard - "cliui@npm:^7.0.2": version: 7.0.4 resolution: "cliui@npm:7.0.4" @@ -6741,16 +6324,6 @@ __metadata: languageName: node linkType: hard -"collection-visit@npm:^1.0.0": - version: 1.0.0 - resolution: "collection-visit@npm:1.0.0" - dependencies: - map-visit: ^1.0.0 - object-visit: ^1.0.0 - checksum: 15d9658fe6eb23594728346adad5433b86bb7a04fd51bbab337755158722f9313a5376ef479de5b35fbc54140764d0d39de89c339f5d25b959ed221466981da9 - languageName: node - linkType: hard - "color-convert@npm:^1.9.0": version: 1.9.3 resolution: "color-convert@npm:1.9.3" @@ -6884,13 +6457,6 @@ __metadata: languageName: node linkType: hard -"component-emitter@npm:^1.2.1": - version: 1.3.0 - resolution: "component-emitter@npm:1.3.0" - checksum: b3c46de38ffd35c57d1c02488355be9f218e582aec72d72d1b8bbec95a3ac1b38c96cd6e03ff015577e68f550fbb361a3bfdbd9bb248be9390b7b3745691be6b - languageName: node - linkType: hard - "compute-gcd@npm:^1.2.1": version: 1.2.1 resolution: "compute-gcd@npm:1.2.1" @@ -7052,7 +6618,7 @@ __metadata: languageName: node linkType: hard -"convert-source-map@npm:^1.4.0, convert-source-map@npm:^1.5.0, convert-source-map@npm:^1.6.0, convert-source-map@npm:^1.7.0": +"convert-source-map@npm:^1.5.0, convert-source-map@npm:^1.6.0, convert-source-map@npm:^1.7.0": version: 1.9.0 resolution: "convert-source-map@npm:1.9.0" checksum: dc55a1f28ddd0e9485ef13565f8f756b342f9a46c4ae18b843fe3c30c675d058d6a4823eff86d472f187b176f0adf51ea7b69ea38be34be4a63cbbf91b0593c8 @@ -7066,26 +6632,19 @@ __metadata: languageName: node linkType: hard -"copy-descriptor@npm:^0.1.0": - version: 0.1.1 - resolution: "copy-descriptor@npm:0.1.1" - checksum: d4b7b57b14f1d256bb9aa0b479241048afd7f5bcf22035fc7b94e8af757adeae247ea23c1a774fe44869fd5694efba4a969b88d966766c5245fdee59837fe45b - languageName: node - linkType: hard - "core-js-compat@npm:^3.31.0": - version: 3.32.1 - resolution: "core-js-compat@npm:3.32.1" + version: 3.32.2 + resolution: "core-js-compat@npm:3.32.2" dependencies: browserslist: ^4.21.10 - checksum: 2ce0002d6d2acabfc6f4c1ea32915683406a10051a186db354b761303cb6f5728f83887d070fb8d0072b5601bb16cb0d24555ee72bfa6df244f7b3ef74d61f76 + checksum: efca146ad71a542e6f196db5ba5aed617e48c615bdf1fbb065471b3267f833ac545bd5fc5ad0642c3d3974b955f0684ff0863d7471d7050ee0284e0a1313942e languageName: node linkType: hard "core-js-pure@npm:^3.6.5": - version: 3.32.1 - resolution: "core-js-pure@npm:3.32.1" - checksum: 06d3b1585b1f161e84adaf6a0f1db2434309b8d6c748ee82f1806c5d9755272a30074dfa888d60a164c639c6820588ab8462f1073c6971e76659f13788c2f10d + version: 3.32.2 + resolution: "core-js-pure@npm:3.32.2" + checksum: 19e781c624aee4003f8980f3c4fc441c16ef671473151affe114dc37cfe18958acdb42241b14827f62277f2d6eea73658f6c2e09131be20619e2859426bd03b4 languageName: node linkType: hard @@ -7129,7 +6688,7 @@ __metadata: languageName: node linkType: hard -"cross-spawn@npm:^6.0.0, cross-spawn@npm:^6.0.5": +"cross-spawn@npm:^6.0.5": version: 6.0.5 resolution: "cross-spawn@npm:6.0.5" dependencies: @@ -7194,13 +6753,6 @@ __metadata: languageName: node linkType: hard -"cssom@npm:^0.4.4": - version: 0.4.4 - resolution: "cssom@npm:0.4.4" - checksum: e3bc1076e7ee4213d4fef05e7ae03bfa83dc05f32611d8edc341f4ecc3d9647b89c8245474c7dd2cdcdb797a27c462e99da7ad00a34399694559f763478ff53f - languageName: node - linkType: hard - "cssom@npm:^0.5.0": version: 0.5.0 resolution: "cssom@npm:0.5.0" @@ -7286,15 +6838,6 @@ __metadata: languageName: node linkType: hard -"debug@npm:^2.2.0, debug@npm:^2.3.3": - version: 2.6.9 - resolution: "debug@npm:2.6.9" - dependencies: - ms: 2.0.0 - checksum: d2f51589ca66df60bf36e1fa6e4386b318c3f1e06772280eea5b1ae9fd3d05e9c2b7fd8a7d862457d00853c75b00451aa2d7459b924629ee385287a650f58fe6 - languageName: node - linkType: hard - "decamelize-keys@npm:^1.1.0": version: 1.1.1 resolution: "decamelize-keys@npm:1.1.1" @@ -7312,7 +6855,7 @@ __metadata: languageName: node linkType: hard -"decimal.js@npm:^10.2.1, decimal.js@npm:^10.4.2": +"decimal.js@npm:^10.4.2": version: 10.4.3 resolution: "decimal.js@npm:10.4.3" checksum: 796404dcfa9d1dbfdc48870229d57f788b48c21c603c3f6554a1c17c10195fc1024de338b0cf9e1efe0c7c167eeb18f04548979bcc5fdfabebb7cc0ae3287bae @@ -7328,13 +6871,6 @@ __metadata: languageName: node linkType: hard -"decode-uri-component@npm:^0.2.0": - version: 0.2.2 - resolution: "decode-uri-component@npm:0.2.2" - checksum: 95476a7d28f267292ce745eac3524a9079058bbb35767b76e3ee87d42e34cd0275d2eb19d9d08c3e167f97556e8a2872747f5e65cbebcac8b0c98d83e285f139 - languageName: node - linkType: hard - "dedent@npm:0.7.0, dedent@npm:^0.7.0": version: 0.7.0 resolution: "dedent@npm:0.7.0" @@ -7418,34 +6954,6 @@ __metadata: languageName: node linkType: hard -"define-property@npm:^0.2.5": - version: 0.2.5 - resolution: "define-property@npm:0.2.5" - dependencies: - is-descriptor: ^0.1.0 - checksum: 85af107072b04973b13f9e4128ab74ddfda48ec7ad2e54b193c0ffb57067c4ce5b7786a7b4ae1f24bd03e87c5d18766b094571810b314d7540f86d4354dbd394 - languageName: node - linkType: hard - -"define-property@npm:^1.0.0": - version: 1.0.0 - resolution: "define-property@npm:1.0.0" - dependencies: - is-descriptor: ^1.0.0 - checksum: 5fbed11dace44dd22914035ba9ae83ad06008532ca814d7936a53a09e897838acdad5b108dd0688cc8d2a7cf0681acbe00ee4136cf36743f680d10517379350a - languageName: node - linkType: hard - -"define-property@npm:^2.0.2": - version: 2.0.2 - resolution: "define-property@npm:2.0.2" - dependencies: - is-descriptor: ^1.0.2 - isobject: ^3.0.1 - checksum: 3217ed53fc9eed06ba8da6f4d33e28c68a82e2f2a8ab4d562c4920d8169a166fe7271453675e6c69301466f36a65d7f47edf0cf7f474b9aa52a5ead9c1b13c99 - languageName: node - linkType: hard - "del@npm:^6.0.0": version: 6.1.1 resolution: "del@npm:6.1.1" @@ -7504,13 +7012,6 @@ __metadata: languageName: node linkType: hard -"diff-sequences@npm:^26.6.2": - version: 26.6.2 - resolution: "diff-sequences@npm:26.6.2" - checksum: 79af871776ef149a7ff3345d6b1bf37fe6e81f68632aa5542787851f6f60fba19b0be22fdd1e06046f56ae7382763ccfe94a982c39ee72bd107aef435ecbc0cf - languageName: node - linkType: hard - "diff-sequences@npm:^29.6.3": version: 29.6.3 resolution: "diff-sequences@npm:29.6.3" @@ -7587,15 +7088,6 @@ __metadata: languageName: node linkType: hard -"domexception@npm:^2.0.1": - version: 2.0.1 - resolution: "domexception@npm:2.0.1" - dependencies: - webidl-conversions: ^5.0.0 - checksum: d638e9cb05c52999f1b2eb87c374b03311ea5b1d69c2f875bc92da73e17db60c12142b45c950228642ff7f845c536b65305483350d080df59003a653da80b691 - languageName: node - linkType: hard - "domexception@npm:^4.0.0": version: 4.0.0 resolution: "domexception@npm:4.0.0" @@ -7688,9 +7180,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.4.477": - version: 1.4.499 - resolution: "electron-to-chromium@npm:1.4.499" - checksum: 9002f3bcd9018f38b3496c2ced5393c6144d3a09bc5e1ea9866541045f6364841a6d11afe8c5977838835bc70f50f8caee63ba928a910e68ac1eed45afd18120 + version: 1.4.513 + resolution: "electron-to-chromium@npm:1.4.513" + checksum: 613b66da177dcf5abca2441c502cde4b4fb247665dc049c54d1fe3b79fc3a5a3ecae92faf97d3147af0fec9c50bf90db09e8ca3f0953a5ec2fdb472d6d6253c2 languageName: node linkType: hard @@ -7701,13 +7193,6 @@ __metadata: languageName: node linkType: hard -"emittery@npm:^0.7.1": - version: 0.7.2 - resolution: "emittery@npm:0.7.2" - checksum: 908cd933d48a9bcb58ddf39e9a7d4ba1e049de392ccbef010102539a636e03cea2b28218331b7ede41de8165d9ed7f148851c5112ebd2e943117c0f61eff5f10 - languageName: node - linkType: hard - "emoji-regex@npm:^8.0.0": version: 8.0.0 resolution: "emoji-regex@npm:8.0.0" @@ -7750,7 +7235,7 @@ __metadata: languageName: node linkType: hard -"end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1": +"end-of-stream@npm:^1.4.1": version: 1.4.4 resolution: "end-of-stream@npm:1.4.4" dependencies: @@ -7845,7 +7330,7 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.19.0, es-abstract@npm:^1.20.4": +"es-abstract@npm:^1.22.1": version: 1.22.1 resolution: "es-abstract@npm:1.22.1" dependencies: @@ -8170,13 +7655,6 @@ __metadata: languageName: node linkType: hard -"exec-sh@npm:^0.3.2": - version: 0.3.6 - resolution: "exec-sh@npm:0.3.6" - checksum: 0be4f06929c8e4834ea4812f29fe59e2dfcc1bc3fc4b4bb71acb38a500c3b394628a05ef7ba432520bc6c5ec4fadab00cc9c513c4ff6a32104965af302e998e0 - languageName: node - linkType: hard - "execa@npm:5.0.0": version: 5.0.0 resolution: "execa@npm:5.0.0" @@ -8194,38 +7672,6 @@ __metadata: languageName: node linkType: hard -"execa@npm:^1.0.0": - version: 1.0.0 - resolution: "execa@npm:1.0.0" - dependencies: - cross-spawn: ^6.0.0 - get-stream: ^4.0.0 - is-stream: ^1.1.0 - npm-run-path: ^2.0.0 - p-finally: ^1.0.0 - signal-exit: ^3.0.0 - strip-eof: ^1.0.0 - checksum: ddf1342c1c7d02dd93b41364cd847640f6163350d9439071abf70bf4ceb1b9b2b2e37f54babb1d8dc1df8e0d8def32d0e81e74a2e62c3e1d70c303eb4c306bc4 - languageName: node - linkType: hard - -"execa@npm:^4.0.0": - version: 4.1.0 - resolution: "execa@npm:4.1.0" - dependencies: - cross-spawn: ^7.0.0 - get-stream: ^5.0.0 - human-signals: ^1.1.1 - is-stream: ^2.0.0 - merge-stream: ^2.0.0 - npm-run-path: ^4.0.0 - onetime: ^5.1.0 - signal-exit: ^3.0.2 - strip-final-newline: ^2.0.0 - checksum: e30d298934d9c52f90f3847704fd8224e849a081ab2b517bbc02f5f7732c24e56a21f14cb96a08256deffeb2d12b2b7cb7e2b014a12fb36f8d3357e06417ed55 - languageName: node - linkType: hard - "execa@npm:^5.0.0": version: 5.1.1 resolution: "execa@npm:5.1.1" @@ -8250,45 +7696,16 @@ __metadata: languageName: node linkType: hard -"expand-brackets@npm:^2.1.4": - version: 2.1.4 - resolution: "expand-brackets@npm:2.1.4" - dependencies: - debug: ^2.3.3 - define-property: ^0.2.5 - extend-shallow: ^2.0.1 - posix-character-classes: ^0.1.0 - regex-not: ^1.0.0 - snapdragon: ^0.8.1 - to-regex: ^3.0.1 - checksum: 1781d422e7edfa20009e2abda673cadb040a6037f0bd30fcd7357304f4f0c284afd420d7622722ca4a016f39b6d091841ab57b401c1f7e2e5131ac65b9f14fa1 - languageName: node - linkType: hard - -"expect@npm:^26.6.2": - version: 26.6.2 - resolution: "expect@npm:26.6.2" - dependencies: - "@jest/types": ^26.6.2 - ansi-styles: ^4.0.0 - jest-get-type: ^26.3.0 - jest-matcher-utils: ^26.6.2 - jest-message-util: ^26.6.2 - jest-regex-util: ^26.0.0 - checksum: 79a9b888c5c6d37d11f2cb76def6cf1dc8ff098d38662ee20c9f2ee0da67e9a93435f2327854b2e7554732153870621843e7f83e8cefb1250447ee2bc39883a4 - languageName: node - linkType: hard - -"expect@npm:^29.6.3": - version: 29.6.3 - resolution: "expect@npm:29.6.3" +"expect@npm:^29.0.0, expect@npm:^29.6.4": + version: 29.6.4 + resolution: "expect@npm:29.6.4" dependencies: - "@jest/expect-utils": ^29.6.3 + "@jest/expect-utils": ^29.6.4 jest-get-type: ^29.6.3 - jest-matcher-utils: ^29.6.3 + jest-matcher-utils: ^29.6.4 jest-message-util: ^29.6.3 jest-util: ^29.6.3 - checksum: c72de87abbc9acc17c66f42fcac8be4dff256f871f1800c3aaa004c74f95f61866cf80e8f2ddacc3f2df290fd58b0cba8adb3a0dee3a09dd5d39f97f63d2aae8 + checksum: 019b187d665562e4948b239e011a8791363e916f3076a229298d625e67fdadb06e8c2748798c49b4cf418ea223673eadd1de06537e08ba3c055c6f0efefc2306 languageName: node linkType: hard @@ -8299,25 +7716,6 @@ __metadata: languageName: node linkType: hard -"extend-shallow@npm:^2.0.1": - version: 2.0.1 - resolution: "extend-shallow@npm:2.0.1" - dependencies: - is-extendable: ^0.1.0 - checksum: 8fb58d9d7a511f4baf78d383e637bd7d2e80843bd9cd0853649108ea835208fb614da502a553acc30208e1325240bb7cc4a68473021612496bb89725483656d8 - languageName: node - linkType: hard - -"extend-shallow@npm:^3.0.0, extend-shallow@npm:^3.0.2": - version: 3.0.2 - resolution: "extend-shallow@npm:3.0.2" - dependencies: - assign-symbols: ^1.0.0 - is-extendable: ^1.0.1 - checksum: a920b0cd5838a9995ace31dfd11ab5e79bf6e295aa566910ce53dff19f4b1c0fda2ef21f26b28586c7a2450ca2b42d97bd8c0f5cec9351a819222bf861e02461 - languageName: node - linkType: hard - "extend@npm:^3.0.0": version: 3.0.2 resolution: "extend@npm:3.0.2" @@ -8336,22 +7734,6 @@ __metadata: languageName: node linkType: hard -"extglob@npm:^2.0.4": - version: 2.0.4 - resolution: "extglob@npm:2.0.4" - dependencies: - array-unique: ^0.3.2 - define-property: ^1.0.0 - expand-brackets: ^2.1.4 - extend-shallow: ^2.0.1 - fragment-cache: ^0.2.1 - regex-not: ^1.0.0 - snapdragon: ^0.8.1 - to-regex: ^3.0.1 - checksum: a41531b8934735b684cef5e8c5a01d0f298d7d384500ceca38793a9ce098125aab04ee73e2d75d5b2901bc5dddd2b64e1b5e3bf19139ea48bac52af4a92f1d00 - languageName: node - linkType: hard - "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": version: 3.1.3 resolution: "fast-deep-equal@npm:3.1.3" @@ -8474,18 +7856,6 @@ __metadata: languageName: node linkType: hard -"fill-range@npm:^4.0.0": - version: 4.0.0 - resolution: "fill-range@npm:4.0.0" - dependencies: - extend-shallow: ^2.0.1 - is-number: ^3.0.0 - repeat-string: ^1.6.1 - to-regex-range: ^2.1.0 - checksum: dbb5102467786ab42bc7a3ec7380ae5d6bfd1b5177b2216de89e4a541193f8ba599a6db84651bd2c58c8921db41b8cc3d699ea83b477342d3ce404020f73c298 - languageName: node - linkType: hard - "fill-range@npm:^7.0.1": version: 7.0.1 resolution: "fill-range@npm:7.0.1" @@ -8532,12 +7902,13 @@ __metadata: linkType: hard "flat-cache@npm:^3.0.4": - version: 3.0.4 - resolution: "flat-cache@npm:3.0.4" + version: 3.1.0 + resolution: "flat-cache@npm:3.1.0" dependencies: - flatted: ^3.1.0 + flatted: ^3.2.7 + keyv: ^4.5.3 rimraf: ^3.0.2 - checksum: 4fdd10ecbcbf7d520f9040dd1340eb5dfe951e6f0ecf2252edeec03ee68d989ec8b9a20f4434270e71bcfd57800dc09b3344fca3966b2eb8f613072c7d9a2365 + checksum: 99312601d5b90f44aef403f17f056dc09be7e437703740b166cdc9386d99e681f74e6b6e8bd7d010bda66904ea643c9527276b1b80308a2119741d94108a4d8f languageName: node linkType: hard @@ -8550,7 +7921,7 @@ __metadata: languageName: node linkType: hard -"flatted@npm:^3.1.0": +"flatted@npm:^3.2.7": version: 3.2.7 resolution: "flatted@npm:3.2.7" checksum: 427633049d55bdb80201c68f7eb1cbd533e03eac541f97d3aecab8c5526f12a20ccecaeede08b57503e772c769e7f8680b37e8d482d1e5f8d7e2194687f9ea35 @@ -8576,13 +7947,6 @@ __metadata: languageName: node linkType: hard -"for-in@npm:^1.0.2": - version: 1.0.2 - resolution: "for-in@npm:1.0.2" - checksum: 09f4ae93ce785d253ac963d94c7f3432d89398bf25ac7a24ed034ca393bf74380bdeccc40e0f2d721a895e54211b07c8fad7132e8157827f6f7f059b70b4043d - languageName: node - linkType: hard - "foreground-child@npm:^3.1.0": version: 3.1.1 resolution: "foreground-child@npm:3.1.1" @@ -8593,17 +7957,6 @@ __metadata: languageName: node linkType: hard -"form-data@npm:^3.0.0": - version: 3.0.1 - resolution: "form-data@npm:3.0.1" - dependencies: - asynckit: ^0.4.0 - combined-stream: ^1.0.8 - mime-types: ^2.1.12 - checksum: b019e8d35c8afc14a2bd8a7a92fa4f525a4726b6d5a9740e8d2623c30e308fbb58dc8469f90415a856698933c8479b01646a9dff33c87cc4e76d72aedbbf860d - languageName: node - linkType: hard - "form-data@npm:^4.0.0": version: 4.0.0 resolution: "form-data@npm:4.0.0" @@ -8622,15 +7975,6 @@ __metadata: languageName: node linkType: hard -"fragment-cache@npm:^0.2.1": - version: 0.2.1 - resolution: "fragment-cache@npm:0.2.1" - dependencies: - map-cache: ^0.2.2 - checksum: 1cbbd0b0116b67d5790175de0038a11df23c1cd2e8dcdbade58ebba5594c2d641dade6b4f126d82a7b4a6ffc2ea12e3d387dbb64ea2ae97cf02847d436f60fdc - languageName: node - linkType: hard - "free-style@npm:3.1.0": version: 3.1.0 resolution: "free-style@npm:3.1.0" @@ -8704,7 +8048,7 @@ __metadata: languageName: node linkType: hard -"fsevents@npm:^2.1.2, fsevents@npm:^2.3.2": +"fsevents@npm:^2.3.2": version: 2.3.3 resolution: "fsevents@npm:2.3.3" dependencies: @@ -8714,7 +8058,7 @@ __metadata: languageName: node linkType: hard -"fsevents@patch:fsevents@^2.1.2#~builtin, fsevents@patch:fsevents@^2.3.2#~builtin": +"fsevents@patch:fsevents@^2.3.2#~builtin": version: 2.3.3 resolution: "fsevents@patch:fsevents@npm%3A2.3.3#~builtin::version=2.3.3&hash=df0bf1" dependencies: @@ -8731,14 +8075,14 @@ __metadata: linkType: hard "function.prototype.name@npm:^1.1.5": - version: 1.1.5 - resolution: "function.prototype.name@npm:1.1.5" + version: 1.1.6 + resolution: "function.prototype.name@npm:1.1.6" dependencies: call-bind: ^1.0.2 - define-properties: ^1.1.3 - es-abstract: ^1.19.0 - functions-have-names: ^1.2.2 - checksum: acd21d733a9b649c2c442f067567743214af5fa248dbeee69d8278ce7df3329ea5abac572be9f7470b4ec1cd4d8f1040e3c5caccf98ebf2bf861a0deab735c27 + define-properties: ^1.2.0 + es-abstract: ^1.22.1 + functions-have-names: ^1.2.3 + checksum: 7a3f9bd98adab09a07f6e1f03da03d3f7c26abbdeaeee15223f6c04a9fb5674792bdf5e689dac19b97ac71de6aad2027ba3048a9b883aa1b3173eed6ab07f479 languageName: node linkType: hard @@ -8749,7 +8093,7 @@ __metadata: languageName: node linkType: hard -"functions-have-names@npm:^1.2.2, functions-have-names@npm:^1.2.3": +"functions-have-names@npm:^1.2.3": version: 1.2.3 resolution: "functions-have-names@npm:1.2.3" checksum: c3f1f5ba20f4e962efb71344ce0a40722163e85bee2101ce25f88214e78182d2d2476aa85ef37950c579eb6cf6ee811c17b3101bb84004bb75655f3e33f3fdb5 @@ -8795,7 +8139,7 @@ __metadata: languageName: node linkType: hard -"get-caller-file@npm:^2.0.1, get-caller-file@npm:^2.0.5": +"get-caller-file@npm:^2.0.5": version: 2.0.5 resolution: "get-caller-file@npm:2.0.5" checksum: b9769a836d2a98c3ee734a88ba712e62703f1df31b94b784762c433c27a386dd6029ff55c2a920c392e33657d80191edbf18c61487e198844844516f843496b9 @@ -8856,24 +8200,6 @@ __metadata: languageName: node linkType: hard -"get-stream@npm:^4.0.0": - version: 4.1.0 - resolution: "get-stream@npm:4.1.0" - dependencies: - pump: ^3.0.0 - checksum: 443e1914170c15bd52ff8ea6eff6dfc6d712b031303e36302d2778e3de2506af9ee964d6124010f7818736dcfde05c04ba7ca6cc26883106e084357a17ae7d73 - languageName: node - linkType: hard - -"get-stream@npm:^5.0.0": - version: 5.2.0 - resolution: "get-stream@npm:5.2.0" - dependencies: - pump: ^3.0.0 - checksum: 8bc1a23174a06b2b4ce600df38d6c98d2ef6d84e020c1ddad632ad75bac4e092eeb40e4c09e0761c35fc2dbc5e7fff5dab5e763a383582c4a167dd69a905bd12 - languageName: node - linkType: hard - "get-stream@npm:^6.0.0": version: 6.0.1 resolution: "get-stream@npm:6.0.1" @@ -8891,13 +8217,6 @@ __metadata: languageName: node linkType: hard -"get-value@npm:^2.0.3, get-value@npm:^2.0.6": - version: 2.0.6 - resolution: "get-value@npm:2.0.6" - checksum: 5c3b99cb5398ea8016bf46ff17afc5d1d286874d2ad38ca5edb6e87d75c0965b0094cb9a9dddef2c59c23d250702323539a7fbdd870620db38c7e7d7ec87c1eb - languageName: node - linkType: hard - "git-raw-commits@npm:^2.0.8": version: 2.0.11 resolution: "git-raw-commits@npm:2.0.11" @@ -8994,8 +8313,8 @@ __metadata: linkType: hard "glob@npm:^10.2.2": - version: 10.3.3 - resolution: "glob@npm:10.3.3" + version: 10.3.4 + resolution: "glob@npm:10.3.4" dependencies: foreground-child: ^3.1.0 jackspeak: ^2.0.3 @@ -9004,11 +8323,11 @@ __metadata: path-scurry: ^1.10.1 bin: glob: dist/cjs/src/bin.js - checksum: 29190d3291f422da0cb40b77a72fc8d2c51a36524e99b8bf412548b7676a6627489528b57250429612b6eec2e6fe7826d328451d3e694a9d15e575389308ec53 + checksum: 176b97c124414401cb51329a93d2ba112cef8814adbed10348481916b9521b677773eee2691cb6b24d66632d8c8bb8913533f5ac4bfb2d0ef5454a1856082361 languageName: node linkType: hard -"glob@npm:^7.1.1, glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4": +"glob@npm:^7.1.3, glob@npm:^7.1.4": version: 7.2.3 resolution: "glob@npm:7.2.3" dependencies: @@ -9150,13 +8469,6 @@ __metadata: languageName: node linkType: hard -"growly@npm:^1.3.0": - version: 1.3.0 - resolution: "growly@npm:1.3.0" - checksum: 53cdecd4c16d7d9154a9061a9ccb87d602e957502ca69b529d7d1b2436c2c0b700ec544fc6b3e4cd115d59b81e62e44ce86bd0521403b579d3a2a97d7ce72a44 - languageName: node - linkType: hard - "gud@npm:^1.0.0": version: 1.0.0 resolution: "gud@npm:1.0.0" @@ -9256,45 +8568,6 @@ __metadata: languageName: node linkType: hard -"has-value@npm:^0.3.1": - version: 0.3.1 - resolution: "has-value@npm:0.3.1" - dependencies: - get-value: ^2.0.3 - has-values: ^0.1.4 - isobject: ^2.0.0 - checksum: 29e2a1e6571dad83451b769c7ce032fce6009f65bccace07c2962d3ad4d5530b6743d8f3229e4ecf3ea8e905d23a752c5f7089100c1f3162039fa6dc3976558f - languageName: node - linkType: hard - -"has-value@npm:^1.0.0": - version: 1.0.0 - resolution: "has-value@npm:1.0.0" - dependencies: - get-value: ^2.0.6 - has-values: ^1.0.0 - isobject: ^3.0.0 - checksum: b9421d354e44f03d3272ac39fd49f804f19bc1e4fa3ceef7745df43d6b402053f828445c03226b21d7d934a21ac9cf4bc569396dc312f496ddff873197bbd847 - languageName: node - linkType: hard - -"has-values@npm:^0.1.4": - version: 0.1.4 - resolution: "has-values@npm:0.1.4" - checksum: ab1c4bcaf811ccd1856c11cfe90e62fca9e2b026ebe474233a3d282d8d67e3b59ed85b622c7673bac3db198cb98bd1da2b39300a2f98e453729b115350af49bc - languageName: node - linkType: hard - -"has-values@npm:^1.0.0": - version: 1.0.0 - resolution: "has-values@npm:1.0.0" - dependencies: - is-number: ^3.0.0 - kind-of: ^4.0.0 - checksum: 77e6693f732b5e4cf6c38dfe85fdcefad0fab011af74995c3e83863fabf5e3a836f406d83565816baa0bc0a523c9410db8b990fe977074d61aeb6d8f4fcffa11 - languageName: node - linkType: hard - "has@npm:^1.0.3": version: 1.0.3 resolution: "has@npm:1.0.3" @@ -9484,15 +8757,6 @@ __metadata: languageName: node linkType: hard -"html-encoding-sniffer@npm:^2.0.1": - version: 2.0.1 - resolution: "html-encoding-sniffer@npm:2.0.1" - dependencies: - whatwg-encoding: ^1.0.5 - checksum: bf30cce461015ed7e365736fcd6a3063c7bc016a91f74398ef6158886970a96333938f7c02417ab3c12aa82e3e53b40822145facccb9ddfbcdc15a879ae4d7ba - languageName: node - linkType: hard - "html-encoding-sniffer@npm:^3.0.0": version: 3.0.0 resolution: "html-encoding-sniffer@npm:3.0.0" @@ -9535,17 +8799,6 @@ __metadata: languageName: node linkType: hard -"http-proxy-agent@npm:^4.0.1": - version: 4.0.1 - resolution: "http-proxy-agent@npm:4.0.1" - dependencies: - "@tootallnate/once": 1 - agent-base: 6 - debug: 4 - checksum: c6a5da5a1929416b6bbdf77b1aca13888013fe7eb9d59fc292e25d18e041bb154a8dfada58e223fc7b76b9b2d155a87e92e608235201f77d34aa258707963a82 - languageName: node - linkType: hard - "http-proxy-agent@npm:^5.0.0": version: 5.0.0 resolution: "http-proxy-agent@npm:5.0.0" @@ -9567,13 +8820,6 @@ __metadata: languageName: node linkType: hard -"human-signals@npm:^1.1.1": - version: 1.1.1 - resolution: "human-signals@npm:1.1.1" - checksum: d587647c9e8ec24e02821b6be7de5a0fc37f591f6c4e319b3054b43fd4c35a70a94c46fc74d8c1a43c47fde157d23acd7421f375e1c1365b09a16835b8300205 - languageName: node - linkType: hard - "human-signals@npm:^2.1.0": version: 2.1.0 resolution: "human-signals@npm:2.1.0" @@ -9590,15 +8836,6 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:0.4.24, iconv-lite@npm:^0.4.24": - version: 0.4.24 - resolution: "iconv-lite@npm:0.4.24" - dependencies: - safer-buffer: ">= 2.1.2 < 3" - checksum: bd9f120f5a5b306f0bc0b9ae1edeb1577161503f5f8252a20f1a9e56ef8775c9959fd01c55f2d3a39d9a8abaf3e30c1abeb1895f367dcbbe0a8fd1c9ca01c4f6 - languageName: node - linkType: hard - "iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2": version: 0.6.3 resolution: "iconv-lite@npm:0.6.3" @@ -9608,6 +8845,15 @@ __metadata: languageName: node linkType: hard +"iconv-lite@npm:^0.4.24": + version: 0.4.24 + resolution: "iconv-lite@npm:0.4.24" + dependencies: + safer-buffer: ">= 2.1.2 < 3" + checksum: bd9f120f5a5b306f0bc0b9ae1edeb1577161503f5f8252a20f1a9e56ef8775c9959fd01c55f2d3a39d9a8abaf3e30c1abeb1895f367dcbbe0a8fd1c9ca01c4f6 + languageName: node + linkType: hard + "icss-utils@npm:^5.0.0, icss-utils@npm:^5.1.0": version: 5.1.0 resolution: "icss-utils@npm:5.1.0" @@ -9839,24 +9085,6 @@ __metadata: languageName: node linkType: hard -"is-accessor-descriptor@npm:^0.1.6": - version: 0.1.6 - resolution: "is-accessor-descriptor@npm:0.1.6" - dependencies: - kind-of: ^3.0.2 - checksum: 3d629a086a9585bc16a83a8e8a3416f400023301855cafb7ccc9a1d63145b7480f0ad28877dcc2cce09492c4ec1c39ef4c071996f24ee6ac626be4217b8ffc8a - languageName: node - linkType: hard - -"is-accessor-descriptor@npm:^1.0.0": - version: 1.0.0 - resolution: "is-accessor-descriptor@npm:1.0.0" - dependencies: - kind-of: ^6.0.0 - checksum: 8e475968e9b22f9849343c25854fa24492dbe8ba0dea1a818978f9f1b887339190b022c9300d08c47fe36f1b913d70ce8cbaca00369c55a56705fdb7caed37fe - languageName: node - linkType: hard - "is-alphabetical@npm:^1.0.0": version: 1.0.4 resolution: "is-alphabetical@npm:1.0.4" @@ -9921,13 +9149,6 @@ __metadata: languageName: node linkType: hard -"is-buffer@npm:^1.1.5": - version: 1.1.6 - resolution: "is-buffer@npm:1.1.6" - checksum: 4a186d995d8bbf9153b4bd9ff9fd04ae75068fe695d29025d25e592d9488911eeece84eefbd8fa41b8ddcc0711058a71d4c466dcf6f1f6e1d83830052d8ca707 - languageName: node - linkType: hard - "is-buffer@npm:^2.0.0": version: 2.0.5 resolution: "is-buffer@npm:2.0.5" @@ -9942,7 +9163,7 @@ __metadata: languageName: node linkType: hard -"is-ci@npm:2.0.0, is-ci@npm:^2.0.0": +"is-ci@npm:2.0.0": version: 2.0.0 resolution: "is-ci@npm:2.0.0" dependencies: @@ -9962,24 +9183,6 @@ __metadata: languageName: node linkType: hard -"is-data-descriptor@npm:^0.1.4": - version: 0.1.4 - resolution: "is-data-descriptor@npm:0.1.4" - dependencies: - kind-of: ^3.0.2 - checksum: 5c622e078ba933a78338ae398a3d1fc5c23332b395312daf4f74bab4afb10d061cea74821add726cb4db8b946ba36217ee71a24fe71dd5bca4632edb7f6aad87 - languageName: node - linkType: hard - -"is-data-descriptor@npm:^1.0.0": - version: 1.0.0 - resolution: "is-data-descriptor@npm:1.0.0" - dependencies: - kind-of: ^6.0.0 - checksum: e705e6816241c013b05a65dc452244ee378d1c3e3842bd140beabe6e12c0d700ef23c91803f971aa7b091fb0573c5da8963af34a2b573337d87bc3e1f53a4e6d - languageName: node - linkType: hard - "is-date-object@npm:^1.0.1": version: 1.0.5 resolution: "is-date-object@npm:1.0.5" @@ -9996,28 +9199,6 @@ __metadata: languageName: node linkType: hard -"is-descriptor@npm:^0.1.0": - version: 0.1.6 - resolution: "is-descriptor@npm:0.1.6" - dependencies: - is-accessor-descriptor: ^0.1.6 - is-data-descriptor: ^0.1.4 - kind-of: ^5.0.0 - checksum: 0f780c1b46b465f71d970fd7754096ffdb7b69fd8797ca1f5069c163eaedcd6a20ec4a50af669075c9ebcfb5266d2e53c8b227e485eefdb0d1fee09aa1dd8ab6 - languageName: node - linkType: hard - -"is-descriptor@npm:^1.0.0, is-descriptor@npm:^1.0.2": - version: 1.0.2 - resolution: "is-descriptor@npm:1.0.2" - dependencies: - is-accessor-descriptor: ^1.0.0 - is-data-descriptor: ^1.0.0 - kind-of: ^6.0.2 - checksum: 2ed623560bee035fb67b23e32ce885700bef8abe3fbf8c909907d86507b91a2c89a9d3a4d835a4d7334dd5db0237a0aeae9ca109c1e4ef1c0e7b577c0846ab5a - languageName: node - linkType: hard - "is-docker@npm:^2.0.0, is-docker@npm:^2.1.1": version: 2.2.1 resolution: "is-docker@npm:2.2.1" @@ -10027,22 +9208,6 @@ __metadata: languageName: node linkType: hard -"is-extendable@npm:^0.1.0, is-extendable@npm:^0.1.1": - version: 0.1.1 - resolution: "is-extendable@npm:0.1.1" - checksum: 3875571d20a7563772ecc7a5f36cb03167e9be31ad259041b4a8f73f33f885441f778cee1f1fe0085eb4bc71679b9d8c923690003a36a6a5fdf8023e6e3f0672 - languageName: node - linkType: hard - -"is-extendable@npm:^1.0.1": - version: 1.0.1 - resolution: "is-extendable@npm:1.0.1" - dependencies: - is-plain-object: ^2.0.4 - checksum: db07bc1e9de6170de70eff7001943691f05b9d1547730b11be01c0ebfe67362912ba743cf4be6fd20a5e03b4180c685dad80b7c509fe717037e3eee30ad8e84f - languageName: node - linkType: hard - "is-extglob@npm:^2.1.1": version: 2.1.1 resolution: "is-extglob@npm:2.1.1" @@ -10110,15 +9275,6 @@ __metadata: languageName: node linkType: hard -"is-number@npm:^3.0.0": - version: 3.0.0 - resolution: "is-number@npm:3.0.0" - dependencies: - kind-of: ^3.0.2 - checksum: 0c62bf8e9d72c4dd203a74d8cfc751c746e75513380fef420cda8237e619a988ee43e678ddb23c87ac24d91ac0fe9f22e4ffb1301a50310c697e9d73ca3994e9 - languageName: node - linkType: hard - "is-number@npm:^7.0.0": version: 7.0.0 resolution: "is-number@npm:7.0.0" @@ -10161,7 +9317,7 @@ __metadata: languageName: node linkType: hard -"is-plain-object@npm:^2.0.3, is-plain-object@npm:^2.0.4": +"is-plain-object@npm:^2.0.4": version: 2.0.4 resolution: "is-plain-object@npm:2.0.4" dependencies: @@ -10219,13 +9375,6 @@ __metadata: languageName: node linkType: hard -"is-stream@npm:^1.1.0": - version: 1.1.0 - resolution: "is-stream@npm:1.1.0" - checksum: 063c6bec9d5647aa6d42108d4c59723d2bd4ae42135a2d4db6eadbd49b7ea05b750fd69d279e5c7c45cf9da753ad2c00d8978be354d65aa9f6bb434969c6a2ae - languageName: node - linkType: hard - "is-stream@npm:^2.0.0": version: 2.0.1 resolution: "is-stream@npm:2.0.1" @@ -10269,13 +9418,6 @@ __metadata: languageName: node linkType: hard -"is-typedarray@npm:^1.0.0": - version: 1.0.0 - resolution: "is-typedarray@npm:1.0.0" - checksum: 3508c6cd0a9ee2e0df2fa2e9baabcdc89e911c7bd5cf64604586697212feec525aa21050e48affb5ffc3df20f0f5d2e2cf79b08caa64e1ccc9578e251763aef7 - languageName: node - linkType: hard - "is-unicode-supported@npm:^0.1.0": version: 0.1.0 resolution: "is-unicode-supported@npm:0.1.0" @@ -10292,13 +9434,6 @@ __metadata: languageName: node linkType: hard -"is-windows@npm:^1.0.2": - version: 1.0.2 - resolution: "is-windows@npm:1.0.2" - checksum: 438b7e52656fe3b9b293b180defb4e448088e7023a523ec21a91a80b9ff8cdb3377ddb5b6e60f7c7de4fa8b63ab56e121b6705fe081b3cf1b828b0a380009ad7 - languageName: node - linkType: hard - "is-wsl@npm:^2.2.0": version: 2.2.0 resolution: "is-wsl@npm:2.2.0" @@ -10308,13 +9443,6 @@ __metadata: languageName: node linkType: hard -"isarray@npm:1.0.0, isarray@npm:~1.0.0": - version: 1.0.0 - resolution: "isarray@npm:1.0.0" - checksum: f032df8e02dce8ec565cf2eb605ea939bdccea528dbcf565cdf92bfa2da9110461159d86a537388ef1acef8815a330642d7885b29010e8f7eac967c9993b65ab - languageName: node - linkType: hard - "isarray@npm:^2.0.5": version: 2.0.5 resolution: "isarray@npm:2.0.5" @@ -10322,6 +9450,13 @@ __metadata: languageName: node linkType: hard +"isarray@npm:~1.0.0": + version: 1.0.0 + resolution: "isarray@npm:1.0.0" + checksum: f032df8e02dce8ec565cf2eb605ea939bdccea528dbcf565cdf92bfa2da9110461159d86a537388ef1acef8815a330642d7885b29010e8f7eac967c9993b65ab + languageName: node + linkType: hard + "isexe@npm:^2.0.0": version: 2.0.0 resolution: "isexe@npm:2.0.0" @@ -10329,16 +9464,7 @@ __metadata: languageName: node linkType: hard -"isobject@npm:^2.0.0": - version: 2.1.0 - resolution: "isobject@npm:2.1.0" - dependencies: - isarray: 1.0.0 - checksum: 811c6f5a866877d31f0606a88af4a45f282544de886bf29f6a34c46616a1ae2ed17076cc6bf34c0128f33eecf7e1fcaa2c82cf3770560d3e26810894e96ae79f - languageName: node - linkType: hard - -"isobject@npm:^3.0.0, isobject@npm:^3.0.1": +"isobject@npm:^3.0.1": version: 3.0.1 resolution: "isobject@npm:3.0.1" checksum: db85c4c970ce30693676487cca0e61da2ca34e8d4967c2e1309143ff910c207133a969f9e4ddb2dc6aba670aabce4e0e307146c310350b298e74a31f7d464703 @@ -10359,18 +9485,6 @@ __metadata: languageName: node linkType: hard -"istanbul-lib-instrument@npm:^4.0.3": - version: 4.0.3 - resolution: "istanbul-lib-instrument@npm:4.0.3" - dependencies: - "@babel/core": ^7.7.5 - "@istanbuljs/schema": ^0.1.2 - istanbul-lib-coverage: ^3.0.0 - semver: ^6.3.0 - checksum: fa1171d3022b1bb8f6a734042620ac5d9ee7dc80f3065a0bb12863e9f0494d0eefa3d86608fcc0254ab2765d29d7dad8bdc42e5f8df2f9a1fbe85ccc59d76cb9 - languageName: node - linkType: hard - "istanbul-lib-instrument@npm:^5.0.4": version: 5.2.1 resolution: "istanbul-lib-instrument@npm:5.2.1" @@ -10419,7 +9533,7 @@ __metadata: languageName: node linkType: hard -"istanbul-reports@npm:^3.0.2, istanbul-reports@npm:^3.1.3": +"istanbul-reports@npm:^3.1.3": version: 3.1.6 resolution: "istanbul-reports@npm:3.1.6" dependencies: @@ -10430,15 +9544,15 @@ __metadata: linkType: hard "jackspeak@npm:^2.0.3": - version: 2.3.0 - resolution: "jackspeak@npm:2.3.0" + version: 2.3.3 + resolution: "jackspeak@npm:2.3.3" dependencies: "@isaacs/cliui": ^8.0.2 "@pkgjs/parseargs": ^0.11.0 dependenciesMeta: "@pkgjs/parseargs": optional: true - checksum: 71bf716f4b5793226d4aeb9761ebf2605ee093b59f91a61451d57d998dd64bbf2b54323fb749b8b2ae8b6d8a463de4f6e3fedab50108671f247bbc80195a6306 + checksum: 4313a7c0cc44c7753c4cb9869935f0b06f4cf96827515f63f58ff46b3d2f6e29aba6b3b5151778397c3f5ae67ef8bfc48871967bd10343c27e90cff198ec7808 languageName: node linkType: hard @@ -10456,17 +9570,6 @@ __metadata: languageName: node linkType: hard -"jest-changed-files@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-changed-files@npm:26.6.2" - dependencies: - "@jest/types": ^26.6.2 - execa: ^4.0.0 - throat: ^5.0.0 - checksum: 8c405f5ff905ee69ace9fd39355233206e3e233badf6a3f3b27e45bbf0a46d86943430be2e080d25b1e085f4231b9b3b27c94317aa04116efb40b592184066f4 - languageName: node - linkType: hard - "jest-changed-files@npm:^29.6.3": version: 29.6.3 resolution: "jest-changed-files@npm:29.6.3" @@ -10478,13 +9581,13 @@ __metadata: languageName: node linkType: hard -"jest-circus@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-circus@npm:29.6.3" +"jest-circus@npm:^29.6.4": + version: 29.6.4 + resolution: "jest-circus@npm:29.6.4" dependencies: - "@jest/environment": ^29.6.3 - "@jest/expect": ^29.6.3 - "@jest/test-result": ^29.6.3 + "@jest/environment": ^29.6.4 + "@jest/expect": ^29.6.4 + "@jest/test-result": ^29.6.4 "@jest/types": ^29.6.3 "@types/node": "*" chalk: ^4.0.0 @@ -10492,55 +9595,32 @@ __metadata: dedent: ^1.0.0 is-generator-fn: ^2.0.0 jest-each: ^29.6.3 - jest-matcher-utils: ^29.6.3 + jest-matcher-utils: ^29.6.4 jest-message-util: ^29.6.3 - jest-runtime: ^29.6.3 - jest-snapshot: ^29.6.3 + jest-runtime: ^29.6.4 + jest-snapshot: ^29.6.4 jest-util: ^29.6.3 p-limit: ^3.1.0 pretty-format: ^29.6.3 pure-rand: ^6.0.0 slash: ^3.0.0 stack-utils: ^2.0.3 - checksum: 65b76f853d1bd2ddc74ec5d9a37cff3d04d436e675b0ded52167ba9e5dfb9d6fbca8572c9f255d379ad332e87770bac3da6dbcabcaf840ee2ba6e0cde5b8c20e + checksum: 31f64ddf6df4aefe30ef5f8de9da137c9cba58ab5e2a25cf749450735088dc88a9974591a4256d481af0fe64608173c921219f9fad9a7dd87cbe47a79e111be8 languageName: node linkType: hard -"jest-cli@npm:^26.6.3": - version: 26.6.3 - resolution: "jest-cli@npm:26.6.3" +"jest-cli@npm:^29.6.4": + version: 29.6.4 + resolution: "jest-cli@npm:29.6.4" dependencies: - "@jest/core": ^26.6.3 - "@jest/test-result": ^26.6.2 - "@jest/types": ^26.6.2 - chalk: ^4.0.0 - exit: ^0.1.2 - graceful-fs: ^4.2.4 - import-local: ^3.0.2 - is-ci: ^2.0.0 - jest-config: ^26.6.3 - jest-util: ^26.6.2 - jest-validate: ^26.6.2 - prompts: ^2.0.1 - yargs: ^15.4.1 - bin: - jest: bin/jest.js - checksum: c8554147be756f09f5566974f0026485f78742e8642d2723f8fbee5746f50f44fb72b17aad181226655a8446d3ecc8ad8ed0a11a8a55686fa2b9c10d85700121 - languageName: node - linkType: hard - -"jest-cli@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-cli@npm:29.6.3" - dependencies: - "@jest/core": ^29.6.3 - "@jest/test-result": ^29.6.3 + "@jest/core": ^29.6.4 + "@jest/test-result": ^29.6.4 "@jest/types": ^29.6.3 chalk: ^4.0.0 exit: ^0.1.2 graceful-fs: ^4.2.9 import-local: ^3.0.2 - jest-config: ^29.6.3 + jest-config: ^29.6.4 jest-util: ^29.6.3 jest-validate: ^29.6.3 prompts: ^2.0.1 @@ -10552,60 +9632,29 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: 69c422f1522b25756afb5a27b4b01a710d0f5ba52c592903b1ab47103ee2414ac9a9fff36a976092bb595980ba5c45f128e33b5d6ebc666c8a6973474bbf1443 + checksum: 87a85a27eff0e502717b6ee0ce861d3e50d8c47d7298477f8ca10964b958f06c20241d28f1360ce2a85072763483e4924248106a8ed530ca460a56db3fdfc53e languageName: node linkType: hard -"jest-config@npm:^26.6.3": - version: 26.6.3 - resolution: "jest-config@npm:26.6.3" - dependencies: - "@babel/core": ^7.1.0 - "@jest/test-sequencer": ^26.6.3 - "@jest/types": ^26.6.2 - babel-jest: ^26.6.3 - chalk: ^4.0.0 - deepmerge: ^4.2.2 - glob: ^7.1.1 - graceful-fs: ^4.2.4 - jest-environment-jsdom: ^26.6.2 - jest-environment-node: ^26.6.2 - jest-get-type: ^26.3.0 - jest-jasmine2: ^26.6.3 - jest-regex-util: ^26.0.0 - jest-resolve: ^26.6.2 - jest-util: ^26.6.2 - jest-validate: ^26.6.2 - micromatch: ^4.0.2 - pretty-format: ^26.6.2 - peerDependencies: - ts-node: ">=9.0.0" - peerDependenciesMeta: - ts-node: - optional: true - checksum: 303c798582d3c5d4b4e6ab8a4d91a83ded28e4ebbc0bcfc1ad271f9864437ef5409b7c7773010143811bc8176b0695c096717b91419c6484b56dcc032560a74b - languageName: node - linkType: hard - -"jest-config@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-config@npm:29.6.3" +"jest-config@npm:^29.6.4": + version: 29.6.4 + resolution: "jest-config@npm:29.6.4" dependencies: "@babel/core": ^7.11.6 - "@jest/test-sequencer": ^29.6.3 + "@jest/test-sequencer": ^29.6.4 "@jest/types": ^29.6.3 - babel-jest: ^29.6.3 + babel-jest: ^29.6.4 chalk: ^4.0.0 ci-info: ^3.2.0 deepmerge: ^4.2.2 glob: ^7.1.3 graceful-fs: ^4.2.9 - jest-circus: ^29.6.3 - jest-environment-node: ^29.6.3 + jest-circus: ^29.6.4 + jest-environment-node: ^29.6.4 jest-get-type: ^29.6.3 jest-regex-util: ^29.6.3 - jest-resolve: ^29.6.3 - jest-runner: ^29.6.3 + jest-resolve: ^29.6.4 + jest-runner: ^29.6.4 jest-util: ^29.6.3 jest-validate: ^29.6.3 micromatch: ^4.0.4 @@ -10621,40 +9670,19 @@ __metadata: optional: true ts-node: optional: true - checksum: c3505411b89e5d046fbd294bb6e9ccc8c64a7efcf9d546450bec25512db4cbb67c8d102e4a58fa8ef8eac73052d1259533d9012b483469581ad5ed4cc5faa39f + checksum: 177352658774344896df3988dbe892e0b117579f45cc43aebc588493665bf19a557e202f097f5b4a987314ec2d84afa0769299ac6e702c5923d1fd3cfa4692b0 languageName: node linkType: hard -"jest-diff@npm:^26.0.0, jest-diff@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-diff@npm:26.6.2" - dependencies: - chalk: ^4.0.0 - diff-sequences: ^26.6.2 - jest-get-type: ^26.3.0 - pretty-format: ^26.6.2 - checksum: d00d297f31e1ac0252127089892432caa7a11c69bde29cf3bb6c7a839c8afdb95cf1fd401f9df16a4422745da2e6a5d94b428b30666a2540c38e1c5699915c2d - languageName: node - linkType: hard - -"jest-diff@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-diff@npm:29.6.3" +"jest-diff@npm:^29.6.4": + version: 29.6.4 + resolution: "jest-diff@npm:29.6.4" dependencies: chalk: ^4.0.0 diff-sequences: ^29.6.3 jest-get-type: ^29.6.3 pretty-format: ^29.6.3 - checksum: 23b0a88efeab36566386f059f3da340754d2860969cbc34805154e2377714e37e3130e21a791fc68008fb460bbf5edd7ec43c16d96d15797b32ccfae5160fe37 - languageName: node - linkType: hard - -"jest-docblock@npm:^26.0.0": - version: 26.0.0 - resolution: "jest-docblock@npm:26.0.0" - dependencies: - detect-newline: ^3.0.0 - checksum: e03ef104ee8c571335e6fa394b8fc8d2bd87eec9fe8b3d7d9aac056ada7de288f37ee8ac4922bb3a4222ac304db975d8832d5abc85486092866c534a16847cd5 + checksum: e205c45ab6dbcc660dc2a682cddb20f6a3cbbbdecd2821cce2050619f96dbd7560ee25f7f51d42c302596aeaddbea54390b78be3ab639340d24d67e4d270a8b0 languageName: node linkType: hard @@ -10667,19 +9695,6 @@ __metadata: languageName: node linkType: hard -"jest-each@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-each@npm:26.6.2" - dependencies: - "@jest/types": ^26.6.2 - chalk: ^4.0.0 - jest-get-type: ^26.3.0 - jest-util: ^26.6.2 - pretty-format: ^26.6.2 - checksum: 4e00ea4667e4fe015b894dc698cce0ae695cf458e021e5da62d4a5b052cd2c0a878da93f8c97cbdde60bcecf70982e8d3a7a5d63e1588f59531cc797a18c39ef - languageName: node - linkType: hard - "jest-each@npm:^29.6.3": version: 29.6.3 resolution: "jest-each@npm:29.6.3" @@ -10693,27 +9708,12 @@ __metadata: languageName: node linkType: hard -"jest-environment-jsdom@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-environment-jsdom@npm:26.6.2" - dependencies: - "@jest/environment": ^26.6.2 - "@jest/fake-timers": ^26.6.2 - "@jest/types": ^26.6.2 - "@types/node": "*" - jest-mock: ^26.6.2 - jest-util: ^26.6.2 - jsdom: ^16.4.0 - checksum: 8af9ffdf1b147362a19032bfe9ed51b709d43c74dc4b1c45e56d721808bf6cabdca8c226855b55a985ea196ce51cdb171bfe420ceec3daa2d13818d5c1915890 - languageName: node - linkType: hard - "jest-environment-jsdom@npm:^29.3.0": - version: 29.6.3 - resolution: "jest-environment-jsdom@npm:29.6.3" + version: 29.6.4 + resolution: "jest-environment-jsdom@npm:29.6.4" dependencies: - "@jest/environment": ^29.6.3 - "@jest/fake-timers": ^29.6.3 + "@jest/environment": ^29.6.4 + "@jest/fake-timers": ^29.6.4 "@jest/types": ^29.6.3 "@types/jsdom": ^20.0.0 "@types/node": "*" @@ -10725,42 +9725,21 @@ __metadata: peerDependenciesMeta: canvas: optional: true - checksum: c8c3a45952c4ca82fa17ae77b9be986ebe323300bd3d2f85895a143f078402668df42978a8764005d373d8b10926367a832731ae524a79d61568cc4e75a92c41 + checksum: 2afe105f12d7d93ca56e2e6f67ab07ada3dd3da0516d1198f254930683ab9feb2b8c14417baaca53544eed88fd7fb5744f0dbce2e100269746187317ce0347df languageName: node linkType: hard -"jest-environment-node@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-environment-node@npm:26.6.2" +"jest-environment-node@npm:^29.6.4": + version: 29.6.4 + resolution: "jest-environment-node@npm:29.6.4" dependencies: - "@jest/environment": ^26.6.2 - "@jest/fake-timers": ^26.6.2 - "@jest/types": ^26.6.2 - "@types/node": "*" - jest-mock: ^26.6.2 - jest-util: ^26.6.2 - checksum: 0b69b481e6d6f2350ed241c2dabc70b0b1f3a00f9a410b7dad97c8ab38e88026acf7445ca663eb314f46ff50acee0133100b1006bf4ebda5298ffb02763a6861 - languageName: node - linkType: hard - -"jest-environment-node@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-environment-node@npm:29.6.3" - dependencies: - "@jest/environment": ^29.6.3 - "@jest/fake-timers": ^29.6.3 + "@jest/environment": ^29.6.4 + "@jest/fake-timers": ^29.6.4 "@jest/types": ^29.6.3 "@types/node": "*" jest-mock: ^29.6.3 jest-util: ^29.6.3 - checksum: c215d8d94d95ba0353677c8b6c7c46d3f612bfd6becafa90e842ab99cb4ba2243c7f0309f1518ea2879820d39c0f3ec0d678e9ebb41055ed6eedbeb123f2897c - languageName: node - linkType: hard - -"jest-get-type@npm:^26.3.0": - version: 26.3.0 - resolution: "jest-get-type@npm:26.3.0" - checksum: 1cc6465ae4f5e880be22ba52fd270fa64c21994915f81b41f8f7553a7957dd8e077cc8d03035de9412e2d739f8bad6a032ebb5dab5805692a5fb9e20dd4ea666 + checksum: 518221505af4bd32c84f2af2c03f9d771de2711bd69fe7723b648fcc2e05d95b4e75f493afa9010209e26a4a3309ebee971f9b18c45b540891771d3b68c3a16e languageName: node linkType: hard @@ -10771,34 +9750,9 @@ __metadata: languageName: node linkType: hard -"jest-haste-map@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-haste-map@npm:26.6.2" - dependencies: - "@jest/types": ^26.6.2 - "@types/graceful-fs": ^4.1.2 - "@types/node": "*" - anymatch: ^3.0.3 - fb-watchman: ^2.0.0 - fsevents: ^2.1.2 - graceful-fs: ^4.2.4 - jest-regex-util: ^26.0.0 - jest-serializer: ^26.6.2 - jest-util: ^26.6.2 - jest-worker: ^26.6.2 - micromatch: ^4.0.2 - sane: ^4.0.3 - walker: ^1.0.7 - dependenciesMeta: - fsevents: - optional: true - checksum: 8ad5236d5646d2388d2bd58a57ea53698923434f43d59ea9ebdc58bce4d0b8544c8de2f7acaa9a6d73171f04460388b2b6d7d6b6c256aea4ebb8780140781596 - languageName: node - linkType: hard - -"jest-haste-map@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-haste-map@npm:29.6.3" +"jest-haste-map@npm:^29.6.4": + version: 29.6.4 + resolution: "jest-haste-map@npm:29.6.4" dependencies: "@jest/types": ^29.6.3 "@types/graceful-fs": ^4.1.3 @@ -10809,39 +9763,13 @@ __metadata: graceful-fs: ^4.2.9 jest-regex-util: ^29.6.3 jest-util: ^29.6.3 - jest-worker: ^29.6.3 + jest-worker: ^29.6.4 micromatch: ^4.0.4 walker: ^1.0.8 dependenciesMeta: fsevents: optional: true - checksum: d72b81442cf54c5962009502b4001e53b7e40ecd1717bb5d17d5b0badc89cf5529b8be5d2804442d25ee6a70809de150e554b074029170b0e86a32b7560ce430 - languageName: node - linkType: hard - -"jest-jasmine2@npm:^26.6.3": - version: 26.6.3 - resolution: "jest-jasmine2@npm:26.6.3" - dependencies: - "@babel/traverse": ^7.1.0 - "@jest/environment": ^26.6.2 - "@jest/source-map": ^26.6.2 - "@jest/test-result": ^26.6.2 - "@jest/types": ^26.6.2 - "@types/node": "*" - chalk: ^4.0.0 - co: ^4.6.0 - expect: ^26.6.2 - is-generator-fn: ^2.0.0 - jest-each: ^26.6.2 - jest-matcher-utils: ^26.6.2 - jest-message-util: ^26.6.2 - jest-runtime: ^26.6.3 - jest-snapshot: ^26.6.2 - jest-util: ^26.6.2 - pretty-format: ^26.6.2 - throat: ^5.0.0 - checksum: 41df0b993ae0cdeb2660fb3d8e88e2dcc83aec6b5c27d85eb233c2d507b546f8dce45fc54898ffbefa48ccc4633f225d0e023fd0979b8f7f2f1626074a69a9a3 + checksum: 4f720fd3813bb38400b7a9a094e55664cbddd907ba1769457ed746f6c870c615167647a5b697a788183d832b1dcb1b66143e52990a6f4403283f6686077fa868 languageName: node linkType: hard @@ -10857,16 +9785,6 @@ __metadata: languageName: node linkType: hard -"jest-leak-detector@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-leak-detector@npm:26.6.2" - dependencies: - jest-get-type: ^26.3.0 - pretty-format: ^26.6.2 - checksum: 364dd4d021347e26c66ba9c09da8a30477f14a3a8a208d2d7d64e4c396db81b85d8cb6b6834bcfc47a61b5938e274553957d11a7de2255f058c9d55d7f8fdfe7 - languageName: node - linkType: hard - "jest-leak-detector@npm:^29.6.3": version: 29.6.3 resolution: "jest-leak-detector@npm:29.6.3" @@ -10877,44 +9795,15 @@ __metadata: languageName: node linkType: hard -"jest-matcher-utils@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-matcher-utils@npm:26.6.2" +"jest-matcher-utils@npm:^29.6.4": + version: 29.6.4 + resolution: "jest-matcher-utils@npm:29.6.4" dependencies: chalk: ^4.0.0 - jest-diff: ^26.6.2 - jest-get-type: ^26.3.0 - pretty-format: ^26.6.2 - checksum: 74d2165c1ac7fe98fe27cd2b5407499478e6b2fe99dd54e26d8ee5c9f5f913bdd7bdc07c7221b9b04df0c15e9be0e866ff3455b03e38cc66c480d9996d6d5405 - languageName: node - linkType: hard - -"jest-matcher-utils@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-matcher-utils@npm:29.6.3" - dependencies: - chalk: ^4.0.0 - jest-diff: ^29.6.3 + jest-diff: ^29.6.4 jest-get-type: ^29.6.3 pretty-format: ^29.6.3 - checksum: d4965d5cc079799bc0a9075daea7a964768d4db55f0388ef879642215399c955ae9a22c967496813c908763b487f97e40701a1eb4ed5b0b7529c447b6d33e652 - languageName: node - linkType: hard - -"jest-message-util@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-message-util@npm:26.6.2" - dependencies: - "@babel/code-frame": ^7.0.0 - "@jest/types": ^26.6.2 - "@types/stack-utils": ^2.0.0 - chalk: ^4.0.0 - graceful-fs: ^4.2.4 - micromatch: ^4.0.2 - pretty-format: ^26.6.2 - slash: ^3.0.0 - stack-utils: ^2.0.2 - checksum: ffe5a715591c41240b9ed4092faf10f3eaf9ddfdf25d257a0c9f903aaa8d9eed5baa7e38016d2ec4f610fd29225e0f5231a91153e087a043e62824972c83d015 + checksum: 9e17bce282e74bdbba2ce5475c490e0bba4f464cd42132bfc5df0337e0853af4dba925c7f4f61cbb0a4818fa121d28d7ff0196ec8829773a22fce59a822976d2 languageName: node linkType: hard @@ -10935,16 +9824,6 @@ __metadata: languageName: node linkType: hard -"jest-mock@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-mock@npm:26.6.2" - dependencies: - "@jest/types": ^26.6.2 - "@types/node": "*" - checksum: 6c0fe028ff0cdc87b5d63b9ca749af04cae6c5577aaab234f602e546cae3f4b932adac9d77e6de2abb24955ee00978e1e5d5a861725654e2f9a42317d91fbc1f - languageName: node - linkType: hard - "jest-mock@npm:^29.6.3": version: 29.6.3 resolution: "jest-mock@npm:29.6.3" @@ -10968,13 +9847,6 @@ __metadata: languageName: node linkType: hard -"jest-regex-util@npm:^26.0.0": - version: 26.0.0 - resolution: "jest-regex-util@npm:26.0.0" - checksum: 930a00665e8dfbedc29140678b4a54f021b41b895cf35050f76f557c1da3ac48ff42dd7b18ba2ccba6f4e518c6445d6753730d03ec7049901b93992db1ef0483 - languageName: node - linkType: hard - "jest-regex-util@npm:^29.6.3": version: 29.6.3 resolution: "jest-regex-util@npm:29.6.3" @@ -10982,164 +9854,72 @@ __metadata: languageName: node linkType: hard -"jest-resolve-dependencies@npm:^26.6.3": - version: 26.6.3 - resolution: "jest-resolve-dependencies@npm:26.6.3" - dependencies: - "@jest/types": ^26.6.2 - jest-regex-util: ^26.0.0 - jest-snapshot: ^26.6.2 - checksum: 533ea1e271426006ff02c03c9802b108fcd68f2144615b6110ae59f3a0a2cc4a7abb3f44c3c65299c76b3a725d5d8220aaed9c58b79c8c8c508c18699a96e3f7 - languageName: node - linkType: hard - -"jest-resolve-dependencies@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-resolve-dependencies@npm:29.6.3" +"jest-resolve-dependencies@npm:^29.6.4": + version: 29.6.4 + resolution: "jest-resolve-dependencies@npm:29.6.4" dependencies: jest-regex-util: ^29.6.3 - jest-snapshot: ^29.6.3 - checksum: db0e57158cc085926f1e0dd63919cc78b87dc7e5644cd40f6b4b0bdcc228f3872b5520477db9a67889f4bcf658c5b85303fef89eee1df60d02a662c356021c2f + jest-snapshot: ^29.6.4 + checksum: 34f81d22cbd72203130cc14cbb66d5783d9f59fba4d366b9653f8fb4f6feeaac25d89696f2f77c700659843d5440dc92f58ad443ba05da1da46c39234866d916 languageName: node linkType: hard -"jest-resolve@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-resolve@npm:26.6.2" - dependencies: - "@jest/types": ^26.6.2 - chalk: ^4.0.0 - graceful-fs: ^4.2.4 - jest-pnp-resolver: ^1.2.2 - jest-util: ^26.6.2 - read-pkg-up: ^7.0.1 - resolve: ^1.18.1 - slash: ^3.0.0 - checksum: d6264d3f39b098753802a237c8c54f3109f5f3b3b7fa6f8d7aec7dca01b357ddf518ce1c33a68454357c15f48fb3c6026a92b9c4f5d72f07e24e80f04bcc8d58 - languageName: node - linkType: hard - -"jest-resolve@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-resolve@npm:29.6.3" +"jest-resolve@npm:^29.6.4": + version: 29.6.4 + resolution: "jest-resolve@npm:29.6.4" dependencies: chalk: ^4.0.0 graceful-fs: ^4.2.9 - jest-haste-map: ^29.6.3 + jest-haste-map: ^29.6.4 jest-pnp-resolver: ^1.2.2 jest-util: ^29.6.3 jest-validate: ^29.6.3 resolve: ^1.20.0 resolve.exports: ^2.0.0 slash: ^3.0.0 - checksum: 94594aab55b957e4f13fec248a18c99a6d8eb4842aa33ea5ef77179604df206d3fff1c59393a8984f179d0a7c6b98322d260b356076cdc2e74f2ebf1d9fba74a + checksum: 5f0ef260aec79ef00e16e0ba7b27d527054e1faed08a144279cd191b5c5b71af67c52b9ddfd24aa2f563d254618ce9bf7519809f23fb2abf6c4fa375503caa28 languageName: node linkType: hard -"jest-runner@npm:^26.6.3": - version: 26.6.3 - resolution: "jest-runner@npm:26.6.3" - dependencies: - "@jest/console": ^26.6.2 - "@jest/environment": ^26.6.2 - "@jest/test-result": ^26.6.2 - "@jest/types": ^26.6.2 - "@types/node": "*" - chalk: ^4.0.0 - emittery: ^0.7.1 - exit: ^0.1.2 - graceful-fs: ^4.2.4 - jest-config: ^26.6.3 - jest-docblock: ^26.0.0 - jest-haste-map: ^26.6.2 - jest-leak-detector: ^26.6.2 - jest-message-util: ^26.6.2 - jest-resolve: ^26.6.2 - jest-runtime: ^26.6.3 - jest-util: ^26.6.2 - jest-worker: ^26.6.2 - source-map-support: ^0.5.6 - throat: ^5.0.0 - checksum: ccd69918baa49a5efa45985cf60cfa1fbb1686b32d7a86296b7b55f89684e36d1f08e62598c4b7be7e81f2cf2e245d1a65146ea7bdcaedfa6ed176d3e645d7e2 - languageName: node - linkType: hard - -"jest-runner@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-runner@npm:29.6.3" +"jest-runner@npm:^29.6.4": + version: 29.6.4 + resolution: "jest-runner@npm:29.6.4" dependencies: - "@jest/console": ^29.6.3 - "@jest/environment": ^29.6.3 - "@jest/test-result": ^29.6.3 - "@jest/transform": ^29.6.3 + "@jest/console": ^29.6.4 + "@jest/environment": ^29.6.4 + "@jest/test-result": ^29.6.4 + "@jest/transform": ^29.6.4 "@jest/types": ^29.6.3 "@types/node": "*" chalk: ^4.0.0 emittery: ^0.13.1 graceful-fs: ^4.2.9 jest-docblock: ^29.6.3 - jest-environment-node: ^29.6.3 - jest-haste-map: ^29.6.3 + jest-environment-node: ^29.6.4 + jest-haste-map: ^29.6.4 jest-leak-detector: ^29.6.3 jest-message-util: ^29.6.3 - jest-resolve: ^29.6.3 - jest-runtime: ^29.6.3 + jest-resolve: ^29.6.4 + jest-runtime: ^29.6.4 jest-util: ^29.6.3 - jest-watcher: ^29.6.3 - jest-worker: ^29.6.3 + jest-watcher: ^29.6.4 + jest-worker: ^29.6.4 p-limit: ^3.1.0 source-map-support: 0.5.13 - checksum: 9f10100f1a558ec78d24e131494d9b3736633f788f3edcd30dbce7257c0cee6f62fec08ab99dbb684ddcc7dbb5ca846711b140ca6090a9547c5900a0e3da53f8 + checksum: ca977dd30262171fe000de8407a3187c16e7057ddf690bcc21068155aacd4824ee927b544e0fa9f2885948b47a5123b472da41e095e3bcbdebb79f1fa2f2fc56 languageName: node linkType: hard -"jest-runtime@npm:^26.6.3": - version: 26.6.3 - resolution: "jest-runtime@npm:26.6.3" +"jest-runtime@npm:^29.6.4": + version: 29.6.4 + resolution: "jest-runtime@npm:29.6.4" dependencies: - "@jest/console": ^26.6.2 - "@jest/environment": ^26.6.2 - "@jest/fake-timers": ^26.6.2 - "@jest/globals": ^26.6.2 - "@jest/source-map": ^26.6.2 - "@jest/test-result": ^26.6.2 - "@jest/transform": ^26.6.2 - "@jest/types": ^26.6.2 - "@types/yargs": ^15.0.0 - chalk: ^4.0.0 - cjs-module-lexer: ^0.6.0 - collect-v8-coverage: ^1.0.0 - exit: ^0.1.2 - glob: ^7.1.3 - graceful-fs: ^4.2.4 - jest-config: ^26.6.3 - jest-haste-map: ^26.6.2 - jest-message-util: ^26.6.2 - jest-mock: ^26.6.2 - jest-regex-util: ^26.0.0 - jest-resolve: ^26.6.2 - jest-snapshot: ^26.6.2 - jest-util: ^26.6.2 - jest-validate: ^26.6.2 - slash: ^3.0.0 - strip-bom: ^4.0.0 - yargs: ^15.4.1 - bin: - jest-runtime: bin/jest-runtime.js - checksum: 867922b49f9ab4cf2f5f1356ac3d9962c4477c7a2ff696cc841ea4c600ea389e7d6dfcbf945fec6849e606f81980addf31e4f34d63eaa3d3415f4901de2f605a - languageName: node - linkType: hard - -"jest-runtime@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-runtime@npm:29.6.3" - dependencies: - "@jest/environment": ^29.6.3 - "@jest/fake-timers": ^29.6.3 - "@jest/globals": ^29.6.3 + "@jest/environment": ^29.6.4 + "@jest/fake-timers": ^29.6.4 + "@jest/globals": ^29.6.4 "@jest/source-map": ^29.6.3 - "@jest/test-result": ^29.6.3 - "@jest/transform": ^29.6.3 + "@jest/test-result": ^29.6.4 + "@jest/transform": ^29.6.4 "@jest/types": ^29.6.3 "@types/node": "*" chalk: ^4.0.0 @@ -11147,92 +9927,44 @@ __metadata: collect-v8-coverage: ^1.0.0 glob: ^7.1.3 graceful-fs: ^4.2.9 - jest-haste-map: ^29.6.3 + jest-haste-map: ^29.6.4 jest-message-util: ^29.6.3 jest-mock: ^29.6.3 jest-regex-util: ^29.6.3 - jest-resolve: ^29.6.3 - jest-snapshot: ^29.6.3 + jest-resolve: ^29.6.4 + jest-snapshot: ^29.6.4 jest-util: ^29.6.3 slash: ^3.0.0 strip-bom: ^4.0.0 - checksum: 8743c61a2354dbce87282bfcbc11049f7d30d25ecd5f475ce56c1b7d926debb21b04db284d4d65a14283893a696442c66e923b35742fb02cc9f940a0a41ca49e - languageName: node - linkType: hard - -"jest-serializer@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-serializer@npm:26.6.2" - dependencies: - "@types/node": "*" - graceful-fs: ^4.2.4 - checksum: dbecfb0d01462fe486a0932cf1680cf6abb204c059db2a8f72c6c2a7c9842a82f6d256874112774cea700764ed8f38fc9e3db982456c138d87353e3390e746fe - languageName: node - linkType: hard - -"jest-snapshot@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-snapshot@npm:26.6.2" - dependencies: - "@babel/types": ^7.0.0 - "@jest/types": ^26.6.2 - "@types/babel__traverse": ^7.0.4 - "@types/prettier": ^2.0.0 - chalk: ^4.0.0 - expect: ^26.6.2 - graceful-fs: ^4.2.4 - jest-diff: ^26.6.2 - jest-get-type: ^26.3.0 - jest-haste-map: ^26.6.2 - jest-matcher-utils: ^26.6.2 - jest-message-util: ^26.6.2 - jest-resolve: ^26.6.2 - natural-compare: ^1.4.0 - pretty-format: ^26.6.2 - semver: ^7.3.2 - checksum: 53f1de055b1d3840bc6e851fd674d5991b844d4695dadbd07354c93bf191048d8767b8606999847e97c4214a485b9afb45c1d2411772befa1870414ac973b3e2 + checksum: 93deacd06f8f2bb808dbfb8acbcbc0b724187b3d3fffafd497a32c939bf385ca21f5a3f03eebd5b958a0e93865d0e68a0db73bd0fe16dafbd5e922558aa7b359 languageName: node linkType: hard -"jest-snapshot@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-snapshot@npm:29.6.3" +"jest-snapshot@npm:^29.6.4": + version: 29.6.4 + resolution: "jest-snapshot@npm:29.6.4" dependencies: "@babel/core": ^7.11.6 "@babel/generator": ^7.7.2 "@babel/plugin-syntax-jsx": ^7.7.2 "@babel/plugin-syntax-typescript": ^7.7.2 "@babel/types": ^7.3.3 - "@jest/expect-utils": ^29.6.3 - "@jest/transform": ^29.6.3 + "@jest/expect-utils": ^29.6.4 + "@jest/transform": ^29.6.4 "@jest/types": ^29.6.3 babel-preset-current-node-syntax: ^1.0.0 chalk: ^4.0.0 - expect: ^29.6.3 + expect: ^29.6.4 graceful-fs: ^4.2.9 - jest-diff: ^29.6.3 + jest-diff: ^29.6.4 jest-get-type: ^29.6.3 - jest-matcher-utils: ^29.6.3 + jest-matcher-utils: ^29.6.4 jest-message-util: ^29.6.3 jest-util: ^29.6.3 natural-compare: ^1.4.0 pretty-format: ^29.6.3 semver: ^7.5.3 - checksum: c63631d2c18adc678455b9aa6e569cb1ea227e97aaa8628e154b39c95ca626d89e88d62c82e07d66cc83a1fddda1f7153506dd0f49d3411bbbecb52272ed72f5 - languageName: node - linkType: hard - -"jest-util@npm:^26.1.0, jest-util@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-util@npm:26.6.2" - dependencies: - "@jest/types": ^26.6.2 - "@types/node": "*" - chalk: ^4.0.0 - graceful-fs: ^4.2.4 - is-ci: ^2.0.0 - micromatch: ^4.0.2 - checksum: 3c6a5fba05c4c6892cd3a9f66196ea8867087b77a5aa1a3f6cd349c785c3f1ca24abfd454664983aed1a165cab7846688e44fe8630652d666ba326b08625bc3d + checksum: 0c9b5ec640457fb780ac6c9b6caa814436e9e16bf744772eee3bfd055ae5f7a3085a6a09b2f30910e31915dafc3955d92357cc98189e4d5dcb417b5fdafda6e3 languageName: node linkType: hard @@ -11250,20 +9982,6 @@ __metadata: languageName: node linkType: hard -"jest-validate@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-validate@npm:26.6.2" - dependencies: - "@jest/types": ^26.6.2 - camelcase: ^6.0.0 - chalk: ^4.0.0 - jest-get-type: ^26.3.0 - leven: ^3.1.0 - pretty-format: ^26.6.2 - checksum: bac11d6586d9b8885328a4a66eec45b692e45ac23034a5c09eb0ee32de324f2d3d52b073e0c34e9c222b3642b083d1152a736cf24c52109e4957537d731ca62b - languageName: node - linkType: hard - "jest-validate@npm:^29.6.3": version: 29.6.3 resolution: "jest-validate@npm:29.6.3" @@ -11278,26 +9996,11 @@ __metadata: languageName: node linkType: hard -"jest-watcher@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-watcher@npm:26.6.2" +"jest-watcher@npm:^29.6.4": + version: 29.6.4 + resolution: "jest-watcher@npm:29.6.4" dependencies: - "@jest/test-result": ^26.6.2 - "@jest/types": ^26.6.2 - "@types/node": "*" - ansi-escapes: ^4.2.1 - chalk: ^4.0.0 - jest-util: ^26.6.2 - string-length: ^4.0.1 - checksum: 401137f1a73bf23cdf390019ebffb3f6f89c53ca49d48252d1dd6daf17a68787fef75cc55a623de28b63d87d0e8f13d8972d7dd06740f2f64f7b2a0409d119d2 - languageName: node - linkType: hard - -"jest-watcher@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-watcher@npm:29.6.3" - dependencies: - "@jest/test-result": ^29.6.3 + "@jest/test-result": ^29.6.4 "@jest/types": ^29.6.3 "@types/node": "*" ansi-escapes: ^4.2.1 @@ -11305,18 +10008,7 @@ __metadata: emittery: ^0.13.1 jest-util: ^29.6.3 string-length: ^4.0.1 - checksum: d31ab2076342d45959d5a7d9fdd88c0c5d52c2ea6fb3b1eabe7f8c28177d90355331beb4d844e171ed9e0341a2da901b7eefaa122505ba0f0ac88e58d29b3374 - languageName: node - linkType: hard - -"jest-worker@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-worker@npm:26.6.2" - dependencies: - "@types/node": "*" - merge-stream: ^2.0.0 - supports-color: ^7.0.0 - checksum: f9afa3b88e3f12027901e4964ba3ff048285b5783b5225cab28fac25b4058cea8ad54001e9a1577ee2bed125fac3ccf5c80dc507b120300cc1bbcb368796533e + checksum: 13c0f96f7e9212e4f3ef2daf3e787045bdcec414061bf286eca934c7f4083fb04d38df9ced9c0edfbe15f3521ca581eb2ed6108c338a0db1f3e1def65687992f languageName: node linkType: hard @@ -11331,39 +10023,26 @@ __metadata: languageName: node linkType: hard -"jest-worker@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-worker@npm:29.6.3" +"jest-worker@npm:^29.6.4": + version: 29.6.4 + resolution: "jest-worker@npm:29.6.4" dependencies: "@types/node": "*" jest-util: ^29.6.3 merge-stream: ^2.0.0 supports-color: ^8.0.0 - checksum: 8ffb24a2d4c70ed3032034a2601defccc19353d854d89459f58793c6c8f170f88038c6722073c8047c5734c8ec8d4902ebc955f4f7acb433c2499adf616388fc + checksum: 05d19a5759ebfeb964036065be55ad8d8e8ddffa85d9b3a4c0b95765695efb1d8226ec824a4d8e660c38cda3389bfeb98d819f47232acf9fb0e79f553b7c0a76 languageName: node linkType: hard -"jest@npm:^26.0.0": - version: 26.6.3 - resolution: "jest@npm:26.6.3" +"jest@npm:^29, jest@npm:^29.2.0": + version: 29.6.4 + resolution: "jest@npm:29.6.4" dependencies: - "@jest/core": ^26.6.3 - import-local: ^3.0.2 - jest-cli: ^26.6.3 - bin: - jest: bin/jest.js - checksum: 3a9b4c70e9bd5391e7367a0036045c1d3545c2a39e1439a71fb4b59b1748bc34e2ccb324faa1046b99bffc8dc2ed7b3c59016c462255b2646f5fa9300351f914 - languageName: node - linkType: hard - -"jest@npm:^29.2.0": - version: 29.6.3 - resolution: "jest@npm:29.6.3" - dependencies: - "@jest/core": ^29.6.3 + "@jest/core": ^29.6.4 "@jest/types": ^29.6.3 import-local: ^3.0.2 - jest-cli: ^29.6.3 + jest-cli: ^29.6.4 peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -11371,7 +10050,7 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: dd4f53fb84f28b665b47c628222e5d3b624e9e0afa79b22afceef4f2a53dc0d8f0edd7ca254917ace5c94c3a7bf58c108563234c4fe34e86c679ce99633cfbe6 + checksum: ba28ca7a86d029bcd742bb254c0c8d0119c1e002ddae128ff6409ebabc0b29c36f69dbf3fdd326aff16e7b2500c9a918bbc6a9a5db4d966e035127242239439f languageName: node linkType: hard @@ -11405,46 +10084,6 @@ __metadata: languageName: node linkType: hard -"jsdom@npm:^16.4.0": - version: 16.7.0 - resolution: "jsdom@npm:16.7.0" - dependencies: - abab: ^2.0.5 - acorn: ^8.2.4 - acorn-globals: ^6.0.0 - cssom: ^0.4.4 - cssstyle: ^2.3.0 - data-urls: ^2.0.0 - decimal.js: ^10.2.1 - domexception: ^2.0.1 - escodegen: ^2.0.0 - form-data: ^3.0.0 - html-encoding-sniffer: ^2.0.1 - http-proxy-agent: ^4.0.1 - https-proxy-agent: ^5.0.0 - is-potential-custom-element-name: ^1.0.1 - nwsapi: ^2.2.0 - parse5: 6.0.1 - saxes: ^5.0.1 - symbol-tree: ^3.2.4 - tough-cookie: ^4.0.0 - w3c-hr-time: ^1.0.2 - w3c-xmlserializer: ^2.0.0 - webidl-conversions: ^6.1.0 - whatwg-encoding: ^1.0.5 - whatwg-mimetype: ^2.3.0 - whatwg-url: ^8.5.0 - ws: ^7.4.6 - xml-name-validator: ^3.0.0 - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - checksum: 454b83371857000763ed31130a049acd1b113e3b927e6dcd75c67ddc30cdd242d7ebcac5c2294b7a1a6428155cb1398709c573b3c6d809218692ea68edd93370 - languageName: node - linkType: hard - "jsdom@npm:^20.0.0": version: 20.0.3 resolution: "jsdom@npm:20.0.3" @@ -11502,6 +10141,13 @@ __metadata: languageName: node linkType: hard +"json-buffer@npm:3.0.1": + version: 3.0.1 + resolution: "json-buffer@npm:3.0.1" + checksum: 9026b03edc2847eefa2e37646c579300a1f3a4586cfb62bf857832b60c852042d0d6ae55d1afb8926163fa54c2b01d83ae24705f34990348bdac6273a29d4581 + languageName: node + linkType: hard + "json-parse-better-errors@npm:^1.0.1": version: 1.0.2 resolution: "json-parse-better-errors@npm:1.0.2" @@ -11589,7 +10235,7 @@ __metadata: languageName: node linkType: hard -"json5@npm:2.x, json5@npm:^2.1.1, json5@npm:^2.1.2, json5@npm:^2.2.2, json5@npm:^2.2.3": +"json5@npm:^2.1.1, json5@npm:^2.1.2, json5@npm:^2.2.2, json5@npm:^2.2.3": version: 2.2.3 resolution: "json5@npm:2.2.3" bin: @@ -11657,32 +10303,16 @@ __metadata: languageName: node linkType: hard -"kind-of@npm:^3.0.2, kind-of@npm:^3.0.3, kind-of@npm:^3.2.0": - version: 3.2.2 - resolution: "kind-of@npm:3.2.2" +"keyv@npm:^4.5.3": + version: 4.5.3 + resolution: "keyv@npm:4.5.3" dependencies: - is-buffer: ^1.1.5 - checksum: e898df8ca2f31038f27d24f0b8080da7be274f986bc6ed176f37c77c454d76627619e1681f6f9d2e8d2fd7557a18ecc419a6bb54e422abcbb8da8f1a75e4b386 - languageName: node - linkType: hard - -"kind-of@npm:^4.0.0": - version: 4.0.0 - resolution: "kind-of@npm:4.0.0" - dependencies: - is-buffer: ^1.1.5 - checksum: 1b9e7624a8771b5a2489026e820f3bbbcc67893e1345804a56b23a91e9069965854d2a223a7c6ee563c45be9d8c6ff1ef87f28ed5f0d1a8d00d9dcbb067c529f - languageName: node - linkType: hard - -"kind-of@npm:^5.0.0": - version: 5.1.0 - resolution: "kind-of@npm:5.1.0" - checksum: f2a0102ae0cf19c4a953397e552571bad2b588b53282874f25fca7236396e650e2db50d41f9f516bd402536e4df968dbb51b8e69e4d5d4a7173def78448f7bab + json-buffer: 3.0.1 + checksum: 3ffb4d5b72b6b4b4af443bbb75ca2526b23c750fccb5ac4c267c6116888b4b65681015c2833cb20d26cf3e6e32dac6b988c77f7f022e1a571b7d90f1442257da languageName: node linkType: hard -"kind-of@npm:^6.0.0, kind-of@npm:^6.0.2, kind-of@npm:^6.0.3": +"kind-of@npm:^6.0.2, kind-of@npm:^6.0.3": version: 6.0.3 resolution: "kind-of@npm:6.0.3" checksum: 3ab01e7b1d440b22fe4c31f23d8d38b4d9b91d9f291df683476576493d5dfd2e03848a8b05813dd0c3f0e835bc63f433007ddeceb71f05cb25c45ae1b19c6d3b @@ -11917,14 +10547,14 @@ __metadata: linkType: hard "lib0@npm:^0.2.31, lib0@npm:^0.2.42, lib0@npm:^0.2.52, lib0@npm:^0.2.74": - version: 0.2.82 - resolution: "lib0@npm:0.2.82" + version: 0.2.83 + resolution: "lib0@npm:0.2.83" dependencies: isomorphic.js: ^0.2.4 bin: 0gentesthtml: bin/gentesthtml.js 0serve: bin/0serve.js - checksum: 86316afe6f89674febfa3acd695e931290effbcaa61784fc916dc3c241247edd242e70f3b7154b1fcfa4fc4015c70f3946de3a56ac3a6aca5897ff7122e92d33 + checksum: 2c05609146b25c14a72c99683f6f71e10c74b60be39618f25117d3f03a2435b6d6219876641fa019fe1acde7fdfa75dc3eb3a23e37c9ae30eae7be05225e2263 languageName: node linkType: hard @@ -12109,7 +10739,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:4.x, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.17.4, lodash@npm:^4.7.0": +"lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.17.4, lodash@npm:^4.7.0": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 @@ -12284,13 +10914,6 @@ __metadata: languageName: node linkType: hard -"map-cache@npm:^0.2.2": - version: 0.2.2 - resolution: "map-cache@npm:0.2.2" - checksum: 3067cea54285c43848bb4539f978a15dedc63c03022abeec6ef05c8cb6829f920f13b94bcaf04142fc6a088318e564c4785704072910d120d55dbc2e0c421969 - languageName: node - linkType: hard - "map-obj@npm:^1.0.0": version: 1.0.1 resolution: "map-obj@npm:1.0.1" @@ -12305,15 +10928,6 @@ __metadata: languageName: node linkType: hard -"map-visit@npm:^1.0.0": - version: 1.0.0 - resolution: "map-visit@npm:1.0.0" - dependencies: - object-visit: ^1.0.0 - checksum: c27045a5021c344fc19b9132eb30313e441863b2951029f8f8b66f79d3d8c1e7e5091578075a996f74e417479506fe9ede28c44ca7bc351a61c9d8073daec36a - languageName: node - linkType: hard - "markdown-to-jsx@npm:^7.3.2": version: 7.3.2 resolution: "markdown-to-jsx@npm:7.3.2" @@ -12734,28 +11348,7 @@ __metadata: languageName: node linkType: hard -"micromatch@npm:^3.1.4": - version: 3.1.10 - resolution: "micromatch@npm:3.1.10" - dependencies: - arr-diff: ^4.0.0 - array-unique: ^0.3.2 - braces: ^2.3.1 - define-property: ^2.0.2 - extend-shallow: ^3.0.2 - extglob: ^2.0.4 - fragment-cache: ^0.2.1 - kind-of: ^6.0.2 - nanomatch: ^1.2.9 - object.pick: ^1.3.0 - regex-not: ^1.0.0 - snapdragon: ^0.8.1 - to-regex: ^3.0.2 - checksum: ad226cba4daa95b4eaf47b2ca331c8d2e038d7b41ae7ed0697cde27f3f1d6142881ab03d4da51b65d9d315eceb5e4cdddb3fbb55f5f72cfa19cf3ea469d054dc - languageName: node - linkType: hard - -"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4, micromatch@npm:^4.0.5": +"micromatch@npm:^4.0.4, micromatch@npm:^4.0.5": version: 4.0.5 resolution: "micromatch@npm:4.0.5" dependencies: @@ -12880,7 +11473,7 @@ __metadata: languageName: node linkType: hard -"minimist@npm:^1.1.1, minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6, minimist@npm:~1.2.0": +"minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6, minimist@npm:~1.2.0": version: 1.2.8 resolution: "minimist@npm:1.2.8" checksum: 75a6d645fb122dad29c06a7597bddea977258957ed88d7a6df59b5cd3fe4a527e253e9bbf2e783e4b73657f9098b96a5fe96ab8a113655d4109108577ecf85b0 @@ -13003,16 +11596,6 @@ __metadata: languageName: node linkType: hard -"mixin-deep@npm:^1.2.0": - version: 1.3.2 - resolution: "mixin-deep@npm:1.3.2" - dependencies: - for-in: ^1.0.2 - is-extendable: ^1.0.1 - checksum: 820d5a51fcb7479f2926b97f2c3bb223546bc915e6b3a3eb5d906dda871bba569863595424a76682f2b15718252954644f3891437cb7e3f220949bed54b1750d - languageName: node - linkType: hard - "mkdirp-infer-owner@npm:^2.0.0": version: 2.0.0 resolution: "mkdirp-infer-owner@npm:2.0.0" @@ -13024,7 +11607,7 @@ __metadata: languageName: node linkType: hard -"mkdirp@npm:1.x, mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": +"mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": version: 1.0.4 resolution: "mkdirp@npm:1.0.4" bin: @@ -13033,9 +11616,9 @@ __metadata: languageName: node linkType: hard -"mobx-react-lite@npm:^4.0.3": - version: 4.0.3 - resolution: "mobx-react-lite@npm:4.0.3" +"mobx-react-lite@npm:^4.0.4": + version: 4.0.4 + resolution: "mobx-react-lite@npm:4.0.4" dependencies: use-sync-external-store: ^1.2.0 peerDependencies: @@ -13046,15 +11629,15 @@ __metadata: optional: true react-native: optional: true - checksum: 327151c61f6520605ce855b2972f30f4b4d9e277d546be5bf0abc663cf09f3e242193603d51d41a9e847fd359a3b9a5cfbeb89ccbb0905f04a2e1b38021d3025 + checksum: a0104357b8db5a4d208251401d6530d47fba0ebadd9ad19f24bd687165dc8776a0b11d9155b93b4aa7f050613d44e24e94cb5a2ef309b4fb1d6aa891552b1875 languageName: node linkType: hard "mobx-react@npm:^9.0.0": - version: 9.0.0 - resolution: "mobx-react@npm:9.0.0" + version: 9.0.1 + resolution: "mobx-react@npm:9.0.1" dependencies: - mobx-react-lite: ^4.0.3 + mobx-react-lite: ^4.0.4 peerDependencies: mobx: ^6.9.0 react: ^16.8.0 || ^17 || ^18 @@ -13063,14 +11646,14 @@ __metadata: optional: true react-native: optional: true - checksum: 275282f5deb99c31419a92e8ff426a59825b0ac98c356a7ce333f1256961d032809136033af63ac9aab13530aa5a6a0beecfbb6ef61dd27bcfb0625da406e20c + checksum: b0677a6ca2f55ff5adc3b9052a511b2cd9f1f2484bd40a390f2c345936c00b1086631f2458e07efb782d2289b668dcfbbcfe84be56acf5283d95bfb9650efd98 languageName: node linkType: hard "mobx@npm:^6.10.0": - version: 6.10.0 - resolution: "mobx@npm:6.10.0" - checksum: 8279d5a978d845664fb1830ce1e7f3fcebd5809bd9be6f2cac9b190e07cf6f16b09581107cc2d1ff7097e979da758fefd9ac68db76c814b8e783e59d0b8e418c + version: 6.10.2 + resolution: "mobx@npm:6.10.2" + checksum: 14d6f1db4e3a61c823510ea130229c96bd4958b77d81057ac1abc6a439703eaf3ea2289192ef205b4250d3adb1d83a439ad56d5e53f2b967c6e62a6bccc23d8a languageName: node linkType: hard @@ -13095,13 +11678,6 @@ __metadata: languageName: node linkType: hard -"ms@npm:2.0.0": - version: 2.0.0 - resolution: "ms@npm:2.0.0" - checksum: 0e6a22b8b746d2e0b65a430519934fefd41b6db0682e3477c10f60c76e947c4c0ad06f63ffdf1d78d335f83edee8c0aa928aa66a36c7cd95b69b26f468d527f4 - languageName: node - linkType: hard - "ms@npm:2.1.2": version: 2.1.2 resolution: "ms@npm:2.1.2" @@ -13145,25 +11721,6 @@ __metadata: languageName: node linkType: hard -"nanomatch@npm:^1.2.9": - version: 1.2.13 - resolution: "nanomatch@npm:1.2.13" - dependencies: - arr-diff: ^4.0.0 - array-unique: ^0.3.2 - define-property: ^2.0.2 - extend-shallow: ^3.0.2 - fragment-cache: ^0.2.1 - is-windows: ^1.0.2 - kind-of: ^6.0.2 - object.pick: ^1.3.0 - regex-not: ^1.0.0 - snapdragon: ^0.8.1 - to-regex: ^3.0.1 - checksum: 54d4166d6ef08db41252eb4e96d4109ebcb8029f0374f9db873bd91a1f896c32ec780d2a2ea65c0b2d7caf1f28d5e1ea33746a470f32146ac8bba821d80d38d8 - languageName: node - linkType: hard - "napi-macros@npm:~2.0.0": version: 2.0.0 resolution: "napi-macros@npm:2.0.0" @@ -13223,8 +11780,8 @@ __metadata: linkType: hard "node-fetch@npm:^2.6.0, node-fetch@npm:^2.6.7": - version: 2.6.13 - resolution: "node-fetch@npm:2.6.13" + version: 2.7.0 + resolution: "node-fetch@npm:2.7.0" dependencies: whatwg-url: ^5.0.0 peerDependencies: @@ -13232,18 +11789,18 @@ __metadata: peerDependenciesMeta: encoding: optional: true - checksum: 055845ae5b4796c78c7053564745345025cf959563b3568b43c385f67d311779e6b00e5fef6ed1b79f86ba4048e4b4b722e1aa948305521b9353eb7e788912c9 + checksum: d76d2f5edb451a3f05b15115ec89fc6be39de37c6089f1b6368df03b91e1633fd379a7e01b7ab05089a25034b2023d959b47e59759cb38d88341b2459e89d6e5 languageName: node linkType: hard "node-gyp-build@npm:^4.3.0": - version: 4.6.0 - resolution: "node-gyp-build@npm:4.6.0" + version: 4.6.1 + resolution: "node-gyp-build@npm:4.6.1" bin: node-gyp-build: bin.js node-gyp-build-optional: optional.js node-gyp-build-test: build-test.js - checksum: 25d78c5ef1f8c24291f4a370c47ba52fcea14f39272041a90a7894cd50d766f7c8cb8fb06c0f42bf6f69b204b49d9be3c8fc344aac09714d5bdb95965499eb15 + checksum: c3676d337b36803bc7792e35bf7fdcda7cdcb7e289b8f9855a5535702a82498eb976842fefcf487258c58005ca32ce3d537fbed91280b04409161dcd7232a882 languageName: node linkType: hard @@ -13286,20 +11843,6 @@ __metadata: languageName: node linkType: hard -"node-notifier@npm:^8.0.0": - version: 8.0.2 - resolution: "node-notifier@npm:8.0.2" - dependencies: - growly: ^1.3.0 - is-wsl: ^2.2.0 - semver: ^7.3.2 - shellwords: ^0.1.1 - uuid: ^8.3.0 - which: ^2.0.2 - checksum: 7db1683003f6aaa4324959dfa663cd56e301ccc0165977a9e7737989ffe3b4763297f9fc85f44d0662b63a4fd85516eda43411b492a4d2fae207afb23773f912 - languageName: node - linkType: hard - "node-releases@npm:^2.0.13": version: 2.0.13 resolution: "node-releases@npm:2.0.13" @@ -13377,15 +11920,6 @@ __metadata: languageName: node linkType: hard -"normalize-path@npm:^2.1.1": - version: 2.1.1 - resolution: "normalize-path@npm:2.1.1" - dependencies: - remove-trailing-separator: ^1.0.1 - checksum: 7e9cbdcf7f5b8da7aa191fbfe33daf290cdcd8c038f422faf1b8a83c972bf7a6d94c5be34c4326cb00fb63bc0fd97d9fbcfaf2e5d6142332c2cd36d2e1b86cea - languageName: node - linkType: hard - "normalize-path@npm:^3.0.0": version: 3.0.0 resolution: "normalize-path@npm:3.0.0" @@ -13584,16 +12118,7 @@ __metadata: languageName: node linkType: hard -"npm-run-path@npm:^2.0.0": - version: 2.0.2 - resolution: "npm-run-path@npm:2.0.2" - dependencies: - path-key: ^2.0.0 - checksum: acd5ad81648ba4588ba5a8effb1d98d2b339d31be16826a118d50f182a134ac523172101b82eab1d01cb4c2ba358e857d54cfafd8163a1ffe7bd52100b741125 - languageName: node - linkType: hard - -"npm-run-path@npm:^4.0.0, npm-run-path@npm:^4.0.1": +"npm-run-path@npm:^4.0.1": version: 4.0.1 resolution: "npm-run-path@npm:4.0.1" dependencies: @@ -13626,28 +12151,28 @@ __metadata: languageName: node linkType: hard -"nwsapi@npm:^2.2.0, nwsapi@npm:^2.2.2": +"nwsapi@npm:^2.2.2": version: 2.2.7 resolution: "nwsapi@npm:2.2.7" checksum: cab25f7983acec7e23490fec3ef7be608041b460504229770e3bfcf9977c41d6fe58f518994d3bd9aa3a101f501089a3d4a63536f4ff8ae4b8c4ca23bdbfda4e languageName: node linkType: hard -"nx@npm:15.9.5, nx@npm:>=15.5.2 < 16, nx@npm:^15.9.2": - version: 15.9.5 - resolution: "nx@npm:15.9.5" +"nx@npm:15.9.6, nx@npm:>=15.5.2 < 16, nx@npm:^15.9.2": + version: 15.9.6 + resolution: "nx@npm:15.9.6" dependencies: - "@nrwl/cli": 15.9.5 - "@nrwl/nx-darwin-arm64": 15.9.5 - "@nrwl/nx-darwin-x64": 15.9.5 - "@nrwl/nx-linux-arm-gnueabihf": 15.9.5 - "@nrwl/nx-linux-arm64-gnu": 15.9.5 - "@nrwl/nx-linux-arm64-musl": 15.9.5 - "@nrwl/nx-linux-x64-gnu": 15.9.5 - "@nrwl/nx-linux-x64-musl": 15.9.5 - "@nrwl/nx-win32-arm64-msvc": 15.9.5 - "@nrwl/nx-win32-x64-msvc": 15.9.5 - "@nrwl/tao": 15.9.5 + "@nrwl/cli": 15.9.6 + "@nrwl/nx-darwin-arm64": 15.9.6 + "@nrwl/nx-darwin-x64": 15.9.6 + "@nrwl/nx-linux-arm-gnueabihf": 15.9.6 + "@nrwl/nx-linux-arm64-gnu": 15.9.6 + "@nrwl/nx-linux-arm64-musl": 15.9.6 + "@nrwl/nx-linux-x64-gnu": 15.9.6 + "@nrwl/nx-linux-x64-musl": 15.9.6 + "@nrwl/nx-win32-arm64-msvc": 15.9.6 + "@nrwl/nx-win32-x64-msvc": 15.9.6 + "@nrwl/tao": 15.9.6 "@parcel/watcher": 2.0.4 "@yarnpkg/lockfile": ^1.1.0 "@yarnpkg/parsers": 3.0.0-rc.46 @@ -13710,7 +12235,7 @@ __metadata: optional: true bin: nx: bin/nx.js - checksum: 57422bcf205f646ff90f6701ef18535d073355b5abdc2418366f7bcbfa055e9f8c3af529fdc7f500ce05e02b482fda49fbdb7bdc72fd2af7f616d061deb01250 + checksum: 27ffd2559624cd0d7a40110540f8048994686c1032ac45483092bf00a3b128444236d47de9f02ae7e4830ac20763b251d430f609d7f317916057f9615ea68ac7 languageName: node linkType: hard @@ -13721,17 +12246,6 @@ __metadata: languageName: node linkType: hard -"object-copy@npm:^0.1.0": - version: 0.1.0 - resolution: "object-copy@npm:0.1.0" - dependencies: - copy-descriptor: ^0.1.0 - define-property: ^0.2.5 - kind-of: ^3.0.3 - checksum: a9e35f07e3a2c882a7e979090360d1a20ab51d1fa19dfdac3aa8873b328a7c4c7683946ee97c824ae40079d848d6740a3788fa14f2185155dab7ed970a72c783 - languageName: node - linkType: hard - "object-inspect@npm:^1.12.3, object-inspect@npm:^1.9.0": version: 1.12.3 resolution: "object-inspect@npm:1.12.3" @@ -13756,15 +12270,6 @@ __metadata: languageName: node linkType: hard -"object-visit@npm:^1.0.0": - version: 1.0.1 - resolution: "object-visit@npm:1.0.1" - dependencies: - isobject: ^3.0.0 - checksum: b0ee07f5bf3bb881b881ff53b467ebbde2b37ebb38649d6944a6cd7681b32eedd99da9bd1e01c55facf81f54ed06b13af61aba6ad87f0052982995e09333f790 - languageName: node - linkType: hard - "object.assign@npm:^4.1.4": version: 4.1.4 resolution: "object.assign@npm:4.1.4" @@ -13777,16 +12282,7 @@ __metadata: languageName: node linkType: hard -"object.pick@npm:^1.3.0": - version: 1.3.0 - resolution: "object.pick@npm:1.3.0" - dependencies: - isobject: ^3.0.1 - checksum: 77fb6eed57c67adf75e9901187e37af39f052ef601cb4480386436561357eb9e459e820762f01fd02c5c1b42ece839ad393717a6d1850d848ee11fbabb3e580a - languageName: node - linkType: hard - -"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": +"once@npm:^1.3.0, once@npm:^1.4.0": version: 1.4.0 resolution: "once@npm:1.4.0" dependencies: @@ -13853,13 +12349,6 @@ __metadata: languageName: node linkType: hard -"p-each-series@npm:^2.1.0": - version: 2.2.0 - resolution: "p-each-series@npm:2.2.0" - checksum: 5fbe2f1f1966f55833bd401fe36f7afe410707d5e9fb6032c6dde8aa716d50521c3bb201fdb584130569b5941d5e84993e09e0b3f76a474288e0ede8f632983c - languageName: node - linkType: hard - "p-finally@npm:^1.0.0": version: 1.0.0 resolution: "p-finally@npm:1.0.0" @@ -14130,13 +12619,6 @@ __metadata: languageName: node linkType: hard -"parse5@npm:6.0.1": - version: 6.0.1 - resolution: "parse5@npm:6.0.1" - checksum: 7d569a176c5460897f7c8f3377eff640d54132b9be51ae8a8fa4979af940830b2b0c296ce75e5bd8f4041520aadde13170dbdec44889975f906098ea0002f4bd - languageName: node - linkType: hard - "parse5@npm:^7.0.0, parse5@npm:^7.1.1": version: 7.1.2 resolution: "parse5@npm:7.1.2" @@ -14146,13 +12628,6 @@ __metadata: languageName: node linkType: hard -"pascalcase@npm:^0.1.1": - version: 0.1.1 - resolution: "pascalcase@npm:0.1.1" - checksum: f83681c3c8ff75fa473a2bb2b113289952f802ff895d435edd717e7cb898b0408cbdb247117a938edcbc5d141020909846cc2b92c47213d764e2a94d2ad2b925 - languageName: node - linkType: hard - "path-browserify@npm:^1.0.0": version: 1.0.1 resolution: "path-browserify@npm:1.0.1" @@ -14181,7 +12656,7 @@ __metadata: languageName: node linkType: hard -"path-key@npm:^2.0.0, path-key@npm:^2.0.1": +"path-key@npm:^2.0.1": version: 2.0.1 resolution: "path-key@npm:2.0.1" checksum: f7ab0ad42fe3fb8c7f11d0c4f849871e28fbd8e1add65c370e422512fc5887097b9cf34d09c1747d45c942a8c1e26468d6356e2df3f740bf177ab8ca7301ebfd @@ -14279,7 +12754,7 @@ __metadata: languageName: node linkType: hard -"pirates@npm:^4.0.1, pirates@npm:^4.0.4": +"pirates@npm:^4.0.4": version: 4.0.6 resolution: "pirates@npm:4.0.6" checksum: 46a65fefaf19c6f57460388a5af9ab81e3d7fd0e7bc44ca59d753cb5c4d0df97c6c6e583674869762101836d68675f027d60f841c105d72734df9dfca97cbcc6 @@ -14302,13 +12777,6 @@ __metadata: languageName: node linkType: hard -"posix-character-classes@npm:^0.1.0": - version: 0.1.1 - resolution: "posix-character-classes@npm:0.1.1" - checksum: dedb99913c60625a16050cfed2fb5c017648fc075be41ac18474e1c6c3549ef4ada201c8bd9bd006d36827e289c571b6092e1ef6e756cdbab2fd7046b25c6442 - languageName: node - linkType: hard - "postcss-media-query-parser@npm:^0.2.3": version: 0.2.3 resolution: "postcss-media-query-parser@npm:0.2.3" @@ -14394,13 +12862,13 @@ __metadata: linkType: hard "postcss@npm:^8.3.11, postcss@npm:^8.4.19, postcss@npm:^8.4.21": - version: 8.4.28 - resolution: "postcss@npm:8.4.28" + version: 8.4.29 + resolution: "postcss@npm:8.4.29" dependencies: nanoid: ^3.3.6 picocolors: ^1.0.0 source-map-js: ^1.0.2 - checksum: f605c24a36f7e400bad379735fbfc893ccb8d293ad6d419bb824db77cdcb69f43d614ef35f9f7091f32ca588d130ec60dbcf53b366e6bf88a8a64bbeb3c05f6d + checksum: dd6daa25e781db9ae5b651d9b7bfde0ec6e60e86a37da69a18eb4773d5ddd51e28fc4ff054fbdc04636a31462e6bf09a1e50986f69ac52b10d46b7457cd36d12 languageName: node linkType: hard @@ -14440,19 +12908,7 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^26.0.0, pretty-format@npm:^26.6.2": - version: 26.6.2 - resolution: "pretty-format@npm:26.6.2" - dependencies: - "@jest/types": ^26.6.2 - ansi-regex: ^5.0.0 - ansi-styles: ^4.0.0 - react-is: ^17.0.1 - checksum: e3b808404d7e1519f0df1aa1f25cee0054ab475775c6b2b8c5568ff23194a92d54bf93274139b6f584ca70fd773be4eaa754b0e03f12bb0a8d1426b07f079976 - languageName: node - linkType: hard - -"pretty-format@npm:^29.6.3": +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.6.3": version: 29.6.3 resolution: "pretty-format@npm:29.6.3" dependencies: @@ -14583,9 +13039,9 @@ __metadata: linkType: hard "property-information@npm:^6.0.0": - version: 6.2.0 - resolution: "property-information@npm:6.2.0" - checksum: 23afce07ba821cbe7d926e63cdd680991961c82be4bbb6c0b17c47f48894359c1be6e51cd74485fc10a9d3fd361b475388e1e39311ed2b53127718f72aab1955 + version: 6.3.0 + resolution: "property-information@npm:6.3.0" + checksum: bf0a15dec097fd4324a42163cabd96b90819e48ef0d8d98756ef0420b2c579bf33646fe0b6e04aa9e79f5a2b5b5860ef11655a79cd8969d8eda58df23c4f96c9 languageName: node linkType: hard @@ -14624,16 +13080,6 @@ __metadata: languageName: node linkType: hard -"pump@npm:^3.0.0": - version: 3.0.0 - resolution: "pump@npm:3.0.0" - dependencies: - end-of-stream: ^1.1.0 - once: ^1.3.1 - checksum: e42e9229fba14732593a718b04cb5e1cfef8254544870997e0ecd9732b189a48e1256e4e5478148ecb47c8511dca2b09eae56b4d0aad8009e6fac8072923cfc9 - languageName: node - linkType: hard - "punycode@npm:^1.4.1": version: 1.4.1 resolution: "punycode@npm:1.4.1" @@ -14649,9 +13095,9 @@ __metadata: linkType: hard "pure-rand@npm:^6.0.0": - version: 6.0.2 - resolution: "pure-rand@npm:6.0.2" - checksum: 79de33876a4f515d759c48e98d00756bbd916b4ea260cc572d7adfa4b62cace9952e89f0241d0410214554503d25061140fe325c66f845213d2b1728ba8d413e + version: 6.0.3 + resolution: "pure-rand@npm:6.0.3" + checksum: d08701cfd1528c5f9cdca996776c498c92767722561f9b8f9e62645d5025c8a3bf60b90f76f262aaab124e6bb1d58e1b0850722dbca2846a19b708801956e56b languageName: node linkType: hard @@ -14662,7 +13108,7 @@ __metadata: languageName: node linkType: hard -"qs@npm:^6.11.0": +"qs@npm:^6.11.2": version: 6.11.2 resolution: "qs@npm:6.11.2" dependencies: @@ -14733,13 +13179,6 @@ __metadata: languageName: node linkType: hard -"react-is@npm:^17.0.1": - version: 17.0.2 - resolution: "react-is@npm:17.0.2" - checksum: 9d6d111d8990dc98bc5402c1266a808b0459b5d54830bbea24c12d908b536df7883f268a7868cfaedde3dd9d4e0d574db456f84d2e6df9c4526f99bb4b5344d8 - languageName: node - linkType: hard - "react-is@npm:^18.0.0, react-is@npm:^18.2.0": version: 18.2.0 resolution: "react-is@npm:18.2.0" @@ -15080,18 +13519,8 @@ __metadata: version: 0.15.2 resolution: "regenerator-transform@npm:0.15.2" dependencies: - "@babel/runtime": ^7.8.4 - checksum: 20b6f9377d65954980fe044cfdd160de98df415b4bff38fbade67b3337efaf078308c4fed943067cd759827cc8cfeca9cb28ccda1f08333b85d6a2acbd022c27 - languageName: node - linkType: hard - -"regex-not@npm:^1.0.0, regex-not@npm:^1.0.2": - version: 1.0.2 - resolution: "regex-not@npm:1.0.2" - dependencies: - extend-shallow: ^3.0.2 - safe-regex: ^1.1.0 - checksum: 3081403de79559387a35ef9d033740e41818a559512668cef3d12da4e8a29ef34ee13c8ed1256b07e27ae392790172e8a15c8a06b72962fd4550476cde3d8f77 + "@babel/runtime": ^7.8.4 + checksum: 20b6f9377d65954980fe044cfdd160de98df415b4bff38fbade67b3337efaf078308c4fed943067cd759827cc8cfeca9cb28ccda1f08333b85d6a2acbd022c27 languageName: node linkType: hard @@ -15205,27 +13634,6 @@ __metadata: languageName: node linkType: hard -"remove-trailing-separator@npm:^1.0.1": - version: 1.1.0 - resolution: "remove-trailing-separator@npm:1.1.0" - checksum: d3c20b5a2d987db13e1cca9385d56ecfa1641bae143b620835ac02a6b70ab88f68f117a0021838db826c57b31373d609d52e4f31aca75fc490c862732d595419 - languageName: node - linkType: hard - -"repeat-element@npm:^1.1.2": - version: 1.1.4 - resolution: "repeat-element@npm:1.1.4" - checksum: 1edd0301b7edad71808baad226f0890ba709443f03a698224c9ee4f2494c317892dc5211b2ba8cbea7194a9ddbcac01e283bd66de0467ab24ee1fc1a3711d8a9 - languageName: node - linkType: hard - -"repeat-string@npm:^1.6.1": - version: 1.6.1 - resolution: "repeat-string@npm:1.6.1" - checksum: 1b809fc6db97decdc68f5b12c4d1a671c8e3f65ec4a40c238bc5200e44e85bcc52a54f78268ab9c29fcf5fe4f1343e805420056d1f30fa9a9ee4c2d93e3cc6c0 - languageName: node - linkType: hard - "require-directory@npm:^2.1.1": version: 2.1.1 resolution: "require-directory@npm:2.1.1" @@ -15240,13 +13648,6 @@ __metadata: languageName: node linkType: hard -"require-main-filename@npm:^2.0.0": - version: 2.0.0 - resolution: "require-main-filename@npm:2.0.0" - checksum: e9e294695fea08b076457e9ddff854e81bffbe248ed34c1eec348b7abbd22a0d02e8d75506559e2265e96978f3c4720bd77a6dad84755de8162b357eb6c778c7 - languageName: node - linkType: hard - "requires-port@npm:^1.0.0": version: 1.0.0 resolution: "requires-port@npm:1.0.0" @@ -15277,13 +13678,6 @@ __metadata: languageName: node linkType: hard -"resolve-url@npm:^0.2.1": - version: 0.2.1 - resolution: "resolve-url@npm:0.2.1" - checksum: 7b7035b9ed6e7bc7d289e90aef1eab5a43834539695dac6416ca6e91f1a94132ae4796bbd173cdacfdc2ade90b5f38a3fb6186bebc1b221cd157777a23b9ad14 - languageName: node - linkType: hard - "resolve.exports@npm:^2.0.0": version: 2.0.2 resolution: "resolve.exports@npm:2.0.2" @@ -15291,7 +13685,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.10.0, resolve@npm:^1.14.2, resolve@npm:^1.18.1, resolve@npm:^1.19.0, resolve@npm:^1.20.0": +"resolve@npm:^1.10.0, resolve@npm:^1.14.2, resolve@npm:^1.19.0, resolve@npm:^1.20.0": version: 1.22.4 resolution: "resolve@npm:1.22.4" dependencies: @@ -15304,7 +13698,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.18.1#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin": +"resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin": version: 1.22.4 resolution: "resolve@patch:resolve@npm%3A1.22.4#~builtin::version=1.22.4&hash=c3c19d" dependencies: @@ -15327,13 +13721,6 @@ __metadata: languageName: node linkType: hard -"ret@npm:~0.1.10": - version: 0.1.15 - resolution: "ret@npm:0.1.15" - checksum: d76a9159eb8c946586567bd934358dfc08a36367b3257f7a3d7255fdd7b56597235af23c6afa0d7f0254159e8051f93c918809962ebd6df24ca2a83dbe4d4151 - languageName: node - linkType: hard - "retry@npm:^0.12.0": version: 0.12.0 resolution: "retry@npm:0.12.0" @@ -15370,13 +13757,6 @@ __metadata: languageName: node linkType: hard -"rsvp@npm:^4.8.4": - version: 4.8.5 - resolution: "rsvp@npm:4.8.5" - checksum: 2d8ef30d8febdf05bdf856ccca38001ae3647e41835ca196bc1225333f79b94ae44def733121ca549ccc36209c9b689f6586905e2a043873262609744da8efc1 - languageName: node - linkType: hard - "run-async@npm:^2.4.0": version: 2.4.1 resolution: "run-async@npm:2.4.1" @@ -15412,14 +13792,14 @@ __metadata: linkType: hard "safe-array-concat@npm:^1.0.0": - version: 1.0.0 - resolution: "safe-array-concat@npm:1.0.0" + version: 1.0.1 + resolution: "safe-array-concat@npm:1.0.1" dependencies: call-bind: ^1.0.2 - get-intrinsic: ^1.2.0 + get-intrinsic: ^1.2.1 has-symbols: ^1.0.3 isarray: ^2.0.5 - checksum: f43cb98fe3b566327d0c09284de2b15fb85ae964a89495c1b1a5d50c7c8ed484190f4e5e71aacc167e16231940079b326f2c0807aea633d47cc7322f40a6b57f + checksum: 001ecf1d8af398251cbfabaf30ed66e3855127fbceee178179524b24160b49d15442f94ed6c0db0b2e796da76bb05b73bf3cc241490ec9c2b741b41d33058581 languageName: node linkType: hard @@ -15448,15 +13828,6 @@ __metadata: languageName: node linkType: hard -"safe-regex@npm:^1.1.0": - version: 1.1.0 - resolution: "safe-regex@npm:1.1.0" - dependencies: - ret: ~0.1.10 - checksum: 9a8bba57c87a841f7997b3b951e8e403b1128c1a4fd1182f40cc1a20e2d490593d7c2a21030fadfea320c8e859219019e136f678c6689ed5960b391b822f01d5 - languageName: node - linkType: hard - "safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" @@ -15464,25 +13835,6 @@ __metadata: languageName: node linkType: hard -"sane@npm:^4.0.3": - version: 4.1.0 - resolution: "sane@npm:4.1.0" - dependencies: - "@cnakazawa/watch": ^1.0.3 - anymatch: ^2.0.0 - capture-exit: ^2.0.0 - exec-sh: ^0.3.2 - execa: ^1.0.0 - fb-watchman: ^2.0.0 - micromatch: ^3.1.4 - minimist: ^1.1.1 - walker: ~1.0.5 - bin: - sane: ./src/cli.js - checksum: 97716502d456c0d38670a902a4ea943d196dcdf998d1e40532d8f3e24e25d7eddfd4c3579025a1eee8eac09a48dfd05fba61a2156c56704e7feaa450eb249f7c - languageName: node - linkType: hard - "sanitize-html@npm:~2.7.3": version: 2.7.3 resolution: "sanitize-html@npm:2.7.3" @@ -15497,15 +13849,6 @@ __metadata: languageName: node linkType: hard -"saxes@npm:^5.0.1": - version: 5.0.1 - resolution: "saxes@npm:5.0.1" - dependencies: - xmlchars: ^2.2.0 - checksum: 5636b55cf15f7cf0baa73f2797bf992bdcf75d1b39d82c0aa4608555c774368f6ac321cb641fd5f3d3ceb87805122cd47540da6a7b5960fe0dbdb8f8c263f000 - languageName: node - linkType: hard - "saxes@npm:^6.0.0": version: 6.0.0 resolution: "saxes@npm:6.0.0" @@ -15599,23 +13942,23 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.x, semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.2.1, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.3, semver@npm:^7.5.4": - version: 7.5.4 - resolution: "semver@npm:7.5.4" - dependencies: - lru-cache: ^6.0.0 +"semver@npm:^6.0.0, semver@npm:^6.3.0, semver@npm:^6.3.1": + version: 6.3.1 + resolution: "semver@npm:6.3.1" bin: semver: bin/semver.js - checksum: 12d8ad952fa353b0995bf180cdac205a4068b759a140e5d3c608317098b3575ac2f1e09182206bf2eb26120e1c0ed8fb92c48c592f6099680de56bb071423ca3 + checksum: ae47d06de28836adb9d3e25f22a92943477371292d9b665fb023fae278d345d508ca1958232af086d85e0155aee22e313e100971898bbb8d5d89b8b1d4054ca2 languageName: node linkType: hard -"semver@npm:^6.0.0, semver@npm:^6.3.0, semver@npm:^6.3.1": - version: 6.3.1 - resolution: "semver@npm:6.3.1" +"semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.2.1, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.3, semver@npm:^7.5.4": + version: 7.5.4 + resolution: "semver@npm:7.5.4" + dependencies: + lru-cache: ^6.0.0 bin: semver: bin/semver.js - checksum: ae47d06de28836adb9d3e25f22a92943477371292d9b665fb023fae278d345d508ca1958232af086d85e0155aee22e313e100971898bbb8d5d89b8b1d4054ca2 + checksum: 12d8ad952fa353b0995bf180cdac205a4068b759a140e5d3c608317098b3575ac2f1e09182206bf2eb26120e1c0ed8fb92c48c592f6099680de56bb071423ca3 languageName: node linkType: hard @@ -15635,18 +13978,6 @@ __metadata: languageName: node linkType: hard -"set-value@npm:^2.0.0, set-value@npm:^2.0.1": - version: 2.0.1 - resolution: "set-value@npm:2.0.1" - dependencies: - extend-shallow: ^2.0.1 - is-extendable: ^0.1.1 - is-plain-object: ^2.0.3 - split-string: ^3.0.1 - checksum: 09a4bc72c94641aeae950eb60dc2755943b863780fcc32e441eda964b64df5e3f50603d5ebdd33394ede722528bd55ed43aae26e9df469b4d32e2292b427b601 - languageName: node - linkType: hard - "shallow-clone@npm:^3.0.0": version: 3.0.1 resolution: "shallow-clone@npm:3.0.1" @@ -15695,13 +14026,6 @@ __metadata: languageName: node linkType: hard -"shellwords@npm:^0.1.1": - version: 0.1.1 - resolution: "shellwords@npm:0.1.1" - checksum: 8d73a5e9861f5e5f1068e2cfc39bc0002400fe58558ab5e5fa75630d2c3adf44ca1fac81957609c8320d5533e093802fcafc72904bf1a32b95de3c19a0b1c0d4 - languageName: node - linkType: hard - "side-channel@npm:^1.0.4": version: 1.0.4 resolution: "side-channel@npm:1.0.4" @@ -15713,7 +14037,7 @@ __metadata: languageName: node linkType: hard -"signal-exit@npm:3.0.7, signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": +"signal-exit@npm:3.0.7, signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" checksum: a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 @@ -15783,42 +14107,6 @@ __metadata: languageName: node linkType: hard -"snapdragon-node@npm:^2.0.1": - version: 2.1.1 - resolution: "snapdragon-node@npm:2.1.1" - dependencies: - define-property: ^1.0.0 - isobject: ^3.0.0 - snapdragon-util: ^3.0.1 - checksum: 9bb57d759f9e2a27935dbab0e4a790137adebace832b393e350a8bf5db461ee9206bb642d4fe47568ee0b44080479c8b4a9ad0ebe3712422d77edf9992a672fd - languageName: node - linkType: hard - -"snapdragon-util@npm:^3.0.1": - version: 3.0.1 - resolution: "snapdragon-util@npm:3.0.1" - dependencies: - kind-of: ^3.2.0 - checksum: 684997dbe37ec995c03fd3f412fba2b711fc34cb4010452b7eb668be72e8811a86a12938b511e8b19baf853b325178c56d8b78d655305e5cfb0bb8b21677e7b7 - languageName: node - linkType: hard - -"snapdragon@npm:^0.8.1": - version: 0.8.2 - resolution: "snapdragon@npm:0.8.2" - dependencies: - base: ^0.11.1 - debug: ^2.2.0 - define-property: ^0.2.5 - extend-shallow: ^2.0.1 - map-cache: ^0.2.2 - source-map: ^0.5.6 - source-map-resolve: ^0.5.0 - use: ^3.1.0 - checksum: a197f242a8f48b11036563065b2487e9b7068f50a20dd81d9161eca6af422174fc158b8beeadbe59ce5ef172aa5718143312b3aebaae551c124b7824387c8312 - languageName: node - linkType: hard - "socks-proxy-agent@npm:^7.0.0": version: 7.0.0 resolution: "socks-proxy-agent@npm:7.0.0" @@ -15878,19 +14166,6 @@ __metadata: languageName: node linkType: hard -"source-map-resolve@npm:^0.5.0": - version: 0.5.3 - resolution: "source-map-resolve@npm:0.5.3" - dependencies: - atob: ^2.1.2 - decode-uri-component: ^0.2.0 - resolve-url: ^0.2.1 - source-map-url: ^0.4.0 - urix: ^0.1.0 - checksum: c73fa44ac00783f025f6ad9e038ab1a2e007cd6a6b86f47fe717c3d0765b4a08d264f6966f3bd7cd9dbcd69e4832783d5472e43247775b2a550d6f2155d24bae - languageName: node - linkType: hard - "source-map-support@npm:0.5.13": version: 0.5.13 resolution: "source-map-support@npm:0.5.13" @@ -15901,7 +14176,7 @@ __metadata: languageName: node linkType: hard -"source-map-support@npm:^0.5.6, source-map-support@npm:~0.5.20": +"source-map-support@npm:~0.5.20": version: 0.5.21 resolution: "source-map-support@npm:0.5.21" dependencies: @@ -15911,14 +14186,7 @@ __metadata: languageName: node linkType: hard -"source-map-url@npm:^0.4.0": - version: 0.4.1 - resolution: "source-map-url@npm:0.4.1" - checksum: 64c5c2c77aff815a6e61a4120c309ae4cac01298d9bcbb3deb1b46a4dd4c46d4a1eaeda79ec9f684766ae80e8dc86367b89326ce9dd2b89947bd9291fc1ac08c - languageName: node - linkType: hard - -"source-map@npm:^0.5.6, source-map@npm:^0.5.7": +"source-map@npm:^0.5.7": version: 0.5.7 resolution: "source-map@npm:0.5.7" checksum: 5dc2043b93d2f194142c7f38f74a24670cd7a0063acdaf4bf01d2964b402257ae843c2a8fa822ad5b71013b5fcafa55af7421383da919752f22ff488bc553f4d @@ -15932,13 +14200,6 @@ __metadata: languageName: node linkType: hard -"source-map@npm:^0.7.3": - version: 0.7.4 - resolution: "source-map@npm:0.7.4" - checksum: 01cc5a74b1f0e1d626a58d36ad6898ea820567e87f18dfc9d24a9843a351aaa2ec09b87422589906d6ff1deed29693e176194dc88bcae7c9a852dc74b311dbf5 - languageName: node - linkType: hard - "space-separated-tokens@npm:^1.0.0": version: 1.1.5 resolution: "space-separated-tokens@npm:1.1.5" @@ -15987,15 +14248,6 @@ __metadata: languageName: node linkType: hard -"split-string@npm:^3.0.1, split-string@npm:^3.0.2": - version: 3.1.0 - resolution: "split-string@npm:3.1.0" - dependencies: - extend-shallow: ^3.0.0 - checksum: ae5af5c91bdc3633628821bde92fdf9492fa0e8a63cf6a0376ed6afde93c701422a1610916f59be61972717070119e848d10dfbbd5024b7729d6a71972d2a84c - languageName: node - linkType: hard - "split2@npm:^3.0.0": version: 3.2.2 resolution: "split2@npm:3.2.2" @@ -16039,7 +14291,7 @@ __metadata: languageName: node linkType: hard -"stack-utils@npm:^2.0.2, stack-utils@npm:^2.0.3": +"stack-utils@npm:^2.0.3": version: 2.0.6 resolution: "stack-utils@npm:2.0.6" dependencies: @@ -16048,16 +14300,6 @@ __metadata: languageName: node linkType: hard -"static-extend@npm:^0.1.1": - version: 0.1.2 - resolution: "static-extend@npm:0.1.2" - dependencies: - define-property: ^0.2.5 - object-copy: ^0.1.0 - checksum: 8657485b831f79e388a437260baf22784540417a9b29e11572c87735df24c22b84eda42107403a64b30861b2faf13df9f7fc5525d51f9d1d2303aba5cbf4e12c - languageName: node - linkType: hard - "string-length@npm:^4.0.1": version: 4.0.2 resolution: "string-length@npm:4.0.2" @@ -16091,46 +14333,46 @@ __metadata: linkType: hard "string.prototype.padend@npm:^3.0.0": - version: 3.1.4 - resolution: "string.prototype.padend@npm:3.1.4" + version: 3.1.5 + resolution: "string.prototype.padend@npm:3.1.5" dependencies: call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - checksum: 76e07238fe31dc12177428f0436b7ed6985f6a7ba97470fd53e4f0a6d9860bfee127d81957f3073cc879b434233df143825d140581e1340278053ad993c92f6c + define-properties: ^1.2.0 + es-abstract: ^1.22.1 + checksum: fc915e0b6ae1dce07a9f5088429d84fda2c1c0ac9a05bc14a602f173cc2fdef32e4893dfba5656f8f955450c9c16deebdb8d303d27613a367bc6d8508a94cd5e languageName: node linkType: hard "string.prototype.trim@npm:^1.2.7": - version: 1.2.7 - resolution: "string.prototype.trim@npm:1.2.7" + version: 1.2.8 + resolution: "string.prototype.trim@npm:1.2.8" dependencies: call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - checksum: 05b7b2d6af63648e70e44c4a8d10d8cc457536df78b55b9d6230918bde75c5987f6b8604438c4c8652eb55e4fc9725d2912789eb4ec457d6995f3495af190c09 + define-properties: ^1.2.0 + es-abstract: ^1.22.1 + checksum: 49eb1a862a53aba73c3fb6c2a53f5463173cb1f4512374b623bcd6b43ad49dd559a06fb5789bdec771a40fc4d2a564411c0a75d35fb27e76bbe738c211ecff07 languageName: node linkType: hard "string.prototype.trimend@npm:^1.0.6": - version: 1.0.6 - resolution: "string.prototype.trimend@npm:1.0.6" + version: 1.0.7 + resolution: "string.prototype.trimend@npm:1.0.7" dependencies: call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - checksum: 0fdc34645a639bd35179b5a08227a353b88dc089adf438f46be8a7c197fc3f22f8514c1c9be4629b3cd29c281582730a8cbbad6466c60f76b5f99cf2addb132e + define-properties: ^1.2.0 + es-abstract: ^1.22.1 + checksum: 2375516272fd1ba75992f4c4aa88a7b5f3c7a9ca308d963bcd5645adf689eba6f8a04ebab80c33e30ec0aefc6554181a3a8416015c38da0aa118e60ec896310c languageName: node linkType: hard "string.prototype.trimstart@npm:^1.0.6": - version: 1.0.6 - resolution: "string.prototype.trimstart@npm:1.0.6" + version: 1.0.7 + resolution: "string.prototype.trimstart@npm:1.0.7" dependencies: call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - checksum: 89080feef416621e6ef1279588994305477a7a91648d9436490d56010a1f7adc39167cddac7ce0b9884b8cdbef086987c4dcb2960209f2af8bac0d23ceff4f41 + define-properties: ^1.2.0 + es-abstract: ^1.22.1 + checksum: 13d0c2cb0d5ff9e926fa0bec559158b062eed2b68cd5be777ffba782c96b2b492944e47057274e064549b94dd27cf81f48b27a31fee8af5b574cff253e7eb613 languageName: node linkType: hard @@ -16184,13 +14426,6 @@ __metadata: languageName: node linkType: hard -"strip-eof@npm:^1.0.0": - version: 1.0.0 - resolution: "strip-eof@npm:1.0.0" - checksum: 40bc8ddd7e072f8ba0c2d6d05267b4e0a4800898c3435b5fb5f5a21e6e47dfaff18467e7aa0d1844bb5d6274c3097246595841fbfeb317e541974ee992cac506 - languageName: node - linkType: hard - "strip-final-newline@npm:^2.0.0": version: 2.0.0 resolution: "strip-final-newline@npm:2.0.0" @@ -16236,7 +14471,7 @@ __metadata: languageName: node linkType: hard -"style-mod@npm:^4.0.0": +"style-mod@npm:^4.0.0, style-mod@npm:^4.1.0": version: 4.1.0 resolution: "style-mod@npm:4.1.0" checksum: 8402b14ca11113a3640d46b3cf7ba49f05452df7846bc5185a3535d9b6a64a3019e7fb636b59ccbb7816aeb0725b24723e77a85b05612a9360e419958e13b4e6 @@ -16385,7 +14620,7 @@ __metadata: languageName: node linkType: hard -"supports-hyperlinks@npm:^2.0.0, supports-hyperlinks@npm:^2.3.0": +"supports-hyperlinks@npm:^2.3.0": version: 2.3.0 resolution: "supports-hyperlinks@npm:2.3.0" dependencies: @@ -16464,8 +14699,8 @@ __metadata: linkType: hard "tar@npm:^6.1.11, tar@npm:^6.1.2": - version: 6.1.15 - resolution: "tar@npm:6.1.15" + version: 6.2.0 + resolution: "tar@npm:6.2.0" dependencies: chownr: ^2.0.0 fs-minipass: ^2.0.0 @@ -16473,7 +14708,7 @@ __metadata: minizlib: ^2.1.1 mkdirp: ^1.0.3 yallist: ^4.0.0 - checksum: f23832fceeba7578bf31907aac744ae21e74a66f4a17a9e94507acf460e48f6db598c7023882db33bab75b80e027c21f276d405e4a0322d58f51c7088d428268 + checksum: db4d9fe74a2082c3a5016630092c54c8375ff3b280186938cfd104f2e089c4fd9bad58688ef6be9cf186a889671bf355c7cda38f09bbf60604b281715ca57f5c languageName: node linkType: hard @@ -16504,16 +14739,6 @@ __metadata: languageName: node linkType: hard -"terminal-link@npm:^2.0.0": - version: 2.1.1 - resolution: "terminal-link@npm:2.1.1" - dependencies: - ansi-escapes: ^4.2.1 - supports-hyperlinks: ^2.0.0 - checksum: ce3d2cd3a438c4a9453947aa664581519173ea40e77e2534d08c088ee6dda449eabdbe0a76d2a516b8b73c33262fedd10d5270ccf7576ae316e3db170ce6562f - languageName: node - linkType: hard - "terser-webpack-plugin@npm:^5.3.7": version: 5.3.9 resolution: "terser-webpack-plugin@npm:5.3.9" @@ -16537,8 +14762,8 @@ __metadata: linkType: hard "terser@npm:^5.16.8": - version: 5.19.2 - resolution: "terser@npm:5.19.2" + version: 5.19.4 + resolution: "terser@npm:5.19.4" dependencies: "@jridgewell/source-map": ^0.3.3 acorn: ^8.8.2 @@ -16546,7 +14771,7 @@ __metadata: source-map-support: ~0.5.20 bin: terser: bin/terser - checksum: e059177775b4d4f4cff219ad89293175aefbd1b081252270444dc83e42a2c5f07824eb2a85eae6e22ef6eb7ef04b21af36dd7d1dd7cfb93912310e57d416a205 + checksum: 09273ce7d3fbe8fea0ec2603ad1c06cc304838bdac42bbfe77835b0b0b6c4a894054575ca518fe16c95d5c401574a8c703f4fde97da45f1c972ea568e6ecafda languageName: node linkType: hard @@ -16575,13 +14800,6 @@ __metadata: languageName: node linkType: hard -"throat@npm:^5.0.0": - version: 5.0.0 - resolution: "throat@npm:5.0.0" - checksum: 031ff7f4431618036c1dedd99c8aa82f5c33077320a8358ed829e84b320783781d1869fe58e8f76e948306803de966f5f7573766a437562c9f5c033297ad2fe2 - languageName: node - linkType: hard - "through2@npm:^2.0.0": version: 2.0.5 resolution: "through2@npm:2.0.5" @@ -16640,25 +14858,6 @@ __metadata: languageName: node linkType: hard -"to-object-path@npm:^0.3.0": - version: 0.3.0 - resolution: "to-object-path@npm:0.3.0" - dependencies: - kind-of: ^3.0.2 - checksum: 9425effee5b43e61d720940fa2b889623f77473d459c2ce3d4a580a4405df4403eec7be6b857455908070566352f9e2417304641ed158dda6f6a365fe3e66d70 - languageName: node - linkType: hard - -"to-regex-range@npm:^2.1.0": - version: 2.1.1 - resolution: "to-regex-range@npm:2.1.1" - dependencies: - is-number: ^3.0.0 - repeat-string: ^1.6.1 - checksum: 46093cc14be2da905cc931e442d280b2e544e2bfdb9a24b3cf821be8d342f804785e5736c108d5be026021a05d7b38144980a61917eee3c88de0a5e710e10320 - languageName: node - linkType: hard - "to-regex-range@npm:^5.0.1": version: 5.0.1 resolution: "to-regex-range@npm:5.0.1" @@ -16668,19 +14867,7 @@ __metadata: languageName: node linkType: hard -"to-regex@npm:^3.0.1, to-regex@npm:^3.0.2": - version: 3.0.2 - resolution: "to-regex@npm:3.0.2" - dependencies: - define-property: ^2.0.2 - extend-shallow: ^3.0.2 - regex-not: ^1.0.2 - safe-regex: ^1.1.0 - checksum: 4ed4a619059b64e204aad84e4e5f3ea82d97410988bcece7cf6cbfdbf193d11bff48cf53842d88b8bb00b1bfc0d048f61f20f0709e6f393fd8fe0122662d9db4 - languageName: node - linkType: hard - -"tough-cookie@npm:^4.0.0, tough-cookie@npm:^4.1.2": +"tough-cookie@npm:^4.1.2": version: 4.1.3 resolution: "tough-cookie@npm:4.1.3" dependencies: @@ -16745,30 +14932,7 @@ __metadata: languageName: node linkType: hard -"ts-jest@npm:^26.0.0": - version: 26.5.6 - resolution: "ts-jest@npm:26.5.6" - dependencies: - bs-logger: 0.x - buffer-from: 1.x - fast-json-stable-stringify: 2.x - jest-util: ^26.1.0 - json5: 2.x - lodash: 4.x - make-error: 1.x - mkdirp: 1.x - semver: 7.x - yargs-parser: 20.x - peerDependencies: - jest: ">=26 <27" - typescript: ">=3.8 <5.0" - bin: - ts-jest: cli.js - checksum: 6f65ad4fe67ab3f0fd4c7f9954acbee863af05b2b3f88dd0f490bbcdc58002960fac908b2cb9f009ec14da6fe13cb00a39e291260d6e555abe72448d1c0a017f - languageName: node - linkType: hard - -"ts-jest@npm:^29.1.0": +"ts-jest@npm:^29, ts-jest@npm:^29.1.0": version: 29.1.1 resolution: "ts-jest@npm:29.1.1" dependencies: @@ -16981,15 +15145,6 @@ __metadata: languageName: node linkType: hard -"typedarray-to-buffer@npm:^3.1.5": - version: 3.1.5 - resolution: "typedarray-to-buffer@npm:3.1.5" - dependencies: - is-typedarray: ^1.0.0 - checksum: 99c11aaa8f45189fcfba6b8a4825fd684a321caa9bd7a76a27cf0c7732c174d198b99f449c52c3818107430b5f41c0ccbbfb75cb2ee3ca4a9451710986d61a60 - languageName: node - linkType: hard - "typedarray@npm:^0.0.6": version: 0.0.6 resolution: "typedarray@npm:0.0.6" @@ -17114,18 +15269,6 @@ __metadata: languageName: node linkType: hard -"union-value@npm:^1.0.0": - version: 1.0.1 - resolution: "union-value@npm:1.0.1" - dependencies: - arr-union: ^3.1.0 - get-value: ^2.0.6 - is-extendable: ^0.1.1 - set-value: ^2.0.1 - checksum: a3464097d3f27f6aa90cf103ed9387541bccfc006517559381a10e0dffa62f465a9d9a09c9b9c3d26d0f4cbe61d4d010e2fbd710fd4bf1267a768ba8a774b0ba - languageName: node - linkType: hard - "unique-filename@npm:^2.0.0": version: 2.0.1 resolution: "unique-filename@npm:2.0.1" @@ -17267,16 +15410,6 @@ __metadata: languageName: node linkType: hard -"unset-value@npm:^1.0.0": - version: 1.0.0 - resolution: "unset-value@npm:1.0.0" - dependencies: - has-value: ^0.3.1 - isobject: ^3.0.0 - checksum: 5990ecf660672be2781fc9fb322543c4aa592b68ed9a3312fa4df0e9ba709d42e823af090fc8f95775b4cd2c9a5169f7388f0cec39238b6d0d55a69fc2ab6b29 - languageName: node - linkType: hard - "upath@npm:2.0.1, upath@npm:^2.0.1": version: 2.0.1 resolution: "upath@npm:2.0.1" @@ -17307,13 +15440,6 @@ __metadata: languageName: node linkType: hard -"urix@npm:^0.1.0": - version: 0.1.0 - resolution: "urix@npm:0.1.0" - checksum: 4c076ecfbf3411e888547fe844e52378ab5ada2d2f27625139011eada79925e77f7fbf0e4016d45e6a9e9adb6b7e64981bd49b22700c7c401c5fc15f423303b3 - languageName: node - linkType: hard - "url-parse@npm:^1.5.3, url-parse@npm:~1.5.1, url-parse@npm:~1.5.4": version: 1.5.10 resolution: "url-parse@npm:1.5.10" @@ -17325,12 +15451,12 @@ __metadata: linkType: hard "url@npm:^0.11.0": - version: 0.11.1 - resolution: "url@npm:0.11.1" + version: 0.11.2 + resolution: "url@npm:0.11.2" dependencies: punycode: ^1.4.1 - qs: ^6.11.0 - checksum: a7de4b37bbcbe60ef199acda4ce437ef843c0ef3a4b34ec3e3d97e0446a5f50dc7bfeafbe33ad118cf4e5aa04805e1328f0d0126e254f2b77bb8498fa395c596 + qs: ^6.11.2 + checksum: da5943ab43f4df75af5ed96d8465e3084fc2ea0f01bc73e98fb60899777a644541ea0022451371a419283a27a8bbd1809292212fb4c78a0b4a70f15fd89b8205 languageName: node linkType: hard @@ -17343,13 +15469,6 @@ __metadata: languageName: node linkType: hard -"use@npm:^3.1.0": - version: 3.1.1 - resolution: "use@npm:3.1.1" - checksum: 08a130289f5238fcbf8f59a18951286a6e660d17acccc9d58d9b69dfa0ee19aa038e8f95721b00b432c36d1629a9e32a464bf2e7e0ae6a244c42ddb30bdd8b33 - languageName: node - linkType: hard - "util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" @@ -17357,7 +15476,7 @@ __metadata: languageName: node linkType: hard -"uuid@npm:8.3.2, uuid@npm:^8.3.0, uuid@npm:^8.3.2": +"uuid@npm:8.3.2, uuid@npm:^8.3.2": version: 8.3.2 resolution: "uuid@npm:8.3.2" bin: @@ -17394,17 +15513,6 @@ __metadata: languageName: node linkType: hard -"v8-to-istanbul@npm:^7.0.0": - version: 7.1.2 - resolution: "v8-to-istanbul@npm:7.1.2" - dependencies: - "@types/istanbul-lib-coverage": ^2.0.1 - convert-source-map: ^1.6.0 - source-map: ^0.7.3 - checksum: e52b48764f55aed62ff87f2b5f710c874f992cd1313eac8f438bf65aeeb0689153d85bb76e39514fd90ba3521d6ebea929a8ae1339b6d7b0cf18fb0ed13d8b40 - languageName: node - linkType: hard - "v8-to-istanbul@npm:^9.0.1": version: 9.1.0 resolution: "v8-to-istanbul@npm:9.1.0" @@ -17565,15 +15673,6 @@ __metadata: languageName: node linkType: hard -"w3c-hr-time@npm:^1.0.2": - version: 1.0.2 - resolution: "w3c-hr-time@npm:1.0.2" - dependencies: - browser-process-hrtime: ^1.0.0 - checksum: ec3c2dacbf8050d917bbf89537a101a08c2e333b4c19155f7d3bedde43529d4339db6b3d049d9610789cb915f9515f8be037e0c54c079e9d4735c50b37ed52b9 - languageName: node - linkType: hard - "w3c-keyname@npm:^2.2.4": version: 2.2.8 resolution: "w3c-keyname@npm:2.2.8" @@ -17581,15 +15680,6 @@ __metadata: languageName: node linkType: hard -"w3c-xmlserializer@npm:^2.0.0": - version: 2.0.0 - resolution: "w3c-xmlserializer@npm:2.0.0" - dependencies: - xml-name-validator: ^3.0.0 - checksum: ae25c51cf71f1fb2516df1ab33a481f83461a117565b95e3d0927432522323f93b1b2846cbb60196d337970c421adb604fc2d0d180c6a47a839da01db5b9973b - languageName: node - linkType: hard - "w3c-xmlserializer@npm:^4.0.0": version: 4.0.0 resolution: "w3c-xmlserializer@npm:4.0.0" @@ -17606,7 +15696,7 @@ __metadata: languageName: node linkType: hard -"walker@npm:^1.0.7, walker@npm:^1.0.8, walker@npm:~1.0.5": +"walker@npm:^1.0.8": version: 1.0.8 resolution: "walker@npm:1.0.8" dependencies: @@ -17657,13 +15747,6 @@ __metadata: languageName: node linkType: hard -"webidl-conversions@npm:^5.0.0": - version: 5.0.0 - resolution: "webidl-conversions@npm:5.0.0" - checksum: ccf1ec2ca7c0b5671e5440ace4a66806ae09c49016ab821481bec0c05b1b82695082dc0a27d1fe9d804d475a408ba0c691e6803fd21be608e710955d4589cd69 - languageName: node - linkType: hard - "webidl-conversions@npm:^6.1.0": version: 6.1.0 resolution: "webidl-conversions@npm:6.1.0" @@ -17774,15 +15857,6 @@ __metadata: languageName: node linkType: hard -"whatwg-encoding@npm:^1.0.5": - version: 1.0.5 - resolution: "whatwg-encoding@npm:1.0.5" - dependencies: - iconv-lite: 0.4.24 - checksum: 5be4efe111dce29ddee3448d3915477fcc3b28f991d9cf1300b4e50d6d189010d47bca2f51140a844cf9b726e8f066f4aee72a04d687bfe4f2ee2767b2f5b1e6 - languageName: node - linkType: hard - "whatwg-encoding@npm:^2.0.0": version: 2.0.0 resolution: "whatwg-encoding@npm:2.0.0" @@ -17826,7 +15900,7 @@ __metadata: languageName: node linkType: hard -"whatwg-url@npm:^8.0.0, whatwg-url@npm:^8.5.0": +"whatwg-url@npm:^8.0.0": version: 8.7.0 resolution: "whatwg-url@npm:8.7.0" dependencies: @@ -17850,13 +15924,6 @@ __metadata: languageName: node linkType: hard -"which-module@npm:^2.0.0": - version: 2.0.1 - resolution: "which-module@npm:2.0.1" - checksum: 1967b7ce17a2485544a4fdd9063599f0f773959cca24176dbe8f405e55472d748b7c549cd7920ff6abb8f1ab7db0b0f1b36de1a21c57a8ff741f4f1e792c52be - languageName: node - linkType: hard - "which-typed-array@npm:^1.1.10, which-typed-array@npm:^1.1.11": version: 1.1.11 resolution: "which-typed-array@npm:1.1.11" @@ -17949,7 +16016,7 @@ __metadata: languageName: node linkType: hard -"wrap-ansi@npm:^6.0.1, wrap-ansi@npm:^6.2.0": +"wrap-ansi@npm:^6.0.1": version: 6.2.0 resolution: "wrap-ansi@npm:6.2.0" dependencies: @@ -17999,18 +16066,6 @@ __metadata: languageName: node linkType: hard -"write-file-atomic@npm:^3.0.0": - version: 3.0.3 - resolution: "write-file-atomic@npm:3.0.3" - dependencies: - imurmurhash: ^0.1.4 - is-typedarray: ^1.0.0 - signal-exit: ^3.0.2 - typedarray-to-buffer: ^3.1.5 - checksum: c55b24617cc61c3a4379f425fc62a386cc51916a9b9d993f39734d005a09d5a4bb748bc251f1304e7abd71d0a26d339996c275955f527a131b1dcded67878280 - languageName: node - linkType: hard - "write-file-atomic@npm:^4.0.2": version: 4.0.2 resolution: "write-file-atomic@npm:4.0.2" @@ -18081,8 +16136,8 @@ __metadata: linkType: hard "ws@npm:^8.11.0": - version: 8.13.0 - resolution: "ws@npm:8.13.0" + version: 8.14.1 + resolution: "ws@npm:8.14.1" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ">=5.0.2" @@ -18091,14 +16146,7 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 53e991bbf928faf5dc6efac9b8eb9ab6497c69feeb94f963d648b7a3530a720b19ec2e0ec037344257e05a4f35bd9ad04d9de6f289615ffb133282031b18c61c - languageName: node - linkType: hard - -"xml-name-validator@npm:^3.0.0": - version: 3.0.0 - resolution: "xml-name-validator@npm:3.0.0" - checksum: b3ac459afed783c285bb98e4960bd1f3ba12754fd4f2320efa0f9181ca28928c53cc75ca660d15d205e81f92304419afe94c531c7cfb3e0649aa6d140d53ecb0 + checksum: 9e310be2b0ff69e1f87d8c6d093ecd17a1ed4c37f281d17c35e8c30e2bd116401775b3d503249651374e6e0e1e9905db62fff096b694371c77561aee06bc3466 languageName: node linkType: hard @@ -18174,13 +16222,6 @@ __metadata: languageName: node linkType: hard -"y18n@npm:^4.0.0": - version: 4.0.3 - resolution: "y18n@npm:4.0.3" - checksum: 014dfcd9b5f4105c3bb397c1c8c6429a9df004aa560964fb36732bfb999bfe83d45ae40aeda5b55d21b1ee53d8291580a32a756a443e064317953f08025b1aa4 - languageName: node - linkType: hard - "y18n@npm:^5.0.5": version: 5.0.8 resolution: "y18n@npm:5.0.8" @@ -18216,13 +16257,6 @@ __metadata: languageName: node linkType: hard -"yargs-parser@npm:20.x, yargs-parser@npm:^20.2.2, yargs-parser@npm:^20.2.3": - version: 20.2.9 - resolution: "yargs-parser@npm:20.2.9" - checksum: 8bb69015f2b0ff9e17b2c8e6bfe224ab463dd00ca211eece72a4cd8a906224d2703fb8a326d36fdd0e68701e201b2a60ed7cf81ce0fd9b3799f9fe7745977ae3 - languageName: node - linkType: hard - "yargs-parser@npm:21.1.1, yargs-parser@npm:^21.0.1, yargs-parser@npm:^21.1.1": version: 21.1.1 resolution: "yargs-parser@npm:21.1.1" @@ -18230,13 +16264,10 @@ __metadata: languageName: node linkType: hard -"yargs-parser@npm:^18.1.2": - version: 18.1.3 - resolution: "yargs-parser@npm:18.1.3" - dependencies: - camelcase: ^5.0.0 - decamelize: ^1.2.0 - checksum: 60e8c7d1b85814594d3719300ecad4e6ae3796748b0926137bfec1f3042581b8646d67e83c6fc80a692ef08b8390f21ddcacb9464476c39bbdf52e34961dd4d9 +"yargs-parser@npm:^20.2.2, yargs-parser@npm:^20.2.3": + version: 20.2.9 + resolution: "yargs-parser@npm:20.2.9" + checksum: 8bb69015f2b0ff9e17b2c8e6bfe224ab463dd00ca211eece72a4cd8a906224d2703fb8a326d36fdd0e68701e201b2a60ed7cf81ce0fd9b3799f9fe7745977ae3 languageName: node linkType: hard @@ -18255,25 +16286,6 @@ __metadata: languageName: node linkType: hard -"yargs@npm:^15.4.1": - version: 15.4.1 - resolution: "yargs@npm:15.4.1" - dependencies: - cliui: ^6.0.0 - decamelize: ^1.2.0 - find-up: ^4.1.0 - get-caller-file: ^2.0.1 - require-directory: ^2.1.1 - require-main-filename: ^2.0.0 - set-blocking: ^2.0.0 - string-width: ^4.2.0 - which-module: ^2.0.0 - y18n: ^4.0.0 - yargs-parser: ^18.1.2 - checksum: 40b974f508d8aed28598087720e086ecd32a5fd3e945e95ea4457da04ee9bdb8bdd17fd91acff36dc5b7f0595a735929c514c40c402416bbb87c03f6fb782373 - languageName: node - linkType: hard - "yargs@npm:^17.3.1, yargs@npm:^17.6.2": version: 17.7.2 resolution: "yargs@npm:17.7.2"