diff --git a/docs/docs/guides/core-types/datasets.md b/docs/docs/guides/core-types/datasets.md index c2b0b716c6e..887c29ab643 100644 --- a/docs/docs/guides/core-types/datasets.md +++ b/docs/docs/guides/core-types/datasets.md @@ -1,8 +1,3 @@ ---- -sidebar_position: 2 -hide_table_of_contents: true ---- - # Datasets `Dataset`s enable you to collect examples for evaluation and automatically track versions for accurate comparisons. Use this to download the latest version locally with a simple API. diff --git a/docs/docs/guides/core-types/evaluations.md b/docs/docs/guides/core-types/evaluations.md index 6f3354d8944..e2702d0d75a 100644 --- a/docs/docs/guides/core-types/evaluations.md +++ b/docs/docs/guides/core-types/evaluations.md @@ -1,8 +1,3 @@ ---- -sidebar_position: 4 -hide_table_of_contents: true ---- - # Evaluation Evaluation-driven development helps you reliably iterate on an application. The `Evaluation` class is designed to assess the performance of a `Model` on a given `Dataset` or set of examples using scoring functions. diff --git a/docs/docs/guides/core-types/models.md b/docs/docs/guides/core-types/models.md index 1825379539c..b35ea4e3d16 100644 --- a/docs/docs/guides/core-types/models.md +++ b/docs/docs/guides/core-types/models.md @@ -1,8 +1,3 @@ ---- -sidebar_position: 3 -hide_table_of_contents: true ---- - # Models A `Model` is a combination of data (which can include configuration, trained model weights, or other information) and code that defines how the model operates. By structuring your code to be compatible with this API, you benefit from a structured way to version your application so you can more systematically keep track of your experiments. diff --git a/docs/docs/guides/integrations/anthropic.md b/docs/docs/guides/integrations/anthropic.md index 99ae0f2ff2c..2d5410230b8 100644 --- a/docs/docs/guides/integrations/anthropic.md +++ b/docs/docs/guides/integrations/anthropic.md @@ -1,8 +1,3 @@ ---- -sidebar_position: 1 -hide_table_of_contents: true ---- - # Anthropic Weave automatically tracks and logs LLM calls made via the [Anthropic Python library](https://github.com/anthropics/anthropic-sdk-python), after `weave.init()` is called. diff --git a/docs/docs/guides/integrations/cohere.md b/docs/docs/guides/integrations/cohere.md index 66110974bcf..9ff98bfc7fe 100644 --- a/docs/docs/guides/integrations/cohere.md +++ b/docs/docs/guides/integrations/cohere.md @@ -1,8 +1,3 @@ ---- -sidebar_position: 1 -hide_table_of_contents: true ---- - # Cohere Weave automatically tracks and logs LLM calls made via the [Cohere Python library](https://github.com/cohere-ai/cohere-python) after `weave.init()` is called. diff --git a/docs/docs/guides/integrations/dspy.md b/docs/docs/guides/integrations/dspy.md index 4aa067de7a4..75ac4ec6fa1 100644 --- a/docs/docs/guides/integrations/dspy.md +++ b/docs/docs/guides/integrations/dspy.md @@ -1,8 +1,3 @@ ---- -sidebar_position: 2 -hide_table_of_contents: true ---- - # DSPy [DSPy](https://dspy-docs.vercel.app/) is a framework for algorithmically optimizing LM prompts and weights, especially when LMs are used one or more times within a pipeline. Weave automatically tracks and logs calls made using DSPy modules and functions. diff --git a/docs/docs/guides/integrations/google-gemini.md b/docs/docs/guides/integrations/google-gemini.md index 89c657fa5b9..409700190f2 100644 --- a/docs/docs/guides/integrations/google-gemini.md +++ b/docs/docs/guides/integrations/google-gemini.md @@ -1,8 +1,3 @@ ---- -sidebar_position: 1 -hide_table_of_contents: true ---- - # Google Gemini Google offers two ways of calling Gemini via API: diff --git a/docs/docs/guides/integrations/groq.md b/docs/docs/guides/integrations/groq.md index 41f6e1c8dd0..f73004d66ac 100644 --- a/docs/docs/guides/integrations/groq.md +++ b/docs/docs/guides/integrations/groq.md @@ -1,8 +1,3 @@ ---- -sidebar_position: 2 -hide_table_of_contents: true ---- - # Groq [Groq](https://groq.com/) is the AI infrastructure company that delivers fast AI inference. The LPU™ Inference Engine by Groq is a hardware and software platform that delivers exceptional compute speed, quality, and energy efficiency. Weave automatically tracks and logs calls made using Groq chat completion calls. diff --git a/docs/docs/guides/integrations/langchain.md b/docs/docs/guides/integrations/langchain.md index 6116af81128..b382e793e70 100644 --- a/docs/docs/guides/integrations/langchain.md +++ b/docs/docs/guides/integrations/langchain.md @@ -1,8 +1,3 @@ ---- -sidebar_position: 2 -hide_table_of_contents: true ---- - # LangChain Weave is designed to make tracking and logging all calls made through the [LangChain Python library](https://github.com/langchain-ai/langchain) effortless. diff --git a/docs/docs/guides/integrations/litellm.md b/docs/docs/guides/integrations/litellm.md index b4ada478f84..72a3a3bdd06 100644 --- a/docs/docs/guides/integrations/litellm.md +++ b/docs/docs/guides/integrations/litellm.md @@ -1,8 +1,3 @@ ---- -sidebar_position: 1 -hide_table_of_contents: true ---- - # LiteLLM Weave automatically tracks and logs LLM calls made via LiteLLM, after `weave.init()` is called. diff --git a/docs/docs/guides/integrations/llamaindex.md b/docs/docs/guides/integrations/llamaindex.md index a429ef1e323..95f9c57a407 100644 --- a/docs/docs/guides/integrations/llamaindex.md +++ b/docs/docs/guides/integrations/llamaindex.md @@ -1,8 +1,3 @@ ---- -sidebar_position: 0 -hide_table_of_contents: true ---- - # LlamaIndex Weave is designed to simplify the tracking and logging of all calls made through the [LlamaIndex Python library](https://github.com/run-llama/llama_index). diff --git a/docs/docs/guides/integrations/local_models.md b/docs/docs/guides/integrations/local_models.md index 3449b33adb4..090d22a3f76 100644 --- a/docs/docs/guides/integrations/local_models.md +++ b/docs/docs/guides/integrations/local_models.md @@ -1,8 +1,3 @@ ---- -sidebar_position: 0 -hide_table_of_contents: true ---- - # Local Models Many developers download and run open source models like LLama-3, Mixtral, Gemma, Phi and more locally. There are quite a few ways of running these models locally and Weave supports a few of them out of the box, as long as they support OpenAI SDK compatibility. diff --git a/docs/docs/guides/integrations/mistral.md b/docs/docs/guides/integrations/mistral.md index ec8233f8675..b02881d0edf 100644 --- a/docs/docs/guides/integrations/mistral.md +++ b/docs/docs/guides/integrations/mistral.md @@ -1,8 +1,3 @@ ---- -sidebar_position: 1 -hide_table_of_contents: true ---- - # MistralAI Weave automatically tracks and logs LLM calls made via the [MistralAI Python library](https://github.com/mistralai/client-python). diff --git a/docs/docs/guides/integrations/openai.md b/docs/docs/guides/integrations/openai.md index ad40929dad7..bb8d3a4778f 100644 --- a/docs/docs/guides/integrations/openai.md +++ b/docs/docs/guides/integrations/openai.md @@ -1,8 +1,3 @@ ---- -sidebar_position: 0 -hide_table_of_contents: true ---- - # OpenAI ## Tracing diff --git a/docs/docs/guides/integrations/openrouter.md b/docs/docs/guides/integrations/openrouter.md index 71cc2f44c99..60af2b5d3c2 100644 --- a/docs/docs/guides/integrations/openrouter.md +++ b/docs/docs/guides/integrations/openrouter.md @@ -1,8 +1,3 @@ ---- -sidebar_position: 1 -hide_table_of_contents: true ---- - # Open Router Openrouter.ai is a unified interface for many LLMs, supporting both foundational models like OpenAI GPT-4, Anthropic Claude, Google Gemini but also open source models like LLama-3, Mixtral and [many more](https://openrouter.ai/models), some models are even offered for free. @@ -47,4 +42,4 @@ response = chat_completion.choices[0].message.content print("Model response:\n", response) ``` -While this is a simple example to get started, see our [OpenAI](/guides/integrations/openai#track-your-own-ops) guide for more details on how to integrate Weave with your own functions for more complex use cases. \ No newline at end of file +While this is a simple example to get started, see our [OpenAI](/guides/integrations/openai#track-your-own-ops) guide for more details on how to integrate Weave with your own functions for more complex use cases. diff --git a/docs/docs/guides/integrations/together_ai.md b/docs/docs/guides/integrations/together_ai.md index bcfab171d99..a961c56885c 100644 --- a/docs/docs/guides/integrations/together_ai.md +++ b/docs/docs/guides/integrations/together_ai.md @@ -1,8 +1,3 @@ ---- -sidebar_position: 0 -hide_table_of_contents: true ---- - # Together AI Together AI is a platform for building and finetuning generative AI models, focusing on Open Source LLMs, and allowing customers to fine-tune and host their own models. diff --git a/docs/docs/guides/tools/deploy.md b/docs/docs/guides/tools/deploy.md index bcdc335a1a5..1c2cac6dc73 100644 --- a/docs/docs/guides/tools/deploy.md +++ b/docs/docs/guides/tools/deploy.md @@ -1,8 +1,3 @@ ---- -sidebar_position: 1 -hide_table_of_contents: true ---- - # Deploy ## Deploy to GCP diff --git a/docs/docs/guides/tools/serve.md b/docs/docs/guides/tools/serve.md index 59587a4eb6b..d7ab5a93eae 100644 --- a/docs/docs/guides/tools/serve.md +++ b/docs/docs/guides/tools/serve.md @@ -1,8 +1,3 @@ ---- -sidebar_position: 0 -hide_table_of_contents: true ---- - # Serve Given a Weave ref to any Weave Model you can run: diff --git a/docs/docs/guides/tracking/feedback.md b/docs/docs/guides/tracking/feedback.md index 9a7789077fe..645c1399f17 100644 --- a/docs/docs/guides/tracking/feedback.md +++ b/docs/docs/guides/tracking/feedback.md @@ -1,8 +1,3 @@ ---- -sidebar_position: 3 -hide_table_of_contents: true ---- - # Feedback Evaluating LLM applications automatically is challenging. Teams often rely on direct user feedback, particularly from domain experts, who assess the content quality using simple indicators such as thumbs up or down. Developers also actively identify and resolve content issues. diff --git a/docs/docs/guides/tracking/objects.md b/docs/docs/guides/tracking/objects.md index 94d2b25d98f..9241fc2484d 100644 --- a/docs/docs/guides/tracking/objects.md +++ b/docs/docs/guides/tracking/objects.md @@ -1,8 +1,3 @@ ---- -sidebar_position: 0 -hide_table_of_contents: true ---- - # Objects Weave's serialization layer saves and versions Python objects. diff --git a/docs/docs/guides/tracking/ops.md b/docs/docs/guides/tracking/ops.md index e1a69064d62..a3fbbe3ade5 100644 --- a/docs/docs/guides/tracking/ops.md +++ b/docs/docs/guides/tracking/ops.md @@ -1,8 +1,3 @@ ---- -sidebar_position: 1 -hide_table_of_contents: true ---- - # Ops A Weave op is a versioned function that automatically logs all calls. diff --git a/docs/docs/guides/tracking/tracing.md b/docs/docs/guides/tracking/tracing.md index 244b442008d..999db903da7 100644 --- a/docs/docs/guides/tracking/tracing.md +++ b/docs/docs/guides/tracking/tracing.md @@ -1,8 +1,3 @@ ---- -sidebar_position: 2 -hide_table_of_contents: true ---- - # Tracing Tracing is a powerful feature in Weave that allows you to track the inputs and outputs of functions seamlessly. Follow these steps to get started: diff --git a/docs/docs/introduction.md b/docs/docs/introduction.md index 71dd8944db0..d364cd81aaf 100644 --- a/docs/docs/introduction.md +++ b/docs/docs/introduction.md @@ -1,7 +1,5 @@ --- slug: / -sidebar_position: 1 -hide_table_of_contents: true --- # Introduction diff --git a/docs/docs/quickstart.md b/docs/docs/quickstart.md index 11292325e2d..daa70bed860 100644 --- a/docs/docs/quickstart.md +++ b/docs/docs/quickstart.md @@ -1,8 +1,3 @@ ---- -sidebar_position: 1 -hide_table_of_contents: true ---- - # Track LLM inputs & outputs diff --git a/docs/docs/tutorial-eval.md b/docs/docs/tutorial-eval.md index 45614df4673..929d29ab56a 100644 --- a/docs/docs/tutorial-eval.md +++ b/docs/docs/tutorial-eval.md @@ -1,8 +1,3 @@ ---- -sidebar_position: 2 -hide_table_of_contents: true ---- - # Tutorial: Build an Evaluation pipeline To iterate on an application, we need a way to evaluate if it's improving. To do so, a common practice is to test it against the same set of examples when there is a change. Weave has a first-class way to track evaluations with `Model` & `Evaluation` classes. We have built the APIs to make minimal assumptions to allow for the flexibility to support a wide array of use-cases. diff --git a/docs/docs/tutorial-rag.md b/docs/docs/tutorial-rag.md index 8bd30c4c782..80aae959d8d 100644 --- a/docs/docs/tutorial-rag.md +++ b/docs/docs/tutorial-rag.md @@ -1,8 +1,3 @@ ---- -sidebar_position: 3 -hide_table_of_contents: true ---- - # Tutorial: Model-Based Evaluation of RAG applications Retrieval Augmented Generation (RAG) is a common way of building Generative AI applications that have access to custom knowledge bases. diff --git a/docs/docs/tutorial-tracing_2.md b/docs/docs/tutorial-tracing_2.md index 33af0044d80..108571cf650 100644 --- a/docs/docs/tutorial-tracing_2.md +++ b/docs/docs/tutorial-tracing_2.md @@ -1,8 +1,3 @@ ---- -sidebar_position: 1 -hide_table_of_contents: true ---- - # Track data flows and app metadata In the [Track LLM inputs & outputs](/quickstart) tutorial, the basics of tracking the inputs and outputs of your LLMs was covered. diff --git a/docs/docs/tutorial-weave_models.md b/docs/docs/tutorial-weave_models.md index 43fe4495805..107410ebe53 100644 --- a/docs/docs/tutorial-weave_models.md +++ b/docs/docs/tutorial-weave_models.md @@ -1,8 +1,3 @@ ---- -sidebar_position: 1 -hide_table_of_contents: true ---- - # App versioning Tracking the [inputs, outputs, metadata](/quickstart) as well as [data flowing through your app](/tutorial-tracing_2) is critical to understanding the performance of your system. However **versioning your app over time** is also critical to understand how modifications to your code or app attributes change your outputs. Weave's `Model` class is how these changes can be tracked in Weave. diff --git a/docs/docs_old/CONTRIBUTING.md b/docs/docs_old/CONTRIBUTING.md deleted file mode 100644 index ae8d8d0d95f..00000000000 --- a/docs/docs_old/CONTRIBUTING.md +++ /dev/null @@ -1,102 +0,0 @@ -# Weave Contribution Guide - ---- - -Hello, fellow coder! 👋 - -First off, thank you for considering contributing to Weave, the performant, interactive data exploration toolkit by Weights and Biases. Open-source projects like Weave thrive because of contributors like you. This document aims to provide you with all the necessary information to make the contribution process smooth and efficient. - -## Quicklinks - -- [Getting Started](#getting-started) -- [Development](#development) -- [How Can I Contribute?](#how-can-i-contribute) -- [Creating a Pull Request](#creating-a-pull-request) -- [Creating an Issue](#creating-an-issue) - ---- - -## Getting Started - -Before you can contribute to Weave, you'll need to fork the repository and clone it to your local machine. For more details, please refer to the GitHub documentation on [Forking](https://docs.github.com/en/github/getting-started-with-github/fork-a-repo) and [Cloning](https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/cloning-a-repository) a repository. - -## Development - -### Setup instructions - -First, setup your python environment: - -``` -pyenv install 3.9.7 -pyenv virtualenv 3.9.7 weave_dev -pyenv local weave_dev -pip install -e . -pip install -r requirements.dev.txt -pre-commit install -``` - -Next, install node dependencies to run the frontend - -``` -cd weave-js && yarn install -``` - -Finally, if you are working on any integrations with Weights and Biases, you will want to be logged in on your machine. Do so with - -``` -wandb init -``` - -### Active Development - -In order to develop against Weave, you will want 3 terminal sessions: - -1. `cd weave-js && yarn dev`: This will start a local server serving the frontend application (rendered in the notebook iframe) -2. `./weave_server.sh`: This will start an in-process server running the weave execution engine -3. `jupyter notebook`: This will start a notebook server - useful for interacting with your code! - - note: you will want to use `weave.use_frontend_devmode()` at the top of development notebooks to ensure you hit the frontend server. - -### Testing & Style - -Style and lint is enforced using pre-commit hooks. All tests can be run via `cd weave && pytest` - -### Notebook Style & Tests - -To successfully commit a Jupyter notebook: -* make sure the notebook runs end-to-end-locally -* make sure there is no empty cell at the end of the notebook (remove it if it appeared) -* merge any sequences of consecutive markdown/non-code cells into a single markdown cell -* reset kernel and clear output -* then save the notebook and commit - -## How Can I Contribute? - -There are many ways you can contribute to Weave, from writing code and fixing bugs, to improving documentation, to submitting bug reports and feature requests. No contribution is too small – we appreciate them all! - -## Creating a Pull Request - -Ready to make a pull request (PR)? Great! Here's a step-by-step guide: - -1. Fork the Weave repository and clone it to your local machine. -2. Create a new branch for your feature or bugfix. Use a descriptive name, such as `add-feature-x` or `fix-bug-y`. -3. After you've made your changes, push them to your fork. -4. Head over to the Weave repository on GitHub and click the 'New Pull Request' button. -5. Choose your fork and the branch you created as the source of the PR. -6. Provide a brief description of the changes you've made. If your PR closes an existing issue, include the text `closes #ISSUE_NUMBER`. -7. Submit your PR. Our team will review it as soon as possible. - -## Creating an Issue - -Found a bug 🐞? Or have an idea for a new feature 💡? We'd love to hear about it! Here's how to create an issue: - -1. Go to the [Issue Tracker](issue_tracker_link) on our GitHub page. -2. Click the 'New Issue' button. -3. Provide a descriptive title that summarizes the issue. -4. In the body of the issue, provide as much detail as possible. If you're reporting a bug, include steps to reproduce it, and any error messages you've seen. If you're suggesting a new feature, explain your idea in detail. -5. Submit the issue. We'll respond as soon as we can. - ---- - -Thanks again for your interest in contributing to Weave. We're excited to see what you bring to our community! - -Happy coding! 🚀 diff --git a/docs/docs_old/INSTALLATION.md b/docs/docs_old/INSTALLATION.md deleted file mode 100644 index a22b1976938..00000000000 --- a/docs/docs_old/INSTALLATION.md +++ /dev/null @@ -1,9 +0,0 @@ -# Weave Installation Guide - -## Setup - -Make sure you have a python environment running at least python 3.9. We recommend using `pyenv` to manage python environments. Next, install Weave directly from PyPi using `pip install weave`. - -### Ecosystem - -There are many _experimental_ packages in the `ecosystem` directory. To ensure you have all the required dependencies, install with `pip install weave[ecosystem]` diff --git a/docs/docs_old/QUICKSTART.md b/docs/docs_old/QUICKSTART.md deleted file mode 100644 index 48f15a40fc0..00000000000 --- a/docs/docs_old/QUICKSTART.md +++ /dev/null @@ -1,57 +0,0 @@ -# Weave Quickstart Guide - ---- - -Hello there data explorer! 🚀 - -This quickstart guide will help you hit the ground running with Weave. We'll guide you through the installation process and then demonstrate how you can start exploring your existing datasets with just one line of code! - -## Step 1: Installation - -First things first - let's get Weave installed. Open your terminal and type in: - -``` -pip install weave -``` - -Once installed, you're ready to dive into data exploration! - -## Step 2: Begin Your Exploration - -With Weave, turning a data frame into a field of exploration is as simple as a single line of code. Here's how you do it: - -```python -import weave -# This is where you'd normally load your dataframe -weave.show(pandas_df) -``` - -For a hands-on example of this in action, check out our [Getting Started with Weave Notebook](../examples/get_started.ipynb). - -## Dive Deeper into Data - -What can you do with Weave, you ask? Let's take a look: - -**1. Visualize a dataframe:** - -Here's an example of the Iris dataset, visualized using Weave: - -![first_show](../docs/assets/first_show.png) - -**2. Interactively derive insights:** - -Uncover hidden patterns in your data through interactive exploration: - -![beginning_exploration](../docs/assets/beginning_exploration.png) - -**3. Create and share dashboards:** - -With Weave, you can configure your exploration into dashboards, which you can then share with others. Note to publish to Weights and Biases, you will want to authenticate your local machine by executing `wandb init` in a terminal or `wandb.init()` in a notebook, then restart your notebook! - -![configured_iris_panel](../docs/assets/configured_iris_panel.png) - ---- - -And there you have it! You're now ready to start your data exploration journey with Weave. We can't wait to see the insights you'll uncover. - -Happy Weaving! 🎉 diff --git a/docs/docs_old/README.md b/docs/docs_old/README.md deleted file mode 100644 index 0c6c2c27be9..00000000000 --- a/docs/docs_old/README.md +++ /dev/null @@ -1,41 +0,0 @@ -# Website - -This website is built using [Docusaurus](https://docusaurus.io/), a modern static website generator. - -### Installation - -``` -$ yarn -``` - -### Local Development - -``` -$ yarn start -``` - -This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. - -### Build - -``` -$ yarn build -``` - -This command generates static content into the `build` directory and can be served using any static contents hosting service. - -### Deployment - -Using SSH: - -``` -$ USE_SSH=true yarn deploy -``` - -Not using SSH: - -``` -$ GIT_USER= yarn deploy -``` - -If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. diff --git a/docs/docs_old/TECHNICAL_OVERVIEW.md b/docs/docs_old/TECHNICAL_OVERVIEW.md deleted file mode 100644 index e26e09984e7..00000000000 --- a/docs/docs_old/TECHNICAL_OVERVIEW.md +++ /dev/null @@ -1,136 +0,0 @@ -# Weave Technical Overview - -Contents - -- What is Weave -- Weave Types -- Weave Ops -- Weave Panels - - -# What is Weave - -Weave is new kind of visual development environment, designed for developing AI-powered software. - -Building and working with AI models is a fuzzy process. The work is iterative, experimental, analytical, and visual. - -This evolving technical overview accompanies our interactive notebooks to document and explain Weave in more detail. - - -# Weave Types - -## Basic Types - -Follow along in this notebook to render interactive Weave Panels: [basic weave types](../examples/experimental/skip_test/basic_weave_types.ipynb) - -In the code samples below, `weave.save()` creates an object in the Weave node graph and `weave.use()` computes the existing graph and returns the value. - -### Number - -The Weave Number type handles numeric types, inlcuding Python integers and floats. - -``` ->>> num = weave.save(5, "num") ->>> num.type -Int() ->>> decimal = weave.save(9.123, "decimal") ->>> decimal.type -Float() ->>> sum_so_far = num + decimal ->>> sum_so_far.type -Number() -``` - -### Number ops - -The following operations can be called on Number: - -**Operands** - -Relations between two Weave nodes - -- basic comparison ops: !=, ==, >, >=, <, <= -- basic mathematical operations: +, -, \*, /, //, \*\*, % - -**Ecosystem ops** - -Weave ops callable on a single Weave node via dot notation - -``` ->>> weave.use(sum_so_far.ceil()) ->>> 10 -``` - -* more advanced math: `sin`, `cos` -* formatting numerical values: `abs`, `ceil`, `round`, `toString`, `toTimestamp` -* relevant generics: `isNone`, `json_dumps` - -**Advanced: Making distributions and histogram panels** - -These advanced ops are not relevant for every instance of a number. They are convenient shorthand to return common -statistical distributions, configure histogram bins, and set up Weave Panels of a particular dimension - -* `gauss`, `random_normal()`, `random_normal(,)` -* `number_bins_fixed`, `timestamp_bins_fixed` -* `\_new_Facet_CellSize`, `\_new_Point2D`, `\_new_Size2D(,)` - -**Misc ops** - -Ops available in the ecosystem for demo purposes -* `an_example_op`, `food101`, `mnist`, `ca_housing_dataset`, `days` - -### Number panels - -The Weave Number panel is a single cell with the Number's value centered. This is the fundamental visual unit of Weave Tables and the default -panel type returned for most Weave graphs. - -### String - -The Weave String type handles text. - -``` ->>> hello = weave.save("hello", "my_greeting") ->>> world = weave.save("world", "who") ->>> hello_world = hello + " " + world ->>> weave.use(hello_world) -Hello world -``` - -### String ops - -The following Weave ops are available on Strings: - -* basic operands: ==, !=, + -* basic type checks: `isAlpha`, `isAlnum`, `isNumeric` -* basic callable ops: `append`, `lStrip`, `rStrip`, `lower`, `len`, `prepend` -* basic formatting: `json_parse`, `json_parse_list`, `date_parse` -* more sophisticated string search/matching: `contains`, `endsWith`, `findAll`, `levenshtein`, `replace`, `slice`, `split` -* relevant generics: `isNone`, `json_dumps` - -``` ->>> greet = hello.replace("hello", "Hi").replace("world", "Weave") + "!" ->>> weave.use(greet) -'Hi Weave!' -``` - -### String panels - -The default String panel is a single cell with the String's value left aligned and vertically centered. A String Panel can be converted to a -StringEditor panel in the UI by clicking on the panel type to reveal the panel type menu and selecting `StringEditor`. The contents of a -StringEditor panel are editable and will save their latest state: click on the StringEditor text once to highlight it, then again to place a cursor -at that index. - -## Type Conversion - -We can convert between types using ops. - -Type conversion ops available so far: - -* `toString` for converting Number to String -* `toNumber` for converting String to Number - -``` ->>> num_as_str = num.toString() ->>> num_as_str.type -String() -``` diff --git a/docs/docs_old/assets/beginning_exploration.png b/docs/docs_old/assets/beginning_exploration.png deleted file mode 100644 index eb5ea4de18b..00000000000 Binary files a/docs/docs_old/assets/beginning_exploration.png and /dev/null differ diff --git a/docs/docs_old/assets/conf_mat_UI_settings.png b/docs/docs_old/assets/conf_mat_UI_settings.png deleted file mode 100644 index 857e9b4e4ef..00000000000 Binary files a/docs/docs_old/assets/conf_mat_UI_settings.png and /dev/null differ diff --git a/docs/docs_old/assets/conf_mat_full_board.png b/docs/docs_old/assets/conf_mat_full_board.png deleted file mode 100644 index 19c961dcedc..00000000000 Binary files a/docs/docs_old/assets/conf_mat_full_board.png and /dev/null differ diff --git a/docs/docs_old/assets/conf_mat_vert.png b/docs/docs_old/assets/conf_mat_vert.png deleted file mode 100644 index 1127b277964..00000000000 Binary files a/docs/docs_old/assets/conf_mat_vert.png and /dev/null differ diff --git a/docs/docs_old/assets/configured_iris_panel.png b/docs/docs_old/assets/configured_iris_panel.png deleted file mode 100644 index aa2227ff27a..00000000000 Binary files a/docs/docs_old/assets/configured_iris_panel.png and /dev/null differ diff --git a/docs/docs_old/assets/first_load.gif b/docs/docs_old/assets/first_load.gif deleted file mode 100644 index 3d00b043afc..00000000000 Binary files a/docs/docs_old/assets/first_load.gif and /dev/null differ diff --git a/docs/docs_old/assets/first_show.png b/docs/docs_old/assets/first_show.png deleted file mode 100644 index 4a91bd6033a..00000000000 Binary files a/docs/docs_old/assets/first_show.png and /dev/null differ diff --git a/docs/docs_old/assets/full_board_view.png b/docs/docs_old/assets/full_board_view.png deleted file mode 100644 index 0beef72d8ed..00000000000 Binary files a/docs/docs_old/assets/full_board_view.png and /dev/null differ diff --git a/docs/docs_old/assets/get_started_0.png b/docs/docs_old/assets/get_started_0.png deleted file mode 100644 index 3272b997792..00000000000 Binary files a/docs/docs_old/assets/get_started_0.png and /dev/null differ diff --git a/docs/docs_old/assets/get_started_1.png b/docs/docs_old/assets/get_started_1.png deleted file mode 100644 index 289506eac36..00000000000 Binary files a/docs/docs_old/assets/get_started_1.png and /dev/null differ diff --git a/docs/docs_old/assets/get_started_2.png b/docs/docs_old/assets/get_started_2.png deleted file mode 100644 index 1cd4dca1e0f..00000000000 Binary files a/docs/docs_old/assets/get_started_2.png and /dev/null differ diff --git a/docs/docs_old/assets/logo_horizontal.svg b/docs/docs_old/assets/logo_horizontal.svg deleted file mode 100644 index fc741719bdd..00000000000 --- a/docs/docs_old/assets/logo_horizontal.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/docs_old/assets/make_quick_board.gif b/docs/docs_old/assets/make_quick_board.gif deleted file mode 100644 index ce91dfeec5b..00000000000 Binary files a/docs/docs_old/assets/make_quick_board.gif and /dev/null differ diff --git a/docs/docs_old/assets/mini_prodmon_overview.gif b/docs/docs_old/assets/mini_prodmon_overview.gif deleted file mode 100644 index 1957d49e861..00000000000 Binary files a/docs/docs_old/assets/mini_prodmon_overview.gif and /dev/null differ diff --git a/docs/docs_old/assets/mnist_pm_draw.png b/docs/docs_old/assets/mnist_pm_draw.png deleted file mode 100644 index 1d3e8be6e5e..00000000000 Binary files a/docs/docs_old/assets/mnist_pm_draw.png and /dev/null differ diff --git a/docs/docs_old/assets/mnist_pm_draw_hover.png b/docs/docs_old/assets/mnist_pm_draw_hover.png deleted file mode 100644 index 3098f723380..00000000000 Binary files a/docs/docs_old/assets/mnist_pm_draw_hover.png and /dev/null differ diff --git a/docs/docs_old/assets/monitor-open-ai-api-usage.png b/docs/docs_old/assets/monitor-open-ai-api-usage.png deleted file mode 100644 index 78094b7f041..00000000000 Binary files a/docs/docs_old/assets/monitor-open-ai-api-usage.png and /dev/null differ diff --git a/docs/docs_old/assets/new_board_from_table.gif b/docs/docs_old/assets/new_board_from_table.gif deleted file mode 100644 index b4d68cac832..00000000000 Binary files a/docs/docs_old/assets/new_board_from_table.gif and /dev/null differ diff --git a/docs/docs_old/assets/panelplot_usage/advanced_filter.png b/docs/docs_old/assets/panelplot_usage/advanced_filter.png deleted file mode 100644 index b35db123833..00000000000 Binary files a/docs/docs_old/assets/panelplot_usage/advanced_filter.png and /dev/null differ diff --git a/docs/docs_old/assets/panelplot_usage/convert_to_plot.png b/docs/docs_old/assets/panelplot_usage/convert_to_plot.png deleted file mode 100644 index ec708bf3d6a..00000000000 Binary files a/docs/docs_old/assets/panelplot_usage/convert_to_plot.png and /dev/null differ diff --git a/docs/docs_old/assets/panelplot_usage/in_notebook_plot_convert.gif b/docs/docs_old/assets/panelplot_usage/in_notebook_plot_convert.gif deleted file mode 100644 index 8d764b756a5..00000000000 Binary files a/docs/docs_old/assets/panelplot_usage/in_notebook_plot_convert.gif and /dev/null differ diff --git a/docs/docs_old/assets/panelplot_usage/log_scale_example.png b/docs/docs_old/assets/panelplot_usage/log_scale_example.png deleted file mode 100644 index 0f5c5345480..00000000000 Binary files a/docs/docs_old/assets/panelplot_usage/log_scale_example.png and /dev/null differ diff --git a/docs/docs_old/assets/panelplot_usage/one_zoom.gif b/docs/docs_old/assets/panelplot_usage/one_zoom.gif deleted file mode 100644 index a73972dcee4..00000000000 Binary files a/docs/docs_old/assets/panelplot_usage/one_zoom.gif and /dev/null differ diff --git a/docs/docs_old/assets/panelplot_usage/open_nb_new_tab.png b/docs/docs_old/assets/panelplot_usage/open_nb_new_tab.png deleted file mode 100644 index 9ec85642fdf..00000000000 Binary files a/docs/docs_old/assets/panelplot_usage/open_nb_new_tab.png and /dev/null differ diff --git a/docs/docs_old/assets/panelplot_usage/open_plot_split.gif b/docs/docs_old/assets/panelplot_usage/open_plot_split.gif deleted file mode 100644 index b943e6e9f56..00000000000 Binary files a/docs/docs_old/assets/panelplot_usage/open_plot_split.gif and /dev/null differ diff --git a/docs/docs_old/assets/panelplot_usage/selected_data_horiz.png b/docs/docs_old/assets/panelplot_usage/selected_data_horiz.png deleted file mode 100644 index 49ccdb6e74f..00000000000 Binary files a/docs/docs_old/assets/panelplot_usage/selected_data_horiz.png and /dev/null differ diff --git a/docs/docs_old/assets/panelplot_usage/shape_size_change.png b/docs/docs_old/assets/panelplot_usage/shape_size_change.png deleted file mode 100644 index 7738376005b..00000000000 Binary files a/docs/docs_old/assets/panelplot_usage/shape_size_change.png and /dev/null differ diff --git a/docs/docs_old/assets/panelplot_usage/side_by_side_plot.png b/docs/docs_old/assets/panelplot_usage/side_by_side_plot.png deleted file mode 100644 index b6606371f21..00000000000 Binary files a/docs/docs_old/assets/panelplot_usage/side_by_side_plot.png and /dev/null differ diff --git a/docs/docs_old/assets/panelplot_usage/small_dup_to_plot.png b/docs/docs_old/assets/panelplot_usage/small_dup_to_plot.png deleted file mode 100644 index 0e9453ce465..00000000000 Binary files a/docs/docs_old/assets/panelplot_usage/small_dup_to_plot.png and /dev/null differ diff --git a/docs/docs_old/assets/panelplot_usage/split_plot_hover.png b/docs/docs_old/assets/panelplot_usage/split_plot_hover.png deleted file mode 100644 index 5397ec337bd..00000000000 Binary files a/docs/docs_old/assets/panelplot_usage/split_plot_hover.png and /dev/null differ diff --git a/docs/docs_old/assets/prompts_templates.png b/docs/docs_old/assets/prompts_templates.png deleted file mode 100644 index 26eabc3ec2b..00000000000 Binary files a/docs/docs_old/assets/prompts_templates.png and /dev/null differ diff --git a/docs/docs_old/assets/publish_board_short.gif b/docs/docs_old/assets/publish_board_short.gif deleted file mode 100644 index b57291d2f5f..00000000000 Binary files a/docs/docs_old/assets/publish_board_short.gif and /dev/null differ diff --git a/docs/docs_old/assets/qs_table_plot.gif b/docs/docs_old/assets/qs_table_plot.gif deleted file mode 100644 index 26e60c54fe0..00000000000 Binary files a/docs/docs_old/assets/qs_table_plot.gif and /dev/null differ diff --git a/docs/docs_old/assets/short_board_attempt.gif b/docs/docs_old/assets/short_board_attempt.gif deleted file mode 100644 index 0a901f3269c..00000000000 Binary files a/docs/docs_old/assets/short_board_attempt.gif and /dev/null differ diff --git a/docs/docs_old/assets/small_stream_table.png b/docs/docs_old/assets/small_stream_table.png deleted file mode 100644 index da23ae72ac0..00000000000 Binary files a/docs/docs_old/assets/small_stream_table.png and /dev/null differ diff --git a/docs/docs_old/assets/stream_table_from_notebook.png b/docs/docs_old/assets/stream_table_from_notebook.png deleted file mode 100644 index c507c63bbf5..00000000000 Binary files a/docs/docs_old/assets/stream_table_from_notebook.png and /dev/null differ diff --git a/docs/docs_old/assets/trace-an-llm-pipeline.png b/docs/docs_old/assets/trace-an-llm-pipeline.png deleted file mode 100644 index 29f1977310b..00000000000 Binary files a/docs/docs_old/assets/trace-an-llm-pipeline.png and /dev/null differ diff --git a/docs/docs_old/assets/traces_debug_board.png b/docs/docs_old/assets/traces_debug_board.png deleted file mode 100644 index d406cda9e04..00000000000 Binary files a/docs/docs_old/assets/traces_debug_board.png and /dev/null differ diff --git a/docs/docusaurus.config.ts b/docs/docusaurus.config.ts index d7548d61741..f1448c96079 100644 --- a/docs/docusaurus.config.ts +++ b/docs/docusaurus.config.ts @@ -35,8 +35,8 @@ const config: Config = { { docs: { sidebarPath: "./sidebars.ts", - sidebarCollapsible: false, - breadcrumbs: false, + sidebarCollapsible: true, + breadcrumbs: true, // Please change this to your repo. // Remove this to remove the "edit this page" links. editUrl: "https://github.com/wandb/weave/blob/master/docs/", @@ -66,6 +66,13 @@ const config: Config = { : []), ], + themes: [ + [require.resolve("@easyops-cn/docusaurus-search-local"), ({ + // https://github.com/easyops-cn/docusaurus-search-local?tab=readme-ov-file + docsRouteBasePath: "/", + })] + ], + themeConfig: { // Replace with your project's social card image: "img/logo-large-padded.png", diff --git a/docs/package.json b/docs/package.json index 717c391e932..5adbfb12bbd 100644 --- a/docs/package.json +++ b/docs/package.json @@ -17,6 +17,7 @@ "dependencies": { "@docusaurus/core": "3.1.0", "@docusaurus/preset-classic": "3.1.0", + "@easyops-cn/docusaurus-search-local": "^0.44.4", "@laxels/docusaurus-plugin-segment": "^1.0.6", "@mdx-js/react": "^3.0.0", "clsx": "^2.0.0", diff --git a/docs/sidebars.ts b/docs/sidebars.ts index a9d6a627665..75b6834ab43 100644 --- a/docs/sidebars.ts +++ b/docs/sidebars.ts @@ -1,25 +1,11 @@ import type { SidebarsConfig } from "@docusaurus/plugin-content-docs"; -/** - * Creating a sidebar enables you to: - - create an ordered group of docs - - render a sidebar for each doc of that group - - provide next/previous navigation - - The sidebars can be generated from the filesystem, or explicitly defined here. - - Create as many sidebars as you want. - */ const sidebars: SidebarsConfig = { - // By default, Docusaurus generates a sidebar from the docs folder structure documentationSidebar: [ - // { - // type: "category", - // label: "Getting Started", - // items: [{ type: "autogenerated", dirName: "get-started" }], - // }, { type: "category", + collapsible: true, + collapsed: false, label: "Getting Started", items: [ "introduction", @@ -32,10 +18,14 @@ const sidebars: SidebarsConfig = { }, { type: "category", + collapsible: true, + collapsed: false, label: "Using Weave", items: [ { type: "category", + collapsible: true, + collapsed: false, label: "Core Types", link: { type: "doc", id: "guides/core-types/index" }, items: [ @@ -46,6 +36,8 @@ const sidebars: SidebarsConfig = { }, { type: "category", + collapsible: true, + collapsed: false, label: "Tracking", link: { type: "doc", id: "guides/tracking/index" }, items: [ @@ -57,6 +49,8 @@ const sidebars: SidebarsConfig = { }, { type: "category", + collapsible: true, + collapsed: true, label: "Integrations", link: { type: "doc", id: "guides/integrations/index" }, items: [ @@ -77,6 +71,8 @@ const sidebars: SidebarsConfig = { }, { type: "category", + collapsible: true, + collapsed: true, label: "Tools", link: { type: "doc", id: "guides/tools/index" }, items: ["guides/tools/serve", "guides/tools/deploy"], @@ -93,21 +89,7 @@ const sidebars: SidebarsConfig = { href: "/api-reference/python/weave", }, ], - // { type: "autogenerated", dirName: "get-started" }], apiReferenceSidebar: [{ type: "autogenerated", dirName: "api-reference" }], - - // But you can create a sidebar manually - /* - tutorialSidebar: [ - 'intro', - 'hello', - { - type: 'category', - label: 'Tutorial', - items: ['tutorial-basics/create-a-document'], - }, - ], - */ }; export default sidebars; diff --git a/docs/yarn.lock b/docs/yarn.lock index 74b6854ce2d..be641876895 100644 --- a/docs/yarn.lock +++ b/docs/yarn.lock @@ -154,11 +154,24 @@ "@babel/highlight" "^7.23.4" chalk "^2.4.2" +"@babel/code-frame@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" + integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== + dependencies: + "@babel/highlight" "^7.24.7" + picocolors "^1.0.0" + "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.3", "@babel/compat-data@^7.23.5": version "7.23.5" resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz" integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== +"@babel/compat-data@^7.25.2": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.2.tgz#e41928bd33475305c586f6acbbb7e3ade7a6f7f5" + integrity sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ== + "@babel/core@^7.19.6", "@babel/core@^7.23.3": version "7.23.7" resolved "https://registry.npmjs.org/@babel/core/-/core-7.23.7.tgz" @@ -180,6 +193,27 @@ json5 "^2.2.3" semver "^6.3.1" +"@babel/core@^7.21.3": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.25.2.tgz#ed8eec275118d7613e77a352894cd12ded8eba77" + integrity sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.25.0" + "@babel/helper-compilation-targets" "^7.25.2" + "@babel/helper-module-transforms" "^7.25.2" + "@babel/helpers" "^7.25.0" + "@babel/parser" "^7.25.0" + "@babel/template" "^7.25.0" + "@babel/traverse" "^7.25.2" + "@babel/types" "^7.25.2" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + "@babel/generator@^7.23.3", "@babel/generator@^7.23.6": version "7.23.6" resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz" @@ -190,6 +224,16 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" +"@babel/generator@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.0.tgz#f858ddfa984350bc3d3b7f125073c9af6988f18e" + integrity sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw== + dependencies: + "@babel/types" "^7.25.0" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^2.5.1" + "@babel/helper-annotate-as-pure@^7.22.5": version "7.22.5" resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz" @@ -197,6 +241,13 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-annotate-as-pure@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz#5373c7bc8366b12a033b4be1ac13a206c6656aab" + integrity sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg== + dependencies: + "@babel/types" "^7.24.7" + "@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": version "7.22.15" resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz" @@ -204,6 +255,14 @@ dependencies: "@babel/types" "^7.22.15" +"@babel/helper-builder-binary-assignment-operator-visitor@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz#37d66feb012024f2422b762b9b2a7cfe27c7fba3" + integrity sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + "@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.23.6": version "7.23.6" resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz" @@ -215,6 +274,17 @@ lru-cache "^5.1.1" semver "^6.3.1" +"@babel/helper-compilation-targets@^7.24.7", "@babel/helper-compilation-targets@^7.24.8", "@babel/helper-compilation-targets@^7.25.2": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz#e1d9410a90974a3a5a66e84ff55ef62e3c02d06c" + integrity sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw== + dependencies: + "@babel/compat-data" "^7.25.2" + "@babel/helper-validator-option" "^7.24.8" + browserslist "^4.23.1" + lru-cache "^5.1.1" + semver "^6.3.1" + "@babel/helper-create-class-features-plugin@^7.22.15", "@babel/helper-create-class-features-plugin@^7.23.6": version "7.23.7" resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.7.tgz" @@ -230,6 +300,19 @@ "@babel/helper-split-export-declaration" "^7.22.6" semver "^6.3.1" +"@babel/helper-create-class-features-plugin@^7.24.7", "@babel/helper-create-class-features-plugin@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.0.tgz#a109bf9c3d58dfed83aaf42e85633c89f43a6253" + integrity sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-member-expression-to-functions" "^7.24.8" + "@babel/helper-optimise-call-expression" "^7.24.7" + "@babel/helper-replace-supers" "^7.25.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/traverse" "^7.25.0" + semver "^6.3.1" + "@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": version "7.22.15" resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz" @@ -239,6 +322,15 @@ regexpu-core "^5.3.1" semver "^6.3.1" +"@babel/helper-create-regexp-features-plugin@^7.24.7", "@babel/helper-create-regexp-features-plugin@^7.25.0": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz#24c75974ed74183797ffd5f134169316cd1808d9" + integrity sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + regexpu-core "^5.3.1" + semver "^6.3.1" + "@babel/helper-define-polyfill-provider@^0.4.4": version "0.4.4" resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.4.tgz" @@ -250,6 +342,17 @@ lodash.debounce "^4.0.8" resolve "^1.14.2" +"@babel/helper-define-polyfill-provider@^0.6.2": + version "0.6.2" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz#18594f789c3594acb24cfdb4a7f7b7d2e8bd912d" + integrity sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ== + dependencies: + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + "@babel/helper-environment-visitor@^7.22.20": version "7.22.20" resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz" @@ -277,6 +380,14 @@ dependencies: "@babel/types" "^7.23.0" +"@babel/helper-member-expression-to-functions@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz#6155e079c913357d24a4c20480db7c712a5c3fb6" + integrity sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA== + dependencies: + "@babel/traverse" "^7.24.8" + "@babel/types" "^7.24.8" + "@babel/helper-module-imports@^7.22.15": version "7.22.15" resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz" @@ -284,6 +395,14 @@ dependencies: "@babel/types" "^7.22.15" +"@babel/helper-module-imports@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz#f2f980392de5b84c3328fc71d38bd81bbb83042b" + integrity sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + "@babel/helper-module-transforms@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz" @@ -295,6 +414,16 @@ "@babel/helper-split-export-declaration" "^7.22.6" "@babel/helper-validator-identifier" "^7.22.20" +"@babel/helper-module-transforms@^7.24.7", "@babel/helper-module-transforms@^7.24.8", "@babel/helper-module-transforms@^7.25.0", "@babel/helper-module-transforms@^7.25.2": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz#ee713c29768100f2776edf04d4eb23b8d27a66e6" + integrity sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ== + dependencies: + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-simple-access" "^7.24.7" + "@babel/helper-validator-identifier" "^7.24.7" + "@babel/traverse" "^7.25.2" + "@babel/helper-optimise-call-expression@^7.22.5": version "7.22.5" resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz" @@ -302,11 +431,23 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-optimise-call-expression@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz#8b0a0456c92f6b323d27cfd00d1d664e76692a0f" + integrity sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A== + dependencies: + "@babel/types" "^7.24.7" + "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.22.5" resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz" integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== +"@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz#94ee67e8ec0e5d44ea7baeb51e571bd26af07878" + integrity sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg== + "@babel/helper-remap-async-to-generator@^7.22.20": version "7.22.20" resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz" @@ -316,6 +457,15 @@ "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-wrap-function" "^7.22.20" +"@babel/helper-remap-async-to-generator@^7.24.7", "@babel/helper-remap-async-to-generator@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz#d2f0fbba059a42d68e5e378feaf181ef6055365e" + integrity sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-wrap-function" "^7.25.0" + "@babel/traverse" "^7.25.0" + "@babel/helper-replace-supers@^7.22.20": version "7.22.20" resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz" @@ -325,6 +475,15 @@ "@babel/helper-member-expression-to-functions" "^7.22.15" "@babel/helper-optimise-call-expression" "^7.22.5" +"@babel/helper-replace-supers@^7.24.7", "@babel/helper-replace-supers@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz#ff44deac1c9f619523fe2ca1fd650773792000a9" + integrity sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.24.8" + "@babel/helper-optimise-call-expression" "^7.24.7" + "@babel/traverse" "^7.25.0" + "@babel/helper-simple-access@^7.22.5": version "7.22.5" resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz" @@ -332,6 +491,14 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-simple-access@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz#bcade8da3aec8ed16b9c4953b74e506b51b5edb3" + integrity sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers@^7.22.5": version "7.22.5" resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz" @@ -339,6 +506,14 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-skip-transparent-expression-wrappers@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz#5f8fa83b69ed5c27adc56044f8be2b3ea96669d9" + integrity sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + "@babel/helper-split-export-declaration@^7.22.6": version "7.22.6" resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz" @@ -351,16 +526,31 @@ resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz" integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== +"@babel/helper-string-parser@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz#5b3329c9a58803d5df425e5785865881a81ca48d" + integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== + "@babel/helper-validator-identifier@^7.22.20": version "7.22.20" resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz" integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== +"@babel/helper-validator-identifier@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" + integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== + "@babel/helper-validator-option@^7.22.15", "@babel/helper-validator-option@^7.23.5": version "7.23.5" resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz" integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== +"@babel/helper-validator-option@^7.24.7", "@babel/helper-validator-option@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz#3725cdeea8b480e86d34df15304806a06975e33d" + integrity sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q== + "@babel/helper-wrap-function@^7.22.20": version "7.22.20" resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz" @@ -370,6 +560,15 @@ "@babel/template" "^7.22.15" "@babel/types" "^7.22.19" +"@babel/helper-wrap-function@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz#dab12f0f593d6ca48c0062c28bcfb14ebe812f81" + integrity sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ== + dependencies: + "@babel/template" "^7.25.0" + "@babel/traverse" "^7.25.0" + "@babel/types" "^7.25.0" + "@babel/helpers@^7.23.7": version "7.23.8" resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.8.tgz" @@ -379,6 +578,14 @@ "@babel/traverse" "^7.23.7" "@babel/types" "^7.23.6" +"@babel/helpers@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.25.0.tgz#e69beb7841cb93a6505531ede34f34e6a073650a" + integrity sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw== + dependencies: + "@babel/template" "^7.25.0" + "@babel/types" "^7.25.0" + "@babel/highlight@^7.23.4": version "7.23.4" resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz" @@ -388,11 +595,43 @@ chalk "^2.4.2" js-tokens "^4.0.0" +"@babel/highlight@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" + integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== + dependencies: + "@babel/helper-validator-identifier" "^7.24.7" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" + "@babel/parser@^7.22.15", "@babel/parser@^7.22.7", "@babel/parser@^7.23.6": version "7.23.6" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz" integrity sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ== +"@babel/parser@^7.25.0", "@babel/parser@^7.25.3": + version "7.25.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.3.tgz#91fb126768d944966263f0657ab222a642b82065" + integrity sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw== + dependencies: + "@babel/types" "^7.25.2" + +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.3": + version "7.25.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz#dca427b45a6c0f5c095a1c639dfe2476a3daba7f" + integrity sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/traverse" "^7.25.3" + +"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz#cd0c583e01369ef51676bdb3d7b603e17d2b3f73" + integrity sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz" @@ -400,6 +639,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz#749bde80356b295390954643de7635e0dffabe73" + integrity sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz" @@ -409,6 +655,15 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" "@babel/plugin-transform-optional-chaining" "^7.23.3" +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz#e4eabdd5109acc399b38d7999b2ef66fc2022f89" + integrity sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/plugin-transform-optional-chaining" "^7.24.7" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.23.7": version "7.23.7" resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz" @@ -417,6 +672,14 @@ "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz#3a82a70e7cb7294ad2559465ebcb871dfbf078fb" + integrity sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/traverse" "^7.25.0" + "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": version "7.21.0-placeholder-for-preset-env.2" resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz" @@ -464,6 +727,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-syntax-import-assertions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz#2a0b406b5871a20a841240586b1300ce2088a778" + integrity sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-import-attributes@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz" @@ -471,6 +741,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-syntax-import-attributes@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz#b4f9ea95a79e6912480c4b626739f86a076624ca" + integrity sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-import-meta@^7.10.4": version "7.10.4" resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" @@ -492,6 +769,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-syntax-jsx@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz#39a1fa4a7e3d3d7f34e2acc6be585b718d30e02d" + integrity sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-logical-assignment-operators@^7.10.4": version "7.10.4" resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" @@ -555,6 +839,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-syntax-typescript@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz#58d458271b4d3b6bb27ee6ac9525acbb259bad1c" + integrity sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-unicode-sets-regex@^7.18.6": version "7.18.6" resolved "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz" @@ -570,6 +861,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-arrow-functions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz#4f6886c11e423bd69f3ce51dbf42424a5f275514" + integrity sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-async-generator-functions@^7.23.7": version "7.23.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.7.tgz" @@ -580,6 +878,16 @@ "@babel/helper-remap-async-to-generator" "^7.22.20" "@babel/plugin-syntax-async-generators" "^7.8.4" +"@babel/plugin-transform-async-generator-functions@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.0.tgz#b785cf35d73437f6276b1e30439a57a50747bddf" + integrity sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-remap-async-to-generator" "^7.25.0" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/traverse" "^7.25.0" + "@babel/plugin-transform-async-to-generator@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz" @@ -589,6 +897,15 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-remap-async-to-generator" "^7.22.20" +"@babel/plugin-transform-async-to-generator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz#72a3af6c451d575842a7e9b5a02863414355bdcc" + integrity sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA== + dependencies: + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-remap-async-to-generator" "^7.24.7" + "@babel/plugin-transform-block-scoped-functions@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz" @@ -596,6 +913,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-block-scoped-functions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz#a4251d98ea0c0f399dafe1a35801eaba455bbf1f" + integrity sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-block-scoping@^7.23.4": version "7.23.4" resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz" @@ -603,6 +927,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-block-scoping@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz#23a6ed92e6b006d26b1869b1c91d1b917c2ea2ac" + integrity sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/plugin-transform-class-properties@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz" @@ -611,6 +942,14 @@ "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-class-properties@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz#256879467b57b0b68c7ddfc5b76584f398cd6834" + integrity sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-class-static-block@^7.23.4": version "7.23.4" resolved "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz" @@ -620,6 +959,15 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-class-static-block" "^7.14.5" +"@babel/plugin-transform-class-static-block@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz#c82027ebb7010bc33c116d4b5044fbbf8c05484d" + integrity sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-transform-classes@^7.23.8": version "7.23.8" resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz" @@ -634,6 +982,18 @@ "@babel/helper-split-export-declaration" "^7.22.6" globals "^11.1.0" +"@babel/plugin-transform-classes@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.0.tgz#63122366527d88e0ef61b612554fe3f8c793991e" + integrity sha512-xyi6qjr/fYU304fiRwFbekzkqVJZ6A7hOjWZd+89FVcBqPV3S9Wuozz82xdpLspckeaafntbzglaW4pqpzvtSw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-compilation-targets" "^7.24.8" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-replace-supers" "^7.25.0" + "@babel/traverse" "^7.25.0" + globals "^11.1.0" + "@babel/plugin-transform-computed-properties@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz" @@ -642,6 +1002,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/template" "^7.22.15" +"@babel/plugin-transform-computed-properties@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz#4cab3214e80bc71fae3853238d13d097b004c707" + integrity sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/template" "^7.24.7" + "@babel/plugin-transform-destructuring@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz" @@ -649,6 +1017,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-destructuring@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz#c828e814dbe42a2718a838c2a2e16a408e055550" + integrity sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/plugin-transform-dotall-regex@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz" @@ -657,6 +1032,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-dotall-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz#5f8bf8a680f2116a7207e16288a5f974ad47a7a0" + integrity sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-duplicate-keys@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz" @@ -664,6 +1047,21 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-duplicate-keys@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz#dd20102897c9a2324e5adfffb67ff3610359a8ee" + integrity sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz#809af7e3339466b49c034c683964ee8afb3e2604" + integrity sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.25.0" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/plugin-transform-dynamic-import@^7.23.4": version "7.23.4" resolved "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz" @@ -672,6 +1070,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" +"@babel/plugin-transform-dynamic-import@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz#4d8b95e3bae2b037673091aa09cd33fecd6419f4" + integrity sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-transform-exponentiation-operator@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz" @@ -680,6 +1086,14 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-exponentiation-operator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz#b629ee22645f412024297d5245bce425c31f9b0d" + integrity sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-export-namespace-from@^7.23.4": version "7.23.4" resolved "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz" @@ -688,6 +1102,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" +"@babel/plugin-transform-export-namespace-from@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz#176d52d8d8ed516aeae7013ee9556d540c53f197" + integrity sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-transform-for-of@^7.23.6": version "7.23.6" resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz" @@ -696,6 +1118,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" +"@babel/plugin-transform-for-of@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz#f25b33f72df1d8be76399e1b8f3f9d366eb5bc70" + integrity sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/plugin-transform-function-name@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz" @@ -705,6 +1135,15 @@ "@babel/helper-function-name" "^7.23.0" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-function-name@^7.25.1": + version "7.25.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz#b85e773097526c1a4fc4ba27322748643f26fc37" + integrity sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA== + dependencies: + "@babel/helper-compilation-targets" "^7.24.8" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/traverse" "^7.25.1" + "@babel/plugin-transform-json-strings@^7.23.4": version "7.23.4" resolved "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz" @@ -713,6 +1152,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-json-strings" "^7.8.3" +"@babel/plugin-transform-json-strings@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz#f3e9c37c0a373fee86e36880d45b3664cedaf73a" + integrity sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-transform-literals@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz" @@ -720,6 +1167,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-literals@^7.25.2": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz#deb1ad14fc5490b9a65ed830e025bca849d8b5f3" + integrity sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/plugin-transform-logical-assignment-operators@^7.23.4": version "7.23.4" resolved "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz" @@ -728,6 +1182,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" +"@babel/plugin-transform-logical-assignment-operators@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz#a58fb6eda16c9dc8f9ff1c7b1ba6deb7f4694cb0" + integrity sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-transform-member-expression-literals@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz" @@ -735,6 +1197,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-member-expression-literals@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz#3b4454fb0e302e18ba4945ba3246acb1248315df" + integrity sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-modules-amd@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz" @@ -743,6 +1212,14 @@ "@babel/helper-module-transforms" "^7.23.3" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-modules-amd@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz#65090ed493c4a834976a3ca1cde776e6ccff32d7" + integrity sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg== + dependencies: + "@babel/helper-module-transforms" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-modules-commonjs@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz" @@ -752,6 +1229,15 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-simple-access" "^7.22.5" +"@babel/plugin-transform-modules-commonjs@^7.24.7", "@babel/plugin-transform-modules-commonjs@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz#ab6421e564b717cb475d6fff70ae7f103536ea3c" + integrity sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA== + dependencies: + "@babel/helper-module-transforms" "^7.24.8" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-simple-access" "^7.24.7" + "@babel/plugin-transform-modules-systemjs@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz" @@ -762,6 +1248,16 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-validator-identifier" "^7.22.20" +"@babel/plugin-transform-modules-systemjs@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz#8f46cdc5f9e5af74f3bd019485a6cbe59685ea33" + integrity sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw== + dependencies: + "@babel/helper-module-transforms" "^7.25.0" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-validator-identifier" "^7.24.7" + "@babel/traverse" "^7.25.0" + "@babel/plugin-transform-modules-umd@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz" @@ -770,6 +1266,14 @@ "@babel/helper-module-transforms" "^7.23.3" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-modules-umd@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz#edd9f43ec549099620df7df24e7ba13b5c76efc8" + integrity sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A== + dependencies: + "@babel/helper-module-transforms" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": version "7.22.5" resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz" @@ -778,6 +1282,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-named-capturing-groups-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz#9042e9b856bc6b3688c0c2e4060e9e10b1460923" + integrity sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-new-target@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz" @@ -785,6 +1297,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-new-target@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz#31ff54c4e0555cc549d5816e4ab39241dfb6ab00" + integrity sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-nullish-coalescing-operator@^7.23.4": version "7.23.4" resolved "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz" @@ -793,6 +1312,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" +"@babel/plugin-transform-nullish-coalescing-operator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz#1de4534c590af9596f53d67f52a92f12db984120" + integrity sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-transform-numeric-separator@^7.23.4": version "7.23.4" resolved "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz" @@ -801,6 +1328,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-numeric-separator" "^7.10.4" +"@babel/plugin-transform-numeric-separator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz#bea62b538c80605d8a0fac9b40f48e97efa7de63" + integrity sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-transform-object-rest-spread@^7.23.4": version "7.23.4" resolved "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz" @@ -812,6 +1347,16 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-transform-parameters" "^7.23.3" +"@babel/plugin-transform-object-rest-spread@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz#d13a2b93435aeb8a197e115221cab266ba6e55d6" + integrity sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q== + dependencies: + "@babel/helper-compilation-targets" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.24.7" + "@babel/plugin-transform-object-super@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz" @@ -820,6 +1365,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-replace-supers" "^7.22.20" +"@babel/plugin-transform-object-super@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz#66eeaff7830bba945dd8989b632a40c04ed625be" + integrity sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-replace-supers" "^7.24.7" + "@babel/plugin-transform-optional-catch-binding@^7.23.4": version "7.23.4" resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz" @@ -828,6 +1381,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" +"@babel/plugin-transform-optional-catch-binding@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz#00eabd883d0dd6a60c1c557548785919b6e717b4" + integrity sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-transform-optional-chaining@^7.23.3", "@babel/plugin-transform-optional-chaining@^7.23.4": version "7.23.4" resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz" @@ -837,6 +1398,15 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" "@babel/plugin-syntax-optional-chaining" "^7.8.3" +"@babel/plugin-transform-optional-chaining@^7.24.7", "@babel/plugin-transform-optional-chaining@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz#bb02a67b60ff0406085c13d104c99a835cdf365d" + integrity sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-transform-parameters@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz" @@ -844,6 +1414,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-parameters@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz#5881f0ae21018400e320fc7eb817e529d1254b68" + integrity sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-private-methods@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz" @@ -852,6 +1429,14 @@ "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-private-methods@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz#e6318746b2ae70a59d023d5cc1344a2ba7a75f5e" + integrity sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-private-property-in-object@^7.23.4": version "7.23.4" resolved "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz" @@ -862,6 +1447,16 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" +"@babel/plugin-transform-private-property-in-object@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz#4eec6bc701288c1fab5f72e6a4bbc9d67faca061" + integrity sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-transform-property-literals@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz" @@ -869,6 +1464,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-property-literals@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz#f0d2ed8380dfbed949c42d4d790266525d63bbdc" + integrity sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-react-constant-elements@^7.18.12": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.23.3.tgz" @@ -876,6 +1478,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-react-constant-elements@^7.21.3": + version "7.25.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.25.1.tgz#71a665ed16ce618067d05f4a98130207349d82ae" + integrity sha512-SLV/giH/V4SmloZ6Dt40HjTGTAIkxn33TVIHxNGNvo8ezMhrxBkzisj4op1KZYPIOHFLqhv60OHvX+YRu4xbmQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/plugin-transform-react-display-name@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz" @@ -917,6 +1526,14 @@ "@babel/helper-plugin-utils" "^7.22.5" regenerator-transform "^0.15.2" +"@babel/plugin-transform-regenerator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz#021562de4534d8b4b1851759fd7af4e05d2c47f8" + integrity sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + regenerator-transform "^0.15.2" + "@babel/plugin-transform-reserved-words@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz" @@ -924,6 +1541,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-reserved-words@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz#80037fe4fbf031fc1125022178ff3938bb3743a4" + integrity sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-runtime@^7.22.9": version "7.23.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.7.tgz" @@ -943,6 +1567,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-shorthand-properties@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz#85448c6b996e122fa9e289746140aaa99da64e73" + integrity sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-spread@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz" @@ -951,6 +1582,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" +"@babel/plugin-transform-spread@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz#e8a38c0fde7882e0fb8f160378f74bd885cc7bb3" + integrity sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/plugin-transform-sticky-regex@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz" @@ -958,6 +1597,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-sticky-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz#96ae80d7a7e5251f657b5cf18f1ea6bf926f5feb" + integrity sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-template-literals@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz" @@ -965,6 +1611,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-template-literals@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz#a05debb4a9072ae8f985bcf77f3f215434c8f8c8" + integrity sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-typeof-symbol@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz" @@ -972,6 +1625,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-typeof-symbol@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz#383dab37fb073f5bfe6e60c654caac309f92ba1c" + integrity sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/plugin-transform-typescript@^7.23.3": version "7.23.6" resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz" @@ -982,6 +1642,17 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-typescript" "^7.23.3" +"@babel/plugin-transform-typescript@^7.24.7": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.2.tgz#237c5d10de6d493be31637c6b9fa30b6c5461add" + integrity sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-create-class-features-plugin" "^7.25.0" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/plugin-syntax-typescript" "^7.24.7" + "@babel/plugin-transform-unicode-escapes@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz" @@ -989,6 +1660,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-unicode-escapes@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz#2023a82ced1fb4971630a2e079764502c4148e0e" + integrity sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-unicode-property-regex@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz" @@ -997,6 +1675,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-unicode-property-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz#9073a4cd13b86ea71c3264659590ac086605bbcd" + integrity sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-unicode-regex@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz" @@ -1005,6 +1691,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-unicode-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz#dfc3d4a51127108099b19817c0963be6a2adf19f" + integrity sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-unicode-sets-regex@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz" @@ -1013,6 +1707,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-unicode-sets-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz#d40705d67523803a576e29c63cef6e516b858ed9" + integrity sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/preset-env@^7.19.4", "@babel/preset-env@^7.22.9": version "7.23.8" resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.8.tgz" @@ -1099,6 +1801,95 @@ core-js-compat "^3.31.0" semver "^6.3.1" +"@babel/preset-env@^7.20.2": + version "7.25.3" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.25.3.tgz#0bf4769d84ac51d1073ab4a86f00f30a3a83c67c" + integrity sha512-QsYW7UeAaXvLPX9tdVliMJE7MD7M6MLYVTovRTIwhoYQVFHR1rM4wO8wqAezYi3/BpSD+NzVCZ69R6smWiIi8g== + dependencies: + "@babel/compat-data" "^7.25.2" + "@babel/helper-compilation-targets" "^7.25.2" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-validator-option" "^7.24.8" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.25.3" + "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.25.0" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.25.0" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.7" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.25.0" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.24.7" + "@babel/plugin-syntax-import-attributes" "^7.24.7" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.24.7" + "@babel/plugin-transform-async-generator-functions" "^7.25.0" + "@babel/plugin-transform-async-to-generator" "^7.24.7" + "@babel/plugin-transform-block-scoped-functions" "^7.24.7" + "@babel/plugin-transform-block-scoping" "^7.25.0" + "@babel/plugin-transform-class-properties" "^7.24.7" + "@babel/plugin-transform-class-static-block" "^7.24.7" + "@babel/plugin-transform-classes" "^7.25.0" + "@babel/plugin-transform-computed-properties" "^7.24.7" + "@babel/plugin-transform-destructuring" "^7.24.8" + "@babel/plugin-transform-dotall-regex" "^7.24.7" + "@babel/plugin-transform-duplicate-keys" "^7.24.7" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.25.0" + "@babel/plugin-transform-dynamic-import" "^7.24.7" + "@babel/plugin-transform-exponentiation-operator" "^7.24.7" + "@babel/plugin-transform-export-namespace-from" "^7.24.7" + "@babel/plugin-transform-for-of" "^7.24.7" + "@babel/plugin-transform-function-name" "^7.25.1" + "@babel/plugin-transform-json-strings" "^7.24.7" + "@babel/plugin-transform-literals" "^7.25.2" + "@babel/plugin-transform-logical-assignment-operators" "^7.24.7" + "@babel/plugin-transform-member-expression-literals" "^7.24.7" + "@babel/plugin-transform-modules-amd" "^7.24.7" + "@babel/plugin-transform-modules-commonjs" "^7.24.8" + "@babel/plugin-transform-modules-systemjs" "^7.25.0" + "@babel/plugin-transform-modules-umd" "^7.24.7" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.24.7" + "@babel/plugin-transform-new-target" "^7.24.7" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.7" + "@babel/plugin-transform-numeric-separator" "^7.24.7" + "@babel/plugin-transform-object-rest-spread" "^7.24.7" + "@babel/plugin-transform-object-super" "^7.24.7" + "@babel/plugin-transform-optional-catch-binding" "^7.24.7" + "@babel/plugin-transform-optional-chaining" "^7.24.8" + "@babel/plugin-transform-parameters" "^7.24.7" + "@babel/plugin-transform-private-methods" "^7.24.7" + "@babel/plugin-transform-private-property-in-object" "^7.24.7" + "@babel/plugin-transform-property-literals" "^7.24.7" + "@babel/plugin-transform-regenerator" "^7.24.7" + "@babel/plugin-transform-reserved-words" "^7.24.7" + "@babel/plugin-transform-shorthand-properties" "^7.24.7" + "@babel/plugin-transform-spread" "^7.24.7" + "@babel/plugin-transform-sticky-regex" "^7.24.7" + "@babel/plugin-transform-template-literals" "^7.24.7" + "@babel/plugin-transform-typeof-symbol" "^7.24.8" + "@babel/plugin-transform-unicode-escapes" "^7.24.7" + "@babel/plugin-transform-unicode-property-regex" "^7.24.7" + "@babel/plugin-transform-unicode-regex" "^7.24.7" + "@babel/plugin-transform-unicode-sets-regex" "^7.24.7" + "@babel/preset-modules" "0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2 "^0.4.10" + babel-plugin-polyfill-corejs3 "^0.10.4" + babel-plugin-polyfill-regenerator "^0.6.1" + core-js-compat "^3.37.1" + semver "^6.3.1" + "@babel/preset-modules@0.1.6-no-external-plugins": version "0.1.6-no-external-plugins" resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz" @@ -1131,6 +1922,17 @@ "@babel/plugin-transform-modules-commonjs" "^7.23.3" "@babel/plugin-transform-typescript" "^7.23.3" +"@babel/preset-typescript@^7.21.0": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.24.7.tgz#66cd86ea8f8c014855671d5ea9a737139cbbfef1" + integrity sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-validator-option" "^7.24.7" + "@babel/plugin-syntax-jsx" "^7.24.7" + "@babel/plugin-transform-modules-commonjs" "^7.24.7" + "@babel/plugin-transform-typescript" "^7.24.7" + "@babel/regjsgen@^0.8.0": version "0.8.0" resolved "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz" @@ -1160,6 +1962,15 @@ "@babel/parser" "^7.22.15" "@babel/types" "^7.22.15" +"@babel/template@^7.24.7", "@babel/template@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.0.tgz#e733dc3134b4fede528c15bc95e89cb98c52592a" + integrity sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/parser" "^7.25.0" + "@babel/types" "^7.25.0" + "@babel/traverse@^7.22.8", "@babel/traverse@^7.23.7": version "7.23.7" resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz" @@ -1176,6 +1987,19 @@ debug "^4.3.1" globals "^11.1.0" +"@babel/traverse@^7.24.7", "@babel/traverse@^7.24.8", "@babel/traverse@^7.25.0", "@babel/traverse@^7.25.1", "@babel/traverse@^7.25.2", "@babel/traverse@^7.25.3": + version "7.25.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.3.tgz#f1b901951c83eda2f3e29450ce92743783373490" + integrity sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.25.0" + "@babel/parser" "^7.25.3" + "@babel/template" "^7.25.0" + "@babel/types" "^7.25.2" + debug "^4.3.1" + globals "^11.1.0" + "@babel/types@^7.20.0", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.23.6", "@babel/types@^7.4.4": version "7.23.6" resolved "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz" @@ -1185,6 +2009,15 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" +"@babel/types@^7.21.3", "@babel/types@^7.24.7", "@babel/types@^7.24.8", "@babel/types@^7.25.0", "@babel/types@^7.25.2": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.2.tgz#55fb231f7dc958cd69ea141a4c2997e819646125" + integrity sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q== + dependencies: + "@babel/helper-string-parser" "^7.24.8" + "@babel/helper-validator-identifier" "^7.24.7" + to-fast-properties "^2.0.0" + "@colors/colors@1.5.0": version "1.5.0" resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz" @@ -1285,6 +2118,80 @@ webpack-merge "^5.9.0" webpackbar "^5.0.2" +"@docusaurus/core@3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-3.4.0.tgz#bdbf1af4b2f25d1bf4a5b62ec6137d84c821cb3c" + integrity sha512-g+0wwmN2UJsBqy2fQRQ6fhXruoEa62JDeEa5d8IdTJlMoaDaEDfHh7WjwGRn4opuTQWpjAwP/fbcgyHKlE+64w== + dependencies: + "@babel/core" "^7.23.3" + "@babel/generator" "^7.23.3" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-transform-runtime" "^7.22.9" + "@babel/preset-env" "^7.22.9" + "@babel/preset-react" "^7.22.5" + "@babel/preset-typescript" "^7.22.5" + "@babel/runtime" "^7.22.6" + "@babel/runtime-corejs3" "^7.22.6" + "@babel/traverse" "^7.22.8" + "@docusaurus/cssnano-preset" "3.4.0" + "@docusaurus/logger" "3.4.0" + "@docusaurus/mdx-loader" "3.4.0" + "@docusaurus/utils" "3.4.0" + "@docusaurus/utils-common" "3.4.0" + "@docusaurus/utils-validation" "3.4.0" + autoprefixer "^10.4.14" + babel-loader "^9.1.3" + babel-plugin-dynamic-import-node "^2.3.3" + boxen "^6.2.1" + chalk "^4.1.2" + chokidar "^3.5.3" + clean-css "^5.3.2" + cli-table3 "^0.6.3" + combine-promises "^1.1.0" + commander "^5.1.0" + copy-webpack-plugin "^11.0.0" + core-js "^3.31.1" + css-loader "^6.8.1" + css-minimizer-webpack-plugin "^5.0.1" + cssnano "^6.1.2" + del "^6.1.1" + detect-port "^1.5.1" + escape-html "^1.0.3" + eta "^2.2.0" + eval "^0.1.8" + file-loader "^6.2.0" + fs-extra "^11.1.1" + html-minifier-terser "^7.2.0" + html-tags "^3.3.1" + html-webpack-plugin "^5.5.3" + leven "^3.1.0" + lodash "^4.17.21" + mini-css-extract-plugin "^2.7.6" + p-map "^4.0.0" + postcss "^8.4.26" + postcss-loader "^7.3.3" + prompts "^2.4.2" + react-dev-utils "^12.0.1" + react-helmet-async "^1.3.0" + react-loadable "npm:@docusaurus/react-loadable@6.0.0" + react-loadable-ssr-addon-v5-slorber "^1.0.1" + react-router "^5.3.4" + react-router-config "^5.1.1" + react-router-dom "^5.3.4" + rtl-detect "^1.0.4" + semver "^7.5.4" + serve-handler "^6.1.5" + shelljs "^0.8.5" + terser-webpack-plugin "^5.3.9" + tslib "^2.6.0" + update-notifier "^6.0.2" + url-loader "^4.1.1" + webpack "^5.88.1" + webpack-bundle-analyzer "^4.9.0" + webpack-dev-server "^4.15.1" + webpack-merge "^5.9.0" + webpackbar "^5.0.2" + "@docusaurus/cssnano-preset@3.1.0": version "3.1.0" resolved "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.1.0.tgz" @@ -1295,6 +2202,16 @@ postcss-sort-media-queries "^4.4.1" tslib "^2.6.0" +"@docusaurus/cssnano-preset@3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.4.0.tgz#dc7922b3bbeabcefc9b60d0161680d81cf72c368" + integrity sha512-qwLFSz6v/pZHy/UP32IrprmH5ORce86BGtN0eBtG75PpzQJAzp9gefspox+s8IEOr0oZKuQ/nhzZ3xwyc3jYJQ== + dependencies: + cssnano-preset-advanced "^6.1.2" + postcss "^8.4.38" + postcss-sort-media-queries "^5.2.0" + tslib "^2.6.0" + "@docusaurus/logger@3.1.0": version "3.1.0" resolved "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.1.0.tgz" @@ -1303,6 +2220,14 @@ chalk "^4.1.2" tslib "^2.6.0" +"@docusaurus/logger@3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.4.0.tgz#8b0ac05c7f3dac2009066e2f964dee8209a77403" + integrity sha512-bZwkX+9SJ8lB9kVRkXw+xvHYSMGG4bpYHKGXeXFvyVc79NMeeBSGgzd4TQLHH+DYeOJoCdl8flrFJVxlZ0wo/Q== + dependencies: + chalk "^4.1.2" + tslib "^2.6.0" + "@docusaurus/mdx-loader@3.1.0": version "3.1.0" resolved "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.1.0.tgz" @@ -1335,6 +2260,36 @@ vfile "^6.0.1" webpack "^5.88.1" +"@docusaurus/mdx-loader@3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-3.4.0.tgz#483d7ab57928fdbb5c8bd1678098721a930fc5f6" + integrity sha512-kSSbrrk4nTjf4d+wtBA9H+FGauf2gCax89kV8SUSJu3qaTdSIKdWERlngsiHaCFgZ7laTJ8a67UFf+xlFPtuTw== + dependencies: + "@docusaurus/logger" "3.4.0" + "@docusaurus/utils" "3.4.0" + "@docusaurus/utils-validation" "3.4.0" + "@mdx-js/mdx" "^3.0.0" + "@slorber/remark-comment" "^1.0.0" + escape-html "^1.0.3" + estree-util-value-to-estree "^3.0.1" + file-loader "^6.2.0" + fs-extra "^11.1.1" + image-size "^1.0.2" + mdast-util-mdx "^3.0.0" + mdast-util-to-string "^4.0.0" + rehype-raw "^7.0.0" + remark-directive "^3.0.0" + remark-emoji "^4.0.0" + remark-frontmatter "^5.0.0" + remark-gfm "^4.0.0" + stringify-object "^3.3.0" + tslib "^2.6.0" + unified "^11.0.3" + unist-util-visit "^5.0.0" + url-loader "^4.1.1" + vfile "^6.0.1" + webpack "^5.88.1" + "@docusaurus/module-type-aliases@3.1.0": version "3.1.0" resolved "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.1.0.tgz" @@ -1349,6 +2304,19 @@ react-helmet-async "*" react-loadable "npm:@docusaurus/react-loadable@5.5.2" +"@docusaurus/module-type-aliases@3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-3.4.0.tgz#2653bde58fc1aa3dbc626a6c08cfb63a37ae1bb8" + integrity sha512-A1AyS8WF5Bkjnb8s+guTDuYmUiwJzNrtchebBHpc0gz0PyHJNMaybUlSrmJjHVcGrya0LKI4YcR3lBDQfXRYLw== + dependencies: + "@docusaurus/types" "3.4.0" + "@types/history" "^4.7.11" + "@types/react" "*" + "@types/react-router-config" "*" + "@types/react-router-dom" "*" + react-helmet-async "*" + react-loadable "npm:@docusaurus/react-loadable@6.0.0" + "@docusaurus/plugin-content-blog@3.1.0": version "3.1.0" resolved "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.1.0.tgz" @@ -1393,6 +2361,28 @@ utility-types "^3.10.0" webpack "^5.88.1" +"@docusaurus/plugin-content-docs@^2 || ^3": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.4.0.tgz#3088973f72169a2a6d533afccec7153c8720d332" + integrity sha512-HkUCZffhBo7ocYheD9oZvMcDloRnGhBMOZRyVcAQRFmZPmNqSyISlXA1tQCIxW+r478fty97XXAGjNYzBjpCsg== + dependencies: + "@docusaurus/core" "3.4.0" + "@docusaurus/logger" "3.4.0" + "@docusaurus/mdx-loader" "3.4.0" + "@docusaurus/module-type-aliases" "3.4.0" + "@docusaurus/types" "3.4.0" + "@docusaurus/utils" "3.4.0" + "@docusaurus/utils-common" "3.4.0" + "@docusaurus/utils-validation" "3.4.0" + "@types/react-router-config" "^5.0.7" + combine-promises "^1.1.0" + fs-extra "^11.1.1" + js-yaml "^4.1.0" + lodash "^4.17.21" + tslib "^2.6.0" + utility-types "^3.10.0" + webpack "^5.88.1" + "@docusaurus/plugin-content-pages@3.1.0": version "3.1.0" resolved "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.1.0.tgz" @@ -1574,6 +2564,14 @@ fs-extra "^11.1.1" tslib "^2.6.0" +"@docusaurus/theme-translations@^2 || ^3": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-3.4.0.tgz#e6355d01352886c67e38e848b2542582ea3070af" + integrity sha512-zSxCSpmQCCdQU5Q4CnX/ID8CSUUI3fvmq4hU/GNP/XoAWtXo9SAVnM3TzpU8Gb//H3WCsT8mJcTfyOk3d9ftNg== + dependencies: + fs-extra "^11.1.1" + tslib "^2.6.0" + "@docusaurus/tsconfig@3.1.0": version "3.1.0" resolved "https://registry.npmjs.org/@docusaurus/tsconfig/-/tsconfig-3.1.0.tgz" @@ -1594,6 +2592,21 @@ webpack "^5.88.1" webpack-merge "^5.9.0" +"@docusaurus/types@3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-3.4.0.tgz#237c3f737e9db3f7c1a5935a3ef48d6eadde8292" + integrity sha512-4jcDO8kXi5Cf9TcyikB/yKmz14f2RZ2qTRerbHAsS+5InE9ZgSLBNLsewtFTcTOXSVcbU3FoGOzcNWAmU1TR0A== + dependencies: + "@mdx-js/mdx" "^3.0.0" + "@types/history" "^4.7.11" + "@types/react" "*" + commander "^5.1.0" + joi "^17.9.2" + react-helmet-async "^1.3.0" + utility-types "^3.10.0" + webpack "^5.88.1" + webpack-merge "^5.9.0" + "@docusaurus/utils-common@3.1.0": version "3.1.0" resolved "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.1.0.tgz" @@ -1601,6 +2614,13 @@ dependencies: tslib "^2.6.0" +"@docusaurus/utils-common@3.4.0", "@docusaurus/utils-common@^2 || ^3": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-3.4.0.tgz#2a43fefd35b85ab9fcc6833187e66c15f8bfbbc6" + integrity sha512-NVx54Wr4rCEKsjOH5QEVvxIqVvm+9kh7q8aYTU5WzUU9/Hctd6aTrcZ3G0Id4zYJ+AeaG5K5qHA4CY5Kcm2iyQ== + dependencies: + tslib "^2.6.0" + "@docusaurus/utils-validation@3.1.0": version "3.1.0" resolved "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.1.0.tgz" @@ -1612,6 +2632,20 @@ js-yaml "^4.1.0" tslib "^2.6.0" +"@docusaurus/utils-validation@3.4.0", "@docusaurus/utils-validation@^2 || ^3": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-3.4.0.tgz#0176f6e503ff45f4390ec2ecb69550f55e0b5eb7" + integrity sha512-hYQ9fM+AXYVTWxJOT1EuNaRnrR2WGpRdLDQG07O8UOpsvCPWUVOeo26Rbm0JWY2sGLfzAb+tvJ62yF+8F+TV0g== + dependencies: + "@docusaurus/logger" "3.4.0" + "@docusaurus/utils" "3.4.0" + "@docusaurus/utils-common" "3.4.0" + fs-extra "^11.2.0" + joi "^17.9.2" + js-yaml "^4.1.0" + lodash "^4.17.21" + tslib "^2.6.0" + "@docusaurus/utils@3.1.0": version "3.1.0" resolved "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.1.0.tgz" @@ -1635,6 +2669,84 @@ url-loader "^4.1.1" webpack "^5.88.1" +"@docusaurus/utils@3.4.0", "@docusaurus/utils@^2 || ^3": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-3.4.0.tgz#c508e20627b7a55e2b541e4a28c95e0637d6a204" + integrity sha512-fRwnu3L3nnWaXOgs88BVBmG1yGjcQqZNHG+vInhEa2Sz2oQB+ZjbEMO5Rh9ePFpZ0YDiDUhpaVjwmS+AU2F14g== + dependencies: + "@docusaurus/logger" "3.4.0" + "@docusaurus/utils-common" "3.4.0" + "@svgr/webpack" "^8.1.0" + escape-string-regexp "^4.0.0" + file-loader "^6.2.0" + fs-extra "^11.1.1" + github-slugger "^1.5.0" + globby "^11.1.0" + gray-matter "^4.0.3" + jiti "^1.20.0" + js-yaml "^4.1.0" + lodash "^4.17.21" + micromatch "^4.0.5" + prompts "^2.4.2" + resolve-pathname "^3.0.0" + shelljs "^0.8.5" + tslib "^2.6.0" + url-loader "^4.1.1" + utility-types "^3.10.0" + webpack "^5.88.1" + +"@easyops-cn/autocomplete.js@^0.38.1": + version "0.38.1" + resolved "https://registry.yarnpkg.com/@easyops-cn/autocomplete.js/-/autocomplete.js-0.38.1.tgz#46dff5795a9a032fa9b9250fdf63ca6c61c07629" + integrity sha512-drg76jS6syilOUmVNkyo1c7ZEBPcPuK+aJA7AksM5ZIIbV57DMHCywiCr+uHyv8BE5jUTU98j/H7gVrkHrWW3Q== + dependencies: + cssesc "^3.0.0" + immediate "^3.2.3" + +"@easyops-cn/docusaurus-search-local@^0.44.4": + version "0.44.4" + resolved "https://registry.yarnpkg.com/@easyops-cn/docusaurus-search-local/-/docusaurus-search-local-0.44.4.tgz#d02122c3966eb6ab0bf152c07d7741015fb1c297" + integrity sha512-Zgp69N9W+lkOqmwxE3aLLkveeqSJh/BwHg6TFZTfbliwEg9p9k5DH8NBWfZNpVfN7y6RFqCQ6/SU2l+4hKcXzw== + dependencies: + "@docusaurus/plugin-content-docs" "^2 || ^3" + "@docusaurus/theme-translations" "^2 || ^3" + "@docusaurus/utils" "^2 || ^3" + "@docusaurus/utils-common" "^2 || ^3" + "@docusaurus/utils-validation" "^2 || ^3" + "@easyops-cn/autocomplete.js" "^0.38.1" + "@node-rs/jieba" "^1.6.0" + cheerio "^1.0.0-rc.3" + clsx "^1.1.1" + debug "^4.2.0" + fs-extra "^10.0.0" + klaw-sync "^6.0.0" + lunr "^2.3.9" + lunr-languages "^1.4.0" + mark.js "^8.11.1" + tslib "^2.4.0" + +"@emnapi/core@^1.1.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.2.0.tgz#7b738e5033738132bf6af0b8fae7b05249bdcbd7" + integrity sha512-E7Vgw78I93we4ZWdYCb4DGAwRROGkMIXk7/y87UmANR+J6qsWusmC3gLt0H+O0KOt5e6O38U8oJamgbudrES/w== + dependencies: + "@emnapi/wasi-threads" "1.0.1" + tslib "^2.4.0" + +"@emnapi/runtime@^1.1.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.2.0.tgz#71d018546c3a91f3b51106530edbc056b9f2f2e3" + integrity sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ== + dependencies: + tslib "^2.4.0" + +"@emnapi/wasi-threads@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.0.1.tgz#d7ae71fd2166b1c916c6cd2d0df2ef565a2e1a5b" + integrity sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw== + dependencies: + tslib "^2.4.0" + "@hapi/hoek@^9.0.0": version "9.3.0" resolved "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz" @@ -1675,6 +2787,15 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" +"@jridgewell/gen-mapping@^0.3.5": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" + integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + "@jridgewell/resolve-uri@^3.1.0": version "3.1.1" resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz" @@ -1685,6 +2806,11 @@ resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + "@jridgewell/source-map@^0.3.3": version "0.3.5" resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz" @@ -1706,6 +2832,14 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" +"@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + "@laxels/docusaurus-plugin-segment@^1.0.6": version "1.0.6" resolved "https://registry.yarnpkg.com/@laxels/docusaurus-plugin-segment/-/docusaurus-plugin-segment-1.0.6.tgz#224fc874483e11cd753d3d9d8f7e99d73c01dafa" @@ -1754,6 +2888,15 @@ dependencies: "@types/mdx" "^2.0.0" +"@napi-rs/wasm-runtime@^0.2.3": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz#d27788176f250d86e498081e3c5ff48a17606918" + integrity sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ== + dependencies: + "@emnapi/core" "^1.1.0" + "@emnapi/runtime" "^1.1.0" + "@tybys/wasm-util" "^0.9.0" + "@ndhoule/each@^2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@ndhoule/each/-/each-2.0.1.tgz#bbed372a603e0713a3193c706a73ddebc5b426a9" @@ -1773,6 +2916,98 @@ dependencies: "@ndhoule/each" "^2.0.1" +"@node-rs/jieba-android-arm-eabi@1.10.3": + version "1.10.3" + resolved "https://registry.yarnpkg.com/@node-rs/jieba-android-arm-eabi/-/jieba-android-arm-eabi-1.10.3.tgz#821af26a4953b3fbdf2f80a4d08a9d9114b40bea" + integrity sha512-fuqVtaYlUKZg3cqagYFxj1DSa7ZHKXLle4iGH2kbQWg7Kw6cf7aCYBHIUZuH5sliK10M/CWccZ+SGRUwcSGfbg== + +"@node-rs/jieba-android-arm64@1.10.3": + version "1.10.3" + resolved "https://registry.yarnpkg.com/@node-rs/jieba-android-arm64/-/jieba-android-arm64-1.10.3.tgz#e5c285fb8de71739dfa3a83d894adcadb799c404" + integrity sha512-iuZZZq5yD9lT+AgaXpFe19gtAsIecUODRLLaBFbavjgjLk5cumv38ytWjS36s/eqptwI15MQfysSYOlWtMEG5g== + +"@node-rs/jieba-darwin-arm64@1.10.3": + version "1.10.3" + resolved "https://registry.yarnpkg.com/@node-rs/jieba-darwin-arm64/-/jieba-darwin-arm64-1.10.3.tgz#67df85df39ff60dcc3e084f6e36e5182779b69ad" + integrity sha512-dwPhkav1tEARskwPz91UUXL2NXy4h0lJYTuJzpGgwXxm552zBM2JJ41kjah1364j+EOq5At3NQvf5r5rH89phQ== + +"@node-rs/jieba-darwin-x64@1.10.3": + version "1.10.3" + resolved "https://registry.yarnpkg.com/@node-rs/jieba-darwin-x64/-/jieba-darwin-x64-1.10.3.tgz#ffdc8a63335294d7c68d3aebec870ec0824ebe98" + integrity sha512-kjxvV6G1baQo/2I3mELv5qGv4Q0rhd5srwXhypSxMWZFtSpNwCDsLcIOR5bvMBci6QVFfZOs6WD6DKiWVz0SlA== + +"@node-rs/jieba-freebsd-x64@1.10.3": + version "1.10.3" + resolved "https://registry.yarnpkg.com/@node-rs/jieba-freebsd-x64/-/jieba-freebsd-x64-1.10.3.tgz#188349a9074b200af4a3e8a0ea169f45efd6c162" + integrity sha512-QYTsn+zlWRil+MuBeLfTK5Md4GluOf2lHnFqjrOZW2oMgNOvxB3qoLV4TUf70S/E2XHeP6PUdjCKItX8C7GQPg== + +"@node-rs/jieba-linux-arm-gnueabihf@1.10.3": + version "1.10.3" + resolved "https://registry.yarnpkg.com/@node-rs/jieba-linux-arm-gnueabihf/-/jieba-linux-arm-gnueabihf-1.10.3.tgz#e1831b7b08a32904b12860555978c50222a97b54" + integrity sha512-UFB43kDOvqmbRl99e3GPwaTuwJZaAvgLaMTvBkmxww4MpQH6G1k31RLzMW/S21uSQso2lj6W/Mm59gaJk2FiyA== + +"@node-rs/jieba-linux-arm64-gnu@1.10.3": + version "1.10.3" + resolved "https://registry.yarnpkg.com/@node-rs/jieba-linux-arm64-gnu/-/jieba-linux-arm64-gnu-1.10.3.tgz#326712eb7418f9796b113af93afe59ab64c37add" + integrity sha512-bu++yWi10wZtnS5uLcwxzxKmHVT77NgQMK8JiQr1TWCl3Y1Th7CnEHQtxfVB489edDK8l644h1/4zSTe5fRnOQ== + +"@node-rs/jieba-linux-arm64-musl@1.10.3": + version "1.10.3" + resolved "https://registry.yarnpkg.com/@node-rs/jieba-linux-arm64-musl/-/jieba-linux-arm64-musl-1.10.3.tgz#6a3149d5abbe09f7c7748da219d5c39522b36c8a" + integrity sha512-pJh+SzrK1HaKakhdFM+ew9vXwpZqMxy9u0U7J4GT+3GvOwnAZ+KjeaHebIfgOz7ZHvp/T4YBNf8oWW4zwj3AJw== + +"@node-rs/jieba-linux-x64-gnu@1.10.3": + version "1.10.3" + resolved "https://registry.yarnpkg.com/@node-rs/jieba-linux-x64-gnu/-/jieba-linux-x64-gnu-1.10.3.tgz#5d75fbc62a36cbb79137284abe4f432da06c2c80" + integrity sha512-GF5cfvu/0wXO2fVX/XV3WYH/xEGWzMBvfqLhGiA1OA1xHIufnA1T7uU3ZXkyoNi5Bzf6dmxnwtE4CJL0nvhwjQ== + +"@node-rs/jieba-linux-x64-musl@1.10.3": + version "1.10.3" + resolved "https://registry.yarnpkg.com/@node-rs/jieba-linux-x64-musl/-/jieba-linux-x64-musl-1.10.3.tgz#fce3aa9c394dbc51b4b3e92d29b385b4c4f23aec" + integrity sha512-h45HMVU/hgzQ0saXNsK9fKlGdah1i1cXZULpB5vQRlRL2ZIaGp+ULtWTogS7vkoo2K8s2l4tqakWMg9eUjIJ2A== + +"@node-rs/jieba-wasm32-wasi@1.10.3": + version "1.10.3" + resolved "https://registry.yarnpkg.com/@node-rs/jieba-wasm32-wasi/-/jieba-wasm32-wasi-1.10.3.tgz#b852eb2c9b8c81c5514ed8bb76d74c1cdf66fe76" + integrity sha512-vuoQ62vVoedNGcBmIi4UWdtNBOZG8B+vDYfjx3FD6rNg6g/RgwbVjYXbOVMOQwX06Ob9CfrutICXdUGHgoxzEQ== + dependencies: + "@napi-rs/wasm-runtime" "^0.2.3" + +"@node-rs/jieba-win32-arm64-msvc@1.10.3": + version "1.10.3" + resolved "https://registry.yarnpkg.com/@node-rs/jieba-win32-arm64-msvc/-/jieba-win32-arm64-msvc-1.10.3.tgz#eefce48df8ec0496a0e45593d0b5f8981bb32b80" + integrity sha512-B8t4dh56TZnMLBoYWDkopf1ed37Ru/iU1qiIeBkbZWXGmNBChNZUOd//eaPOFjx8m9Sfc8bkj3FBRWt/kTAhmw== + +"@node-rs/jieba-win32-ia32-msvc@1.10.3": + version "1.10.3" + resolved "https://registry.yarnpkg.com/@node-rs/jieba-win32-ia32-msvc/-/jieba-win32-ia32-msvc-1.10.3.tgz#edfb74e880a32f66a6810502957b62f9b042b487" + integrity sha512-SKuPGZJ5T+X4jOn1S8LklOSZ6HC7UBiw0hwi2z9uqX6WgElquLjGi/xfZ2gPqffeR/5K/PUu7aqYUUPL1XonVQ== + +"@node-rs/jieba-win32-x64-msvc@1.10.3": + version "1.10.3" + resolved "https://registry.yarnpkg.com/@node-rs/jieba-win32-x64-msvc/-/jieba-win32-x64-msvc-1.10.3.tgz#285a24134d9c367b11d73060bdc37c351c3e60b5" + integrity sha512-j9I4+a/tf2hsLu8Sr0NhcLBVNBBQctO2mzcjemMpRa1SlEeODyic9RIyP8Ljz3YTN6MYqKh1KA9iR1xvxjxYFg== + +"@node-rs/jieba@^1.6.0": + version "1.10.3" + resolved "https://registry.yarnpkg.com/@node-rs/jieba/-/jieba-1.10.3.tgz#05756df55c99f2c4f68c5e41d258edec21a97395" + integrity sha512-SG0CWHmhIveH6upJURgymDKLertEPYbOc5NSFIpbZWW1W2MpqgumVteQO+5YBlkmpR6jMNDPWNQyQwkB6HoeNg== + optionalDependencies: + "@node-rs/jieba-android-arm-eabi" "1.10.3" + "@node-rs/jieba-android-arm64" "1.10.3" + "@node-rs/jieba-darwin-arm64" "1.10.3" + "@node-rs/jieba-darwin-x64" "1.10.3" + "@node-rs/jieba-freebsd-x64" "1.10.3" + "@node-rs/jieba-linux-arm-gnueabihf" "1.10.3" + "@node-rs/jieba-linux-arm64-gnu" "1.10.3" + "@node-rs/jieba-linux-arm64-musl" "1.10.3" + "@node-rs/jieba-linux-x64-gnu" "1.10.3" + "@node-rs/jieba-linux-x64-musl" "1.10.3" + "@node-rs/jieba-wasm32-wasi" "1.10.3" + "@node-rs/jieba-win32-arm64-msvc" "1.10.3" + "@node-rs/jieba-win32-ia32-msvc" "1.10.3" + "@node-rs/jieba-win32-x64-msvc" "1.10.3" + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" @@ -1877,46 +3112,90 @@ p-map "^4.0.0" webpack-sources "^3.2.2" +"@svgr/babel-plugin-add-jsx-attribute@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz#4001f5d5dd87fa13303e36ee106e3ff3a7eb8b22" + integrity sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g== + "@svgr/babel-plugin-add-jsx-attribute@^6.5.1": version "6.5.1" resolved "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz" integrity sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ== -"@svgr/babel-plugin-remove-jsx-attribute@*": +"@svgr/babel-plugin-remove-jsx-attribute@*", "@svgr/babel-plugin-remove-jsx-attribute@8.0.0": version "8.0.0" resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz" integrity sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA== -"@svgr/babel-plugin-remove-jsx-empty-expression@*": +"@svgr/babel-plugin-remove-jsx-empty-expression@*", "@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0": version "8.0.0" resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz" integrity sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA== +"@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz#8fbb6b2e91fa26ac5d4aa25c6b6e4f20f9c0ae27" + integrity sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ== + "@svgr/babel-plugin-replace-jsx-attribute-value@^6.5.1": version "6.5.1" resolved "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz" integrity sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg== +"@svgr/babel-plugin-svg-dynamic-title@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz#1d5ba1d281363fc0f2f29a60d6d936f9bbc657b0" + integrity sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og== + "@svgr/babel-plugin-svg-dynamic-title@^6.5.1": version "6.5.1" resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz" integrity sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw== +"@svgr/babel-plugin-svg-em-dimensions@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz#35e08df300ea8b1d41cb8f62309c241b0369e501" + integrity sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g== + "@svgr/babel-plugin-svg-em-dimensions@^6.5.1": version "6.5.1" resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz" integrity sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA== +"@svgr/babel-plugin-transform-react-native-svg@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz#90a8b63998b688b284f255c6a5248abd5b28d754" + integrity sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q== + "@svgr/babel-plugin-transform-react-native-svg@^6.5.1": version "6.5.1" resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz" integrity sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg== +"@svgr/babel-plugin-transform-svg-component@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz#013b4bfca88779711f0ed2739f3f7efcefcf4f7e" + integrity sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw== + "@svgr/babel-plugin-transform-svg-component@^6.5.1": version "6.5.1" resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz" integrity sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ== +"@svgr/babel-preset@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-8.1.0.tgz#0e87119aecdf1c424840b9d4565b7137cabf9ece" + integrity sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "8.0.0" + "@svgr/babel-plugin-remove-jsx-attribute" "8.0.0" + "@svgr/babel-plugin-remove-jsx-empty-expression" "8.0.0" + "@svgr/babel-plugin-replace-jsx-attribute-value" "8.0.0" + "@svgr/babel-plugin-svg-dynamic-title" "8.0.0" + "@svgr/babel-plugin-svg-em-dimensions" "8.0.0" + "@svgr/babel-plugin-transform-react-native-svg" "8.1.0" + "@svgr/babel-plugin-transform-svg-component" "8.0.0" + "@svgr/babel-preset@^6.5.1": version "6.5.1" resolved "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.5.1.tgz" @@ -1931,6 +3210,17 @@ "@svgr/babel-plugin-transform-react-native-svg" "^6.5.1" "@svgr/babel-plugin-transform-svg-component" "^6.5.1" +"@svgr/core@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-8.1.0.tgz#41146f9b40b1a10beaf5cc4f361a16a3c1885e88" + integrity sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA== + dependencies: + "@babel/core" "^7.21.3" + "@svgr/babel-preset" "8.1.0" + camelcase "^6.2.0" + cosmiconfig "^8.1.3" + snake-case "^3.0.4" + "@svgr/core@^6.5.1": version "6.5.1" resolved "https://registry.npmjs.org/@svgr/core/-/core-6.5.1.tgz" @@ -1942,6 +3232,14 @@ camelcase "^6.2.0" cosmiconfig "^7.0.1" +"@svgr/hast-util-to-babel-ast@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz#6952fd9ce0f470e1aded293b792a2705faf4ffd4" + integrity sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q== + dependencies: + "@babel/types" "^7.21.3" + entities "^4.4.0" + "@svgr/hast-util-to-babel-ast@^6.5.1": version "6.5.1" resolved "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz" @@ -1950,6 +3248,16 @@ "@babel/types" "^7.20.0" entities "^4.4.0" +"@svgr/plugin-jsx@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz#96969f04a24b58b174ee4cd974c60475acbd6928" + integrity sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA== + dependencies: + "@babel/core" "^7.21.3" + "@svgr/babel-preset" "8.1.0" + "@svgr/hast-util-to-babel-ast" "8.0.0" + svg-parser "^2.0.4" + "@svgr/plugin-jsx@^6.5.1": version "6.5.1" resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz" @@ -1960,6 +3268,15 @@ "@svgr/hast-util-to-babel-ast" "^6.5.1" svg-parser "^2.0.4" +"@svgr/plugin-svgo@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz#b115b7b967b564f89ac58feae89b88c3decd0f00" + integrity sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA== + dependencies: + cosmiconfig "^8.1.3" + deepmerge "^4.3.1" + svgo "^3.0.2" + "@svgr/plugin-svgo@^6.5.1": version "6.5.1" resolved "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.5.1.tgz" @@ -1983,6 +3300,20 @@ "@svgr/plugin-jsx" "^6.5.1" "@svgr/plugin-svgo" "^6.5.1" +"@svgr/webpack@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-8.1.0.tgz#16f1b5346f102f89fda6ec7338b96a701d8be0c2" + integrity sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA== + dependencies: + "@babel/core" "^7.21.3" + "@babel/plugin-transform-react-constant-elements" "^7.21.3" + "@babel/preset-env" "^7.20.2" + "@babel/preset-react" "^7.18.6" + "@babel/preset-typescript" "^7.21.0" + "@svgr/core" "8.1.0" + "@svgr/plugin-jsx" "8.1.0" + "@svgr/plugin-svgo" "8.1.0" + "@szmarczak/http-timer@^5.0.1": version "5.0.1" resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz" @@ -1995,6 +3326,13 @@ resolved "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz" integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== +"@tybys/wasm-util@^0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.9.0.tgz#3e75eb00604c8d6db470bf18c37b7d984a0e3355" + integrity sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw== + dependencies: + tslib "^2.4.0" + "@types/acorn@^4.0.0": version "4.0.6" resolved "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz" @@ -2669,6 +4007,18 @@ autoprefixer@^10.4.12, autoprefixer@^10.4.14: picocolors "^1.0.0" postcss-value-parser "^4.2.0" +autoprefixer@^10.4.19: + version "10.4.20" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.20.tgz#5caec14d43976ef42e32dcb4bd62878e96be5b3b" + integrity sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g== + dependencies: + browserslist "^4.23.3" + caniuse-lite "^1.0.30001646" + fraction.js "^4.3.7" + normalize-range "^0.1.2" + picocolors "^1.0.1" + postcss-value-parser "^4.2.0" + babel-loader@^9.1.3: version "9.1.3" resolved "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz" @@ -2684,6 +4034,15 @@ babel-plugin-dynamic-import-node@^2.3.3: dependencies: object.assign "^4.1.0" +babel-plugin-polyfill-corejs2@^0.4.10: + version "0.4.11" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz#30320dfe3ffe1a336c15afdcdafd6fd615b25e33" + integrity sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q== + dependencies: + "@babel/compat-data" "^7.22.6" + "@babel/helper-define-polyfill-provider" "^0.6.2" + semver "^6.3.1" + babel-plugin-polyfill-corejs2@^0.4.7: version "0.4.7" resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.7.tgz" @@ -2693,6 +4052,14 @@ babel-plugin-polyfill-corejs2@^0.4.7: "@babel/helper-define-polyfill-provider" "^0.4.4" semver "^6.3.1" +babel-plugin-polyfill-corejs3@^0.10.4: + version "0.10.6" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz#2deda57caef50f59c525aeb4964d3b2f867710c7" + integrity sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.2" + core-js-compat "^3.38.0" + babel-plugin-polyfill-corejs3@^0.8.7: version "0.8.7" resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz" @@ -2708,6 +4075,13 @@ babel-plugin-polyfill-regenerator@^0.5.4: dependencies: "@babel/helper-define-polyfill-provider" "^0.4.4" +babel-plugin-polyfill-regenerator@^0.6.1: + version "0.6.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz#addc47e240edd1da1058ebda03021f382bba785e" + integrity sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.2" + bail@^2.0.0: version "2.0.2" resolved "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz" @@ -2817,6 +4191,16 @@ browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.18.1, browserslist@^4 node-releases "^2.0.14" update-browserslist-db "^1.0.13" +browserslist@^4.23.0, browserslist@^4.23.1, browserslist@^4.23.3: + version "4.23.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.3.tgz#debb029d3c93ebc97ffbc8d9cbb03403e227c800" + integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA== + dependencies: + caniuse-lite "^1.0.30001646" + electron-to-chromium "^1.5.4" + node-releases "^2.0.18" + update-browserslist-db "^1.1.0" + buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" @@ -2897,6 +4281,11 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001538, caniuse-lite@^1.0.30001565: resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001576.tgz" integrity sha512-ff5BdakGe2P3SQsMsiqmt1Lc8221NR1VzHj5jXN5vBny9A6fpze94HiVV/n7XRosOlsShJcvMv5mdnpjOGCEgg== +caniuse-lite@^1.0.30001646: + version "1.0.30001649" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001649.tgz#3ec700309ca0da2b0d3d5fb03c411b191761c992" + integrity sha512-fJegqZZ0ZX8HOWr6rcafGr72+xcgJKI9oWfDW5DrD7ExUtgZC7a7R7ZYmZqplh7XDocFdGeIFn7roAxhOeYrPQ== + ccount@^2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz" @@ -2961,7 +4350,7 @@ cheerio-select@^2.1.0: domhandler "^5.0.3" domutils "^3.0.1" -cheerio@^1.0.0-rc.12: +cheerio@^1.0.0-rc.12, cheerio@^1.0.0-rc.3: version "1.0.0-rc.12" resolved "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz" integrity sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q== @@ -3034,6 +4423,11 @@ clone-deep@^4.0.1: kind-of "^6.0.2" shallow-clone "^3.0.0" +clsx@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" + integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== + clsx@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz" @@ -3068,7 +4462,7 @@ color-name@~1.1.4: resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -colord@^2.9.1: +colord@^2.9.1, colord@^2.9.3: version "2.9.3" resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== @@ -3228,6 +4622,13 @@ core-js-compat@^3.31.0, core-js-compat@^3.33.1: dependencies: browserslist "^4.22.2" +core-js-compat@^3.37.1, core-js-compat@^3.38.0: + version "3.38.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.38.0.tgz#d93393b1aa346b6ee683377b0c31172ccfe607aa" + integrity sha512-75LAicdLa4OJVwFxFbQR3NdnZjNgX6ILpVcVzcC4T2smerB5lELMrJQQQoWV6TiuC/vlaFqgU2tKQx9w5s0e0A== + dependencies: + browserslist "^4.23.3" + core-js-pure@^3.30.2: version "3.35.0" resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.35.0.tgz" @@ -3265,7 +4666,7 @@ cosmiconfig@^7.0.1: path-type "^4.0.0" yaml "^1.10.0" -cosmiconfig@^8.3.5: +cosmiconfig@^8.1.3, cosmiconfig@^8.3.5: version "8.3.6" resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz" integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== @@ -3296,6 +4697,11 @@ css-declaration-sorter@^6.3.1: resolved "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz" integrity sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g== +css-declaration-sorter@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz#6dec1c9523bc4a643e088aab8f09e67a54961024" + integrity sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow== + css-loader@^6.8.1: version "6.9.0" resolved "https://registry.npmjs.org/css-loader/-/css-loader-6.9.0.tgz" @@ -3322,6 +4728,18 @@ css-minimizer-webpack-plugin@^4.2.2: serialize-javascript "^6.0.0" source-map "^0.6.1" +css-minimizer-webpack-plugin@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz#33effe662edb1a0bf08ad633c32fa75d0f7ec565" + integrity sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg== + dependencies: + "@jridgewell/trace-mapping" "^0.3.18" + cssnano "^6.0.1" + jest-worker "^29.4.3" + postcss "^8.4.24" + schema-utils "^4.0.1" + serialize-javascript "^6.0.1" + css-select@^4.1.3: version "4.3.0" resolved "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz" @@ -3352,6 +4770,22 @@ css-tree@^1.1.2, css-tree@^1.1.3: mdn-data "2.0.14" source-map "^0.6.1" +css-tree@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20" + integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== + dependencies: + mdn-data "2.0.30" + source-map-js "^1.0.1" + +css-tree@~2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.2.1.tgz#36115d382d60afd271e377f9c5f67d02bd48c032" + integrity sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA== + dependencies: + mdn-data "2.0.28" + source-map-js "^1.0.1" + css-what@^6.0.1, css-what@^6.1.0: version "6.1.0" resolved "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" @@ -3374,6 +4808,19 @@ cssnano-preset-advanced@^5.3.10: postcss-reduce-idents "^5.2.0" postcss-zindex "^5.1.0" +cssnano-preset-advanced@^6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/cssnano-preset-advanced/-/cssnano-preset-advanced-6.1.2.tgz#82b090872b8f98c471f681d541c735acf8b94d3f" + integrity sha512-Nhao7eD8ph2DoHolEzQs5CfRpiEP0xa1HBdnFZ82kvqdmbwVBUr2r1QuQ4t1pi+D1ZpqpcO4T+wy/7RxzJ/WPQ== + dependencies: + autoprefixer "^10.4.19" + browserslist "^4.23.0" + cssnano-preset-default "^6.1.2" + postcss-discard-unused "^6.0.5" + postcss-merge-idents "^6.0.3" + postcss-reduce-idents "^6.0.3" + postcss-zindex "^6.0.2" + cssnano-preset-default@^5.2.14: version "5.2.14" resolved "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz" @@ -3409,11 +4856,52 @@ cssnano-preset-default@^5.2.14: postcss-svgo "^5.1.0" postcss-unique-selectors "^5.1.1" +cssnano-preset-default@^6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz#adf4b89b975aa775f2750c89dbaf199bbd9da35e" + integrity sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg== + dependencies: + browserslist "^4.23.0" + css-declaration-sorter "^7.2.0" + cssnano-utils "^4.0.2" + postcss-calc "^9.0.1" + postcss-colormin "^6.1.0" + postcss-convert-values "^6.1.0" + postcss-discard-comments "^6.0.2" + postcss-discard-duplicates "^6.0.3" + postcss-discard-empty "^6.0.3" + postcss-discard-overridden "^6.0.2" + postcss-merge-longhand "^6.0.5" + postcss-merge-rules "^6.1.1" + postcss-minify-font-values "^6.1.0" + postcss-minify-gradients "^6.0.3" + postcss-minify-params "^6.1.0" + postcss-minify-selectors "^6.0.4" + postcss-normalize-charset "^6.0.2" + postcss-normalize-display-values "^6.0.2" + postcss-normalize-positions "^6.0.2" + postcss-normalize-repeat-style "^6.0.2" + postcss-normalize-string "^6.0.2" + postcss-normalize-timing-functions "^6.0.2" + postcss-normalize-unicode "^6.1.0" + postcss-normalize-url "^6.0.2" + postcss-normalize-whitespace "^6.0.2" + postcss-ordered-values "^6.0.2" + postcss-reduce-initial "^6.1.0" + postcss-reduce-transforms "^6.0.2" + postcss-svgo "^6.0.3" + postcss-unique-selectors "^6.0.4" + cssnano-utils@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz" integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== +cssnano-utils@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-4.0.2.tgz#56f61c126cd0f11f2eef1596239d730d9fceff3c" + integrity sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ== + cssnano@^5.1.15, cssnano@^5.1.8: version "5.1.15" resolved "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz" @@ -3423,6 +4911,14 @@ cssnano@^5.1.15, cssnano@^5.1.8: lilconfig "^2.0.3" yaml "^1.10.2" +cssnano@^6.0.1, cssnano@^6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-6.1.2.tgz#4bd19e505bd37ee7cf0dc902d3d869f6d79c66b8" + integrity sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA== + dependencies: + cssnano-preset-default "^6.1.2" + lilconfig "^3.1.1" + csso@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz" @@ -3430,6 +4926,13 @@ csso@^4.2.0: dependencies: css-tree "^1.1.2" +csso@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/csso/-/csso-5.0.5.tgz#f9b7fe6cc6ac0b7d90781bb16d5e9874303e2ca6" + integrity sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ== + dependencies: + css-tree "~2.2.0" + csstype@^3.0.2: version "3.1.3" resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz" @@ -3454,6 +4957,13 @@ debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: dependencies: ms "2.1.2" +debug@^4.2.0: + version "4.3.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.6.tgz#2ab2c38fbaffebf8aa95fdfe6d88438c7a13c52b" + integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg== + dependencies: + ms "2.1.2" + decode-named-character-reference@^1.0.0: version "1.0.2" resolved "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz" @@ -3473,7 +4983,7 @@ deep-extend@^0.6.0: resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== -deepmerge@^4.2.2: +deepmerge@^4.2.2, deepmerge@^4.3.1: version "4.3.1" resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== @@ -3686,6 +5196,11 @@ electron-to-chromium@^1.4.601: resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.628.tgz" integrity sha512-2k7t5PHvLsufpP6Zwk0nof62yLOsCf032wZx7/q0mv8gwlXjhcxI3lz6f0jBr0GrnWKcm3burXzI3t5IrcdUxw== +electron-to-chromium@^1.5.4: + version "1.5.5" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.5.tgz#03bfdf422bdd2c05ee2657efedde21264a1a566b" + integrity sha512-QR7/A7ZkMS8tZuoftC/jfqNkZLQO779SSW3YuZHP4eXpj3EffGLFcB/Xu9AAZQzLccTiCV+EmUo3ha4mQ9wnlA== + emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" @@ -3751,6 +5266,11 @@ escalade@^3.1.1: resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== +escalade@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== + escape-goat@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz" @@ -4121,7 +5641,7 @@ forwarded@0.2.0: resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== -fraction.js@^4.3.6: +fraction.js@^4.3.6, fraction.js@^4.3.7: version "4.3.7" resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz" integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== @@ -4131,7 +5651,16 @@ fresh@0.5.2: resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== -fs-extra@^11.1.1: +fs-extra@^10.0.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^11.1.1, fs-extra@^11.2.0: version "11.2.0" resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz" integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== @@ -4311,7 +5840,7 @@ graceful-fs@4.2.10: resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -4695,6 +6224,11 @@ image-size@^1.0.2: dependencies: queue "6.0.2" +immediate@^3.2.3: + version "3.3.0" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.3.0.tgz#1aef225517836bcdf7f2a2de2600c79ff0269266" + integrity sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q== + immer@^9.0.7: version "9.0.21" resolved "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz" @@ -5004,7 +6538,7 @@ jest-worker@^27.4.5: merge-stream "^2.0.0" supports-color "^8.0.0" -jest-worker@^29.1.2: +jest-worker@^29.1.2, jest-worker@^29.4.3: version "29.7.0" resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz" integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== @@ -5106,6 +6640,13 @@ kind-of@^6.0.0, kind-of@^6.0.2: resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== +klaw-sync@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c" + integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ== + dependencies: + graceful-fs "^4.1.11" + kleur@^3.0.3: version "3.0.3" resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" @@ -5136,6 +6677,11 @@ lilconfig@^2.0.3: resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz" integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== +lilconfig@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.2.tgz#e4a7c3cb549e3a606c8dcc32e5ae1005e62c05cb" + integrity sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow== + lines-and-columns@^1.1.6: version "1.2.4" resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" @@ -5240,6 +6786,21 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +lunr-languages@^1.4.0: + version "1.14.0" + resolved "https://registry.yarnpkg.com/lunr-languages/-/lunr-languages-1.14.0.tgz#6e97635f434631729dd0e5654daedd291cd6f2d0" + integrity sha512-hWUAb2KqM3L7J5bcrngszzISY4BxrXn/Xhbb9TTCJYEGqlR1nG67/M14sp09+PTIRklobrn57IAxcdcO/ZFyNA== + +lunr@^2.3.9: + version "2.3.9" + resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1" + integrity sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow== + +mark.js@^8.11.1: + version "8.11.1" + resolved "https://registry.yarnpkg.com/mark.js/-/mark.js-8.11.1.tgz#180f1f9ebef8b0e638e4166ad52db879beb2ffc5" + integrity sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ== + markdown-extensions@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz" @@ -5472,6 +7033,16 @@ mdn-data@2.0.14: resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz" integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== +mdn-data@2.0.28: + version "2.0.28" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.28.tgz#5ec48e7bef120654539069e1ae4ddc81ca490eba" + integrity sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g== + +mdn-data@2.0.30: + version "2.0.30" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc" + integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== + media-typer@0.3.0: version "0.3.0" resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" @@ -6067,6 +7638,11 @@ node-releases@^2.0.14: resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz" integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== +node-releases@^2.0.18: + version "2.0.18" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" + integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== + normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" @@ -6396,6 +7972,11 @@ picocolors@^1.0.0: resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== +picocolors@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" + integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" @@ -6423,6 +8004,14 @@ postcss-calc@^8.2.3: postcss-selector-parser "^6.0.9" postcss-value-parser "^4.2.0" +postcss-calc@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-9.0.1.tgz#a744fd592438a93d6de0f1434c572670361eb6c6" + integrity sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ== + dependencies: + postcss-selector-parser "^6.0.11" + postcss-value-parser "^4.2.0" + postcss-colormin@^5.3.1: version "5.3.1" resolved "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz" @@ -6433,6 +8022,16 @@ postcss-colormin@^5.3.1: colord "^2.9.1" postcss-value-parser "^4.2.0" +postcss-colormin@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-6.1.0.tgz#076e8d3fb291fbff7b10e6b063be9da42ff6488d" + integrity sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw== + dependencies: + browserslist "^4.23.0" + caniuse-api "^3.0.0" + colord "^2.9.3" + postcss-value-parser "^4.2.0" + postcss-convert-values@^5.1.3: version "5.1.3" resolved "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz" @@ -6441,26 +8040,54 @@ postcss-convert-values@^5.1.3: browserslist "^4.21.4" postcss-value-parser "^4.2.0" +postcss-convert-values@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz#3498387f8efedb817cbc63901d45bd1ceaa40f48" + integrity sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w== + dependencies: + browserslist "^4.23.0" + postcss-value-parser "^4.2.0" + postcss-discard-comments@^5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz" integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== +postcss-discard-comments@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz#e768dcfdc33e0216380623652b0a4f69f4678b6c" + integrity sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw== + postcss-discard-duplicates@^5.1.0: version "5.1.0" resolved "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz" integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== +postcss-discard-duplicates@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz#d121e893c38dc58a67277f75bb58ba43fce4c3eb" + integrity sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw== + postcss-discard-empty@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz" integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== +postcss-discard-empty@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz#ee39c327219bb70473a066f772621f81435a79d9" + integrity sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ== + postcss-discard-overridden@^5.1.0: version "5.1.0" resolved "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz" integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== +postcss-discard-overridden@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz#4e9f9c62ecd2df46e8fdb44dc17e189776572e2d" + integrity sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ== + postcss-discard-unused@^5.1.0: version "5.1.0" resolved "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-5.1.0.tgz" @@ -6468,6 +8095,13 @@ postcss-discard-unused@^5.1.0: dependencies: postcss-selector-parser "^6.0.5" +postcss-discard-unused@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-6.0.5.tgz#c1b0e8c032c6054c3fbd22aaddba5b248136f338" + integrity sha512-wHalBlRHkaNnNwfC8z+ppX57VhvS+HWgjW508esjdaEYr3Mx7Gnn2xA4R/CKf5+Z9S5qsqC+Uzh4ueENWwCVUA== + dependencies: + postcss-selector-parser "^6.0.16" + postcss-loader@^7.3.3: version "7.3.4" resolved "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.4.tgz" @@ -6485,6 +8119,14 @@ postcss-merge-idents@^5.1.1: cssnano-utils "^3.1.0" postcss-value-parser "^4.2.0" +postcss-merge-idents@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-6.0.3.tgz#7b9c31c7bc823c94bec50f297f04e3c2b838ea65" + integrity sha512-1oIoAsODUs6IHQZkLQGO15uGEbK3EAl5wi9SS8hs45VgsxQfMnxvt+L+zIr7ifZFIH14cfAeVe2uCTa+SPRa3g== + dependencies: + cssnano-utils "^4.0.2" + postcss-value-parser "^4.2.0" + postcss-merge-longhand@^5.1.7: version "5.1.7" resolved "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz" @@ -6493,6 +8135,14 @@ postcss-merge-longhand@^5.1.7: postcss-value-parser "^4.2.0" stylehacks "^5.1.1" +postcss-merge-longhand@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-6.0.5.tgz#ba8a8d473617c34a36abbea8dda2b215750a065a" + integrity sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w== + dependencies: + postcss-value-parser "^4.2.0" + stylehacks "^6.1.1" + postcss-merge-rules@^5.1.4: version "5.1.4" resolved "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz" @@ -6503,6 +8153,16 @@ postcss-merge-rules@^5.1.4: cssnano-utils "^3.1.0" postcss-selector-parser "^6.0.5" +postcss-merge-rules@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz#7aa539dceddab56019469c0edd7d22b64c3dea9d" + integrity sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ== + dependencies: + browserslist "^4.23.0" + caniuse-api "^3.0.0" + cssnano-utils "^4.0.2" + postcss-selector-parser "^6.0.16" + postcss-minify-font-values@^5.1.0: version "5.1.0" resolved "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz" @@ -6510,6 +8170,13 @@ postcss-minify-font-values@^5.1.0: dependencies: postcss-value-parser "^4.2.0" +postcss-minify-font-values@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-6.1.0.tgz#a0e574c02ee3f299be2846369211f3b957ea4c59" + integrity sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg== + dependencies: + postcss-value-parser "^4.2.0" + postcss-minify-gradients@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz" @@ -6519,6 +8186,15 @@ postcss-minify-gradients@^5.1.1: cssnano-utils "^3.1.0" postcss-value-parser "^4.2.0" +postcss-minify-gradients@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz#ca3eb55a7bdb48a1e187a55c6377be918743dbd6" + integrity sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q== + dependencies: + colord "^2.9.3" + cssnano-utils "^4.0.2" + postcss-value-parser "^4.2.0" + postcss-minify-params@^5.1.4: version "5.1.4" resolved "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz" @@ -6528,6 +8204,15 @@ postcss-minify-params@^5.1.4: cssnano-utils "^3.1.0" postcss-value-parser "^4.2.0" +postcss-minify-params@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz#54551dec77b9a45a29c3cb5953bf7325a399ba08" + integrity sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA== + dependencies: + browserslist "^4.23.0" + cssnano-utils "^4.0.2" + postcss-value-parser "^4.2.0" + postcss-minify-selectors@^5.2.1: version "5.2.1" resolved "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz" @@ -6535,6 +8220,13 @@ postcss-minify-selectors@^5.2.1: dependencies: postcss-selector-parser "^6.0.5" +postcss-minify-selectors@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-6.0.4.tgz#197f7d72e6dd19eed47916d575d69dc38b396aff" + integrity sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ== + dependencies: + postcss-selector-parser "^6.0.16" + postcss-modules-extract-imports@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz" @@ -6568,6 +8260,11 @@ postcss-normalize-charset@^5.1.0: resolved "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz" integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== +postcss-normalize-charset@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz#1ec25c435057a8001dac942942a95ffe66f721e1" + integrity sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ== + postcss-normalize-display-values@^5.1.0: version "5.1.0" resolved "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz" @@ -6575,6 +8272,13 @@ postcss-normalize-display-values@^5.1.0: dependencies: postcss-value-parser "^4.2.0" +postcss-normalize-display-values@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz#54f02764fed0b288d5363cbb140d6950dbbdd535" + integrity sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg== + dependencies: + postcss-value-parser "^4.2.0" + postcss-normalize-positions@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz" @@ -6582,6 +8286,13 @@ postcss-normalize-positions@^5.1.1: dependencies: postcss-value-parser "^4.2.0" +postcss-normalize-positions@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz#e982d284ec878b9b819796266f640852dbbb723a" + integrity sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q== + dependencies: + postcss-value-parser "^4.2.0" + postcss-normalize-repeat-style@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz" @@ -6589,6 +8300,13 @@ postcss-normalize-repeat-style@^5.1.1: dependencies: postcss-value-parser "^4.2.0" +postcss-normalize-repeat-style@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz#f8006942fd0617c73f049dd8b6201c3a3040ecf3" + integrity sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ== + dependencies: + postcss-value-parser "^4.2.0" + postcss-normalize-string@^5.1.0: version "5.1.0" resolved "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz" @@ -6596,6 +8314,13 @@ postcss-normalize-string@^5.1.0: dependencies: postcss-value-parser "^4.2.0" +postcss-normalize-string@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz#e3cc6ad5c95581acd1fc8774b309dd7c06e5e363" + integrity sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ== + dependencies: + postcss-value-parser "^4.2.0" + postcss-normalize-timing-functions@^5.1.0: version "5.1.0" resolved "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz" @@ -6603,6 +8328,13 @@ postcss-normalize-timing-functions@^5.1.0: dependencies: postcss-value-parser "^4.2.0" +postcss-normalize-timing-functions@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz#40cb8726cef999de984527cbd9d1db1f3e9062c0" + integrity sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA== + dependencies: + postcss-value-parser "^4.2.0" + postcss-normalize-unicode@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz" @@ -6611,6 +8343,14 @@ postcss-normalize-unicode@^5.1.1: browserslist "^4.21.4" postcss-value-parser "^4.2.0" +postcss-normalize-unicode@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz#aaf8bbd34c306e230777e80f7f12a4b7d27ce06e" + integrity sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg== + dependencies: + browserslist "^4.23.0" + postcss-value-parser "^4.2.0" + postcss-normalize-url@^5.1.0: version "5.1.0" resolved "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz" @@ -6619,6 +8359,13 @@ postcss-normalize-url@^5.1.0: normalize-url "^6.0.1" postcss-value-parser "^4.2.0" +postcss-normalize-url@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz#292792386be51a8de9a454cb7b5c58ae22db0f79" + integrity sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ== + dependencies: + postcss-value-parser "^4.2.0" + postcss-normalize-whitespace@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz" @@ -6626,6 +8373,13 @@ postcss-normalize-whitespace@^5.1.1: dependencies: postcss-value-parser "^4.2.0" +postcss-normalize-whitespace@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz#fbb009e6ebd312f8b2efb225c2fcc7cf32b400cd" + integrity sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q== + dependencies: + postcss-value-parser "^4.2.0" + postcss-ordered-values@^5.1.3: version "5.1.3" resolved "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz" @@ -6634,6 +8388,14 @@ postcss-ordered-values@^5.1.3: cssnano-utils "^3.1.0" postcss-value-parser "^4.2.0" +postcss-ordered-values@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz#366bb663919707093451ab70c3f99c05672aaae5" + integrity sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q== + dependencies: + cssnano-utils "^4.0.2" + postcss-value-parser "^4.2.0" + postcss-reduce-idents@^5.2.0: version "5.2.0" resolved "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-5.2.0.tgz" @@ -6641,6 +8403,13 @@ postcss-reduce-idents@^5.2.0: dependencies: postcss-value-parser "^4.2.0" +postcss-reduce-idents@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-6.0.3.tgz#b0d9c84316d2a547714ebab523ec7d13704cd486" + integrity sha512-G3yCqZDpsNPoQgbDUy3T0E6hqOQ5xigUtBQyrmq3tn2GxlyiL0yyl7H+T8ulQR6kOcHJ9t7/9H4/R2tv8tJbMA== + dependencies: + postcss-value-parser "^4.2.0" + postcss-reduce-initial@^5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz" @@ -6649,6 +8418,14 @@ postcss-reduce-initial@^5.1.2: browserslist "^4.21.4" caniuse-api "^3.0.0" +postcss-reduce-initial@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz#4401297d8e35cb6e92c8e9586963e267105586ba" + integrity sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw== + dependencies: + browserslist "^4.23.0" + caniuse-api "^3.0.0" + postcss-reduce-transforms@^5.1.0: version "5.1.0" resolved "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz" @@ -6656,6 +8433,21 @@ postcss-reduce-transforms@^5.1.0: dependencies: postcss-value-parser "^4.2.0" +postcss-reduce-transforms@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz#6fa2c586bdc091a7373caeee4be75a0f3e12965d" + integrity sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.16: + version "6.1.1" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz#5be94b277b8955904476a2400260002ce6c56e38" + integrity sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: version "6.0.15" resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz" @@ -6671,6 +8463,13 @@ postcss-sort-media-queries@^4.4.1: dependencies: sort-css-media-queries "2.1.0" +postcss-sort-media-queries@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/postcss-sort-media-queries/-/postcss-sort-media-queries-5.2.0.tgz#4556b3f982ef27d3bac526b99b6c0d3359a6cf97" + integrity sha512-AZ5fDMLD8SldlAYlvi8NIqo0+Z8xnXU2ia0jxmuhxAU+Lqt9K+AlmLNJ/zWEnE9x+Zx3qL3+1K20ATgNOr3fAA== + dependencies: + sort-css-media-queries "2.2.0" + postcss-svgo@^5.1.0: version "5.1.0" resolved "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz" @@ -6679,6 +8478,14 @@ postcss-svgo@^5.1.0: postcss-value-parser "^4.2.0" svgo "^2.7.0" +postcss-svgo@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-6.0.3.tgz#1d6e180d6df1fa8a3b30b729aaa9161e94f04eaa" + integrity sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g== + dependencies: + postcss-value-parser "^4.2.0" + svgo "^3.2.0" + postcss-unique-selectors@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz" @@ -6686,6 +8493,13 @@ postcss-unique-selectors@^5.1.1: dependencies: postcss-selector-parser "^6.0.5" +postcss-unique-selectors@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz#983ab308896b4bf3f2baaf2336e14e52c11a2088" + integrity sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg== + dependencies: + postcss-selector-parser "^6.0.16" + postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" @@ -6696,6 +8510,11 @@ postcss-zindex@^5.1.0: resolved "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-5.1.0.tgz" integrity sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A== +postcss-zindex@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-6.0.2.tgz#e498304b83a8b165755f53db40e2ea65a99b56e1" + integrity sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg== + postcss@^8.4.17, postcss@^8.4.21, postcss@^8.4.26, postcss@^8.4.31: version "8.4.33" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz" @@ -6705,6 +8524,15 @@ postcss@^8.4.17, postcss@^8.4.21, postcss@^8.4.26, postcss@^8.4.31: picocolors "^1.0.0" source-map-js "^1.0.2" +postcss@^8.4.24, postcss@^8.4.38: + version "8.4.41" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.41.tgz#d6104d3ba272d882fe18fc07d15dc2da62fa2681" + integrity sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ== + dependencies: + nanoid "^3.3.7" + picocolors "^1.0.1" + source-map-js "^1.2.0" + pretty-error@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz" @@ -6925,6 +8753,13 @@ react-loadable-ssr-addon-v5-slorber@^1.0.1: dependencies: "@babel/runtime" "^7.10.3" +"react-loadable@npm:@docusaurus/react-loadable@6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@docusaurus/react-loadable/-/react-loadable-6.0.0.tgz#de6c7f73c96542bd70786b8e522d535d69069dc4" + integrity sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ== + dependencies: + "@types/react" "*" + react-router-config@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/react-router-config/-/react-router-config-5.1.1.tgz" @@ -7308,7 +9143,7 @@ schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0: ajv "^6.12.5" ajv-keywords "^3.5.2" -schema-utils@^4.0.0: +schema-utils@^4.0.0, schema-utils@^4.0.1: version "4.2.0" resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz" integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== @@ -7534,6 +9369,14 @@ slash@^4.0.0: resolved "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz" integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== +snake-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" + integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + sockjs@^0.3.24: version "0.3.24" resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz" @@ -7548,6 +9391,16 @@ sort-css-media-queries@2.1.0: resolved "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.1.0.tgz" integrity sha512-IeWvo8NkNiY2vVYdPa27MCQiR0MN0M80johAYFVxWWXQ44KU84WNxjslwBHmc/7ZL2ccwkM7/e6S5aiKZXm7jA== +sort-css-media-queries@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/sort-css-media-queries/-/sort-css-media-queries-2.2.0.tgz#aa33cf4a08e0225059448b6c40eddbf9f1c8334c" + integrity sha512-0xtkGhWCC9MGt/EzgnvbbbKhqWjl1+/rncmhTh5qCpbYguXh6S/qwePfv/JQ8jePXXmqingylxoC49pCkSPIbA== + +source-map-js@^1.0.1, source-map-js@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" + integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== + source-map-js@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" @@ -7734,6 +9587,14 @@ stylehacks@^5.1.1: browserslist "^4.21.4" postcss-selector-parser "^6.0.4" +stylehacks@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-6.1.1.tgz#543f91c10d17d00a440430362d419f79c25545a6" + integrity sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg== + dependencies: + browserslist "^4.23.0" + postcss-selector-parser "^6.0.16" + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" @@ -7778,6 +9639,19 @@ svgo@^2.7.0, svgo@^2.8.0: picocolors "^1.0.0" stable "^0.1.8" +svgo@^3.0.2, svgo@^3.2.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.3.2.tgz#ad58002652dffbb5986fc9716afe52d869ecbda8" + integrity sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw== + dependencies: + "@trysound/sax" "0.2.0" + commander "^7.2.0" + css-select "^5.1.0" + css-tree "^2.3.1" + css-what "^6.1.0" + csso "^5.0.5" + picocolors "^1.0.0" + tapable@^1.0.0: version "1.1.3" resolved "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz" @@ -7866,6 +9740,11 @@ tslib@^2.0.3, tslib@^2.6.0: resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== +tslib@^2.4.0: + version "2.6.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" + integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== + type-fest@^1.0.1: version "1.4.0" resolved "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz" @@ -8020,6 +9899,14 @@ update-browserslist-db@^1.0.13: escalade "^3.1.1" picocolors "^1.0.0" +update-browserslist-db@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e" + integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== + dependencies: + escalade "^3.1.2" + picocolors "^1.0.1" + update-notifier@^6.0.2: version "6.0.2" resolved "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz" diff --git a/pytest.ini b/pytest.ini index 43a29ac637f..c5ad7454bb6 100644 --- a/pytest.ini +++ b/pytest.ini @@ -14,5 +14,6 @@ filterwarnings = ignore::DeprecationWarning:flask.*: ignore::DeprecationWarning:transformers.*: ignore::DeprecationWarning - addopts = -v +markers = + skip_clickhouse_client: marks tests as requiring clickhouse client to be skipped diff --git a/requirements.txt b/requirements.txt index e3a905fa290..1729b6cb1ed 100644 --- a/requirements.txt +++ b/requirements.txt @@ -52,3 +52,7 @@ tenacity>=8.3.0,!=8.4.0 # Used for emoji shortcode support in feedback emoji>=2.12.1 + +# Used for ID Generation - remove once python's +# built-in uuid module is updated to support UUIDv7 +uuid-utils>=0.9.0 diff --git a/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/CallsPage/CallsTable.tsx b/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/CallsPage/CallsTable.tsx index 4a0a295475e..3ca712b0b60 100644 --- a/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/CallsPage/CallsTable.tsx +++ b/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/CallsPage/CallsTable.tsx @@ -56,6 +56,7 @@ import { EMPTY_PROPS_TRACES, } from '../common/EmptyContent'; import {FilterLayoutTemplate} from '../common/SimpleFilterableDataTable'; +import {prepareFlattenedDataForTable} from '../common/tabularListViews/columnBuilder'; import { truncateID, useControllableState, @@ -65,11 +66,13 @@ import {useWFHooks} from '../wfReactInterface/context'; import {TraceCallSchema} from '../wfReactInterface/traceServerClientTypes'; import {traceCallToUICallSchema} from '../wfReactInterface/tsDataModelHooks'; import {objectVersionNiceString} from '../wfReactInterface/utilities'; -import {OpVersionKey} from '../wfReactInterface/wfDataModelHooksInterface'; +import { + CallSchema, + OpVersionKey, +} from '../wfReactInterface/wfDataModelHooksInterface'; import {CallsCustomColumnMenu} from './CallsCustomColumnMenu'; import {useCurrentFilterIsEvaluationsFilter} from './CallsPage'; import {useCallsTableColumns} from './callsTableColumns'; -import {prepareFlattenedCallDataForTable} from './callsTableDataProcessing'; import {WFHighLevelCallFilter} from './callsTableFilter'; import {getEffectiveFilter} from './callsTableFilter'; import {useOpVersionOptions} from './callsTableFilter'; @@ -965,3 +968,9 @@ const BulkDeleteButton: FC<{ ); }; + +function prepareFlattenedCallDataForTable( + callsResult: CallSchema[] +): Array { + return prepareFlattenedDataForTable(callsResult.map(c => c.traceCall)); +} diff --git a/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/CallsPage/callsTableBuiltTree.test.ts b/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/CallsPage/callsTableBuiltTree.test.ts index 489963f1a2d..18b82760b2b 100644 --- a/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/CallsPage/callsTableBuiltTree.test.ts +++ b/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/CallsPage/callsTableBuiltTree.test.ts @@ -1,6 +1,6 @@ import {GridColumnGroup} from '@mui/x-data-grid-pro'; -import {buildTree} from './callsTableBuildTree'; +import {buildTree} from '../common/tabularListViews/buildTree'; describe(`buildTree`, () => { it(`correctly converts`, () => { diff --git a/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/CallsPage/callsTableColumns.tsx b/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/CallsPage/callsTableColumns.tsx index f60281751ad..4ea4ce65449 100644 --- a/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/CallsPage/callsTableColumns.tsx +++ b/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/CallsPage/callsTableColumns.tsx @@ -5,9 +5,7 @@ import { GridColDef, - GridColumnGroup, GridColumnGroupingModel, - GridColumnNode, GridRenderCellParams, } from '@mui/x-data-grid-pro'; import {Tooltip} from '@wandb/weave/components/Tooltip'; @@ -17,13 +15,7 @@ import React, {useCallback, useEffect, useMemo, useState} from 'react'; import {monthRoundedTime} from '../../../../../../common/util/time'; import {isWeaveObjectRef, parseRef} from '../../../../../../react'; import {makeRefCall} from '../../../../../../util/refs'; -import {ErrorBoundary} from '../../../../../ErrorBoundary'; import {Timestamp} from '../../../../../Timestamp'; -import {CellValue} from '../../../Browse2/CellValue'; -import {CollapseHeader} from '../../../Browse2/CollapseGroupHeader'; -import {ExpandHeader} from '../../../Browse2/ExpandHeader'; -import {NotApplicable} from '../../../Browse2/NotApplicable'; -import {SmallRef} from '../../../Browse2/SmallRef'; import {Reactions} from '../../feedback/Reactions'; import { getTokensAndCostFromUsage, @@ -31,6 +23,8 @@ import { } from '../CallPage/TraceUsageStats'; import {CallLink} from '../common/Links'; import {StatusChip} from '../common/StatusChip'; +import {buildDynamicColumns} from '../common/tabularListViews/columnBuilder'; +import {allOperators} from '../common/tabularListViews/operators'; import {isRef} from '../common/util'; import {TraceCallSchema} from '../wfReactInterface/traceServerClientTypes'; import { @@ -38,14 +32,8 @@ import { traceCallLatencyS, traceCallStatusCode, } from '../wfReactInterface/tsDataModelHooks'; -import { - EXPANDED_REF_REF_KEY, - EXPANDED_REF_VAL_KEY, - isTableRef, -} from '../wfReactInterface/tsDataModelHooksCallRefExpansion'; import {opVersionRefOpName} from '../wfReactInterface/utilities'; import {OpVersionIndexText} from './CallsTable'; -import {buildTree} from './callsTableBuildTree'; import { insertPath, isDynamicCallColumn, @@ -53,7 +41,6 @@ import { stringToPath, } from './callsTableColumnsUtil'; import {WFHighLevelCallFilter} from './callsTableFilter'; -import {allOperators} from './callsTableQuery'; const HIDDEN_DYNAMIC_COLUMN_PREFIXES = ['summary.usage']; @@ -299,135 +286,19 @@ function buildCallsTableColumns( }, ]; - const tree = buildTree([...filteredDynamicColumnNames]); - let groupingModel: GridColumnGroupingModel = tree.children.filter( - c => 'groupId' in c - ) as GridColumnGroup[]; - - const walkGroupingModel = ( - nodes: GridColumnNode[], - fn: (node: GridColumnNode) => GridColumnNode - ) => { - return nodes.map(node => { - node = fn(node); - if ('children' in node) { - node.children = walkGroupingModel(node.children, fn); - } - return node; - }); - }; - const groupIds = new Set(); - groupingModel = walkGroupingModel(groupingModel, node => { - if ('groupId' in node) { - const key = node.groupId; - groupIds.add(key); - if (expandedRefCols.has(key)) { - node.renderHeaderGroup = () => { - return ( - - ); - }; - } else if (columnsWithRefs.has(key)) { - node.renderHeaderGroup = () => { - return ( - - ); - }; - } - } - return node; - }) as GridColumnGroupingModel; - - for (const key of filteredDynamicColumnNames) { - const col: GridColDef = { - flex: 1, - minWidth: 150, - field: key, - // CPR (Tim) - (BackendExpansion): This can be removed once we support backend expansion! - filterable: !columnIsRefExpanded(key) && !columnsWithRefs.has(key), - // CPR (Tim) - (BackendExpansion): This can be removed once we support backend expansion! - sortable: !columnIsRefExpanded(key) && !columnsWithRefs.has(key), - filterOperators: allOperators, - headerName: key, - renderHeader: () => { - return ( -
- {key.split('.').slice(-1)[0]} -
- ); - }, - valueGetter: cellParams => { - const val = (cellParams.row as any)[key]; - if (Array.isArray(val) || typeof val === 'object') { - try { - return JSON.stringify(val); - } catch { - return val; - } - } - return val; - }, - renderCell: cellParams => { - const val = (cellParams.row as any)[key]; - if (val === undefined) { - return ; - } - return ( - - {/* In the future, we may want to move this isExpandedRefWithValueAsTableRef condition - into `CallValue`. However, at the moment, `ExpandedRefWithValueAsTableRef` is a - CallsTable-specific data structure and we might not want to leak that into the - rest of the system*/} - {isExpandedRefWithValueAsTableRef(val) ? ( - - ) : ( - - )} - - ); - }, - }; - - if (groupIds.has(key)) { - col.renderHeader = () => { - return <>; - }; - } else if (expandedRefCols.has(key)) { - col.renderHeader = () => { - return ( - - ); - }; - } else if (columnsWithRefs.has(key)) { - col.renderHeader = () => { - return ( - - ); - }; - } - cols.push(col); - } + const {cols: newCols, groupingModel} = buildDynamicColumns( + filteredDynamicColumnNames, + (row, key) => (row as any)[key], + key => expandedRefCols.has(key), + key => columnsWithRefs.has(key), + onCollapse, + onExpand, + // TODO (Tim) - (BackendExpansion): This can be removed once we support backend expansion! + key => !columnIsRefExpanded(key) && !columnsWithRefs.has(key), + // TODO (Tim) - (BackendExpansion): This can be removed once we support backend expansion! + key => !columnIsRefExpanded(key) && !columnsWithRefs.has(key) + ); + cols.push(...newCols); cols.push({ field: 'wb_user_id', @@ -612,28 +483,3 @@ const refIsExpandable = (ref: string): boolean => { } return false; }; - -type ExpandedRefWithValue = { - [EXPANDED_REF_REF_KEY]: string; - [EXPANDED_REF_VAL_KEY]: T; -}; - -export type ExpandedRefWithValueAsTableRef = ExpandedRefWithValue; - -const isExpandedRefWithValue = (ref: any): ref is ExpandedRefWithValue => { - return ( - typeof ref === 'object' && - ref !== null && - EXPANDED_REF_REF_KEY in ref && - EXPANDED_REF_VAL_KEY in ref - ); -}; - -const isExpandedRefWithValueAsTableRef = ( - ref: any -): ref is ExpandedRefWithValueAsTableRef => { - if (!isExpandedRefWithValue(ref)) { - return false; - } - return isTableRef(ref[EXPANDED_REF_VAL_KEY]); -}; diff --git a/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/CallsPage/callsTableDataProcessing.ts b/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/CallsPage/callsTableDataProcessing.ts deleted file mode 100644 index d1623bb58b8..00000000000 --- a/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/CallsPage/callsTableDataProcessing.ts +++ /dev/null @@ -1,153 +0,0 @@ -import {isWeaveObjectRef, parseRef} from '../../../../../../react'; -import {flattenObject} from '../../../Browse2/browse2Util'; -import {isRef} from '../common/util'; -import { - OBJECT_ATTR_EDGE_NAME, - WEAVE_PRIVATE_PREFIX, -} from '../wfReactInterface/constants'; -import {TraceCallSchema} from '../wfReactInterface/traceServerClientTypes'; -import {privateRefToSimpleName} from '../wfReactInterface/tsDataModelHooks'; -import { - EXPANDED_REF_REF_KEY, - EXPANDED_REF_VAL_KEY, -} from '../wfReactInterface/tsDataModelHooksCallRefExpansion'; -import {CallSchema} from '../wfReactInterface/wfDataModelHooksInterface'; -import {ExpandedRefWithValueAsTableRef} from './callsTableColumns'; - -/** - * This function is responsible for taking the raw calls data and flattening it - * into a format that can be consumed by the MUI Data Grid. Importantly, we strip - * away the legacy `CallSchema` wrapper and just operate on the inner `TraceCallSchema` - * - * Specifically it does 3 things: - * 1. Flattens the nested object structure of the calls data - * 2. Removes any keys that start with underscore - * 3. Converts expanded values to their actual values. This takes two forms: - * 1. If expanded value is a dictionary, then the flattened data will look like: - * { - * [EXPANDED_REF_REF_KEY]: 'weave://...', - * [EXPANDED_REF_VAL_KEY].sub_key_x: 'value_x', - * ... - * } - * In this case, we want to remove the [EXPANDED_REF_REF_KEY] and [EXPANDED_REF_VAL_KEY] from the paths, - * leaving everything else. The result is that the ref is left at the primitive position for the data. - * 2. If the expanded value is a primitive, then the flattened data will look like: - * { - * [EXPANDED_REF_REF_KEY]: 'weave://...', - * [EXPANDED_REF_VAL_KEY]: 'value' - * } - * In this case, we don't have a place to put the ref value, so we just remove it. - */ -export function prepareFlattenedCallDataForTable( - callsResult: CallSchema[] -): Array { - return callsResult.map(r => { - // First, flatten the inner trace call (this is the on-wire format) - let flattened = flattenObject(r.traceCall ?? {}); - - flattened = replaceTableRefsInFlattenedData(flattened); - - // Next, process some of the keys. - const cleaned: {[key: string]: any} = {}; - Object.keys(flattened).forEach(key => { - let newKey = key; - - // If the key ends with the expanded ref key, then we have 2 cases - if (key.endsWith('.' + EXPANDED_REF_REF_KEY)) { - const keyRoot = newKey.slice(0, -EXPANDED_REF_REF_KEY.length - 1); - - // Case 1: the refVal is a primitive and we just need to toss away the ref key - const refValIsPrimitive = - flattened[newKey + '.' + EXPANDED_REF_VAL_KEY] !== undefined; - if (refValIsPrimitive) { - return; - - // Case 2: the refVal is a dictionary and we just remove the ref part of the path - } else { - newKey = keyRoot; - } - } - - // Next, we remove all path parts that are the expanded ref val key - if (newKey.includes('.' + EXPANDED_REF_VAL_KEY)) { - newKey = newKey.replaceAll('.' + EXPANDED_REF_VAL_KEY, ''); - } - - // Finally, we remove any keys that start with underscore - if (newKey.includes('._')) { - return; - } - - // and add the cleaned key to the cleaned object - cleaned[newKey] = flattened[key]; - }); - - return cleaned as TraceCallSchema & {[key: string]: string}; - }); -} -/** - * This processing step is admittedly a bit of a hack. It replaces "table refs" - * (those that are of weaveKind "table" with a special format that can be - * consumed by the CallsTable. THe reason we don't want to leave plain table - * refs in play is that they technically are not intended to be surfaced to the - * user. However, when we fetch the data for an object with a table ref inside - * (ie. a Dataset), the table ref is returned from the server. In some cases, we - * want this - for example, when viewing a Dataset object, it is useful to know - * that the `rows` key is table ref and we can render a UI appropriate for that. - * However, we have specific business rules on the server that explicitly deny - * data requests for the entire table ref (by design). In this way, it is a - * "leak" of the internal data model to have a table ref in the data. To - * compensate for this, we replace the table ref with a special format that can - * be consumed by the CallsTable. This format contains both the source ref (the - * path from the object ref to the table data) as well as the actual table ref - * itself. This allows the calls table to appropriately render a ref link to the - * "source". We cannot just replace the ref with the source ref however, since - * the calls table doesn't have any way to "know" that it is a table ref. As a - * result, it would think that this ref is expandable, which is not a valid - * operation. Therefore, we use this special type - * `ExpandedRefWithValueAsTableRef` to handle this case. - */ -function replaceTableRefsInFlattenedData(flattened: Record) { - return Object.fromEntries( - Object.entries(flattened).map(([key, val]) => { - if (isRef(val)) { - const parsedRef = parseRef(val); - if (isWeaveObjectRef(parsedRef)) { - if (parsedRef.weaveKind === 'table') { - let parentRef: string | null = null; - const lookupPath = key.split('.'); - if (lookupPath.length > 0) { - const attr = lookupPath.pop()!; - while (lookupPath.length > 0) { - const parentKey = - lookupPath.join('.') + '.' + EXPANDED_REF_REF_KEY; - if (parentKey in flattened) { - const parentVal = flattened[parentKey]; - if (isRef(parentVal)) { - parentRef = parentVal; - } - break; - } - lookupPath.pop(); - } - if (parentRef) { - const newVal: ExpandedRefWithValueAsTableRef = { - [EXPANDED_REF_REF_KEY]: - parentRef + '/' + OBJECT_ATTR_EDGE_NAME + '/' + attr, - [EXPANDED_REF_VAL_KEY]: val, - }; - return [key, newVal]; - } - } - } - } - } else if ( - typeof val === 'string' && - val.startsWith(WEAVE_PRIVATE_PREFIX) - ) { - return [key, privateRefToSimpleName(val)]; - } - return [key, val]; - }) - ); -} diff --git a/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/CallsPage/callsTableQuery.ts b/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/CallsPage/callsTableQuery.ts index 024b1843a16..a09aa11fc98 100644 --- a/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/CallsPage/callsTableQuery.ts +++ b/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/CallsPage/callsTableQuery.ts @@ -1,17 +1,15 @@ import { - getGridBooleanOperators, - getGridDateOperators, - getGridNumericOperators, - getGridStringOperators, - GridFilterItem, GridFilterModel, - GridFilterOperator, GridPaginationModel, GridSortModel, } from '@mui/x-data-grid-pro'; import {useMemo} from 'react'; import {useDeepMemo} from '../../../../../../hookUtils'; +import { + isValuelessOperator, + operationConverter, +} from '../common/tabularListViews/operators'; import {useWFHooks} from '../wfReactInterface/context'; import {Query} from '../wfReactInterface/traceServerClientInterface/query'; import {CallFilter} from '../wfReactInterface/wfDataModelHooksInterface'; @@ -56,9 +54,11 @@ export const useCallsForQuery = ( ); const filterByRaw = useMemo(() => { - const setItems = gridFilter.items.filter(item => item.value !== undefined); + const completeItems = gridFilter.items.filter( + item => item.value !== undefined || isValuelessOperator(item.operator) + ); - const convertedItems = setItems + const convertedItems = completeItems .map(operationConverter) .filter(item => item !== null) as Array; @@ -136,186 +136,3 @@ const convertHighLevelFilterToLowLevelFilter = ( : undefined, }; }; - -const operatorListAsMap = (operators: GridFilterOperator[]) => { - return operators.reduce((acc, operator) => { - acc[operator.value] = operator; - return acc; - }, {} as Record); -}; - -const stringOperators = operatorListAsMap(getGridStringOperators()); -const numberOperators = operatorListAsMap(getGridNumericOperators()); -const booleanOperators = operatorListAsMap(getGridBooleanOperators()); -const dateTimeOperators = operatorListAsMap(getGridDateOperators(true)); - -const allGeneralPurposeOperators = { - string: { - contains: stringOperators.contains, - equals: stringOperators.equals, - }, - number: { - '=': numberOperators['='], - '!=': numberOperators['!='], - '>': numberOperators['>'], - '>=': numberOperators['>='], - '<': numberOperators['<'], - '<=': numberOperators['<='], - }, - bool: { - is: booleanOperators.is, - }, - date: { - after: dateTimeOperators.after, - before: dateTimeOperators.before, - }, - any: { - isEmpty: stringOperators.isEmpty, - isNotEmpty: stringOperators.isEmpty, - }, -}; - -export const allOperators = Object.entries(allGeneralPurposeOperators).flatMap( - ([type, operators]) => - Object.entries(operators).map(([label, operator]) => { - return { - ...operator, - value: `(${type}): ${label}`, - label: `(${type}): ${label}`, - }; - }) -); - -const operationConverter = (item: GridFilterItem): null | Query['$expr'] => { - if (item.operator === '(any): isEmpty') { - return { - $eq: [{$getField: item.field}, {$literal: ''}], - }; - } else if (item.operator === '(any): isNotEmpty') { - return { - $not: [ - { - $eq: [{$getField: item.field}, {$literal: ''}], - }, - ], - }; - } else if (item.operator === '(string): contains') { - return { - $contains: { - input: {$getField: item.field}, - substr: {$literal: item.value}, - }, - }; - } else if (item.operator === '(string): equals') { - return { - $eq: [{$getField: item.field}, {$literal: item.value}], - }; - } else if (item.operator === '(number): =') { - if (item.value === '') { - return null; - } - const val = parseFloat(item.value); - return { - $eq: [ - {$convert: {input: {$getField: item.field}, to: 'double'}}, - {$literal: val}, - ], - }; - } else if (item.operator === '(number): !=') { - if (item.value === '') { - return null; - } - const val = parseFloat(item.value); - return { - $not: [ - { - $eq: [ - {$convert: {input: {$getField: item.field}, to: 'double'}}, - {$literal: val}, - ], - }, - ], - }; - } else if (item.operator === '(number): >') { - if (item.value === '') { - return null; - } - const val = parseFloat(item.value); - return { - $gt: [ - {$convert: {input: {$getField: item.field}, to: 'double'}}, - {$literal: val}, - ], - }; - } else if (item.operator === '(number): >=') { - if (item.value === '') { - return null; - } - const val = parseFloat(item.value); - return { - $gte: [ - {$convert: {input: {$getField: item.field}, to: 'double'}}, - {$literal: val}, - ], - }; - } else if (item.operator === '(number): <') { - if (item.value === '') { - return null; - } - const val = parseFloat(item.value); - return { - $not: [ - { - $gte: [ - {$convert: {input: {$getField: item.field}, to: 'double'}}, - {$literal: val}, - ], - }, - ], - }; - } else if (item.operator === '(number): <=') { - if (item.value === '') { - return null; - } - const val = parseFloat(item.value); - return { - $not: [ - { - $gt: [ - {$convert: {input: {$getField: item.field}, to: 'double'}}, - {$literal: val}, - ], - }, - ], - }; - } else if (item.operator === '(bool): is') { - if (item.value === '') { - return null; - } - return { - $eq: [{$getField: item.field}, {$literal: item.value}], - }; - } else if (item.operator === '(date): after') { - if (item.value === '') { - return null; - } - const secs = new Date(item.value).getTime(); - return { - $gt: [{$getField: item.field}, {$literal: secs / 1000}], - }; - } else if (item.operator === '(date): before') { - if (item.value === '') { - return null; - } - const secs = new Date(item.value).getTime(); - return { - $not: [ - { - $gt: [{$getField: item.field}, {$literal: secs / 1000}], - }, - ], - }; - } else { - throw new Error('Unsupported operator'); - } -}; diff --git a/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/ObjectVersionsPage.tsx b/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/ObjectVersionsPage.tsx index b57bf5ea3ec..aa6a9161a25 100644 --- a/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/ObjectVersionsPage.tsx +++ b/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/ObjectVersionsPage.tsx @@ -1,3 +1,14 @@ +/** + * This page is the list-view for object versions. When a single object is selected, it + * becomes a rich table of versions. It is likely that we will want to outfit it + * with features similar to the calls table. For example: + * [ ] Add the ability to expand refs + * [ ] Paginate & stream responses similar to calls + * [ ] Add the ability to sort / filter on values + * [ ] Add the ability to sort / filter on expanded values (blocked by general support for expansion operations) + * [ ] Add sort / filter state to URL + */ + import { GridColDef, GridColumnGroupingModel, @@ -23,15 +34,26 @@ import { import {ObjectVersionLink, ObjectVersionsLink} from './common/Links'; import {FilterLayoutTemplate} from './common/SimpleFilterableDataTable'; import {SimplePageLayout} from './common/SimplePageLayout'; +import { + buildDynamicColumns, + prepareFlattenedDataForTable, +} from './common/tabularListViews/columnBuilder'; import {TypeVersionCategoryChip} from './common/TypeVersionCategoryChip'; import {useControllableState, useURLSearchParamsDict} from './util'; +import {OBJECT_ATTR_EDGE_NAME} from './wfReactInterface/constants'; import {useWFHooks} from './wfReactInterface/context'; +import { + isTableRef, + makeRefExpandedPayload, +} from './wfReactInterface/tsDataModelHooksCallRefExpansion'; import {objectVersionKeyToRefUri} from './wfReactInterface/utilities'; import { KnownBaseObjectClassType, ObjectVersionSchema, } from './wfReactInterface/wfDataModelHooksInterface'; +const DATASET_BASE_OBJECT_CLASS = 'Dataset'; + export const ObjectVersionsPage: React.FC<{ entity: string; project: string; @@ -126,7 +148,7 @@ export const FilterableObjectVersionsTable: React.FC<{ const base = props.initialFilter?.baseObjectClass; if ('Model' === base) { propsEmpty = EMPTY_PROPS_MODEL; - } else if ('Dataset' === base) { + } else if (DATASET_BASE_OBJECT_CLASS === base) { propsEmpty = EMPTY_PROPS_DATASETS; } return ; @@ -153,66 +175,138 @@ const ObjectVersionsTable: React.FC<{ objectVersions: ObjectVersionSchema[]; usingLatestFilter?: boolean; }> = props => { + // `showPropsAsColumns` probably needs to be a bit more robust + const showPropsAsColumns = !props.usingLatestFilter; const rows: GridRowsProp = useMemo(() => { + const vals = props.objectVersions.map(ov => ov.val); + const flat = prepareFlattenedDataForTable(vals); + return props.objectVersions.map((ov, i) => { + let val = flat[i]; + if (ov.baseObjectClass === DATASET_BASE_OBJECT_CLASS) { + // We don't want to show the rows column for datasets + // because it is redundant. Probably want a more generic + // solution here in the future. Maybe exclude table refs? + val = _.omit(val, 'rows'); + } + // We don't want to show name (because it is the same as the object id) + val = _.omit(val, 'name'); return { - ...ov, id: objectVersionKeyToRefUri(ov), - object: `${ov.objectId}:v${ov.versionIndex}`, - obj: ov, + obj: { + ...ov, + val, + }, }; }); }, [props.objectVersions]); - const columns: GridColDef[] = [ - basicField('object', 'Object', { - hideable: false, - renderCell: cellParams => { - // Icon to indicate navigation to the object version - const obj: ObjectVersionSchema = cellParams.row.obj; - return ( - - ); - }, - }), - basicField('baseObjectClass', 'Category', { - width: 100, - renderCell: cellParams => { - const category = cellParams.value; - if (category === 'Model' || category === 'Dataset') { - return ; - } - return null; - }, - }), - basicField('createdAtMs', 'Created', { - width: 100, - renderCell: cellParams => { - const createdAtMs = cellParams.value; - return ; - }, - }), - ...(props.usingLatestFilter - ? [ - basicField('peerVersions', 'Versions', { - width: 100, - sortable: false, - filterable: false, - renderCell: cellParams => { - const obj: ObjectVersionSchema = cellParams.row.obj; - return ; - }, - }), - ] - : []), - ]; - const columnGroupingModel: GridColumnGroupingModel = []; + + // TODO: We should make this page very robust similar to the CallsTable page. + // We will want to do nearly all the same things: URL state management, + // sorting, filtering, ref expansion, etc... A lot of common logic should be + // extracted and shared. + const {cols: columns, groups: columnGroupingModel} = useMemo(() => { + let groups: GridColumnGroupingModel = []; + const cols: GridColDef[] = [ + basicField('object', 'Object', { + hideable: false, + renderCell: cellParams => { + // Icon to indicate navigation to the object version + const obj: ObjectVersionSchema = cellParams.row.obj; + return ( + + ); + }, + }), + ]; + + if (showPropsAsColumns) { + const dynamicFields: string[] = []; + const dynamicFieldSet = new Set(); + rows.forEach(r => { + Object.keys(r.obj.val).forEach(k => { + if (!dynamicFieldSet.has(k)) { + dynamicFieldSet.add(k); + dynamicFields.push(k); + } + }); + }); + + const {cols: newCols, groupingModel} = + buildDynamicColumns(dynamicFields, (row, key) => { + const obj: ObjectVersionSchema = (row as any).obj; + const res = obj.val?.[key]; + if (isTableRef(res)) { + // This whole block is a hack to make the table ref clickable. This + // is the same thing that the CallsTable does for expanded fields. + // Once we come up with a common pattern for ref expansion, this + // will go away. + const selfRefUri = objectVersionKeyToRefUri(obj); + const targetRefUri = + selfRefUri + + ('/' + + OBJECT_ATTR_EDGE_NAME + + '/' + + key.split('.').join(OBJECT_ATTR_EDGE_NAME + '/')); + return makeRefExpandedPayload(targetRefUri, res); + } + return res; + }); + cols.push(...newCols); + groups = groupingModel; + } + + cols.push( + basicField('baseObjectClass', 'Category', { + width: 100, + valueGetter: cellParams => { + return cellParams.row.obj.baseObjectClass; + }, + renderCell: cellParams => { + const category = cellParams.value; + if (category === 'Model' || category === 'Dataset') { + return ; + } + return null; + }, + }) + ); + + cols.push( + basicField('createdAtMs', 'Created', { + width: 100, + valueGetter: cellParams => { + return cellParams.row.obj.createdAtMs; + }, + renderCell: cellParams => { + const createdAtMs = cellParams.value; + return ; + }, + }) + ); + if (props.usingLatestFilter) { + cols.push( + basicField('peerVersions', 'Versions', { + width: 100, + sortable: false, + filterable: false, + renderCell: cellParams => { + const obj: ObjectVersionSchema = cellParams.row.obj; + return ; + }, + }) + ); + } + + return {cols, groups}; + }, [showPropsAsColumns, props.usingLatestFilter, rows]); // Highlight table row if it matches peek drawer. const query = useURLSearchParamsDict(); diff --git a/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/CallsPage/callsTableBuildTree.ts b/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/common/tabularListViews/buildTree.ts similarity index 100% rename from weave-js/src/components/PagePanelComponents/Home/Browse3/pages/CallsPage/callsTableBuildTree.ts rename to weave-js/src/components/PagePanelComponents/Home/Browse3/pages/common/tabularListViews/buildTree.ts diff --git a/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/common/tabularListViews/columnBuilder.tsx b/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/common/tabularListViews/columnBuilder.tsx new file mode 100644 index 00000000000..5aeabcb85a7 --- /dev/null +++ b/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/common/tabularListViews/columnBuilder.tsx @@ -0,0 +1,324 @@ +import { + GridColDef, + GridColumnGroup, + GridColumnGroupingModel, + GridColumnNode, + GridValidRowModel, +} from '@mui/x-data-grid-pro'; +import React from 'react'; + +import {isWeaveObjectRef, parseRef} from '../../../../../../../react'; +import {ErrorBoundary} from '../../../../../../ErrorBoundary'; +import {flattenObject} from '../../../../Browse2/browse2Util'; +import {CellValue} from '../../../../Browse2/CellValue'; +import {CollapseHeader} from '../../../../Browse2/CollapseGroupHeader'; +import {ExpandHeader} from '../../../../Browse2/ExpandHeader'; +import {NotApplicable} from '../../../../Browse2/NotApplicable'; +import {SmallRef} from '../../../../Browse2/SmallRef'; +import { + OBJECT_ATTR_EDGE_NAME, + WEAVE_PRIVATE_PREFIX, +} from '../../wfReactInterface/constants'; +import {privateRefToSimpleName} from '../../wfReactInterface/tsDataModelHooks'; +import { + EXPANDED_REF_REF_KEY, + EXPANDED_REF_VAL_KEY, + ExpandedRefWithValue, + isExpandedRefWithValue, + isTableRef, + makeRefExpandedPayload, +} from '../../wfReactInterface/tsDataModelHooksCallRefExpansion'; +import {isRef} from '../util'; +import {buildTree} from './buildTree'; +import {allOperators} from './operators'; + +/** + * This function is responsible for taking the raw data and flattening it + * into a format that can be consumed by the MUI Data Grid. + * + * Specifically it does 3 things: + * 1. Flattens the nested object structure of the data + * 2. Removes any keys that start with underscore + * 3. Converts expanded values to their actual values. This takes two forms: + * 1. If expanded value is a dictionary, then the flattened data will look like: + * { + * [EXPANDED_REF_REF_KEY]: 'weave://...', + * [EXPANDED_REF_VAL_KEY].sub_key_x: 'value_x', + * ... + * } + * In this case, we want to remove the [EXPANDED_REF_REF_KEY] and [EXPANDED_REF_VAL_KEY] from the paths, + * leaving everything else. The result is that the ref is left at the primitive position for the data. + * 2. If the expanded value is a primitive, then the flattened data will look like: + * { + * [EXPANDED_REF_REF_KEY]: 'weave://...', + * [EXPANDED_REF_VAL_KEY]: 'value' + * } + * In this case, we don't have a place to put the ref value, so we just remove it. + */ +export function prepareFlattenedDataForTable( + data: T[] +): Array { + return data.map(r => { + // First, flatten the inner object + let flattened = flattenObject(r ?? {}); + + flattened = replaceTableRefsInFlattenedData(flattened); + + // Next, process some of the keys. + const cleaned: {[key: string]: any} = {}; + Object.keys(flattened).forEach(key => { + let newKey = key; + + // If the key ends with the expanded ref key, then we have 2 cases + if (key.endsWith('.' + EXPANDED_REF_REF_KEY)) { + const keyRoot = newKey.slice(0, -EXPANDED_REF_REF_KEY.length - 1); + + // Case 1: the refVal is a primitive and we just need to toss away the ref key + const refValIsPrimitive = + flattened[newKey + '.' + EXPANDED_REF_VAL_KEY] !== undefined; + if (refValIsPrimitive) { + return; + + // Case 2: the refVal is a dictionary and we just remove the ref part of the path + } else { + newKey = keyRoot; + } + } + + // Next, we remove all path parts that are the expanded ref val key + if (newKey.includes('.' + EXPANDED_REF_VAL_KEY)) { + newKey = newKey.replaceAll('.' + EXPANDED_REF_VAL_KEY, ''); + } + + // Finally, we remove any keys that start with underscore + if (newKey.includes('._') || newKey.startsWith('_')) { + return; + } + + // and add the cleaned key to the cleaned object + cleaned[newKey] = flattened[key]; + }); + + return cleaned as T & {[key: string]: string}; + }); +} +/** + * This processing step is admittedly a bit of a hack. It replaces "table refs" + * (those that are of weaveKind "table" with a special format that can be + * consumed by the CallsTable / ObjectTable. THe reason we don't want to leave plain table + * refs in play is that they technically are not intended to be surfaced to the + * user. However, when we fetch the data for an object with a table ref inside + * (ie. a Dataset), the table ref is returned from the server. In some cases, we + * want this - for example, when viewing a Dataset object, it is useful to know + * that the `rows` key is table ref and we can render a UI appropriate for that. + * However, we have specific business rules on the server that explicitly deny + * data requests for the entire table ref (by design). In this way, it is a + * "leak" of the internal data model to have a table ref in the data. To + * compensate for this, we replace the table ref with a special format that can + * be consumed by the CallsTable / ObjectTable. This format contains both the source ref (the + * path from the object ref to the table data) as well as the actual table ref + * itself. This allows the table to appropriately render a ref link to the + * "source". We cannot just replace the ref with the source ref however, since + * the table doesn't have any way to "know" that it is a table ref. As a + * result, it would think that this ref is expandable, which is not a valid + * operation. Therefore, we use this special type + * `ExpandedRefWithValueAsTableRef` to handle this case. + */ +function replaceTableRefsInFlattenedData(flattened: Record) { + return Object.fromEntries( + Object.entries(flattened).map(([key, val]) => { + if (isRef(val)) { + const parsedRef = parseRef(val); + if (isWeaveObjectRef(parsedRef)) { + if (parsedRef.weaveKind === 'table') { + let parentRef: string | null = null; + const lookupPath = key.split('.'); + if (lookupPath.length > 0) { + const attr = lookupPath.pop()!; + while (lookupPath.length > 0) { + const parentKey = + lookupPath.join('.') + '.' + EXPANDED_REF_REF_KEY; + if (parentKey in flattened) { + const parentVal = flattened[parentKey]; + if (isRef(parentVal)) { + parentRef = parentVal; + } + break; + } + lookupPath.pop(); + } + if (parentRef) { + const newVal: ExpandedRefWithValueAsTableRef = + makeRefExpandedPayload( + parentRef + '/' + OBJECT_ATTR_EDGE_NAME + '/' + attr, + val + ); + return [key, newVal]; + } + } + } + } + } else if ( + typeof val === 'string' && + val.startsWith(WEAVE_PRIVATE_PREFIX) + ) { + return [key, privateRefToSimpleName(val)]; + } + return [key, val]; + }) + ); +} + +type ExpandedRefWithValueAsTableRef = ExpandedRefWithValue; + +const isExpandedRefWithValueAsTableRef = ( + ref: any +): ref is ExpandedRefWithValueAsTableRef => { + if (!isExpandedRefWithValue(ref)) { + return false; + } + return isTableRef(ref[EXPANDED_REF_VAL_KEY]); +}; + +export const buildDynamicColumns = ( + filteredDynamicColumnNames: string[], + valueForKey: (row: T, key: string) => any, + columnIsExpanded?: (col: string) => boolean, + columnCanBeExpanded?: (col: string) => boolean, + onCollapse?: (col: string) => void, + onExpand?: (col: string) => void, + columnIsFilterable?: (col: string) => boolean, + columnIsSortable?: (col: string) => boolean +) => { + const cols: Array> = []; + + const tree = buildTree([...filteredDynamicColumnNames]); + let groupingModel: GridColumnGroupingModel = tree.children.filter( + c => 'groupId' in c + ) as GridColumnGroup[]; + + const walkGroupingModel = ( + nodes: GridColumnNode[], + fn: (node: GridColumnNode) => GridColumnNode + ) => { + return nodes.map(node => { + node = fn(node); + if ('children' in node) { + node.children = walkGroupingModel(node.children, fn); + } + return node; + }); + }; + const groupIds = new Set(); + groupingModel = walkGroupingModel(groupingModel, node => { + if ('groupId' in node) { + const key = node.groupId; + groupIds.add(key); + if (columnIsExpanded && onCollapse && columnIsExpanded(key)) { + node.renderHeaderGroup = () => { + return ( + + ); + }; + } else if (columnCanBeExpanded && onExpand && columnCanBeExpanded(key)) { + node.renderHeaderGroup = () => { + return ( + + ); + }; + } + } + return node; + }) as GridColumnGroupingModel; + + for (const key of filteredDynamicColumnNames) { + const col: GridColDef = { + flex: 1, + minWidth: 150, + field: key, + filterable: columnIsFilterable && columnIsFilterable(key), + sortable: columnIsSortable && columnIsSortable(key), + filterOperators: allOperators, + headerName: key, + renderHeader: () => { + return ( +
+ {key.split('.').slice(-1)[0]} +
+ ); + }, + valueGetter: cellParams => { + const val = valueForKey(cellParams.row, key); + if (Array.isArray(val) || typeof val === 'object') { + try { + return JSON.stringify(val); + } catch { + return val; + } + } + return val; + }, + renderCell: cellParams => { + const val = valueForKey(cellParams.row, key); + if (val === undefined) { + return ; + } + return ( + + {/* In the future, we may want to move this isExpandedRefWithValueAsTableRef condition + into `CellValue`. However, at the moment, `ExpandedRefWithValueAsTableRef` is a + Table-specific data structure and we might not want to leak that into the + rest of the system*/} + {isExpandedRefWithValueAsTableRef(val) ? ( + + ) : ( + + )} + + ); + }, + }; + + if (groupIds.has(key)) { + col.renderHeader = () => { + return <>; + }; + } else if (columnIsExpanded && onCollapse && columnIsExpanded(key)) { + col.renderHeader = () => { + return ( + + ); + }; + } else if (columnCanBeExpanded && onExpand && columnCanBeExpanded(key)) { + col.renderHeader = () => { + return ( + + ); + }; + } + cols.push(col); + } + + return {cols, groupingModel}; +}; diff --git a/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/common/tabularListViews/operators.ts b/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/common/tabularListViews/operators.ts new file mode 100644 index 00000000000..6b75f6e1b82 --- /dev/null +++ b/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/common/tabularListViews/operators.ts @@ -0,0 +1,199 @@ +import { + getGridBooleanOperators, + getGridDateOperators, + getGridNumericOperators, + getGridStringOperators, + GridFilterItem, + GridFilterOperator, +} from '@mui/x-data-grid'; + +import {Query} from '../../wfReactInterface/traceServerClientInterface/query'; + +const operatorListAsMap = (operators: GridFilterOperator[]) => { + return operators.reduce((acc, operator) => { + acc[operator.value] = operator; + return acc; + }, {} as Record); +}; +const stringOperators = operatorListAsMap(getGridStringOperators()); +const numberOperators = operatorListAsMap(getGridNumericOperators()); +const booleanOperators = operatorListAsMap(getGridBooleanOperators()); +const dateTimeOperators = operatorListAsMap(getGridDateOperators(true)); +const allGeneralPurposeOperators = { + string: { + contains: stringOperators.contains, + equals: stringOperators.equals, + }, + number: { + '=': numberOperators['='], + '!=': numberOperators['!='], + '>': numberOperators['>'], + '>=': numberOperators['>='], + '<': numberOperators['<'], + '<=': numberOperators['<='], + }, + bool: { + is: booleanOperators.is, + }, + date: { + after: dateTimeOperators.after, + before: dateTimeOperators.before, + }, + any: { + isEmpty: stringOperators.isEmpty, + isNotEmpty: stringOperators.isEmpty, + }, +}; + +export const allOperators = Object.entries(allGeneralPurposeOperators).flatMap( + ([type, operators]) => + Object.entries(operators).map(([label, operator]) => { + return { + ...operator, + value: `(${type}): ${label}`, + label: `(${type}): ${label}`, + }; + }) +); + +const VALUELESS_OPERATORS = new Set(['(any): isEmpty', '(any): isNotEmpty']); + +export const isValuelessOperator = (operator: string) => { + return VALUELESS_OPERATORS.has(operator); +}; + +export const operationConverter = ( + item: GridFilterItem +): null | Query['$expr'] => { + if (item.operator === '(any): isEmpty') { + return { + $eq: [{$getField: item.field}, {$literal: ''}], + }; + } else if (item.operator === '(any): isNotEmpty') { + return { + $not: [ + { + $eq: [{$getField: item.field}, {$literal: ''}], + }, + ], + }; + } else if (item.operator === '(string): contains') { + return { + $contains: { + input: {$getField: item.field}, + substr: {$literal: item.value}, + }, + }; + } else if (item.operator === '(string): equals') { + return { + $eq: [{$getField: item.field}, {$literal: item.value}], + }; + } else if (item.operator === '(number): =') { + if (item.value === '') { + return null; + } + const val = parseFloat(item.value); + return { + $eq: [ + {$convert: {input: {$getField: item.field}, to: 'double'}}, + {$literal: val}, + ], + }; + } else if (item.operator === '(number): !=') { + if (item.value === '') { + return null; + } + const val = parseFloat(item.value); + return { + $not: [ + { + $eq: [ + {$convert: {input: {$getField: item.field}, to: 'double'}}, + {$literal: val}, + ], + }, + ], + }; + } else if (item.operator === '(number): >') { + if (item.value === '') { + return null; + } + const val = parseFloat(item.value); + return { + $gt: [ + {$convert: {input: {$getField: item.field}, to: 'double'}}, + {$literal: val}, + ], + }; + } else if (item.operator === '(number): >=') { + if (item.value === '') { + return null; + } + const val = parseFloat(item.value); + return { + $gte: [ + {$convert: {input: {$getField: item.field}, to: 'double'}}, + {$literal: val}, + ], + }; + } else if (item.operator === '(number): <') { + if (item.value === '') { + return null; + } + const val = parseFloat(item.value); + return { + $not: [ + { + $gte: [ + {$convert: {input: {$getField: item.field}, to: 'double'}}, + {$literal: val}, + ], + }, + ], + }; + } else if (item.operator === '(number): <=') { + if (item.value === '') { + return null; + } + const val = parseFloat(item.value); + return { + $not: [ + { + $gt: [ + {$convert: {input: {$getField: item.field}, to: 'double'}}, + {$literal: val}, + ], + }, + ], + }; + } else if (item.operator === '(bool): is') { + if (item.value === '') { + return null; + } + return { + $eq: [{$getField: item.field}, {$literal: item.value}], + }; + } else if (item.operator === '(date): after') { + if (item.value === '') { + return null; + } + const secs = new Date(item.value).getTime(); + return { + $gt: [{$getField: item.field}, {$literal: secs / 1000}], + }; + } else if (item.operator === '(date): before') { + if (item.value === '') { + return null; + } + const secs = new Date(item.value).getTime(); + return { + $not: [ + { + $gt: [{$getField: item.field}, {$literal: secs / 1000}], + }, + ], + }; + } else { + throw new Error('Unsupported operator'); + } +}; diff --git a/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/wfReactInterface/tsDataModelHooksCallRefExpansion.ts b/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/wfReactInterface/tsDataModelHooksCallRefExpansion.ts index 6731411a05a..5f588ea9f0f 100644 --- a/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/wfReactInterface/tsDataModelHooksCallRefExpansion.ts +++ b/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/wfReactInterface/tsDataModelHooksCallRefExpansion.ts @@ -127,10 +127,7 @@ export const useClientSideCallRefExpansion = ( } if (isRef(value) && refsDataMap.has(value)) { const refObj = refsDataMap.get(value); - _.set(call, path, { - [EXPANDED_REF_REF_KEY]: value, - [EXPANDED_REF_VAL_KEY]: refObj, - }); + _.set(call, path, makeRefExpandedPayload(value, refObj)); } }); return call; @@ -149,6 +146,33 @@ export const useClientSideCallRefExpansion = ( }; }, [expandedCalls, isExpanding]); }; + +export type ExpandedRefWithValue = { + [EXPANDED_REF_REF_KEY]: string; + [EXPANDED_REF_VAL_KEY]: T; +}; + +export const makeRefExpandedPayload = ( + originalRef: string, + refData: T +): ExpandedRefWithValue => { + return { + [EXPANDED_REF_REF_KEY]: originalRef, + [EXPANDED_REF_VAL_KEY]: refData, + }; +}; + +export const isExpandedRefWithValue = ( + ref: any +): ref is ExpandedRefWithValue => { + return ( + typeof ref === 'object' && + ref !== null && + EXPANDED_REF_REF_KEY in ref && + EXPANDED_REF_VAL_KEY in ref + ); +}; + export const directFetchRefsData = async ( refUris: string[], client: traceServerClient.TraceServerClient diff --git a/weave-js/src/components/Panel2/PanelArtifactVersionTags/Component.tsx b/weave-js/src/components/Panel2/PanelArtifactVersionTags/Component.tsx new file mode 100644 index 00000000000..b9c84b8402b --- /dev/null +++ b/weave-js/src/components/Panel2/PanelArtifactVersionTags/Component.tsx @@ -0,0 +1,61 @@ +import {Tag, TagType} from '@wandb/weave/common/components/Tags'; +import React from 'react'; +import styled from 'styled-components'; + +import * as GQLGenerated from '../../../generated/graphql'; +import * as CGReact from '../../../react'; +import * as Panel2 from '../panel'; +import {Panel2Loader} from '../PanelComp'; +import {inputType} from './common'; + +const Wrapper = styled.div` + width: 100%; + height: 100%; + overflow-x: auto; + overflow-y: hidden; + margin: auto; + text-align: center; + wordbreak: normal; + display: flex; + flex-direction: row; + align-content: space-around; + justify-content: left; + align-items: center; + -ms-overflow-style: none; /* IE and Edge */ + scrollbar-width: none; /* Firefox */ + &::-webkit-scrollbar { + display: none; + } +`; + +type PanelArtifactVersionTagsProps = Panel2.PanelProps; + +const PanelArtifactVersionTags: React.FC< + PanelArtifactVersionTagsProps +> = props => { + const nodeValueQuery = CGReact.useNodeValue(props.input as any); + if (nodeValueQuery.loading) { + return ; + } + if (nodeValueQuery.result == null) { + return
-
; + } + return ( + + {nodeValueQuery.result.map((artifactVersionTag: GQLGenerated.Tag) => { + return ( + + ); + })} + + ); +}; + +export default PanelArtifactVersionTags; diff --git a/weave-js/src/components/Panel2/PanelArtifactVersionTags/common.ts b/weave-js/src/components/Panel2/PanelArtifactVersionTags/common.ts new file mode 100644 index 00000000000..873b663897d --- /dev/null +++ b/weave-js/src/components/Panel2/PanelArtifactVersionTags/common.ts @@ -0,0 +1,11 @@ +import {typedDict} from '@wandb/weave/core'; + +export const inputType = { + type: 'list' as const, + objectType: typedDict({ + id: 'string', + name: 'string', + tagCategoryName: 'string', + attributes: 'string', + }), +}; diff --git a/weave-js/src/components/Panel2/PanelArtifactVersionTags/index.ts b/weave-js/src/components/Panel2/PanelArtifactVersionTags/index.ts new file mode 100644 index 00000000000..6ca1ec9257b --- /dev/null +++ b/weave-js/src/components/Panel2/PanelArtifactVersionTags/index.ts @@ -0,0 +1,10 @@ +import React from 'react'; + +import * as Panel2 from '../panel'; +import {inputType} from './common'; + +export const Spec: Panel2.PanelSpec = { + id: 'artifactVersionTags', + Component: React.lazy(() => import('./Component')), + inputType, +}; diff --git a/weave-js/src/components/Panel2/PanelRegistry.tsx b/weave-js/src/components/Panel2/PanelRegistry.tsx index ffc139ed4b2..1f9301e309e 100644 --- a/weave-js/src/components/Panel2/PanelRegistry.tsx +++ b/weave-js/src/components/Panel2/PanelRegistry.tsx @@ -1,6 +1,7 @@ import {IconName} from '../Icon'; import * as Panel from './panel'; import {Spec as PanelArtifactVersionAliasesSpec} from './PanelArtifactVersionAliases'; +import {Spec as PanelArtifactVersionTagsSpec} from './PanelArtifactVersionTags'; import {Spec as AudioSpec} from './PanelAudio'; import {Spec as BarChartSpec} from './PanelBarChart'; import {Spec as BokehSpec} from './PanelBokeh'; @@ -159,6 +160,7 @@ const initSpecs = () => { NDArraySpec, PanelArtifactVersionAliasesSpec, + PanelArtifactVersionTagsSpec, PanelTraceTreeTraceTableViewerSpec, PanelTraceTreeFromHistoryTraceTableViewerSpec, diff --git a/weave-js/src/components/Panel2/toWeaveType.tsx b/weave-js/src/components/Panel2/toWeaveType.tsx index 52a1df4faf4..717f2c09f8e 100644 --- a/weave-js/src/components/Panel2/toWeaveType.tsx +++ b/weave-js/src/components/Panel2/toWeaveType.tsx @@ -19,6 +19,7 @@ export const panelIdAlternativeMapping: {[jsId: string]: string} = { 'run-overview': 'PanelRunOverview', none: 'PanelNone', artifactVersionAliases: 'PanelArtifactVersionAliases', + artifactVersionTags: 'PanelArtifactVersionTags', netron: 'PanelNetron', object: 'PanelObject', 'audio-file': 'PanelAudioFile', diff --git a/weave-js/src/core/ops/domain/artifactVersion.ts b/weave-js/src/core/ops/domain/artifactVersion.ts index 0c528ef4d9c..4015f0da55a 100644 --- a/weave-js/src/core/ops/domain/artifactVersion.ts +++ b/weave-js/src/core/ops/domain/artifactVersion.ts @@ -541,6 +541,26 @@ export const opArtifactVersionAliases = makeArtifactVersionOp({ ), }); +export const opArtifactVersionRawTags = makeArtifactVersionOp({ + name: 'artifactVersion-rawTags', + argTypes: artifactVersionArgTypes, + description: `Returns the tags for a ${docType('artifactVersion')}`, + argDescriptions: { + artifactVersion: artifactVersionArgDescription, + }, + returnValueDescription: `The tags for a ${docType('artifactVersion')}`, + returnType: inputTypes => + list( + typedDict({ + id: 'string', + name: 'string', + tagCategoryName: 'string', + attributes: 'string', + }) + ), + resolver: ({artifactVersion}) => artifactVersion.tags ?? [], +}); + export const opArtifactVersionLink = makeArtifactVersionOp({ name: 'artifactVersion-link', argTypes: artifactVersionArgTypes, diff --git a/weave-js/src/core/ops/domain/gql.ts b/weave-js/src/core/ops/domain/gql.ts index 13436a84f0c..a72b29ad297 100644 --- a/weave-js/src/core/ops/domain/gql.ts +++ b/weave-js/src/core/ops/domain/gql.ts @@ -1120,6 +1120,16 @@ export const toGqlField = ( return gqlBasicField('isGenerated'); } else if (forwardOp.op.name === 'artifactVersion-isLinkedToGlobalRegistry') { return gqlBasicField('isLinkedToGlobalRegistry'); + } else if (forwardOp.op.name === 'artifactVersion-rawTags') { + return [ + { + name: 'tags', + fields: gqlBasicField('id') + .concat(gqlBasicField('name')) + .concat(gqlBasicField('tagCategoryName')) + .concat(gqlBasicField('attributes')), + }, + ]; } else if (forwardOp.op.name === 'artifactVersion-artifactCollections') { return [ { diff --git a/weave/conftest.py b/weave/conftest.py index fe26b58f3f9..3122c7488fb 100644 --- a/weave/conftest.py +++ b/weave/conftest.py @@ -1,4 +1,3 @@ -import hashlib import logging import os import pathlib @@ -20,7 +19,6 @@ from weave.legacy.language_features.tagging.tag_store import isolated_tagging_context from weave.trace_server import ( clickhouse_trace_server_batched, - external_to_internal_trace_server_adapter, remote_http_trace_server, sqlite_trace_server, ) @@ -301,108 +299,6 @@ def strict_op_saving(): # ) -class TwoWayMapping: - def __init__(self): - self._ext_to_int_map = {} - self._int_to_ext_map = {} - - # Useful for testing to ensure caching is working - self.stats = { - "ext_to_int": { - "hits": 0, - "misses": 0, - }, - "int_to_ext": { - "hits": 0, - "misses": 0, - }, - } - - def ext_to_int(self, key, default=None): - if key not in self._ext_to_int_map: - if default is None: - raise ValueError(f"Key {key} not found") - if default in self._int_to_ext_map: - raise ValueError(f"Default {default} already in use") - self._ext_to_int_map[key] = default - self._int_to_ext_map[default] = key - self.stats["ext_to_int"]["misses"] += 1 - else: - self.stats["ext_to_int"]["hits"] += 1 - return self._ext_to_int_map[key] - - def int_to_ext(self, key, default): - if key not in self._int_to_ext_map: - if default is None: - raise ValueError(f"Key {key} not found") - if default in self._ext_to_int_map: - raise ValueError(f"Default {default} already in use") - self._int_to_ext_map[key] = default - self._ext_to_int_map[default] = key - self.stats["int_to_ext"]["misses"] += 1 - else: - self.stats["int_to_ext"]["hits"] += 1 - return self._int_to_ext_map[key] - - -def simple_hash(s: str) -> str: - return hashlib.sha256(s.encode()).hexdigest() - - -class DummyIdConverter(external_to_internal_trace_server_adapter.IdConverter): - def __init__(self): - self._project_map = TwoWayMapping() - self._run_map = TwoWayMapping() - self._user_map = TwoWayMapping() - - def ext_to_int_project_id(self, project_id: str) -> str: - return self._project_map.ext_to_int(project_id, simple_hash(project_id)) - - def int_to_ext_project_id(self, project_id: str) -> typing.Optional[str]: - return self._project_map.int_to_ext(project_id, simple_hash(project_id)) - - def ext_to_int_run_id(self, run_id: str) -> str: - return self._run_map.ext_to_int(run_id, simple_hash(run_id)) - - def int_to_ext_run_id(self, run_id: str) -> str: - return self._run_map.int_to_ext(run_id, simple_hash(run_id)) - - def ext_to_int_user_id(self, user_id: str) -> str: - return self._user_map.ext_to_int(user_id, simple_hash(user_id)) - - def int_to_ext_user_id(self, user_id: str) -> str: - return self._user_map.int_to_ext(user_id, simple_hash(user_id)) - - -class TestOnlyUserInjectingExternalTraceServer( - external_to_internal_trace_server_adapter.ExternalTraceServer -): - def __init__( - self, - internal_trace_server: tsi.TraceServerInterface, - id_converter: external_to_internal_trace_server_adapter.IdConverter, - user_id: str, - ): - super().__init__(internal_trace_server, id_converter) - self._user_id = user_id - - def call_start(self, req: tsi.CallStartReq) -> tsi.CallStartRes: - req.start.wb_user_id = self._user_id - return super().call_start(req) - - def calls_delete(self, req: tsi.CallsDeleteReq) -> tsi.CallsDeleteRes: - req.wb_user_id = self._user_id - return super().calls_delete(req) - - def call_update(self, req: tsi.CallUpdateReq) -> tsi.CallUpdateRes: - req.wb_user_id = self._user_id - return super().call_update(req) - - def feedback_create(self, req: tsi.FeedbackCreateReq) -> tsi.FeedbackCreateRes: - req.wb_user_id = self._user_id - return super().feedback_create(req) - - @pytest.fixture() def client(request) -> Generator[weave_client.WeaveClient, None, None]: inited_client = None diff --git a/weave/flow/eval.py b/weave/flow/eval.py index f15b40e561c..8cdee87da4b 100644 --- a/weave/flow/eval.py +++ b/weave/flow/eval.py @@ -48,6 +48,10 @@ def async_call( return asyncio.to_thread(func, *args, **kwargs) +class EvaluationResults(weave.Object): + rows: weave.Table + + class Evaluation(Object): """ Sets up an evaluation which includes a set of scorers and a dataset. @@ -249,8 +253,9 @@ async def predict_and_score( } @weave.op() - async def summarize(self, eval_table: list) -> dict: - cols = transpose(eval_table) + async def summarize(self, eval_table: EvaluationResults) -> dict: + eval_table_rows = list(eval_table.rows) + cols = transpose(eval_table_rows) summary = {} for name, vals in cols.items(): @@ -312,7 +317,18 @@ async def eval_example(example: dict) -> dict: eval_row["scores"][scorer_name] = {} eval_rows.append(eval_row) - summary = await self.summarize(eval_rows) + # The need for this pattern is quite unfortunate and highlights a gap in our + # data model. As a user, I just want to pass a list of data `eval_rows` to + # summarize. Under the hood, Weave should choose the appropriate storage + # format (in this case `Table`) and serialize it that way. Right now, it is + # just a huge list of dicts. The fact that "as a user" I need to construct + # `weave.Table` at all is a leaky abstraction. Moreover, the need to + # construct `EvaluationResults` just so that tracing and the UI works is + # also bad. In the near-term, this will at least solve the problem of + # breaking summarization with big datasets, but this is not the correct + # long-term solution. + eval_results = EvaluationResults(rows=weave.Table(eval_rows)) + summary = await self.summarize(eval_results) print("Evaluation summary", summary) diff --git a/weave/frontend/index.html b/weave/frontend/index.html index 0513c8fe345..dad28e68cf4 100644 --- a/weave/frontend/index.html +++ b/weave/frontend/index.html @@ -91,7 +91,7 @@ - + diff --git a/weave/frontend/sha1.txt b/weave/frontend/sha1.txt index 3a61da7545b..2aa3e88669c 100644 --- a/weave/frontend/sha1.txt +++ b/weave/frontend/sha1.txt @@ -1 +1 @@ -889225f5d7077f8d1866f7bb818e923ff0d28453 +80a59f0cb10af06b986c98ca1adcda7476172870 diff --git a/weave/tests/test_client_trace.py b/weave/tests/test_client_trace.py index 67db83bdd2c..8c1a255d132 100644 --- a/weave/tests/test_client_trace.py +++ b/weave/tests/test_client_trace.py @@ -1,7 +1,5 @@ -import asyncio import dataclasses import datetime -import os import platform import sys import time @@ -16,17 +14,15 @@ import weave from weave import Thread, ThreadPoolExecutor, weave_client -from weave.legacy import context_state -from weave.trace.vals import MissingSelfInstanceError, WeaveObject +from weave.trace.vals import MissingSelfInstanceError +from weave.trace_server.ids import generate_id from weave.trace_server.sqlite_trace_server import SqliteTraceServer -from weave.weave_client import Call from ..trace_server import trace_server_interface as tsi from ..trace_server.trace_server_interface_util import ( TRACE_REF_SCHEME, WILDCARD_ARTIFACT_VERSION_AND_PATH, extract_refs_from_values, - generate_id, ) pytestmark = pytest.mark.trace @@ -102,12 +98,14 @@ def test_dataset(client): def test_trace_server_call_start_and_end(client): call_id = generate_id() + trace_id = generate_id() + parent_id = generate_id() start = tsi.StartedCallSchemaForInsert( project_id=client._project_id(), id=call_id, op_name="test_name", - trace_id="test_trace_id", - parent_id="test_parent_id", + trace_id=trace_id, + parent_id=parent_id, started_at=datetime.datetime.now(tz=datetime.timezone.utc) - datetime.timedelta(seconds=1), attributes={"a": 5}, @@ -147,8 +145,8 @@ def __eq__(self, other): "project_id": client._project_id(), "id": call_id, "op_name": "test_name", - "trace_id": "test_trace_id", - "parent_id": "test_parent_id", + "trace_id": trace_id, + "parent_id": parent_id, "started_at": FuzzyDateTimeMatcher(start.started_at), "ended_at": None, "exception": None, @@ -186,8 +184,8 @@ def __eq__(self, other): "project_id": client._project_id(), "id": call_id, "op_name": "test_name", - "trace_id": "test_trace_id", - "parent_id": "test_parent_id", + "trace_id": trace_id, + "parent_id": parent_id, "started_at": FuzzyDateTimeMatcher(start.started_at), "ended_at": FuzzyDateTimeMatcher(end.ended_at), "exception": None, @@ -1382,7 +1380,7 @@ def test_dataset_row_ref(client): d2 = weave.ref(ref.uri()).get() inner = d2.rows[0]["a"] - exp_ref = "weave:///shawn/test-project/object/Dataset:PHOGkwSOn7DqLgIUNgUAq7d2vXpOmG8NGLltn6slzeU/attr/rows/id/XfhC9dNA5D4taMvhKT4MKN2uce7F56Krsyv4Q6mvVMA/key/a" + exp_ref = "weave:///shawn/test-project/object/Dataset:0xTDJ6hEmsx8Wg9H75y42bL2WgvW5l4IXjuhHcrMh7A/attr/rows/id/XfhC9dNA5D4taMvhKT4MKN2uce7F56Krsyv4Q6mvVMA/key/a" assert inner == 5 assert inner.ref.uri() == exp_ref gotten = weave.ref(exp_ref).get() diff --git a/weave/tests/test_op_decorator_behaviour.py b/weave/tests/test_op_decorator_behaviour.py index 07230cb379a..804e045d781 100644 --- a/weave/tests/test_op_decorator_behaviour.py +++ b/weave/tests/test_op_decorator_behaviour.py @@ -132,7 +132,7 @@ def test_sync_method_call(client, weave_obj, py_obj): entity="shawn", project="test-project", name="A", - digest="nCFXG0JUooNi5QBQGsOPNhmNVRr8ueUKvEUDQ2TeSoc", + digest="tGCIGNe9xznnkoJvn2i75TOocSfV7ui1vldSrIP3ZZo", extra=(), ), "a": 1, @@ -167,7 +167,7 @@ async def test_async_method_call(client, weave_obj, py_obj): entity="shawn", project="test-project", name="A", - digest="nCFXG0JUooNi5QBQGsOPNhmNVRr8ueUKvEUDQ2TeSoc", + digest="tGCIGNe9xznnkoJvn2i75TOocSfV7ui1vldSrIP3ZZo", extra=(), ), "a": 1, diff --git a/weave/tests/test_weave_client_threaded.py b/weave/tests/test_weave_client_threaded.py index 6bdf4d4ba32..e1b5617cb9b 100644 --- a/weave/tests/test_weave_client_threaded.py +++ b/weave/tests/test_weave_client_threaded.py @@ -37,7 +37,7 @@ def test_flask_server(flask_server): url = flask_server response = requests.get(url) assert response.status_code == 200 - assert response.text == "PHOGkwSOn7DqLgIUNgUAq7d2vXpOmG8NGLltn6slzeU" + assert response.text == "0xTDJ6hEmsx8Wg9H75y42bL2WgvW5l4IXjuhHcrMh7A" def test_weave_client_global_accessible_in_thread(client): diff --git a/weave/tests/trace_server_clickhouse_conftest.py b/weave/tests/trace_server_clickhouse_conftest.py index aa86396e187..b21cddb99e3 100644 --- a/weave/tests/trace_server_clickhouse_conftest.py +++ b/weave/tests/trace_server_clickhouse_conftest.py @@ -1,6 +1,8 @@ +import base64 import os import subprocess import time +import typing import urllib import uuid @@ -12,6 +14,10 @@ from ..trace_server import ( clickhouse_trace_server_batched, + external_to_internal_trace_server_adapter, +) +from ..trace_server import ( + trace_server_interface as tsi, ) from ..weave_init import InitializedClient @@ -41,9 +47,13 @@ def trace_init_client(clickhouse_trace_server, user_by_api_key_in_env): # Generate a random project name to avoid conflicts between tests # using the same shared backend server random_project_name = str(uuid.uuid4()) + server = TestOnlyUserInjectingExternalTraceServer( + clickhouse_trace_server, DummyIdConverter(), user_by_api_key_in_env.username + ) graph_client = weave_client.WeaveClient( - user_by_api_key_in_env.username, random_project_name, clickhouse_trace_server + user_by_api_key_in_env.username, random_project_name, server ) + inited_client = InitializedClient(graph_client) try: @@ -108,3 +118,107 @@ def server_healthy(num_retries=1): # wait for the server to start return server_healthy(num_retries=30) + + +class TwoWayMapping: + def __init__(self): + self._ext_to_int_map = {} + self._int_to_ext_map = {} + + # Useful for testing to ensure caching is working + self.stats = { + "ext_to_int": { + "hits": 0, + "misses": 0, + }, + "int_to_ext": { + "hits": 0, + "misses": 0, + }, + } + + def ext_to_int(self, key, default=None): + if key not in self._ext_to_int_map: + if default is None: + raise ValueError(f"Key {key} not found") + if default in self._int_to_ext_map: + raise ValueError(f"Default {default} already in use") + self._ext_to_int_map[key] = default + self._int_to_ext_map[default] = key + self.stats["ext_to_int"]["misses"] += 1 + else: + self.stats["ext_to_int"]["hits"] += 1 + return self._ext_to_int_map[key] + + def int_to_ext(self, key, default): + if key not in self._int_to_ext_map: + if default is None: + raise ValueError(f"Key {key} not found") + if default in self._ext_to_int_map: + raise ValueError(f"Default {default} already in use") + self._int_to_ext_map[key] = default + self._ext_to_int_map[default] = key + self.stats["int_to_ext"]["misses"] += 1 + else: + self.stats["int_to_ext"]["hits"] += 1 + return self._int_to_ext_map[key] + + +def b64(s: str) -> str: + # Base64 encode the string + return base64.b64encode(s.encode("ascii")).decode("ascii") + + +class DummyIdConverter(external_to_internal_trace_server_adapter.IdConverter): + def __init__(self): + self._project_map = TwoWayMapping() + self._run_map = TwoWayMapping() + self._user_map = TwoWayMapping() + + def ext_to_int_project_id(self, project_id: str) -> str: + return self._project_map.ext_to_int(project_id, b64(project_id)) + + def int_to_ext_project_id(self, project_id: str) -> typing.Optional[str]: + return self._project_map.int_to_ext(project_id, b64(project_id)) + + def ext_to_int_run_id(self, run_id: str) -> str: + return self._run_map.ext_to_int(run_id, b64(run_id) + ":" + run_id) + + def int_to_ext_run_id(self, run_id: str) -> str: + exp = run_id.split(":")[1] + return self._run_map.int_to_ext(run_id, exp) + + def ext_to_int_user_id(self, user_id: str) -> str: + return self._user_map.ext_to_int(user_id, b64(user_id)) + + def int_to_ext_user_id(self, user_id: str) -> str: + return self._user_map.int_to_ext(user_id, b64(user_id)) + + +class TestOnlyUserInjectingExternalTraceServer( + external_to_internal_trace_server_adapter.ExternalTraceServer +): + def __init__( + self, + internal_trace_server: tsi.TraceServerInterface, + id_converter: external_to_internal_trace_server_adapter.IdConverter, + user_id: str, + ): + super().__init__(internal_trace_server, id_converter) + self._user_id = user_id + + def call_start(self, req: tsi.CallStartReq) -> tsi.CallStartRes: + req.start.wb_user_id = self._user_id + return super().call_start(req) + + def calls_delete(self, req: tsi.CallsDeleteReq) -> tsi.CallsDeleteRes: + req.wb_user_id = self._user_id + return super().calls_delete(req) + + def call_update(self, req: tsi.CallUpdateReq) -> tsi.CallUpdateRes: + req.wb_user_id = self._user_id + return super().call_update(req) + + def feedback_create(self, req: tsi.FeedbackCreateReq) -> tsi.FeedbackCreateRes: + req.wb_user_id = self._user_id + return super().feedback_create(req) diff --git a/weave/trace/ipython.py b/weave/trace/ipython.py index 92a2f87aac3..23fce891f45 100644 --- a/weave/trace/ipython.py +++ b/weave/trace/ipython.py @@ -7,6 +7,9 @@ class NotInteractiveEnvironmentError(Exception): ... +class ClassNotFoundError(ValueError): ... + + def is_running_interactively() -> bool: """Check if the code is running in an interactive environment.""" try: @@ -52,4 +55,4 @@ def get_class_source(cls: Callable) -> str: if segment is not None: return segment - raise ValueError(f"Class '{class_name}' not found in the notebook") + raise ClassNotFoundError(f"Class '{class_name}' not found in the notebook") diff --git a/weave/trace/op_type.py b/weave/trace/op_type.py index 6df8a1eacc7..db3eaa25bae 100644 --- a/weave/trace/op_type.py +++ b/weave/trace/op_type.py @@ -14,7 +14,11 @@ from typing import Any, Callable, Optional, Union, get_args, get_origin from weave.legacy import artifact_fs, context_state -from weave.trace.ipython import get_class_source, is_running_interactively +from weave.trace.ipython import ( + ClassNotFoundError, + get_class_source, + is_running_interactively, +) from weave.trace.refs import ObjectRef from .. import environment, errors, storage @@ -194,7 +198,12 @@ class GetCodeDepsResult(typing.TypedDict): def get_source_notebook_safe(fn: typing.Callable) -> str: # In ipython, we can't use inspect.getsource on classes defined in the notebook if is_running_interactively() and inspect.isclass(fn): - src = get_class_source(fn) + try: + src = get_class_source(fn) + except ClassNotFoundError: + # Not all times are we using notebook code - for example if a class + # is defined int he Weave package itself. + src = inspect.getsource(fn) else: src = inspect.getsource(fn) return textwrap.dedent(src) diff --git a/weave/trace_server/clickhouse_trace_server_batched.py b/weave/trace_server/clickhouse_trace_server_batched.py index a352f670061..fef384c15c2 100644 --- a/weave/trace_server/clickhouse_trace_server_batched.py +++ b/weave/trace_server/clickhouse_trace_server_batched.py @@ -38,17 +38,18 @@ from clickhouse_connect.driver.client import Client as CHClient from clickhouse_connect.driver.query import QueryResult from clickhouse_connect.driver.summary import QuerySummary -from pydantic import BaseModel +from pydantic import BaseModel, field_validator from weave.trace_server.calls_query_builder import ( CallsQuery, HardCodedFilter, combine_conditions, ) +from weave.trace_server.ids import generate_id from . import clickhouse_trace_server_migrator as wf_migrator from . import environment as wf_env -from . import refs_internal +from . import refs_internal, validation from . import trace_server_interface as tsi from .emoji_util import detone_emojis from .errors import InvalidRequest, RequestTooLarge @@ -62,7 +63,6 @@ assert_non_null_wb_user_id, bytes_digest, extract_refs_from_values, - generate_id, str_digest, ) @@ -97,6 +97,17 @@ class CallStartCHInsertable(BaseModel): wb_user_id: typing.Optional[str] = None wb_run_id: typing.Optional[str] = None + _project_id_v = field_validator("project_id")(validation.project_id_validator) + _id_v = field_validator("id")(validation.call_id_validator) + _trace_id_v = field_validator("trace_id")(validation.trace_id_validator) + _parent_id_v = field_validator("parent_id")(validation.parent_id_validator) + _op_name_v = field_validator("op_name")(validation.op_name_validator) + _input_refs_v = field_validator("input_refs")(validation.refs_list_validator) + _output_refs_v = field_validator("output_refs")(validation.refs_list_validator) + _display_name_v = field_validator("display_name")(validation.display_name_validator) + _wb_user_id_v = field_validator("wb_user_id")(validation.wb_user_id_validator) + _wb_run_id_v = field_validator("wb_run_id")(validation.wb_run_id_validator) + class CallEndCHInsertable(BaseModel): project_id: str @@ -108,6 +119,11 @@ class CallEndCHInsertable(BaseModel): input_refs: typing.List[str] = [] # sadly, this is required output_refs: typing.List[str] + _project_id_v = field_validator("project_id")(validation.project_id_validator) + _id_v = field_validator("id")(validation.call_id_validator) + _input_refs_v = field_validator("input_refs")(validation.refs_list_validator) + _output_refs_v = field_validator("output_refs")(validation.refs_list_validator) + class CallDeleteCHInsertable(BaseModel): project_id: str @@ -120,6 +136,12 @@ class CallDeleteCHInsertable(BaseModel): input_refs: typing.List[str] = [] output_refs: typing.List[str] = [] + _project_id_v = field_validator("project_id")(validation.project_id_validator) + _id_v = field_validator("id")(validation.call_id_validator) + _wb_user_id_v = field_validator("wb_user_id")(validation.wb_user_id_validator) + _input_refs_v = field_validator("input_refs")(validation.refs_list_validator) + _output_refs_v = field_validator("output_refs")(validation.refs_list_validator) + class CallUpdateCHInsertable(BaseModel): project_id: str @@ -133,6 +155,13 @@ class CallUpdateCHInsertable(BaseModel): input_refs: typing.List[str] = [] output_refs: typing.List[str] = [] + _project_id_v = field_validator("project_id")(validation.project_id_validator) + _id_v = field_validator("id")(validation.call_id_validator) + _wb_user_id_v = field_validator("wb_user_id")(validation.wb_user_id_validator) + _display_name_v = field_validator("display_name")(validation.display_name_validator) + _input_refs_v = field_validator("input_refs")(validation.refs_list_validator) + _output_refs_v = field_validator("output_refs")(validation.refs_list_validator) + CallCHInsertable = typing.Union[ CallStartCHInsertable, @@ -204,6 +233,10 @@ class ObjCHInsertable(BaseModel): val_dump: str digest: str + _project_id_v = field_validator("project_id")(validation.project_id_validator) + _object_id_v = field_validator("object_id")(validation.object_id_validator) + _refs = field_validator("refs")(validation.refs_list_validator) + class SelectableCHObjSchema(BaseModel): project_id: str diff --git a/weave/trace_server/ids.py b/weave/trace_server/ids.py new file mode 100644 index 00000000000..64b0c412d3f --- /dev/null +++ b/weave/trace_server/ids.py @@ -0,0 +1,16 @@ +# Note: `uuid_utils` is a pure UUID drop in replacement that leverages Rust's +# UUID library for performance. We may want to write our own UUIDv7 +# implementation to support python < 3.8. However, Weave already requires >=3.9, +# so we can just use the library. +import uuid_utils as uuid + + +def generate_id() -> str: + """Should be used to generate IDs for trace calls. + We use UUIDv7, which has a timestamp prefix, so that the IDs, while random, + are sortable by time. See RFC9562 https://www.rfc-editor.org/rfc/rfc9562 + + Random space is 2^74, which is less than 2^122 (UUIDv4), but still plenty + for our use case. + """ + return str(uuid.uuid7()) diff --git a/weave/trace_server/refs_internal.py b/weave/trace_server/refs_internal.py index a6e03eec865..91e56ae96bd 100644 --- a/weave/trace_server/refs_internal.py +++ b/weave/trace_server/refs_internal.py @@ -18,6 +18,10 @@ TABLE_ROW_ID_EDGE_NAME = "id" +class InvalidInternalRef(ValueError): + pass + + @dataclasses.dataclass class InternalTableRef: project_id: str @@ -68,19 +72,21 @@ def parse_internal_uri(uri: str) -> Union[InternalObjectRef, InternalTableRef]: path = uri[len(f"{WEAVE_INTERNAL_SCHEME}:///") :] parts = path.split("/") if len(parts) < 2: - raise ValueError(f"Invalid URI: {uri}") + raise InvalidInternalRef(f"Invalid URI: {uri}. Must have at least 2 parts") project_id, kind = parts[:2] remaining = parts[2:] elif uri.startswith(f"{WEAVE_SCHEME}:///"): path = uri[len(f"{WEAVE_SCHEME}:///") :] parts = path.split("/") if len(parts) < 3: - raise ValueError(f"Invalid URI: {uri}") + raise ValueError(f"Invalid URI: {uri}. Must have at least 3 parts") entity, project, kind = parts[:3] project_id = f"{entity}/{project}" remaining = parts[3:] else: - raise ValueError(f"Invalid URI: {uri}") + raise InvalidInternalRef( + f"Invalid URI: {uri}. Must start with {WEAVE_INTERNAL_SCHEME}:/// or {WEAVE_SCHEME}:///" + ) if kind == "table": return InternalTableRef(project_id=project_id, digest=remaining[0]) elif kind == "object": @@ -100,4 +106,10 @@ def parse_internal_uri(uri: str) -> Union[InternalObjectRef, InternalTableRef]: extra=remaining[1:], ) else: - raise ValueError(f"Unknown ref kind: {kind}") + raise InvalidInternalRef(f"Unknown ref kind: {kind}") + + +def string_will_be_interpreted_as_ref(s: str) -> bool: + return s.startswith(f"{WEAVE_INTERNAL_SCHEME}:///") or s.startswith( + f"{WEAVE_SCHEME}:///" + ) diff --git a/weave/trace_server/sqlite_trace_server.py b/weave/trace_server/sqlite_trace_server.py index 885e945b405..751f7865881 100644 --- a/weave/trace_server/sqlite_trace_server.py +++ b/weave/trace_server/sqlite_trace_server.py @@ -31,10 +31,10 @@ ) from weave.trace_server.trace_server_interface_util import ( WILDCARD_ARTIFACT_VERSION_AND_PATH, - generate_id, ) from . import trace_server_interface as tsi +from .ids import generate_id from .interface import query as tsi_query from .trace_server_interface_util import ( assert_non_null_wb_user_id, diff --git a/weave/trace_server/tests/test_remote_http_trace_server.py b/weave/trace_server/tests/test_remote_http_trace_server.py index 24dc4264006..e171c356ab2 100644 --- a/weave/trace_server/tests/test_remote_http_trace_server.py +++ b/weave/trace_server/tests/test_remote_http_trace_server.py @@ -1,19 +1,15 @@ import datetime import unittest -import uuid from unittest.mock import patch import requests from pydantic import ValidationError from weave.trace_server import trace_server_interface as tsi +from weave.trace_server.ids import generate_id from weave.trace_server.remote_http_trace_server import RemoteHTTPTraceServer -def generate_id() -> str: - return str(uuid.uuid4()) - - def generate_start(id) -> tsi.StartedCallSchemaForInsert: return tsi.StartedCallSchemaForInsert( project_id="test", diff --git a/weave/trace_server/trace_server_interface_util.py b/weave/trace_server/trace_server_interface_util.py index d359a1d5cfe..a1b387887c5 100644 --- a/weave/trace_server/trace_server_interface_util.py +++ b/weave/trace_server/trace_server_interface_util.py @@ -1,7 +1,6 @@ import base64 import hashlib import typing -import uuid from . import refs_internal @@ -10,10 +9,6 @@ WILDCARD_ARTIFACT_VERSION_AND_PATH = ":*" -def generate_id() -> str: - return str(uuid.uuid4()) - - def bytes_digest(json_val: bytes) -> str: hasher = hashlib.sha256() hasher.update(json_val) diff --git a/weave/trace_server/validation.py b/weave/trace_server/validation.py new file mode 100644 index 00000000000..226e946f691 --- /dev/null +++ b/weave/trace_server/validation.py @@ -0,0 +1,65 @@ +import typing + +from weave.trace_server import refs_internal + +from . import validation_util + + +def project_id_validator(s: str) -> str: + return validation_util.require_base64(s) + + +def call_id_validator(s: str) -> str: + return validation_util.require_uuid(s) + + +def trace_id_validator(s: str) -> str: + return validation_util.require_uuid(s) + + +def parent_id_validator(s: typing.Optional[str]) -> typing.Optional[str]: + if s is None: + return None + return call_id_validator(s) + + +def display_name_validator(s: typing.Optional[str]) -> typing.Optional[str]: + if s is None: + return None + return validation_util.require_max_str_len(s, 128) + + +def op_name_validator(s: str) -> str: + if refs_internal.string_will_be_interpreted_as_ref(s): + validation_util.require_internal_ref_uri(s, refs_internal.InternalOpRef) + else: + validation_util.require_max_str_len(s, 128) + + return s + + +def wb_user_id_validator(s: typing.Optional[str]) -> typing.Optional[str]: + if s is None: + return None + return validation_util.require_base64(s) + + +def wb_run_id_validator(s: typing.Optional[str]) -> typing.Optional[str]: + if s is None: + return None + splits = s.split(":") + + if len(splits) != 2: + raise ValueError(f"Invalid run id: {s}") + + validation_util.require_base64(splits[0]) + + return s + + +def object_id_validator(s: str) -> str: + return validation_util.require_max_str_len(s, 128) + + +def refs_list_validator(s: typing.List[str]) -> typing.List[str]: + return [validation_util.require_internal_ref_uri(ref) for ref in s] diff --git a/weave/trace_server/validation_util.py b/weave/trace_server/validation_util.py new file mode 100644 index 00000000000..2879c5b2dda --- /dev/null +++ b/weave/trace_server/validation_util.py @@ -0,0 +1,63 @@ +import base64 +import typing +import uuid + +from . import refs_internal + + +class CHValidationError(Exception): + pass + + +def require_uuid(s: str) -> str: + lower_s = s.lower() + if lower_s != s: + raise CHValidationError(f"Invalid UUID: {s}. UUID must be lowercase") + + try: + s_prime = str(uuid.UUID(s)) + except ValueError: + raise CHValidationError(f"Invalid UUID: {s}. Unable to parse") + + if s_prime != s: + raise CHValidationError(f"Invalid UUID: {s}. UUID did not round-trip") + + return s + + +def require_base64(s: str) -> str: + try: + s_prime = base64.b64encode(base64.b64decode(s)).decode("utf-8") + except Exception as e: + raise CHValidationError(f"Invalid base64 string: {s}.") + + if s_prime != s: + raise CHValidationError( + f"Invalid base64 string: {s}. Base64 did not round-trip" + ) + + return s + + +def require_internal_ref_uri( + s: str, refClass: typing.Optional[typing.Type] = None +) -> str: + if not s.startswith(f"{refs_internal.WEAVE_INTERNAL_SCHEME}:///"): + raise CHValidationError( + f"Invalid ref: {s}. Must start with {refs_internal.WEAVE_INTERNAL_SCHEME}:///" + ) + + parsed = refs_internal.parse_internal_uri(s) + + if refClass is not None and not isinstance(parsed, refClass): + raise CHValidationError(f"Invalid ref: {s}. Must be of type {str(refClass)}") + parsed_str = parsed.uri() + if parsed_str != s: + raise CHValidationError(f"Invalid ref: {s}. Ref did not round-trip") + return s + + +def require_max_str_len(s: str, length: int) -> str: + if len(s) >= length: + raise CHValidationError(f"String too long: {s}. Max length is {length}") + return s diff --git a/weave/weave_client.py b/weave/weave_client.py index 237b1a8d0ec..689bea01210 100644 --- a/weave/weave_client.py +++ b/weave/weave_client.py @@ -39,6 +39,7 @@ ) from weave.trace.serialize import from_json, isinstance_namedtuple, to_json from weave.trace.vals import WeaveObject, WeaveTable, make_trace_obj +from weave.trace_server.ids import generate_id from weave.trace_server.trace_server_interface import ( CallEndReq, CallSchema, @@ -72,10 +73,6 @@ ALLOW_MIXED_PROJECT_REFS = False -def generate_id() -> str: - return str(uuid.uuid4()) - - class ValueFilter(TypedDict, total=False): id: uuid.UUID ref: Ref